|
2006年11月15日
摘要: 其實所有的一切都只是幾個因素的相互作用, 互為函數:
* 并發量/數據量
* 機器配置
* 單個請求處理速度
* 穩定運行時間
閱讀全文
摘要: 假設我們必須處理對象的存儲, 加載, 和查詢. 性能和引用完整性的約束, 給接口的實現帶來了以下問題:
1. 加載根對象時如何避免加載大半個數據庫
2. 存儲時如何更新整個對象圖
3. 存儲時如何高效的更新整個對象圖
4. 何時同步對象的內存狀態和持久存儲狀態
5. 如何確保在出錯時保持對象內存狀態和持久存儲狀態之間的一致性
6. 如何保證引用的唯一性以避免可能的更新沖突
對性能的精益求精, 又促使人們解決更多的細節問題:
7. N+1查詢問題
8. 分離查詢模型和存儲模型
9. 盡量減少查詢語句
這些問題的解決方案又會帶來新的問題. 閱讀全文
摘要: 其它所有問題都是這個問題的某種解決方案引入的 閱讀全文
摘要: 我們都知道我們無法證明軟件已經沒有Bug, 用波普爾的話說就是: 科學理論都是假說, 愛因斯坦的競爭理論表明對牛頓理論的即使如海王星發現般嚴格的檢驗都不能確保其正確性, 即對白天鵝的一千次觀察都不足以斷言黑天鵝的不存在 閱讀全文
摘要: 1. 并行開發 與 集成 之間的矛盾
2. 基于文本的合并 與 基于語意的邏輯 之間的矛盾
3. 依賴的穩定性 與 依賴自身的演進升級 之間的矛盾 閱讀全文
摘要: 試錯法廣泛的應用于自然科學領域. 迭代開發就是試錯法在軟件開發過程方面的應用 閱讀全文
摘要: 機器環境雖然各有各的不同, 但依然有可能創建一個"環境無關的環境" 閱讀全文
摘要: 這應該是一個概念: 你放一個東西到Session里, 但你只能獲得一次, 下次它就不存在了. 用類來表示概念, 我們只需在生成對象時把自己加到Session里, 在提供的獲取函數中把自己從Session中移除, 那么第二次你就得不到它了. 閱讀全文
摘要: Q: 結對編程、責任共享,完全是胡說,代碼找不到作者,開發人員哪里會有責任心!
Q: 我干嘛要把辛辛苦苦很多年積累的經驗白白告訴別人? 我喜歡不可替代的感覺.
Q: 有些老手不喜歡結對, 覺得新人不勞而獲對他們不利, 不情愿, 怎么辦?
Q: 那互不相讓怎么辦?
Q: 我想修改某段代碼, 想找原作者了解一下思路, 可根本不知道是誰 閱讀全文
摘要: Q: 我的產品是電信級的設備, 幾百人分成幾十個項目組在開發, 各個項目組進度不統一, 如何集成?
Q: CI的愿景是好的, 但我們這里根本不可能, 我們的產品需要復雜的運行環境, 運行時需要人工干預, 怎么測? 閱讀全文
摘要: Q: 為什么通過單元測試發現的 Bug 很少 ?
Q: 你們說驗收測試應該由客戶來編寫, 可在我們這里根本不可能.
閱讀全文
摘要: Working Effectively with Legacy Code 閱讀全文
摘要: 挖掘你 CI server 的能力 閱讀全文
摘要: 希望這能幫助讓你的CruiseControl的配置文件更容易維護. 我相信持續集成應該很簡單, 即使這會讓我失業. 閱讀全文
摘要: 突然之間多了點對你的構建破壞者同事們的容忍, 你盯著那個 build.xml, 它依然顯示在你的IDE里面. 就是它了, 文件結尾處有一個多余的大大的 '#' 號 閱讀全文
摘要: Ant腳本如何適應大規模的項目, Large Scale 的項目意味著: 目錄較多, 層次較深 依賴較多, 構建腳本依賴的第三方Ant Task, 項目依賴的第三方庫等 測試較多, 構建時間反饋周期較長 需要在不同操作系統上運行 需要在不同團隊成員的機器上運行 Ant腳本較長如何維護 閱讀全文
摘要: "擁抱變化" 是敏捷的態度之一, CruiseControl 正是來實證這種態度的作品. 多種類型的"變化"都會觸發CruiseControl的一次構建過程.
我們知道CruiseControl能根據源代碼的變化來調度一次構建, 但你知道CruiseControl支持多少種調度模式嗎?
閱讀全文
摘要: 我想這個實踐的核心是:
1, 將CruiseControl的配置文件check in到版本控制系統中, 以解決意外損壞的問題
2, 使用專門的"project"來自動更新配置, 以解決每次需要有人專門登錄到build server上去更新的瓶頸問題.
3, 復用但不依賴于CruiseControl對配置文件的validation, 以同時獲得 "阻止有問題的配置文件被應用到build server的能力" 和 "迅速獲知有人check in了有問題的配置的能力"
閱讀全文
摘要: 讓你的項目包含自己的依賴. (讓你的構建腳本顯式的引用包含在項目內部的依賴, 而不是隱式的讓構建工具來包含那些依賴) 閱讀全文
摘要: 我想這個實踐的好處就是
1. 開發者每次在自己機器上構建時不需要發布, 省時間
2. CruiseControl使用跟開發者相同的構建腳本, 減少了開發者構建成功而CruiseControl構建失敗的概率, 省調試時間
3. CruiseControl運行Publisher時開發者可以繼續工作了, 提高了并發性, 還是省時間 閱讀全文
摘要: 這實際上反映了目前SAX Handler接口定義中缺失的三種能力: Stoppable, Subscribable, 和 Reportable; 最終, ESAX 為 原始的 SAX Handler 補足了 可中止的能力, 可訂閱的能力, 可匯報的能力, 使得比原始的SAX Handler更快, 比DOM接口更簡單, 更易于編程 閱讀全文
摘要: emma : 測試覆蓋率低于指標的時候讓Ant Build自動失敗 閱讀全文
|