原创 Spring Cache無效的問題以及解決辦法

昨天碰到Cache無效的問題,現在已經找到原因並且解決。 把知識分享給大家,免得以後踩坑。 @Cacheable標註的方法,如果其所在的類實現了某一

原创 John Carmack談論軟件工程中藝術和科學的一面

雖然我不是一個遊戲超級玩家,但我是因喜歡視頻遊戲而開始學習編程的(特別是圖像渲染的算法)。所以當我看到John Carmack在2012 Quake­Con上的發言時,我想我應該聽一聽,學習學習遊戲設計以及遊戲開發相關的知識。 不

原创 Frege-基於JVM的類Haskell純函數式編程語言

Frege是一門受Haskell語言啓發而設計的純函數式編程語言。Frege程序會被編譯爲Java,並運行於JVM上。它與Haskell是如此的相似,以至於有人稱它爲JVM上的Haskell。取Frege這個名字是爲了紀念德國數學

原创 一致哈希算法Java實現

一致哈希算法(Consistent Hashing Algorithms)是一個分佈式系統中常用的算法。傳統的Hash算法當槽位(Slot)增減時,面臨所有數據重新部署的問題,而一致哈希算法確可以保證,只需要移動K/n份數據(K爲數據總量

原创 Java編碼規範

先借編碼規範之名,行吐槽之實,抱歉。 寫乾淨整潔的代碼 閱讀代碼,眼緣很重要。代碼是程序員的臉,保持乾淨整潔。 記得格式化代碼。 建議使用eclipse默認的就行,Ctrl+Shift+F。項目內部格式化風格一定要統一,否則svn很難tr

原创 Java垃圾回收器總結

什麼是Java垃圾回收器 Java垃圾回收器是Java虛擬機(JVM)的三個重要模塊(另外兩個是解釋器和多線程機制)之一,爲應用程序提供內存的自動分配(Memory Allocation)、自動回收(Garbage Collect)功能,

原创 Spring環境下MyBatis支持多個Datasource參考實現

需求背景 最近接到一個項目,需要改造一個老的系統。該老系統以Oracle爲存儲,巨量的PL/SQL代碼實現業務代碼,C實現Socket Server,作爲Client和PL/SQL的橋樑。不出所料,該老系統最大的問題是PL/SQL代碼量巨

原创 代碼規範的那些事兒

作爲一個苦逼的程序員,因爲種種原因經常需要閱讀別人寫的代碼。您是否有因代碼雜亂冗餘而心生厭惡,您是否有過因代碼晦澀難懂而抓狂,您是因代碼低級的邏輯錯誤而憤概,您是否因代碼結構不合常規而需要到處查找,您是否因看到幾百甚至上千行代碼的方法而望

原创 如何記錄和查詢Redis慢執行日誌

Redis是單線程運行的,一個慢執行,會讓後續的大量執行延時,吞吐量也會極大的降低。記錄、查詢、監控Redis慢執行意義重大。Redis的slowlog只記錄在內存中,效率很高,不用過於擔心影響性能。題外話,Redis確實是一個比較完備的

原创 如何精簡maven項目的依賴jar包

如何精簡maven項目的依賴jar包 maven依賴管理,真的是一把雙刃劍,規範和簡化了依賴配置,但是也像個黑盒子,隱藏了太多的東西,依賴了很多沒有用到的jar包。 今天我們就聊一聊如何用maven的dependency插件,分析依賴關

原创 JUnit與Mockito單元測試典型示例

單元測試的重要性無需贅述,但單元測試也會遇到困難,其中之一就是如何創建依賴。試想我們常見的server端分層架構,數據訪問層Dao,業務層,以及Web層,想要單元測試業務層,我們需要依賴Dao層提供數據支持,Dao層又依賴數據庫,數據庫需

原创 Huffman編碼算法之Java實現

Huffman編碼介紹 Huffman編碼處理的是字符以及字符對應的二進制的編碼配對問題,分爲編碼和解碼,目的是壓縮字符對應的二進制數據長度。我們知道字符存貯和傳輸的時候都是二進制的(計算機只認識0/1),那麼就有字符與二進制之間的map

原创 REST API設計參考

對於項目的開發和維護,私以爲一致性是最重要的因素之一,甚至比一段牛逼的算法更能影響一個項目的成敗。 一致性之於REST API的設計,那更是關鍵。無需追求最優方案,但希望大家API能夠保持一致。 先上例子 Get /v1/users

原创 Docker環境下Java應用的堆內存控制

在部署docker應用, 應用編排時都需要指定一個內存的最大使用上限。如果應用使用的內存超過了配額,鏡像會被kill掉。所以java微服務應用,有必要設置應用自己的最大內存。 參數說明設置java最大內存的方式 在Dockerfile裏面

原创 URL encoding科普

什麼是URL encoding URL encoding是Uniform Resource Identifier(URI)規範文檔中對特殊字符編碼制定的規則。本質是把一個字符轉爲 %加上UTF-8編碼對應的16進制數字。故又稱之爲Per