原创 從NoSuchMethodError看jvm編譯和class加載方式

今天在寫自己的項目的時候出現了一個Exception in thread "main" java.lang.NoSuchMethodError的異常,但是我的代碼在編譯過程中是沒有任何問題的。 先來講一下我的項目關鍵的結構 我的項目引用了

原创 Java併發知識點彙總

Java併發知識點彙總 Java併發相關的教程很多,其一是併發一直是開發人員必備技能,其二是併發本身涉及內容較多。但是網上關於Java併發相關的博客均比較散亂,沒有自成一體。本文嘗試從併發知識體系上相關的做一個彙總,並推薦2-3篇在這個技

原创 Java8新特性學習(三)- Stream類

Java8新特性學習(三)- Stream類 背景及介紹 這裏提到Java8的Stream類並不像Java以前版本的InputStream和OutputStream,他們是幾乎不搭邊的兩個類。Stream類常跟集合處理一起使用,算

原创 ForkJoin框架使用和原理剖析

相信大家此前或多或少有了解到ForkJoin框架,ForkJoin框架其實就是一個線程池ExecutorService的實現,通過工作竊取(work-stealing)算法,獲取其他線程中未完成的任務來執行。可以充分利用機器的多處

原创 緩存篇(四)- Memcache(未完成)

 緩存篇(四)- Memcache

原创 別踩坑!使用MySQL唯一索引請注意

背景 在程序設計中,我們往往需要確保數據的唯一性,比如在常見的註冊模塊,我們需要確保一個手機號只能註冊爲一個賬號。這種情況下,我們的程序往往是第一道關卡,用戶來註冊之前,首先判斷這個手機號是否已經註冊,如果已經註冊則返回錯誤信息,

原创 Netty的基礎架構模型

Netty是高性能的異步非阻塞NIO框架!下面先來理解一下兩組關鍵的概念。同步和異步拿方法調用來說,同步是指調用一個方法能夠在方法結束時立即得到方法的結果,異步就是方法調用時沒有返回結果,由另外的線程去做方法中的事情,當前線程可以去做其他

原创 如果 TCP 協議中三次握手不攜帶序列號,會造成什麼樣的後果

之所以需要三次握手,其實就是要雙方相互確認彼此能夠通信。 一般要與對方確認可以通信,就要確認自己能夠跟對方通信(1),且能夠收到對方的通信(2),反過來對方也能夠和自己通信(3),且能收到自己的通信(4)。基於這一點,流程就簡化爲3

原创 Java併發的實現和應用

線程安全的概念,怎麼保證線程安全 線程的同步異步,阻塞非阻塞 線程的併發和並行 Java內存模型(原子性,可見性,有序性) 線程狀態及流轉 線程死鎖和避免 synchronized和volatile關鍵字? 線程的3種實現方式 線

原创 常用的設計模式Java實現及解析

以下說明(部分)解釋摘錄/參考自《Head First設計模式》 代碼已上傳至 https://github.com/zhuzhenke/design-patterns design-patterns observer patter

原创 CacheLoader returned null for key分析和解決

背景 今天在使用的時候使用GuavaCache的refreshAfterWrite的功能時,發現在少數場景下會報錯CacheLoader returned null for key。但是如果把refreshAfterWrite去掉時,

原创 強烈推薦:許式偉的架構課(4月25日前有優惠)

購買後加我微信有會將24元返現全部返回給你 對工作多年的程序員而言,日後的職業發展無非是專精技術,轉型管理,晉升架構師三種選擇。 成爲一名優秀的架構師,是大多數技術人的追求。 想要做架構,空有一身技術是遠遠不夠的,知識的深度和廣度,

原创 比AtomicLong更高效的併發計數類LongAdder

比AtomicLong更高效的併發計數類LongAdder(本文爲原創文章,未經博主同意,禁止任何形式轉載!)最近在看https://github.com/alibaba/Sentinel(輕量級的流量控制、熔斷降級Java庫

原创 ForkJoin使用和原理剖析

ForkJoin使用和原理剖析 相信大家此前或多或少有瞭解到ForkJoin,ForkJoin框架其實就是一個線程池ExecutorService的實現,通過工作竊取(work-stealing)算法,獲取其他線程中未完成的任務來執行

原创 Java8新特性學習(二)- Optional類

背景 Optional是一個容器,用來管理一個對象。主要是用來解決null和NullPointerException問題。 Java7 -> Java8 Optional是如何簡化你的代碼 假設有一個Student類 @Data pu