1. 掛載卸載過(guò)程1.1.constructor()1.2.componentWillMount()1.3.componentDidMount()1.4.componentW...
近日生產(chǎn)CDH5.7.2集群中的某一臺(tái)機(jī)器在升級(jí)glibc和java后利花,Yarn NodeManager無(wú)法正常啟動(dòng),提示報(bào)錯(cuò)如下: 處理該問(wèn)題時(shí)還是走了一些的彎路载佳,事后來(lái)看...
用過(guò) SpringBoot 的同學(xué)都知道晰绎,其程序的啟動(dòng)類是在一個(gè)main方法中調(diào)用SpringApplication.run方法執(zhí)行的,如: 那么括丁,這里面到底做了什么呢荞下?本篇...
1. 問(wèn)題 最近在項(xiàng)目中添加了會(huì)話驗(yàn)證過(guò)濾器,該Filter中使用@Autowired自動(dòng)裝載了一些從數(shù)據(jù)庫(kù)中獲取的系統(tǒng)配置史飞,調(diào)試的時(shí)候發(fā)現(xiàn)注入失敗尖昏,返回為null。 2. ...
1.網(wǎng)絡(luò)代理設(shè)置 IDEA配置代理构资,是在File-> Setting-> plugins中設(shè)置 image.pngimage.pngimage.pngimage.png 查...
原子性抽诉,對(duì)volatile變量的讀寫具有原子性,即單純讀和寫的操作吐绵,都不會(huì)受到干擾迹淌。這里有誤
public class VolatileTest {
private static volatile int INIT_VALUE = 0;
private final static int MAX_LIMIT = 500;
public static void main(String[] args) {
new Thread(() -> {
while (INIT_VALUE < MAX_LIMIT) {
System.out.println("T1->" + (++INIT_VALUE));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, "ADDER-1").start();
new Thread(() -> {
while (INIT_VALUE < MAX_LIMIT) {
System.out.println("T2->" + (++INIT_VALUE));
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, "ADDER-2").start();
}
}
部分打印結(jié)果:
T1->19
T2->20
T1->21
T1->22
T2->23
T1->24
T2->25
T1->26
T2->26
T1->27
T2->27
T2->28
T1->28
T1->29
T2->30
T1->32
++INIT_VALUE 操作分三步:
a.讀取變量 INIT_VALUE的值 -> 26
INIT_VALUE 的值+1 -> 26+1
將值賦予變量 INIT_VALUE -> INIT_VALUE=27
由于這三步中的任意一步線程都可能放棄cpu執(zhí)行權(quán),其他線程獲取到執(zhí)行權(quán)后如果一步完成,就會(huì)出現(xiàn)上圖的情況
b64fa9317cd5 評(píng)論自深入理解JVM-內(nèi)存模型(jmm)和GC
寫這么多,真不容易
深入理解JVM-內(nèi)存模型(jmm)和GC1 CPU和內(nèi)存的交互 了解jvm內(nèi)存模型前己单,了解下cpu和計(jì)算機(jī)內(nèi)存的交互情況巍沙。【因?yàn)镴ava虛擬機(jī)內(nèi)存模型定義的訪問(wèn)操作與計(jì)算機(jī)十分相似】 有篇很棒的文章荷鼠,從cpu講到內(nèi)...