原创 理解堆排序

複習外排序算法時,設計到敗者樹,而這個又和堆排序相關。剛好忙完一個項目,有時間複習一下堆排序,加深理解。 堆就是滿足下列條件的一個數組,一個數組A[

原创 Simple summary of virtual memory

Search some materials on the internet and books. Review the knowledge and make a simple summary. 1 Virtual memo

原创 Character Encoding Summary

Brief Evolution History Chinese Encoding Roadmap Character Encoding System Hierarchy    Character --> Code Point -

原创 學習UKK後綴樹構造算法

學習了UKK構建後綴樹的算法,挺不好理解。努力寫下自己的理解。 I 基本思想 構建後綴樹的基本思想:假設 T[0..i-1] 的後綴樹已經建好了,那麼在 T[0..i-1] 的每個後綴 T[0..i-1], T[1..i-1] .. T[

原创 Shell腳本中的文件名擴展和判斷條件中的空格

要從server庫裏下載一些文件,就寫腳本。在寫的過程中遇到兩個問題。 1. 文件名擴展 #!/bin/sh A="core" if [ "$A" == c* ];then   echo "OK" fi 運行腳本時,報錯“[: too m

原创 Improper Publish

There is an example in <<JCP>> 3.5 which demonstrates improper publish. public class Holder{     private int n;     pu

原创 Java創建對象的順序

 創建一個類C的對象:  1. 加載所有得類。  2. 執行靜態初始化。  3. 分配內存,並初始化爲零。  4. 處理調用的C的構造函數的參數。  6. 處理隱式或者顯式的構造函數( this()或者super())。

原创 線程安全中的不變性(Invariant)

多線程環境下,如果一個類的幾個變量之間存在不變性(Invariant),需要使用同步確保不變性不會被破壞。不變性是幾個變量之間的邏輯關係(logical assertion),不管按照什麼順序,不管哪個線

原创 同步環境下使用變量的注意點

同步塊內或者不可變對象的引用變量必須是“本類的”,不能指向外部對象引用,也不能向外部發布對象引用。《Java Concurrency in Practice》中有兩個例子: 1. 例子1: public class CachedFacto

原创 Enusre Chained Methods are thread-safe

https://www.securecoding.cert.org/confluence/display/java/VNA04-J.+Ensure+that+calls+to+chained+methods+are+atomic 在上面

原创 虛函數表博文總結

對虛函數實現方式的理解: 1.每個有虛函數的類都有虛函數表,記錄了繼承的虛函數、自己重載的虛函數的地址。 2.多重繼承時,有多個虛函數表,每繼承一個父類產生一個虛函數表。 3.構造函數構造對象時,在對象所在內存的首地址放置虛函數表的地

原创 對《JCP》"3.4.2"的理解

This chapter explain publishing immutable objects using "Volatile". The example codes are  class OneValueCache {     pr

原创 調皮的宏

《編程珠璣》第九章一道題目: n是數組最大尺寸的正整數,下面的遞歸C函數返回數組x[0...n-1]中的最大值: float arrmax(int n){     if(n==1){         re

原创 火車運煤問題

網上有一道火車運煤的問題。 題目: 你是山西的一個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裏有一列燒煤的火車,這個火車最多隻能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。

原创 Serialization 簡單小結

  I. 什麼是對象序列化   1. 我們要把對象保存到硬盤或者通過網絡傳輸,就需要把對象狀態保存下來,這個過程就是對象序列化或串行化。Java 中的序列化機制能夠將一個實例對象的狀態信息寫入到一個字節流中,使其可以通過socket進行傳