posts - 10,comments - 2,trackbacks - 0

          下面的類(lèi)計(jì)算并緩存了一個(gè)總和,并且在另一個(gè)類(lèi)中打印這個(gè)總和       

          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());

             }

           }

          程序是一個(gè)典型的半開(kāi)循環(huán),應(yīng)該打印出1到99的整數(shù)總和,即4950,但程序運(yùn)行打印的為9900,是預(yù)期值的兩倍。

          程序在確保sum在使用之前就已經(jīng)初始化這個(gè)問(wèn)題上,遇到了麻煩。程序結(jié)合了惰性初始化和積極初始化,還使用上了同步,以確保緩存在多線程環(huán)境下也能工作,但程序無(wú)法完成預(yù)期的工作。

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

          posted @ 2007-09-06 09:58 皇馬嘯西風(fēng) 閱讀(218) | 評(píng)論 (1)編輯 收藏
          大概一年以前參與到一個(gè)大型信息管理軟件系統(tǒng)的維護(hù)工作中,這個(gè)系統(tǒng)是B/S結(jié)構(gòu),主要負(fù)責(zé)某省煤炭資源運(yùn)銷(xiāo)管理,應(yīng)用在了鐵路這個(gè)渠道管理上,我們的主要的系統(tǒng)維護(hù)工作重心在鐵路管理維護(hù)上,另外還負(fù)責(zé)一些網(wǎng)站信息發(fā)布管理功能的維護(hù)。

                 這個(gè)管理系統(tǒng)有自己的一套網(wǎng)絡(luò)體系,因?yàn)槲也](méi)有參與其中的網(wǎng)絡(luò)體系的搭建與后期的維護(hù)工作,只是大概的了解一些:

                1.網(wǎng)絡(luò)體系的結(jié)構(gòu)為樹(shù)狀拓?fù)浣Y(jié)構(gòu),主要依據(jù)該公司的組織機(jī)構(gòu)建立,該公司組織機(jī)構(gòu)分為總公司一級(jí),分公司一級(jí),縣級(jí)公司一級(jí)以及直接負(fù)責(zé)煤炭運(yùn)銷(xiāo)具體的工作的公司一級(jí)。網(wǎng)絡(luò)體系以此而建,也分為四級(jí)網(wǎng)絡(luò)。

               2.使用一套c/s體系的軟件,完成基礎(chǔ)數(shù)據(jù)的收集,并定時(shí)上報(bào)到縣級(jí)公司或者直屬的分公司,然后將數(shù)據(jù)匯總分析后通過(guò)這套軟件提交,統(tǒng)一儲(chǔ)存到總公司數(shù)據(jù)庫(kù)服務(wù)器。

              3.根據(jù)該行業(yè)的業(yè)務(wù),每年全省的煤炭運(yùn)量,特別是通過(guò)鐵路渠道的運(yùn)量,在年初通過(guò)簽訂的全年合同決定,該年的業(yè)務(wù)也以此運(yùn)量為準(zhǔn)。

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

                1. 盡管基礎(chǔ)數(shù)據(jù)收集大都已經(jīng)為通過(guò)電子稱(chēng)量系統(tǒng)實(shí)現(xiàn)自動(dòng)數(shù)據(jù)提取,但在上報(bào)過(guò)程中,仍有可能對(duì)數(shù)據(jù)進(jìn)行篡改,軟件為此專(zhuān)門(mén)增設(shè)了一個(gè)子功能系統(tǒng),但使用情況不容樂(lè)觀,收效甚微。

                2. 數(shù)據(jù)統(tǒng)一存儲(chǔ)在總公司數(shù)據(jù)庫(kù)服務(wù)器中,方便管理,在最初的設(shè)計(jì)中,數(shù)據(jù)庫(kù)沒(méi)有設(shè)計(jì)負(fù)載分流以及鏡像備份的等處理,隨著系統(tǒng)的使用,數(shù)據(jù)量的增加,數(shù)據(jù)庫(kù)負(fù)載增大,軟件反應(yīng)速度越來(lái)越慢。

                這個(gè)缺陷在今年年初運(yùn)量提報(bào)和每個(gè)月初的各個(gè)分公司的運(yùn)量提報(bào)中尤為明顯,數(shù)據(jù)庫(kù)出現(xiàn)多次當(dāng)機(jī)情況,處理過(guò)多次,但收效不明顯,在使用高峰期需要注意數(shù)據(jù)庫(kù)的使用情況。

               這個(gè)系統(tǒng)的網(wǎng)絡(luò)部分就寫(xiě)這么多吧,畢竟不太熟悉,還是摻雜了軟件的非網(wǎng)絡(luò)部分,:-)。下一篇開(kāi)始寫(xiě)這個(gè)軟件的web架構(gòu)部分,主要是mvc框架和dao框架部分。

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

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-09-04 15:36 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/120263

           


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


          架構(gòu)師(專(zhuān)用非編程技術(shù)決策者,業(yè)務(wù)問(wèn)題解決者)



          1. Has outdated programming knowledge and experience, loss of touch with modern development approaches and practices.                                                                                                                                                                                             過(guò)時(shí)的編程知識(shí)和經(jīng)驗(yàn),對(duì)現(xiàn)代的軟件開(kāi)發(fā)方式和實(shí)踐缺乏關(guān)注。   

          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.                                                                       不進(jìn)行軟件開(kāi)發(fā),對(duì)系統(tǒng)內(nèi)部知之甚少,但卻要做出關(guān)鍵的技術(shù)決策。對(duì)系統(tǒng)經(jīng)常有完全無(wú)關(guān)和虛幻的映像(不太會(huì)翻譯這句)。

          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.                                      當(dāng)系統(tǒng)仍處于起始階段,都還不明晰的時(shí)候,常會(huì)做出復(fù)雜的,不成熟僅僅通用的決策。使用在技術(shù)雜志、技術(shù)大會(huì)和CV上看起來(lái)如此美妙的現(xiàn)代最新的口號(hào),諸如SOA,MDA,SaaS,Software Factories等等,只是給開(kāi)發(fā)人員帶來(lái)不必要的頭痛。

          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.                                                                                                                                                                          以中間人的角色,引入復(fù)雜的協(xié)調(diào)和項(xiàng)目的責(zé)任。代表開(kāi)發(fā)組與客戶(hù)進(jìn)行交流,屏蔽了其他成員的發(fā)言權(quán)和開(kāi)發(fā)思想上的交流。(翻譯時(shí)候意思懂了,但就是表達(dá)不出來(lái))

          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.                                          決定僅僅局限在某個(gè)角度 ,降低了決策的質(zhì)量;最初的決定缺乏多樣性,獨(dú)立性和向下兼容,這些都是集體決策的本質(zhì)。                      

          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.                                                                                                                                                                                             在缺乏大型設(shè)計(jì)和實(shí)現(xiàn)經(jīng)驗(yàn)的開(kāi)發(fā)者之間制造緊張氛圍。不斷的做出決定,系統(tǒng)變得過(guò)度復(fù)雜,難于改變,和應(yīng)用。

          7. Secures job and justifies high salary - becomes authoritative center for solving business problems without much input from the team.                                                                                                                                                                            有穩(wěn)定的工作和高薪,成為解決業(yè)務(wù)問(wèn)題的權(quán)威,但卻從未融入到團(tuán)隊(duì)當(dāng)中。

          8. Causes loss of sense of ownership, motivation and accountability in developers by detaching them from the key architecture decisions.                                                                                                                                                                     把開(kāi)發(fā)人員排除在關(guān)鍵架構(gòu)決策之外,讓他們?nèi)狈χ鲃?dòng)性和責(zé)任感。

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

          10. Contributes to creation of specialized IT verticals that hurt relations with the business.                                                     擅長(zhǎng)在縱向?qū)iT(mén)的IT方面建立聯(lián)系,但同時(shí)卻切斷了業(yè)務(wù)上的關(guān)聯(lián)。




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

          推薦相關(guān)文章:
            學(xué)習(xí)英語(yǔ),可能每個(gè)人都有自己喜歡的方法!
            老爸的情書(shū)中英對(duì)照,爆笑




          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/120263
          posted @ 2007-09-04 15:36 皇馬嘯西風(fēng) 閱讀(402) | 評(píng)論 (1)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-09-03 18:30 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/119882

                      完成該系統(tǒng)后,所完成的后期維護(hù)工作中,最大的以部分就是數(shù)據(jù)統(tǒng)計(jì)查詢(xún)分析功能的完善了。


                 系統(tǒng)軟件框架提供了一套報(bào)表生成系統(tǒng)來(lái)完成數(shù)據(jù)統(tǒng)計(jì)查詢(xún)的功能。這條報(bào)表生成系統(tǒng)可以生成excel和pdf兩種格式的統(tǒng)計(jì)報(bào)表。


                 這個(gè)系統(tǒng)使用報(bào)表的流程大致為:


                 1.每個(gè)功能都提供一系列的報(bào)表,在軟件中這些報(bào)表以二維字符串?dāng)?shù)組的數(shù)據(jù)格式保存,每個(gè)字符串?dāng)?shù)組對(duì)象包括該報(bào)表的唯一鍵值,報(bào)表名稱(chēng),報(bào)表?xiàng)l件提供頁(yè)面以及生成該報(bào)表的具體的Java類(lèi)。


                 2.選擇需要生成的報(bào)表,系統(tǒng)將該報(bào)表的唯一鍵值傳入統(tǒng)一的報(bào)表控制類(lèi),首先是跳轉(zhuǎn)到生成該報(bào)表的條件頁(yè)面,按照功能劃分報(bào)表的主要原因就是每個(gè)功能的報(bào)表?xiàng)l件一致,可以使用統(tǒng)一的控制類(lèi)。


                 3.提交條件后,統(tǒng)一的報(bào)表控制類(lèi)會(huì)調(diào)用該報(bào)表的生成類(lèi),這些類(lèi)需要繼承統(tǒng)一的接口,提供了一個(gè)統(tǒng)一的方法,返回?cái)?shù)據(jù)類(lèi)型為Vector集合的對(duì)象,這個(gè)Vector對(duì)象容器數(shù)據(jù)對(duì)象要求為:


               兩個(gè)Vector對(duì)象,一個(gè)為表頭Vector,一個(gè)為表體Vector,這兩個(gè)Vector對(duì)象中存儲(chǔ)的數(shù)據(jù)為字符串?dāng)?shù)組對(duì)象。


             在具體應(yīng)用中,只要將數(shù)據(jù)填充到字符串?dāng)?shù)組中,再依次放入Vector中,報(bào)表框架會(huì)生成報(bào)表。


             這個(gè)框架的一個(gè)確定就是只能接受字符串?dāng)?shù)組對(duì)象,如果生成excel格式的報(bào)表,無(wú)法根據(jù)生成的報(bào)表進(jìn)行計(jì)算,必須手動(dòng)的將數(shù)據(jù)調(diào)整為數(shù)字型。


           




          《 總結(jié)一下維護(hù)了一年的一個(gè)軟件系統(tǒng)的軟件體系(六) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/119882
          posted @ 2007-09-03 18:30 皇馬嘯西風(fēng) 閱讀(175) | 評(píng)論 (0)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-08-27 10:06 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/117096

          大家喝的是啤酒,這時(shí)你入座了,給自己倒了杯可樂(lè),這叫低配置;給自己倒了杯啤酒,這叫標(biāo)準(zhǔn)配置;給自己倒了杯茶水,這茶的顏色還跟啤酒一樣,這叫木馬;給自己倒了杯可樂(lè),還滴了幾滴醋,不僅顏色跟啤酒一樣,不冒熱氣還有泡泡,這叫超級(jí)木馬;你同事給你到了杯白酒,這叫推薦配置。

                 人到齊了,酒席開(kāi)始了。你現(xiàn)一個(gè)人喝了一小口,這叫單元測(cè)試;你跟旁邊的人說(shuō)哥們?cè)蹅冸S意,這叫交叉測(cè)試;但是他說(shuō)不行,這杯要干了,這叫壓力測(cè)試;于是你說(shuō)那就大家一起來(lái)吧,這叫內(nèi)部測(cè)試;這時(shí)候boss向全場(chǎng)舉杯,這叫公開(kāi)測(cè)試。


                菜過(guò)三巡,你就不跟他們客氣了,你向?qū)γ娴娜司淳?,這叫p2p;他回敬你,你又再敬他,這叫TCP;你向一桌人挨個(gè)敬酒,這叫令牌環(huán);你說(shuō)只要是兄弟就干了這杯,這叫廣播。


             有一個(gè)人過(guò)來(lái)向這卓敬酒,你說(shuō)不行,你先過(guò)了我這關(guān),這叫防火墻。你的小弟們過(guò)來(lái)敬你酒,這叫一對(duì)多。


             酒過(guò)三巡后,你也該活動(dòng)活動(dòng)了,你一桌一桌的走,這叫輪詢(xún);你突然看見(jiàn)某一桌的漂亮mm,走了過(guò)去,這叫優(yōu)先級(jí);你去了坐下來(lái)就不打算走了,這叫死循環(huán);你的老大舉杯邀你過(guò)去,你只好走過(guò)去,這叫激活事件。


            你向一桌敬酒,他們說(shuō):“不行,不行,我們都喝白的。”于是你也喝白的。這叫本地化;你向boss敬酒,可是boss被圍起來(lái),你只能站在外圍,這叫排隊(duì);你終于到了內(nèi)圍,小心翼翼的向前一步,這叫訪問(wèn)臨界區(qū);你拍照boss的肩膀說(shuō)哥們?cè)蹅冊(cè)俸纫驯?,這叫越界。




          《 程序員是如何喝酒的?(轉(zhuǎn)) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/117096
          posted @ 2007-08-27 10:06 皇馬嘯西風(fēng) 閱讀(141) | 評(píng)論 (0)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-08-27 09:18 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/117084

                              一個(gè)程序員對(duì)自己的未來(lái)很迷茫,于是去問(wèn)上帝:“萬(wàn)能的上帝啊,請(qǐng)你告訴我,我的未來(lái)會(huì)怎樣?”


                      上帝說(shuō):“我的孩子,你去問(wèn)Lippman,他現(xiàn)在領(lǐng)導(dǎo)的程序員的隊(duì)伍可能是地球上最大的。”


                     于是他去問(wèn)Lippman,Lippman說(shuō):“程序員的未來(lái)就是駕馭程序員。”


                    這個(gè)程序員對(duì)這個(gè)未來(lái)不滿(mǎn)意,于是他又去問(wèn)上帝:“萬(wàn)能的上帝呀,請(qǐng)你告訴我,我的未來(lái)會(huì)怎樣?”


                   上帝說(shuō):我的孩子,你去問(wèn)Gates,他現(xiàn)在所擁有的財(cái)產(chǎn)可能是地球上最多的。”


                   于是他去問(wèn)Gates,Gates說(shuō):“程序員的未來(lái)就是榨取程序員。”


                  這個(gè)程序員對(duì)這個(gè)未來(lái)不滿(mǎn)意,于是他又去問(wèn)上帝:“萬(wàn)能的上帝啊,請(qǐng)你告訴我,我的未來(lái)會(huì)怎樣?”


                  上帝說(shuō):“我的孩子,你去問(wèn)侯捷,他寫(xiě)的計(jì)算機(jī)書(shū)的讀者可能是地球上最多的。”


                  于是他去問(wèn)侯捷。


                  侯捷說(shuō):“程序員的未來(lái)就是誘惑程序員。”


                 這個(gè)程序員對(duì)這個(gè)未來(lái)不滿(mǎn)意,于是又去問(wèn)上帝:“萬(wàn)能的上帝啊,請(qǐng)你告訴我,我的未來(lái)會(huì)怎樣?”


                上帝搖搖頭:“唉,我的孩子,你還是別當(dāng)程序員了。”




          《 程序員的未來(lái)(轉(zhuǎn)) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/117084
          posted @ 2007-08-27 09:18 皇馬嘯西風(fēng) 閱讀(188) | 評(píng)論 (0)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-08-23 09:45 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/115574

                     該系統(tǒng)軟件框架對(duì)sql操作進(jìn)行了封裝,并提供了一批API幫助客戶(hù)程序員更為簡(jiǎn)便的進(jìn)行數(shù)據(jù)庫(kù)操作。這些api包括:




          1.        統(tǒng)一的DbConnection管理,客戶(hù)程序員只需將要執(zhí)行的sql語(yǔ)句作為參數(shù)傳入,api會(huì)將結(jié)果列表以二維字符串?dāng)?shù)組的形式返回。api提供特殊的方法,例如翻頁(yè)處理等都提供了相應(yīng)的處理。



          2.        按照功能劃分dao操作類(lèi)。類(lèi)的編寫(xiě)有自身設(shè)計(jì)的一套規(guī)范。首先該功能的dao操作類(lèi)設(shè)計(jì)為接口,然后按照數(shù)據(jù)庫(kù)的不同特殊處理實(shí)現(xiàn)該接口。例如:接口為T(mén)estDAO.java,使用oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)該接口,為OraTestDAO.java,使用sqlserver數(shù)據(jù)庫(kù)實(shí)現(xiàn)該接口,為SqlTestDAO.java。dao操作類(lèi)直接操作框架對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的DbConnection對(duì)象進(jìn)行業(yè)務(wù)處理。



          3.       所有的接口實(shí)現(xiàn)的dao操作類(lèi)在web服務(wù)器的一個(gè)特殊目錄中存在一個(gè)xml格式的配置文件。
            xml 代碼




            1. <DAOLIST>  

            2. <DAO>  

            3. <NAME>testdaoNAME>  

            4. <CLASSNAME>com.test.dao.OraTestDAOCLASSNAME>  

            5. <DESCRIPTION>測(cè)試DESCRIPTION>  

            6. DAO>  

            7.  DAOLIST>  






          4.     在web服務(wù)器的同時(shí),會(huì)同時(shí)啟動(dòng)一個(gè)線程,讀入該xml文件,并讀入數(shù)據(jù)庫(kù)配置參數(shù)文件。與hibernate這個(gè)框架相比,這個(gè)dao管理只能在web應(yīng)用中使用。



          5.     前幾篇提到的web層使用的Ctrl控制類(lèi),在框架設(shè)計(jì)中不能直接操作dao操作類(lèi),而是存在一個(gè)中間層,包括BO類(lèi)和VOListIter類(lèi),編寫(xiě)這兩個(gè)類(lèi)都需實(shí)現(xiàn)框架提供的接口。bo類(lèi)主要包括數(shù)據(jù)庫(kù)的除獲取數(shù)據(jù)列表以外的所有操作,如錄入,修改等,VOListIter類(lèi)專(zhuān)門(mén)為實(shí)現(xiàn)數(shù)據(jù)列表翻頁(yè)設(shè)計(jì),通過(guò)該類(lèi)獲取翻頁(yè)數(shù)據(jù)列表方法,需要首先聲明一個(gè)長(zhǎng)度為5的Integer類(lèi)型的數(shù)組,DbConnection類(lèi)的該方法需要這個(gè)參數(shù),將該列表的當(dāng)前頁(yè)數(shù)和最大頁(yè)數(shù)返回。



                 這個(gè)數(shù)據(jù)庫(kù)框架還提供了一些方便編寫(xiě)代碼的操作,例如拼裝sql語(yǔ)句,提供了一個(gè)這樣的方法:MakeUp類(lèi)。代碼如下:


          java 代碼


           





          1. String sql = " INSERT INTO  test_t  (testid,testname) "  

          2.         + " VALUES (@,'#')  ";   

          3.   

          4. String[] key = {   

          5.         test.getId(),test.getName()     

          6.   };   

          7. sql = MakeUp.makeUp(key, sql);  



           


          這個(gè)makeUp方法會(huì)將sql語(yǔ)句拼裝好,@表示數(shù)字占位,#表示字符占位。


          這個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)操作管理大致就是這樣了,比較簡(jiǎn)單,總的來(lái)說(shuō)就是對(duì)dbconncetion 操作進(jìn)行了重新封裝,方便客戶(hù)程序員的使用。


           




          《 總結(jié)一下維護(hù)了一年的一個(gè)軟件系統(tǒng)的軟件體系(五) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/115574
          posted @ 2007-08-23 09:45 皇馬嘯西風(fēng) 閱讀(169) | 評(píng)論 (0)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-08-22 09:38 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/115158

                     維護(hù)的這個(gè)軟件系統(tǒng)使用了一個(gè)比較復(fù)雜的系統(tǒng)權(quán)限管理系統(tǒng),原本的設(shè)計(jì)是將用戶(hù)對(duì)軟件的使用權(quán)限控制到以最末級(jí)的菜單,并根據(jù)公司組織機(jī)構(gòu)的設(shè)計(jì),上級(jí)組織單位可以將自身所獲得的權(quán)限繼續(xù)授權(quán)到自己的下級(jí)公司。

                 為了授權(quán)權(quán)限的操作簡(jiǎn)單話(huà),不然每次都從幾百個(gè)菜單選項(xiàng)中選擇給該用戶(hù)授權(quán)的菜單權(quán)限,恐怕這個(gè)權(quán)限系統(tǒng)管理員就要崩潰了。:-),權(quán)限管理系統(tǒng)將權(quán)限分為了權(quán)限組,權(quán)限域,基本權(quán)限管理。


                權(quán)限組和權(quán)限域的區(qū)別我至今沒(méi)有太分的清楚,郁悶中····在不多的使用當(dāng)中(主要是設(shè)置測(cè)試用戶(hù)的權(quán)限)感覺(jué)上這兩種權(quán)限范圍設(shè)置是評(píng)級(jí)的,沒(méi)有誰(shuí)是誰(shuí)的上級(jí)的關(guān)系,不清楚當(dāng)初為什么設(shè)置成這樣,我用的主要是權(quán)限域的設(shè)置。


               給用戶(hù)授權(quán)下權(quán)限,前提是已經(jīng)有相應(yīng)的權(quán)限域設(shè)置。


             1.權(quán)限域設(shè)置:權(quán)限域需要相應(yīng)的設(shè)置編碼,并選擇該權(quán)限域包括的菜單權(quán)限。


             2.在設(shè)置好權(quán)限域后,就可以直接將該權(quán)限域授權(quán)到系統(tǒng)用戶(hù)。


             權(quán)限管理使用了數(shù)據(jù)庫(kù)信息管理,現(xiàn)在使用起來(lái)比較笨拙,不過(guò)由于最初的設(shè)置過(guò)于復(fù)雜,如果使用現(xiàn)在比較統(tǒng)一的xml文件配置,可能使用起來(lái)也不是很方便。


             每個(gè)菜單權(quán)限項(xiàng)都有一個(gè)自身的權(quán)限編碼,該系統(tǒng)的菜單全部分為三級(jí),編碼規(guī)范為:一級(jí)菜單編碼_二級(jí)菜單編碼_三級(jí)菜單編碼。這樣,在授權(quán)權(quán)限的時(shí)候可以直接將一級(jí)菜單授權(quán),用戶(hù)相應(yīng)的也獲得該一級(jí)菜單下所有功能的使用權(quán)。


              用戶(hù)登錄成功后系統(tǒng)會(huì)將該用戶(hù)的合法權(quán)限值壓到一個(gè)集合中,放到sessin對(duì)象里。


             權(quán)限的控制在系統(tǒng)的頁(yè)面和后臺(tái)控制類(lèi)都有實(shí)現(xiàn)。頁(yè)面使用了上一篇提到的頁(yè)面邏輯標(biāo)簽實(shí)現(xiàn)控制,在顯示該頁(yè)面之前,控制類(lèi)使用了個(gè)系統(tǒng)框架提供的公共權(quán)限控制類(lèi)將該用戶(hù)的權(quán)限值壓到頁(yè)面值中。


            在調(diào)用該功能之前,控制類(lèi)現(xiàn)會(huì)判斷該用戶(hù)的權(quán)限,有一個(gè)通用類(lèi),將該功能的權(quán)限和當(dāng)前的用戶(hù)對(duì)象作為參數(shù)傳入,該類(lèi)會(huì)判斷在用戶(hù)的權(quán)限集合中是否包括該權(quán)限,以決定是否繼續(xù)執(zhí)行該功能流程。


            這個(gè)系統(tǒng)的權(quán)限管理部分就是這么多了,下一篇講講這個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)管理部分。維護(hù)的這個(gè)軟件系統(tǒng)使用了一個(gè)比較復(fù)雜的系統(tǒng)權(quán)限管理系統(tǒng),原本的設(shè)計(jì)是將用戶(hù)對(duì)軟件的使用權(quán)限控制到以最末級(jí)的菜單,并根據(jù)公司組織機(jī)構(gòu)的設(shè)計(jì),上級(jí)組織單位可以將自身所獲得的權(quán)限繼續(xù)授權(quán)到自己的下級(jí)公司。


                 為了授權(quán)權(quán)限的操作簡(jiǎn)單話(huà),不然每次都從幾百個(gè)菜單選項(xiàng)中選擇給該用戶(hù)授權(quán)的菜單權(quán)限,恐怕這個(gè)權(quán)限系統(tǒng)管理員就要崩潰了。:-),權(quán)限管理系統(tǒng)將權(quán)限分為了權(quán)限組,權(quán)限域,基本權(quán)限管理。


                權(quán)限組和權(quán)限域的區(qū)別我至今沒(méi)有太分的清楚,郁悶中····在不多的使用當(dāng)中(主要是設(shè)置測(cè)試用戶(hù)的權(quán)限)感覺(jué)上這兩種權(quán)限范圍設(shè)置是評(píng)級(jí)的,沒(méi)有誰(shuí)是誰(shuí)的上級(jí)的關(guān)系,不清楚當(dāng)初為什么設(shè)置成這樣,我用的主要是權(quán)限域的設(shè)置。


               給用戶(hù)授權(quán)下權(quán)限,前提是已經(jīng)有相應(yīng)的權(quán)限域設(shè)置。


             1.權(quán)限域設(shè)置:權(quán)限域需要相應(yīng)的設(shè)置編碼,并選擇該權(quán)限域包括的菜單權(quán)限。


             2.在設(shè)置好權(quán)限域后,就可以直接將該權(quán)限域授權(quán)到系統(tǒng)用戶(hù)。


             權(quán)限管理使用了數(shù)據(jù)庫(kù)信息管理,現(xiàn)在使用起來(lái)比較笨拙,不過(guò)由于最初的設(shè)置過(guò)于復(fù)雜,如果使用現(xiàn)在比較統(tǒng)一的xml文件配置,可能使用起來(lái)也不是很方便。


             每個(gè)菜單權(quán)限項(xiàng)都有一個(gè)自身的權(quán)限編碼,該系統(tǒng)的菜單全部分為三級(jí),編碼規(guī)范為:一級(jí)菜單編碼_二級(jí)菜單編碼_三級(jí)菜單編碼。這樣,在授權(quán)權(quán)限的時(shí)候可以直接將一級(jí)菜單授權(quán),用戶(hù)相應(yīng)的也獲得該一級(jí)菜單下所有功能的使用權(quán)。


              用戶(hù)登錄成功后系統(tǒng)會(huì)將該用戶(hù)的合法權(quán)限值壓到一個(gè)集合中,放到sessin對(duì)象里。


             權(quán)限的控制在系統(tǒng)的頁(yè)面和后臺(tái)控制類(lèi)都有實(shí)現(xiàn)。頁(yè)面使用了上一篇提到的頁(yè)面邏輯標(biāo)簽實(shí)現(xiàn)控制,在顯示該頁(yè)面之前,控制類(lèi)使用了個(gè)系統(tǒng)框架提供的公共權(quán)限控制類(lèi)將該用戶(hù)的權(quán)限值壓到頁(yè)面值中。


            在調(diào)用該功能之前,控制類(lèi)現(xiàn)會(huì)判斷該用戶(hù)的權(quán)限,有一個(gè)通用類(lèi),將該功能的權(quán)限和當(dāng)前的用戶(hù)對(duì)象作為參數(shù)傳入,該類(lèi)會(huì)判斷在用戶(hù)的權(quán)限集合中是否包括該權(quán)限,以決定是否繼續(xù)執(zhí)行該功能流程。


            這個(gè)系統(tǒng)的權(quán)限管理部分就是這么多了,下一篇講講這個(gè)系統(tǒng)的數(shù)據(jù)庫(kù)管理部分。




          《 總結(jié)一下維護(hù)了一年的一個(gè)軟件系統(tǒng)的軟件體系(四) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/115158
          posted @ 2007-08-22 09:38 皇馬嘯西風(fēng) 閱讀(163) | 評(píng)論 (0)編輯 收藏

          網(wǎng)站:JavaEye 作者:liuwei1981 發(fā)表時(shí)間: 2007-07-31 12:05 此文章來(lái)自于 http://www.JavaEye.com
          聲明:本文系JavaEye網(wǎng)站原創(chuàng)文章,未經(jīng)JavaEye網(wǎng)站或者作者本人書(shū)面許可,任何其他網(wǎng)站嚴(yán)禁擅自發(fā)表本文,否則必將追究法律責(zé)任!
          原文鏈接: http://liuwei1981.javaeye.com/blog/107348

                 這個(gè)軟件架構(gòu)使用的mvc架構(gòu)包括使用自身一套頁(yè)面邏輯,標(biāo)簽類(lèi)型比較簡(jiǎn)單,包括邏輯判斷標(biāo)簽、頁(yè)面賦值標(biāo)簽和循環(huán)list對(duì)象取值標(biāo)簽。

               在執(zhí)行完頁(yè)面請(qǐng)求返回的頁(yè)面沒(méi)有規(guī)定,可以是jsp,也可以是html頁(yè)面,使用上一篇提到的Common對(duì)象跳轉(zhuǎn)頁(yè)面,方法為:common.showPage("page")方法,因?yàn)闆](méi)有該框架的這部分源代碼,只能大概推測(cè),這個(gè)方法是讀入頁(yè)面,并將執(zhí)行頁(yè)面含有的邏輯標(biāo)簽和賦值,一個(gè)方法可以多次使用該方法,最后的執(zhí)行結(jié)果是多個(gè)頁(yè)面順次顯示,比如:      



          page1 =  "page1";

          page2 
          =  "page2"
          ;



          common.showPage(page1);

          common.showPage(page2);

           


          page1的頁(yè)面代碼: 



          <html>

          <body>

          hello,this is page1!

          </body>

          </html>


           


          page2的頁(yè)面代碼:


           



          <html>

          <body>

          hello,
          this is page2!

          </body>

          </html>


           


          最后顯示的頁(yè)面代碼:


           



          <html>

          <body>

          hello,
          this is page1!

          </body>

          </html>

          <html>

          <body>

          hello,
          this is page2!

          </body>

          </html>

           


                 頁(yè)面的邏輯標(biāo)簽很簡(jiǎn)單:<if><else><endif>,完成簡(jiǎn)單的頁(yè)面邏輯判斷


          在頁(yè)面最終生成之前執(zhí)行的代碼,common的showpage方法會(huì)將標(biāo)簽作為java代碼執(zhí)行。


                  頁(yè)面賦值標(biāo)簽寫(xiě)法很簡(jiǎn)單:($value$),value為要獲取的參數(shù)值,使用$符號(hào)區(qū)隔,可以和邏輯標(biāo)簽混合使用:


             <if ($value$)==1>1<else>2<endif>


              寫(xiě)法有些類(lèi)似現(xiàn)在流行的mvc開(kāi)源框架。


                  另一個(gè)常用的循環(huán)標(biāo)簽:<loop ($list$) ></loop> list為循環(huán)的集合對(duì)象。也可以同時(shí)循環(huán)多個(gè)list集合對(duì)象,但前提是多個(gè)對(duì)象的集合大小相同,不然就會(huì)出現(xiàn)數(shù)組溢出的錯(cuò)誤。


                  該mvc框架配合了一套js腳本庫(kù)一同使用,因此像一些常用的腳本方法就和mvc框架的一些特點(diǎn)結(jié)合起來(lái)使用,js代碼編寫(xiě)量減少。


                  表單提交參數(shù)驗(yàn)證有一套統(tǒng)一的方法,現(xiàn)在應(yīng)該應(yīng)用的很普遍了。在表單對(duì)象標(biāo)簽里增加一些屬性,最后提交表單是調(diào)用統(tǒng)一表單驗(yàn)證方法,該方法會(huì)讀取該對(duì)象的屬性,判斷該對(duì)象值是否符合要求,包括判斷復(fù)選框?qū)ο笫欠裼羞x擇對(duì)象,例如在刪除列表中的多個(gè)對(duì)象使用。


                 在常用的查詢(xún)列表和該列表的某個(gè)具體對(duì)象時(shí),腳本庫(kù)提供了統(tǒng)一的方法:


          1、常用的翻頁(yè)方法,首頁(yè),尾頁(yè),上一頁(yè),下一頁(yè),跳轉(zhuǎn)到某一頁(yè)的方法,只需要使用腳本庫(kù)中統(tǒng)一的方法,傳入表單名稱(chēng)參數(shù),class名稱(chēng),method名稱(chēng),跳轉(zhuǎn)到某一頁(yè)需要再傳入頁(yè)面參數(shù)即可,不需在編寫(xiě)js代碼。


          2. 查看某一條具體記錄,方法類(lèi)似于翻頁(yè)方法,同樣傳入表單名稱(chēng)參數(shù),class名稱(chēng),method名稱(chēng)表單名稱(chēng)參數(shù),class名稱(chēng),method名稱(chēng),和該條記錄的主鍵值。


              今天寫(xiě)到這里,下一篇寫(xiě)寫(xiě)這個(gè)系統(tǒng)的權(quán)限系統(tǒng)。




          《 總結(jié)一下維護(hù)了一年的一個(gè)軟件系統(tǒng)的軟件體系(三) 》 的評(píng)論也很精彩,歡迎您也添加評(píng)論。查看詳細(xì) >>





          JavaEye推薦
          上海樂(lè)福狗信息技術(shù)有限公司:誠(chéng)聘技術(shù)經(jīng)理和開(kāi)發(fā)工程師
          免費(fèi)下載IBM社區(qū)版軟件--它基于開(kāi)放的標(biāo)準(zhǔn),支持廣泛的開(kāi)發(fā)類(lèi)型,讓您的開(kāi)發(fā)高效自主!
          京滬穗蓉四地免費(fèi)注冊(cè),SOA技術(shù)高手匯聚交鋒.
          上海:優(yōu)秀公司德比:高薪誠(chéng)聘 資深Java工程師
          廣州:優(yōu)易公司:誠(chéng)聘Java工程師,開(kāi)發(fā)經(jīng)理
          上海:尤恩斯國(guó)際集團(tuán):誠(chéng)聘開(kāi)發(fā)工程師
          北京:優(yōu)秀公司NHNChina招聘:WEB開(kāi)發(fā),系統(tǒng)管理,JAVA開(kāi)發(fā), DBA



          文章來(lái)源: http://liuwei1981.javaeye.com/blog/107348
          posted @ 2007-07-31 12:05 皇馬嘯西風(fēng) 閱讀(135) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 墨玉县| 新田县| 罗源县| 闵行区| 宁津县| 鄄城县| 屯门区| 嘉祥县| 丹阳市| 永顺县| 石棉县| 通化市| 阳新县| 阿拉善盟| 淅川县| 佛山市| 新兴县| 鄂州市| 长丰县| 河源市| 溆浦县| 巴彦淖尔市| 古丈县| 睢宁县| 崇文区| 梓潼县| 平原县| 大安市| 西青区| 桂平市| 泊头市| 贵阳市| 浦江县| 梁河县| 岱山县| 德保县| 雅安市| 宁晋县| 海口市| 拉孜县| 哈密市|