我們知道,很多maven官方插件都支持skip參數(shù),命令行指定skip=true即可跳過此插件的執(zhí)行,非常方便。但是很多第三方的插件根本就不支持skip參數(shù),無(wú)法通過命令行傳...
我們知道,很多maven官方插件都支持skip參數(shù),命令行指定skip=true即可跳過此插件的執(zhí)行,非常方便。但是很多第三方的插件根本就不支持skip參數(shù),無(wú)法通過命令行傳...
很多文章搞長(zhǎng)篇大論大講特講人類為了讓計(jì)算機(jī)能夠準(zhǔn)確表示各種字符的演化歷史,這完全是沒有必要的,幾句話就能說(shuō)明白。 "字符集"和"字符集編碼"是兩回事 字符集(Charset ...
用JavaFX寫GUI的朋友肯定少不了SceneBuilder這個(gè)神器,拖拖拽拽就能完成窗口布局。但是對(duì)于Mac M1的用戶來(lái)說(shuō), SceneBuilder 并沒有提供M1版...
本篇我們專注invokevirtual這一條指令,先通過簡(jiǎn)單粗暴的方式實(shí)現(xiàn)指令的功能,然后探究如何通過著名的虛方法表(Virtual Method Table)來(lái)進(jìn)行一些優(yōu)化...
我們都知道在Java中final字段都是要在定義時(shí)完成初始化工作的,否則通不過編譯。但是有一處例外,那就是對(duì)于對(duì)象的字段來(lái)說(shuō)final字段可以"延遲"到構(gòu)造方法,或者stat...
首先需要明確幾個(gè)問題。 沒有Native方法JVM什么也做不了 可能很多人認(rèn)為native方法是Java里的禁區(qū),使用本地方法會(huì)犧牲可移植性,而且還會(huì)有額外開銷,貌似幾乎沒有...
一直以來(lái)又長(zhǎng)又臭的調(diào)用鏈簡(jiǎn)直就是Java語(yǔ)言的標(biāo)志性特色,方法調(diào)用可謂是Java世界里表達(dá)一切邏輯的基石。現(xiàn)在我們終于具備了實(shí)現(xiàn)它的基礎(chǔ)。 JVM中的5條方法調(diào)用指令 在JV...
在上一篇中我們實(shí)現(xiàn)了一個(gè)能跑的解釋器,支持了一些基本的棧操作指令。現(xiàn)在我們就可以開始實(shí)現(xiàn)"有點(diǎn)用"的數(shù)學(xué)運(yùn)算和條件判斷了。 github: https://github.co...
在上一篇中我們已經(jīng)完成了class文件的解析工作,雖然沒有解析所有的屬性,但是已經(jīng)足夠支持一些基本的算法題Java代碼編譯生成的class文件了。有了這一步,日后如果遇到新的...
正確解析class文件是萬(wàn)里長(zhǎng)征第一步。本篇我們會(huì)全程使用golang完成class文件的解析工作。 數(shù)據(jù)類型 JVM的class文件完全是二進(jìn)制文件,最小單位是字節(jié),也有數(shù)...
學(xué)習(xí)JVM最好的方法,就是實(shí)現(xiàn)它,沒有之一。 對(duì)JVM感興趣的朋友可能會(huì)去主動(dòng)尋找講解JVM的書,比如《深入理解JVM》、《Java虛擬機(jī)規(guī)范》、《虛擬機(jī)的設(shè)計(jì)與實(shí)現(xiàn)》,但是...
隨著類似Vue、Angular這類通過JS將web頁(yè)面"畫"出來(lái)的前端框架的流行,爬取網(wǎng)頁(yè)不再像以前那樣隨便發(fā)個(gè)GET請(qǐng)求,解析HTML就能搞定了。對(duì)于使用這類框架制作的SP...
在Java應(yīng)用中,我們往往會(huì)使用spring-kafka組件簡(jiǎn)單的設(shè)置一下group_id, topic就開始消費(fèi)消息了,其實(shí)這樣會(huì)埋下巨大的安全隱患,即當(dāng)消費(fèi)速度過慢時(shí)有可...
常見但是錯(cuò)誤的實(shí)現(xiàn) 在業(yè)務(wù)系統(tǒng)中防重名是一個(gè)非常普遍的需求,例如用戶注冊(cè)時(shí)不允許用戶名重復(fù)、已登錄用戶不可以在自己的賬號(hào)范圍內(nèi)創(chuàng)建同名的某種實(shí)體等。很多人在實(shí)現(xiàn)的時(shí)候都是簡(jiǎn)單...
Go1.14即將于2020年2月底發(fā)布,這個(gè)版本有一些值得注意的性能改進(jìn),如下: defer 跟正常的函數(shù)調(diào)用相比,defer幾乎已經(jīng)沒有額外的開銷了。你可以在對(duì)性能極度敏感...
在討論所有的錯(cuò)誤處理實(shí)踐之前首先要接受一個(gè)事實(shí),那就是每調(diào)用一個(gè)函數(shù)/方法都要檢查一下返回值中的err是否為空的操作是無(wú)法避免的,這可能是很多從Java轉(zhuǎn)過來(lái)的開發(fā)者們除語(yǔ)法...
開門見山 可重復(fù)讀僅能保證再次執(zhí)行同樣的查詢時(shí),先前返回【過】的結(jié)果一定跟之前一樣,而不保證會(huì)不會(huì)多出別的記錄。如果返回了之前沒有出現(xiàn)過的記錄,就是幻讀。 隔離級(jí)別 數(shù)據(jù)庫(kù)事...
首先我們來(lái)看一下維基百科對(duì)零拷貝給出的定義: 零拷貝描述了一種計(jì)算機(jī)中的操作,即CPU在執(zhí)行某項(xiàng)任務(wù)時(shí)不需要先將數(shù)據(jù)從內(nèi)存中的一個(gè)位置移動(dòng)到另一個(gè)位置就可以完成操作,從而節(jié)省...