原创 決定在這裏留下點什麼

把博客中關於計算機技術的內容貼過來。

原创 動手實現舞蹈鏈算法

把 簡書 的文章轉過來,這邊看的人應該多點。 舞蹈鏈(Dancing links)實際上是一種數據結構,可以用來實現 X算法,以解決精確覆蓋問題。 什麼是精確覆蓋(Exact Cover)問題呢?維基百科上對精確覆蓋的定義如下:在

原创 來點推理題

   網上流傳的一個微軟面試題就是給出一組相關的問題,每個問題的答案都跟其它題目相關,單看一道題目也許幾個答案都是正確的,必須綜合整組問題才能做出正確的回答。         現在我也來出幾套類似的,嘿嘿。      1. 第6題的答案爲

原创 project euler

   http://projecteuler.net   編程解數學題的網站。比較有意思。   一年前做了153題,第154題當時卡在了那裏,後來就一直沒往下做。今天打開網站看了看已經出到252題了,我在中國的排名也跌到第18了。欠了99

原创 應該如何使用Mock

話說昨天看了一篇《Mock Roles, not Objects 》的論文,徹底顛覆了我對mock的理解和認識。這篇論文是jMock作者在2004年發表的,描述了Mock Objects應該如何在TDD的過程中使用。   按照這篇文章的說

原创 開發人員最重要的技能

08年初寫的。話說我現在越來越發現,想寫出好的代碼真不是一件看上去那麼簡單的事情,要遠遠比學習某些特定的技術困難得多。   2008-01-23 19:37   閱讀了Martin Fowler最新的一篇blog,頗有感觸。   <a h

原创 關於測試驅動和遺留系統

   隨手google到gigix的blog,看了一些他的觀點和若干人等的相關評論,有些覺得頗有道理,摘錄如下。     看“測試驅動開發”這個名字,首先應該明確:與它對應的是“文檔驅動開發”。它是一種開發過程,這裏的測試是一個設計問題,

原创 面向對象分析與設計(第3版)

Booch的這本書分成三個部分,第一部分介紹了面向對象的基本概念。我覺得這是這本書寫得最好的一部分。雖然我覺得從理論上而言講的可能還是不夠深入,但至少讀完之後對面向對象會有一個直觀上的認識。第二部分則介紹了UML2.0,以及軟件開發生命週

原创 JAVA併發編程筆記(4)

Thread Confinement 如果數據只被一個線程訪問,那自然就不需要同步。所以Thread Confinement是獲得線程安全最簡單的方式之一。這有幾種方式。可以完全依賴於實現,也就是調用者來保證只有單線程訪問,但這有可能不是

原创 09年工作總結

工作上,沒有什麼進步。 沒有什麼進步!!!   10年展望: 過慢點,就是成功。

原创 JAVA併發編程筆記(2)

可見性 Visibility這玩意兒很微妙,很容易違反直覺。要在多線程之間讀寫內存保證可見性,需要使用同步:always use the proper synchronization whenever data is shared acr

原创 還是得記點筆記

很多書看了一遍之後就忘了,比如前面這個java concurrency in practice。記了筆記至少能幫助自己回憶,這樣也不用再費那麼大勁重新去複習幾百頁的英文書——還是電子版的。所以重新開始記點筆記寫點摘要,也算是一個積累。

原创 JAVA併發編程筆記(3)

Publication and Escape 發佈一個對象意味着能夠從它能夠從它當前範圍之外被訪問到。比如,保存可以被其他代碼找到的這個對象的一個引用,或者將其作爲一個非私有方法的返回值,或者將其作爲參數傳遞給其它的類。 public s

原创 Agile & Iterative Development (1)

軟件不是可以預測的或大規模生產製造過程。軟件是新產品的開發。 迭代開發計劃的驅動方式包括風險驅動和客戶驅動。兩種方式應該結合使用。風險驅動是指從技術的角度來說,開發人員選擇風險最高的部分先進行開發。而客戶驅動則是由客戶從業務的角度上選擇最

原创 塔木德遺產分配問題

這是個很有趣的問題,來自於古書《塔木德》中記述的如何給三個老婆分配遺產。 先介紹一下《塔木德》。按照wikipedia詞條裏的解釋,《塔木德》 (希伯來文 :התלמוד ‎,轉寫:Talmud ),是猶太教 認爲地位僅次於《塔納赫 》的