原创 從內存層面瞭解java對象與它的鎖

目錄準備工作測試代碼結果寫在最後 準備工作 知識基礎:四把鎖的概念(無鎖狀態、偏向鎖(匿名偏向鎖)、自旋鎖、重量級鎖) 工具基礎:JOL包 <dependency> <groupId>org.openjdk.jol</

原创 項目經驗總結(慢慢填充、並且歡迎指正)

代碼原則部分: 坦誠相待原則——寫代碼的時候儘量不要有隱藏的邏輯,最好別人在讀你的代碼的時候能夠直接把邏輯樹給理通,否則你寫的代碼就是個維護的大坑。   redis: 別太依賴redis,redis雖然讀寫快,但它也不是萬能的, 要考慮用

原创 線程生命週期圖解,看過病就懂

轉載自: 線程狀態詳解 - 尋覓的文章 - 知乎 https://zhuanlan.zhihu.com/p/73354504 線程生命週期圖 看完文章之後,我發現一家人到一家醫院看病可以很好的模擬線程的運行狀態。 對上面的模型進行了具

原创 mysql int字段 被轉成Long問題解決

注意避坑啦! 最近我和春春遇到了枚舉類無法正常從數據庫中取出的問題 表象就是NewOrderStatus newOrderStatus這個枚舉字段一直都是null,但是同一個do中的其他枚舉字段都是正常取出的。 沒辦法只能逐層排查,最終定

原创 String通過+號拼接需要判空

字符串拼接不復雜的時候最常用的操作就是使用+號拼接, 實際上, String + Object的拼接方式相當於String + String.valueOf(Object); 所以   public static void main(S

原创 linux環境下new SXSSFWorkbook(XSSFWorkbook workbook)失敗

使用場景   項目開發的時候需要導出一個寫死數據很多的報表,考慮到寫死數據的開發成本,如果能夠直接從workbook中讀取需要的數據,豈不是美滋滋?   實際操作中遇到的問題 項目開發完了之後,在Mac OS X環境下完美運行,但是項目一

原创 查詢元素是否存在時使用List與Set與Map的比較

現在有下面這樣一個場景, 你有一個集合,而它的作用只是用來被查詢是否包含目標值,你是否也會習慣性的寫出上面這段代碼? 但是等等,看上去這段代碼用流式寫法寫的非常簡潔與流暢,但它的性能是最優選擇嗎?讓我們來到ArrayList.conta

原创 java 的 鎖(附測試源碼)

*還是要使用才能暴露問題呀! 併發與鎖的知識整理   目錄 *還是要使用才能暴露問題呀! 併發與鎖的知識整理 什麼是重量級鎖? 什麼是輕量級鎖 輕量級鎖的問題 偏向鎖與匿名偏向鎖 什麼是偏向鎖?爲什麼會出現偏向鎖? 啥是匿名偏向鎖? 偏向

原创 mybatis 遇到枚舉類無法獲得有效值

今天在使用mybatis從數據庫中拿數據的時候發現數據的枚舉字段無法取出枚舉類,其他的量都能夠取到有效值。 在同樣的環境下,另一個服務中的類似代碼卻能夠正常取出枚舉類,這就讓事情顯得離奇了起來,把兩對代碼進行了詳細的比較,但是我和前輩都沒

原创 idea反向追蹤調用樹

分享一個idea代碼重構的小技巧——反向追蹤調用鏈(調用樹) --- 接手這個重構的工作以來,我發現限制這個工作的瓶頸大約是哪裏用到了老四件套,以及找改動之後會對現有的哪些接口造成影響吧。 誠然,command+鼠標單擊是能夠達到目的,但

原创 mybatis的枚舉類處理器不生效問題解決

進入convenient項目後遇到了枚舉類處理器不能正確被處理的問題,經過查找,找到了相關的代碼   可以看見通過配置mybatis的數據庫會話工廠類,我們能夠對枚舉處理器進行配置。   但是爲什麼這個處理器沒有生效呢?   經過我兩

原创 List?Set?Map?

現在有下面這樣一個場景, 你有一個集合,而它的作用只是用來被查詢是否包含目標值,你是否也會習慣性的寫出上面這段代碼? 但是等等,看上去這段代碼用流式寫法寫的非常簡潔與流暢,但它的性能是最優選擇嗎?讓我們來到ArrayList.conta

原创 java8新特性學習筆記之嘮嘮“匿名內部類與lambda”

負一、知道啥是匿名內部類不? 要使用lambda,我覺得你至少得明白匿名內部類是個啥。“o -> o.getName”是lambda表達式,"Book::getName"也是一個lambda表達式,表達式表達式,表達的是什麼呢?當你在看到

原创 開源key-value儲存系統——Redis學習筆記

寫在最前: 本文是基於菜鳥教程提供的資料的對redis的學習筆記。附上原鏈接:https://www.runoob.com/redis/redis-tutorial.html   一、什麼是Redis? Redis全名叫做 Remote

原创 活用泛型來統一操作近親數據結構

在java開發規範當中,從前端接收需要進行插入操作的數據是用InsertVO,接收用於更新操作的數據則是UpdateVO,這兩個VO一般來說都是繼承了同一個實體類,各自又因爲不同的需求有着不同的屬性字段。 我遇到的情況是這樣的 @Dat