posts - 10,comments - 2,trackbacks - 0

          下面的類計算并緩存了一個總和,并且在另一個類中打印這個總和       

          class Cache{

                       static {

                             initializeIfNecessary();

                        }

                    private static int sum;

                    public static int getSum(){

                          initializeIfNecessary();

                          return sum;

                     }

                   private static boolean initialized = false;

                  private static synchronized void initializeIfNecessary(){

                        if(!initialized){

                               for(int i=0;  i <  100;  i++  )

                                   sum+=i;

                              initialized = true;

                            }

                    }

                  }

           

          pubic class Client  {

              pubilc static void main(String[] args){

                      System.out.println(Cache.getSum());

             }

           }

          程序是一個典型的半開循環,應該打印出1到99的整數總和,即4950,但程序運行打印的為9900,是預期值的兩倍。

          程序在確保sum在使用之前就已經初始化這個問題上,遇到了麻煩。程序結合了惰性初始化和積極初始化,還使用上了同步,以確保緩存在多線程環境下也能工作,但程序無法完成預期的工作。

          程序輸出打印是控制標志initialized 的問題。qq上一個朋友問的一本書里的問題,我也找到那本書了,是惰性初始化(static初始化)的問題,控制標志在static完成初始化后又重新被構造器賦值為false,初始化總和值的方法被執行了兩次。

          posted @ 2007-09-06 09:58 皇馬嘯西風 閱讀(218) | 評論 (1)編輯 收藏
          大概一年以前參與到一個大型信息管理軟件系統的維護工作中,這個系統是B/S結構,主要負責某省煤炭資源運銷管理,應用在了鐵路這個渠道管理上,我們的主要的系統維護工作重心在鐵路管理維護上,另外還負責一些網站信息發布管理功能的維護。

                 這個管理系統有自己的一套網絡體系,因為我并沒有參與其中的網絡體系的搭建與后期的維護工作,只是大概的了解一些:

                1.網絡體系的結構為樹狀拓撲結構,主要依據該公司的組織機構建立,該公司組織機構分為總公司一級,分公司一級,縣級公司一級以及直接負責煤炭運銷具體的工作的公司一級。網絡體系以此而建,也分為四級網絡。

               2.使用一套c/s體系的軟件,完成基礎數據的收集,并定時上報到縣級公司或者直屬的分公司,然后將數據匯總分析后通過這套軟件提交,統一儲存到總公司數據庫服務器。

              3.根據該行業的業務,每年全省的煤炭運量,特別是通過鐵路渠道的運量,在年初通過簽訂的全年合同決定,該年的業務也以此運量為準。

               這套軟件成型與2002年,在當時的條件限制下這是一套最為有效的軟件工作體系了,但也有其缺陷:

                1. 盡管基礎數據收集大都已經為通過電子稱量系統實現自動數據提取,但在上報過程中,仍有可能對數據進行篡改,軟件為此專門增設了一個子功能系統,但使用情況不容樂觀,收效甚微。

                2. 數據統一存儲在總公司數據庫服務器中,方便管理,在最初的設計中,數據庫沒有設計負載分流以及鏡像備份的等處理,隨著系統的使用,數據量的增加,數據庫負載增大,軟件反應速度越來越慢。

                這個缺陷在今年年初運量提報和每個月初的各個分公司的運量提報中尤為明顯,數據庫出現多次當機情況,處理過多次,但收效不明顯,在使用高峰期需要注意數據庫的使用情況。

               這個系統的網絡部分就寫這么多吧,畢竟不太熟悉,還是摻雜了軟件的非網絡部分,:-)。下一篇開始寫這個軟件的web架構部分,主要是mvc框架和dao框架部分。

          posted @ 2007-09-06 09:57 皇馬嘯西風 閱讀(242) | 評論 (0)編輯 收藏

          網站:JavaEye 作者:liuwei1981 發表時間: 2007-09-04 15:36 此文章來自于 http://www.JavaEye.com
          聲明:本文系JavaEye網站原創文章,未經JavaEye網站或者作者本人書面許可,任何其他網站嚴禁擅自發表本文,否則必將追究法律責任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/120263

           


          The Architect (dedicated non-programming technical decision maker and problem solver for business):


          架構師(專用非編程技術決策者,業務問題解決者)



          1. Has outdated programming knowledge and experience, loss of touch with modern development approaches and practices.                                                                                                                                                                                             過時的編程知識和經驗,對現代的軟件開發方式和實踐缺乏關注。   

          2. Don’t program and don’t know much about evolving system internals, but makes key technical decisions. Often has completely irrelevant and unreal picture what is happening with the system.                                                                       不進行軟件開發,對系統內部知之甚少,但卻要做出關鍵的技術決策。對系統經常有完全無關和虛幻的映像(不太會翻譯這句)

          3. Tends to complex, premature and generic solutions when the system is still in infancy and nothing is clear. Applies latest modern buzzword technologies as SOA, MDA, SaaS, Software Factories, etc. which look so beautiful in technical magazines, conferences and CV, but cause unnecessary headache for developers.                                      當系統仍處于起始階段,都還不明晰的時候,常會做出復雜的,不成熟僅僅通用的決策。使用在技術雜志、技術大會和CV上看起來如此美妙的現代最新的口號,諸如SOA,MDA,SaaS,Software Factories等等,只是給開發人員帶來不必要的頭痛。

          4. Plays role of the middleman introducing complexity in coordination and project responsibilities. Represents software team in interactions with business customers reducing communication value for the rest of the team and impacting idea flow.                                                                                                                                                                          以中間人的角色,引入復雜的協調和項目的責任。代表開發組與客戶進行交流,屏蔽了其他成員的發言權和開發思想上的交流。(翻譯時候意思懂了,但就是表達不出來)

          5. Reduces quality of decisions, which become limited to one perspective; decision making starts lacking diversity, independence and decentralization, which are essential attributes of collective intelligence.                                          決定僅僅局限在某個角度 ,降低了決策的質量;最初的決定缺乏多樣性,獨立性和向下兼容,這些都是集體決策的本質。                      

          6. Creates tension with developers who experience mismatch between grand design and reality. Often continues pushing design decisions until the system becomes overly complex, difficult to change and becomes completely unusable.                                                                                                                                                                                             在缺乏大型設計和實現經驗的開發者之間制造緊張氛圍。不斷的做出決定,系統變得過度復雜,難于改變,和應用。

          7. Secures job and justifies high salary - becomes authoritative center for solving business problems without much input from the team.                                                                                                                                                                            有穩定的工作和高薪,成為解決業務問題的權威,但卻從未融入到團隊當中。

          8. Causes loss of sense of ownership, motivation and accountability in developers by detaching them from the key architecture decisions.                                                                                                                                                                     把開發人員排除在關鍵架構決策之外,讓他們缺乏主動性和責任感。

          9. Concentrates project knowledge and the big picture in one head, limiting (and sometimes preventing) complete understanding for others.                                                                                                                                                                 只精通工程知識和大局一面,對其他方面幾乎一無所知。

          10. Contributes to creation of specialized IT verticals that hurt relations with the business.                                                     擅長在縱向專門的IT方面建立聯系,但同時卻切斷了業務上的關聯。




          《 10條你不需要軟件架構師的理由(Top 10 reasons why you don’t need Softwa)(轉) 》 的評論也很精彩,歡迎您也添加評論。查看詳細 >>

          推薦相關文章:
            學習英語,可能每個人都有自己喜歡的方法!
            老爸的情書中英對照,爆笑




          JavaEye推薦
          上海樂福狗信息技術有限公司:誠聘技術經理和開發工程師
          免費下載IBM社區版軟件--它基于開放的標準,支持廣泛的開發類型,讓您的開發高效自主!
          京滬穗蓉四地免費注冊,SOA技術高手匯聚交鋒.
          上海:優秀公司德比:高薪誠聘 資深Java工程師
          廣州:優易公司:誠聘Java工程師,開發經理
          上海:尤恩斯國際集團:誠聘開發工程師
          北京:優秀公司NHNChina招聘:WEB開發,系統管理,JAVA開發, DBA



          文章來源: http://liuwei1981.javaeye.com/blog/120263
          posted @ 2007-09-04 15:36 皇馬嘯西風 閱讀(402) | 評論 (1)編輯 收藏
          主站蜘蛛池模板: 连城县| 阿克| 体育| 余庆县| 金阳县| 涞源县| 陇川县| 开封县| 古浪县| 诏安县| 清镇市| 额济纳旗| 历史| 酒泉市| 九龙城区| 丽水市| 炎陵县| 泌阳县| 家居| 石渠县| 江华| 新平| 南投市| 会宁县| 永靖县| 桂东县| 克山县| 灵台县| 鲁山县| 乌苏市| 遂川县| 岐山县| 虹口区| 台前县| 大化| 肇源县| 台州市| 罗山县| 简阳市| 天气| 中宁县|