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