原创 23種常用設計模式概覽

我們一般常用設計大概有23種,創建型的5種,結構型7種,行爲型11種。其中又劃分是針對類還是針對對象。

原创 斐波那契數列及Python實現

斐波那契數列,又稱爲黃金分割數列,因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖爲例子而引入,故又稱爲“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21……在數學上,斐波那契數

原创 算法的複雜度:

算法的複雜度: 我們一般用兩個維度形容一個算法的資源消耗,以此來判斷我們的算法是否優良,它們就是“時間複雜度”與“空間複雜度” 時間複雜度: 時間複雜度:指執行算法需要的計算工作量。 每個算法的語句執行次數與時間成正比

原创 Hash爲什麼快

hash查找的時間複雜度是constant(常量)級的,也就是O(1),它是怎麼做到的呢? 先舉個例子: 如果在[0,1,3,4,7,9]這個數組中找到某個數字,比如:4 or 6,那麼需要遍歷這個數組一次,時間複雜度是O(n

原创 CAS:利用處理器原子性來保證juc.atomic原子性

什麼是CAS: CAS,Compare and Swap即比較並交換。juc包藉助CAS實現了區別與synchronized同步鎖的一種樂觀鎖。樂觀鎖就是每次去修改數據的時候都樂觀的認爲數據不會被修改,所以不會上鎖,但是

原创 juc的Atomic

Java從JDK1.5開始提供java.util.concurrent.atomic包,方便程序員在多線程環境下,無鎖的進行原子操作。 原子變量的底層使用了處理器提供的原子指令,但是不同的CPU架構可能提供的原子指令不一樣,也有

原创 bug的一些可能性與查找bug的一些方式(MIT總結)

Reversed order of arguments(自變量順序錯誤):順序錯誤 spellings:拼寫錯誤 initialization:初始化的時機或方式錯誤 object vs value equality:對象相等還是

原创 springEL表達式詳解及應用

什麼是SpringEL? Spring3中引入了Spring表達式語言—SpringEL,SpEL是一種強大,簡潔的裝配Bean的方式,他可以通過運行期間執行的表達式將值裝配到我們的屬性或構造函數當中,更可以調用JDK中提供的靜

原创 浮點數精度丟失的原因

問題提出:12.0f-11.9f=0.10000038,”減不盡”爲什麼? 來自MSDN的解釋: http://msdn.microsoft.com/zh-cn/c151dt3s.aspx 爲何浮點數可能丟失精度,浮點十進制值通

原创 使用@RequestBody傳對象參數時碰到的坑

工作中需要使用到http接口傳一個對象數組,網上找到某博客:springmvc參數爲對象,數組 但是測試還是不對,報錯: 2019-02-21 23:44:37.168 WARN 34133 --- [nio-7001-exec-6

原创 一次zxid打滿之後引發的故障

某天早上,還沒到公司就被通知系統定時任務都掛了,緊急對所有應用都重啓之後,我們把問題定位在了zk上。 問題背景: 系統使用定時任務調度框架爲開源tbSchedule,使用zk作爲任務註冊中心,這個框架對異常狀況處理能力比較弱,與z

原创 mybatis剛從@Annotation向xml轉換時遇到的一些坑

老碰到少了逗號“,”的情況,導致sql出錯,但是這類問題又不容易察覺到,幸好如果有異常堆棧打出的話,這類問題還是比較好發現的。比較麻煩的事是在某廠,當時碰到的這個服務本地無法啓動,但是本人初來乍到,一是不熟悉整個系統,找不到啓動

原创 通過ps -ef | grep java查看到java進程相應jvm啓動參數

/opt/ln/java/bin/java -server -Xms4g -Xmx4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Xmn2g -XX:MaxDirectMemo

原创 海量數據處理實例

在bat等大公司,基本所有業務的數據量級都很龐大,那麼如何在保證數據完整性的情況下快速處理成了一個通用的難題,這裏列舉幾個例子,大致反應一些處理思想。 1.一個文件中,每一行有一個整數,有上億行,目的:統計出現次數超過三次的整數寫入到另

原创 記某一次阿里面試的實時筆試題

某次面試阿里雲,要求實時寫一個小程序,要求如下: 1.兩個線程,一個線程生產者,一個線程是消費者 2.生產者生產票,超過10張就休息,被消費了就繼續生產。 3.消費者消費票,票沒了之後就休息,有票了接着消費。 題目看着很簡單,但卻