魔都啊,我也要準(zhǔn)備離開了。
工作努力,待人真誠,孑然一身,落寞立場,為何這樣?
別了魔都還記得那年懷揣著老父親從親戚手里借來的兩百路費(fèi)把我送上了上海的列車,那是我第一次離開學(xué)校去那么遠(yuǎn)的地方,翻開從親戚那邊抄來的那個(gè)陌生地址,一個(gè)人站了24小時(shí),終于到達(dá)了我后來...
引言 Spring Boot,作為Spring框架對(duì)“約定優(yōu)先于配置(Convention Over Configuration)”理念的最佳實(shí)踐的產(chǎn)物,它能幫助我們很快捷的...
一、什么是異常處理 異常(exception) 是程序運(yùn)行過程中發(fā)生的事件, 該事件可以中斷程序指令的正常執(zhí)行流程.1當(dāng)Java程序運(yùn)行時(shí)出現(xiàn)問題時(shí),系統(tǒng)會(huì)自動(dòng)檢測到該錯(cuò)誤,...
新項(xiàng)目使用Swagger UI自動(dòng)生成接口文檔,不需要頻繁更新接口文檔,保證接口文檔與代碼的一致,值得學(xué)習(xí)。本文記錄swaggerUi與springboot整合的步驟。 依賴...
之前的一次項(xiàng)目上線,使用CTAS的方式進(jìn)行擴(kuò)表,涉及到表的刪除。由于自動(dòng)化部署工具的問題,數(shù)據(jù)庫腳本執(zhí)行了兩次。導(dǎo)致數(shù)據(jù)庫表被刪除(萬幸有備份)。拋開自動(dòng)化部署工具的問題,這...
volatile關(guān)鍵字有兩方面的作用,一是保證共享變量可見性,二是禁止指令重排。 一、內(nèi)存可見性 站在一個(gè)java程序員的角度,內(nèi)存可見性應(yīng)該從兩個(gè)方面去理解,多核CPU的緩...
寫的很好。
解答下你的疑問:以map中某個(gè)位置的鏈表中的key1、key2為例,在擴(kuò)容后key1、key2的hash與newcap-1的按位取與就可能不一樣了,也就是這兩個(gè)不見得會(huì)碰撞了,所以需要對(duì)其分成不同的鏈表中,而結(jié)果只有兩個(gè)要嗎是原來的位置要嗎是原來位置+oldcap,而最簡單的判別方法就是與oldcap按位取與計(jì)算是否為零,為零位置不變,不為零的會(huì)移動(dòng)位置。
山東大蔥哥 評(píng)論自HashMap源碼分析
需求 有t1,t2兩張表,通過A字段關(guān)聯(lián),現(xiàn)在需要在t1表新增字段B,將t2表中的字段C更新到t1表新增的字段B中。t1表數(shù)據(jù)一千二百萬,t2表數(shù)據(jù)七百萬。 常規(guī)方法 直接使...
內(nèi)存屏障是硬件之上、操作系統(tǒng)或JVM之下,對(duì)并發(fā)作出的最后一層支持。再向下是是硬件提供的支持;向上是操作系統(tǒng)或JVM對(duì)內(nèi)存屏障作出的各種封裝。內(nèi)存屏障是一種標(biāo)準(zhǔn),各廠商可能采...
volatile可以理解為輕量級(jí)的synchronized,因?yàn)槎嗑€程并發(fā)訪問volatile變量時(shí),不會(huì)引起線程上下文的切換。如果一個(gè)共享變量(類的成員變量、類的靜態(tài)成員變...
為什么需要偏向鎖 當(dāng)多個(gè)處理器同時(shí)處理的時(shí)候,通常需要處理互斥的問題。 一般的解決方式都會(huì)包含acquire和release這個(gè)兩種操作,操作保證,一個(gè)線程在acquire執(zhí)...
生產(chǎn)者消費(fèi)者模型是我們學(xué)習(xí)多線程知識(shí)的一個(gè)經(jīng)典案例,一個(gè)典型的生產(chǎn)者消費(fèi)者模型如下: 這段代碼很容易引申出來兩個(gè)問題:一個(gè)是wait()方法外面為什么是while循環(huán)而不是i...
為了換取性能,JVM在內(nèi)置鎖上做了非常多的優(yōu)化,膨脹式的鎖分配策略就是其一。理解偏向鎖、輕量級(jí)鎖、重量級(jí)鎖的要解決的基本問題,幾種鎖的分配和膨脹過程,有助于編寫并優(yōu)化基于鎖的...
Java I/O模型 同步 vs. 異步 同步I/O每個(gè)請(qǐng)求必須逐個(gè)地被處理,一個(gè)請(qǐng)求的處理會(huì)導(dǎo)致整個(gè)流程的暫時(shí)等待,這些事件無法并發(fā)地執(zhí)行。用戶線程發(fā)起I/O請(qǐng)求后需要等待...