今天研讀Java并發(fā)容器和框架時(shí),看到為什么要使用ConcurrentHashMap時(shí),其中有一個(gè)原因是:線程不安全的HashMap, HashMap在并發(fā)執(zhí)行put操作時(shí)會(huì)...
今天研讀Java并發(fā)容器和框架時(shí),看到為什么要使用ConcurrentHashMap時(shí),其中有一個(gè)原因是:線程不安全的HashMap, HashMap在并發(fā)執(zhí)行put操作時(shí)會(huì)...
相信大家都用過 Fastjson,阿里的一個(gè)開源 JSON 庫,在阿里系的開源項(xiàng)目里應(yīng)用的非常廣泛。雖然有時(shí)候也被戲稱“沉的快”,但 Fastjson 從功能豐富度、易用性、...
為什么寫這篇文章? 相信不少 Java 開發(fā)都在項(xiàng)目中使用過類似 ApiResult 這樣的對(duì)象來包裝 Api 返回類型,這相比什么都不包裝有一定的好處,但這真的就是最好的做...
最近,我們的線上環(huán)境出現(xiàn)了一個(gè)問題,線上代碼在執(zhí)行過程中拋出了一個(gè)IllegalArgumentException,分析堆棧后,發(fā)現(xiàn)最根本的的異常是以下內(nèi)容: 大概就是以上的...
前言 作為一名Java程序員,我們需要知道Java代碼是怎么運(yùn)行的。最近復(fù)習(xí)了深入理解Java虛擬機(jī)這本書,做了一下筆記,希望對(duì)大家有幫助,如果有不正確的地方,歡迎提出,感激...
前言 在分布式系統(tǒng)中,緩存和數(shù)據(jù)庫同時(shí)存在時(shí),如果有寫操作,先操作數(shù)據(jù)庫還是先操作緩存呢?本文將分5種方案闡述展開對(duì)比,謝謝閱讀~ 緩存維護(hù)方案一 如果是一讀(線程B)一寫(...
并發(fā)編程是 java 高級(jí)程序員的必備的基礎(chǔ)技能之一。但是想要寫好并發(fā)程序并非易事。 那究竟是什么原因?qū)е麓蟀训摹案褡由馈迸笥褵o法寫出優(yōu)質(zhì)和性能穩(wěn)定的并發(fā)程序呢?根本原因就是...
相信很多程序員對(duì)于Linux系統(tǒng)都不陌生,即使自己的日常開發(fā)機(jī)器不是Linux,那么線上服務(wù)器也大部分都是的,所以,掌握常用的Linux命令也是程序員必備的技能。 但是,怕就...
Java作為一種面向?qū)ο蟮?,跨平臺(tái)語言,其對(duì)象、內(nèi)存等一直是比較難的知識(shí)點(diǎn),所以,即使是一個(gè)Java的初學(xué)者,也一定或多或少的對(duì)JVM有一些了解。可以說,關(guān)于JVM的相關(guān)知識(shí)...
本文要介紹的是一個(gè)發(fā)生在我們線上環(huán)境的真實(shí)案例,問題發(fā)生在某次大促期間,對(duì)我們的線上集群造成了比較大的影響,這篇文章簡單復(fù)盤一下這個(gè)問題。 問了方便大家理解,實(shí)際排查和解決過...
前段時(shí)間我們新上了一個(gè)新的應(yīng)用,因?yàn)榱髁恳恢辈淮?,集群QPS大概只有5左右,寫接口的rt在30ms左右。 因?yàn)樽罱尤肓诵碌臉I(yè)務(wù),業(yè)務(wù)方給出的數(shù)據(jù)是日常QPS可以達(dá)到2000...
最近無論是校招還是社招,都進(jìn)行的如火如荼,我也承擔(dān)了很多的面試工作,在一次面試過程中,和候選人聊了一些關(guān)于Dubbo的知識(shí)。 Dubbo是一個(gè)比較著名的RPC框架,很多人對(duì)于...
JVM啟動(dòng)后默認(rèn)將最大使用堆大小設(shè)置為物理內(nèi)存的四分之一,譬如一臺(tái)普通的x86服務(wù)器配置128G內(nèi)存,那么啟動(dòng)在容器的內(nèi)啟動(dòng)JVM會(huì)將自己最大允許使用的堆內(nèi)存調(diào)整為32G內(nèi)存...
曾經(jīng),我以為這些東西自己平時(shí)看看書就夠了,屬于那種花了半天精力總算搞明白了,然后過兩天就自然忘記的東西。 結(jié)果,這都啥啊,啥是卡表,什么又是三色標(biāo)記法,這些鬼問題都有人面試問...
Seata 如何使用 SPI Seata 是一個(gè)分布式事務(wù)的框架,具體的使用這里不再贅述,有時(shí)間可以出專門寫它的文章。本節(jié)主要關(guān)注 Seata 是如何利用 SPI 的方式進(jìn)行...
spring batch 簡介 spring batch 是 spring 提供的一個(gè)數(shù)據(jù)處理框架。企業(yè)域中的許多應(yīng)用程序需要批量處理才能在關(guān)鍵任務(wù)環(huán)境中執(zhí)行業(yè)務(wù)操作。這些業(yè)...
Redis 作為一個(gè)非常成功的數(shù)據(jù)庫,提供了非常豐富的數(shù)據(jù)類型和命令,使用這些,我們可以輕易而高效地完成很多緩存操作,可是總有一些比較特殊問題或需求需要解決,這時(shí)候可能就需要...
前言 本篇博客中,我們將會(huì)討論用于聲明不同類型 Beans 的幾種最常用的 Spring Bean 注解。 眾所周知,Spring 容器中有許多配置 Bean 的方法,我們既...
前言 相信大家,初始在使用Linux操作系統(tǒng)時(shí),查找歷史命令,第一時(shí)間會(huì)想到history命令:將顯示出之前操作過的命令,其無法顯示操作過的命令所輸出的過程及結(jié)果。 但往往有...
概念 Stream 將要處理的元素集合看作一種流,在流的過程中,借助 Stream API 對(duì)流中的元素進(jìn)行操作,比如:篩選、排序、聚合等。 Stream 的操作符大體上分為...