泥巴麒麟 說:
幫我找個女朋友來,南航本科工作五年,月薪5k,173,特別帥
豆豆 說:
帥你MA個頭
泥巴麒麟 說:
就不許我夸張阿
豆豆 說:
那也太夸張了
泥巴麒麟的BLOGshenAwesome@hotmail.com 縱不能,將醉做生涯,休拘束 |
泥巴麒麟 說: 豆豆 說:
浪費了好幾天時間,不過感覺挺有用。
就是把所有的中文自動檢索出來,然后手工指定Key,最后全部替換 歡迎試用 http://www.aygfsteel.com/Files/black_zerg/autoI18N.rar
晚上又聽到烏龜在床下爬阿爬阿,于是就傷感起來。這兩只是母親剛買回一月余,個大,像兩個會動的黑包子,然而卻和我不親近,怕生的緊
小時候養過一只烏龜,大概是剛上初中吧。活潑。爬得很快,有我手掌大。眼睛很明亮,吃飯吃肉吃蝦子。然而卻沒照顧好,大致是我去深圳的第三年的冬天,死掉了。回來南京后,過了幾日,突然想起來烏龜,母親于是嘆氣,于是說死掉了。母親也很難過,我忙說,沒啥沒啥。 算算這烏龜也跟了我十二年,結果給死了,臨死我都沒在家照顧著。 今天網上查了一下,按照母親的描述,我的烏龜可能得了白眼病。 白眼病 病因:由于飼養密度過大,沒有及時進行換水,導致水質變壞,堿性過重而引起。發病季節多在春季和秋季,越冬后的春季為流行盛期。該病多見于巴西彩龜、烏龜、眼斑水龜、錦龜等,且以幼龜發病率較高。 癥狀:病龜眼部發炎充血,逐漸變成灰白色且逐漸腫大。眼角膜和鼻黏膜因眼部炎癥而糜爛,嚴重時會雙目失明,呼吸受阻。眼球的外部被白色的分泌物掩蓋,眼睛不能睜開。病龜常用前肢擦眼部,行動遲緩,嚴重者停食,最后因體弱并發其它疾病而衰竭死亡。有些病龜在發病初期僅有一眼患病,如不采取措施,很快另一眼也出現癥狀。 然而就死掉了阿。從初中陪我到大學,會跟著我媽跑得烏龜,我就丟在家里不聞不問。終于就死掉了阿。 噢噢,死掉了阿。總覺得欠烏龜甚多。那時候喜歡的時候就拿出來玩玩,不喜歡了就丟在角落里。它就終日在窄小的水盆里,一個龜孤孤單單過了這么多年,最后也沒照顧好,就給死掉了。 離我的烏龜死掉,應是三周年,以文記之。
新公司還不錯!
文檔和討論都比較有意思.代碼也蠻清晰, 代碼很有些ejb的風格。我以前以為我做了那么多dao還比較麻煩,這里bo都分得很清楚,真是細致阿! 下個星期就要完成一個信息庫的工作.要加油。不過jbuilder用不習慣,而且機器也有點慢。現在趕著做事情,所以先用eclpise開發算了,以后再看看能不能熟悉jbuilder。心里還是喜歡eclpise多阿 換到一個新地方拉。開心啊。啦啦啦。這次找工作挺順利阿,中興和中興軟創都通過拉,不過聽說太累,最近身體也不舒服啊,萬一病倒沒人養家阿!只好放棄拉,心好痛啊。
討厭delphi,想做java阿。現在已經做到
來電顯示客戶 通話全程錄音 可軟件撥打電話 可定時任務批量撥打(類似催繳,據說用來客戶關懷,放生日歌之類) 其它數據庫功能,客戶資料管理,附屬資料 加了日程計劃/萬年歷/郵編/區號查詢等亂七八糟的功能。 程序里那邊用個狀態機 響應接口事件,錄音效果也還不錯。 越做越沒意思啊,不喜歡delphi. ![]() applet 項目方面。事情不順利。狂補swing, webwork+spring+hibernate做的那個工單系統已經實施了幾個地方,沒什么問題。
近年來,web的html技術框架一直是j2ee應用的主流,表示層技術有:struts,webwork,spring-mvc等。 從用戶角度來說,這些view層技術提供的重點功能是: 1.完成用戶狀態的保持 (例:一個用戶的登陸狀態,購物車里的物品) 2.特別的,表單信息的保存(用戶輸入后,如果不成功,回退頁面,必須顯示原信息) 3.Validation機制 4.數據顯示(使用model往view中拼裝數據) 5.i18n等常見問題有較成熟的解決辦法 程序員角度來說,這些技術提供了如下便利 1.流程控制有一個較為集中的配置文件。便于修改 2.mvc分離,有較為清晰的邏輯結構 3.有些框架的攔截機制等,可以集中一些通用邏輯。 但在實踐中, web層的系統千篇一律,不夠美觀。在電信前臺大量輸單等應用中,實上也不夠方便。web的優勢是易于分發,統一管理,同時提出了很多良好的設計理念和框架模型 其實我們最早用delphi做c/s或者三層架構(加應用服務器)的時候,是多么如魚得水,顯示幾個數據表,做幾個master/detail,真的是手到擒來,拖拖拽拽而已。在web程序中費盡心力才能解決的難點,在application將化為無形。 但applet應用較少,關鍵在于: DB : 數據庫 Dao: 使用hibernate實現的瘦Dao Service: Spring管理的業務外觀,實現事務粒度,Dao被注射 Module: Service 將 Dao實例注射到Module,這里將完成業務邏輯。 Dispatcher 位于logic,是service的一個分發器,采用反射機制,自動調用service對應的方法 Servlet 負責和applet通信,通過Dispatcher 調用業務邏輯 Applet view的實現 特別: 1.Dao的實現 在上一個項目中,我為每個實體類都作了一個Dao,但hibernate使得dao實現非常簡單一致,在代碼中事實上就導致了大量非常類似的貧血Dao實現。所以這次準備只做一個Dao接口,通用于各種實體類,雖然不夠清晰,但結合hibernate的強大應是可行的。 2. Servlet和applet的通信,采用ObjectStream方式,簡單省力,將完成一個專用的容器類,同時注意,applet中將直接使用domain對象。 3. 最后可在server端預留webwork環境備用 關于Applet技術: 1. 所有的業務邏輯通過ServletClient訪問。 2. 所有的資源(圖片,聲音,文件)從 Resource獲得,內部采用getResource(); 3. i18n問題采用resoucbundle,通過I18N轉換(這里不知道有否更好辦法) 4. 外觀和風格用Sun的標準,暫不另加 5. 報表技術采用freeReport,擬用反射技術實現運行期報表,其余采用simpleXml格式完成報表設計。 6. freeReport同時解決了數據輸出問題(pdf,xls等); 7. 所有相關jar需要做applet簽名以獲得本地操作權限 效果示例:
hibernate是一個偉大的工具,嗯。真是用到上癮
數據庫和類的關聯設計和命名規范 常見命名: id 物理索引,無任何邏輯意義,所有關聯全部通過id name 名稱 desc 描述 cust 客戶 user 用戶 acct 帳戶 addr 地址 posi 位置 code 編碼 tele 電話 type 類型 chname 中文名稱 這里并非唯一標識,需要的時候使用(name和desc不能滿足的時候) remark 備注 我們看到,實體類的設計中,我們牽涉如下類型的field: 1. id 2. 簡單field ,本表就記錄完整的資料 3. 對象 manytoone關聯,典型的就是類型關聯。 4. 對象 compement,應該抽象出類,但并非manytoone,典型的如地址(路,街,號) 5. 集合對象 manytomany,典型的如學生和老師的關系。 特別的我們看到type類型的設計,這是典型的多對一 所以在設計應該如下: class Customer{ CustType type ... } CustType extends Type{ ... } class Type{ String code; String name; String desc; } 在hibernate的hbm中,我們使用manytoone。 而在整體設計中可以考慮把所有的Type做成繼承結構,而用一張表來存放所有的type 例: code/name/desc/type 101 ,new,新裝,CustType 102,del,拆 ,CustType 101,new,新裝 ,UserType 相對的,如果并非典型的manytoone,如地址 可以使用compement的設計 另外我們可以作一個類似數據字典的類字典設計,使用一個持久類來存放。 作用是1.待查,2.可以用于界面 class ClassDict field /name /desc Cust.Type,客戶類型,表示客戶的類型(如大客戶,代理商等) 目前情況: 自動工單管理系統,使用自開發的類似struts的架構,數據庫訪問經過包裝,返回string數組。 其架構問題: Action使用同步鎖,導致在同一時間只能進行一次web訪問,如同時有其他訪問,將不必要的被阻塞。 結構不夠清晰,不能夠完全按mvc的思想明確的分離各層邏輯。jsp代碼過多且結構零亂,沒有把通用的代碼用taglib等技術抽象,后續開發困難 業務邏輯和數據庫緊密相關,而沒有從表實現中抽象出來。同時,在每次使用同樣的業務邏輯的時候都要反復的進行相關sql編程。故而與數據庫有強耦合,相關程序重用性低,可讀性差。其翻頁機制邏輯橫貫架構,使層次高度耦合,而數據庫封裝也可能存在性能問題。 同時,客戶也提出了不少整改意見,而在原版本的修改和升級都會較為困難,而且對長期的維護不利。 項目分析: 目前的各種業務管理系統還是將以j2ee的b/s架構為主流,所以有必要完成一個通用的,穩固的整體架構作為以后各種應用的堅實基礎。 我認為應盡可能使用業內先進的免費框架技術而不是自開發框架。好處是: 這些框架技術凝聚很多業內精英的智慧,而且經過發布和使用,技術體系已經成熟,性能有所保障。 層次清晰,符合先進的技術理念和設計模式。同時也容易找到熟悉相關技術的人才,維護和后續開發方便。 相比之下自開發框架因為技術實力和時間問題,很難達到這些業內領先框架的技術高度。 分析一般的j2ee應用,應有如下層次: 顯示層 負責界面顯示,接受用戶指令 顯示層有較為經典的MVC,即model,view,control,進一步了細化了顯示層的工作。此類著名框架有struts,webwork,spring-mvc等。經考察,我認為struts雖然是時間最長最成熟的技術,但易用性和一些架構理念不如webwork,而view層的開發應盡可能簡單快速。故選定用webwork. 邏輯層 負責進行業務邏輯的實現 目前的開發過程,往往陷入邏輯層和數據訪問層不能分離的情況。面向對象的項目開發最后演變成成程序員在程序各處手工寫sql操表。這樣做的優點是開發迅速有效,問題是結構將日益混亂,每次邏輯的變化將不得不修改分散于各處的sql語句,而后續的程序員也必須了解整個程序和數據庫結構才能進行修改。如果是短期小型項目,可以用這種方式。否則的話,我認為應盡可能貫徹面向對象思想,把業務邏輯抽象出來。 而邏輯層的工作就是針對實體對象進行業務邏輯的實現。我們針對所有的業務操作,對外提供service接口,既服務接口。這類似tuxedo和ejb所采用的業務外觀模式。而為填補service生存周期管理的空白,我們使用著名的spring框架。優點: 實現Ioc,使各層次的耦合可配置化。 按需要實現單例模式等,進行生存周期管理 事務管理。Spring的宣言事務管理(Declarative transaction management)使得一般場景的代碼中將不需要考慮事務問題而集中于業務邏輯 攔截機制將為程序提供很好的擴展空間 3. 數據訪問層 負責將類操作映射為數據庫操作。進行實體類的持久化。從而將所有的數據訪問工作集中起來 這一層我們將完成實體類持久化(persistence),有若干選擇: 1 jdbc實現 2 使用ORM工具 如hibernate,ibatis,jdo 經過實寫代碼,感覺用jdbc實現dao效率非常低,而且容易出錯。經過考量選用hibernate。和ibatis相比雖然上手慢且不夠靈活,但其架構思想和強大功能都受到業內一致好評,甚至是ejb3也深受hibernate影響 。所以hibernate是很好的選擇。 項目設計 綜上,我們使用 webwork+spring+hibernate的架構。 版本:webwork- 經過一段時間的開發,目前架構基本成形:
關于一些技術難點和細節: 1. 各框架連接:spring到hibernate使用spring的hibernate支持。Spring到webwork使用autoware的攔截機制自動裝配。 2. 列表的問題,采用displaytag。功能強大,使用簡潔,可實現排序和數據導出。 3. 數據下載,使用displaytag自帶的excel下載 4. 文件上傳,使用webwork提供的解決方案,用攔截機制實現。 5.jsp代碼組織方面,我們使用taglib和css技術使jsp中頁面邏輯減少到最小,一般情況完全可以不使用<% %>的script段 。同時我們使用兩個include來包含常用的taglib定義,js引用和html結構,使jsp代碼非常簡潔。 6. 中文問題 我們使用filter來解決頁面gbk到java程序unicode的轉換,同時通過正確的設置數據庫連接url完成和數據庫之間的交互。 7. I18n國際化。我們要求在jsp代碼中不出現中文,所有提示信息都通過資源文件labels.properties來完成。頁面中可以使用jstl或webwork標簽來調用。 8. 界面驗證問題。使用webwork的validate機制用xml定義,或在action中代碼判斷。
終于決定用這種架構了,我認為相當完美了。目前為止,一切順利阿。同時把hibernate升級到3,spring也換到最新了。目前發現一個很奇怪的現象,就是sSdm這種屬性不能被解析,而只能解析為SSdm,hibernate和displaytag都有這個問題,看來是ognl的一個規則吧。目前為了兼容以前的數據庫,只能從表生成類,我再加上關聯。這樣的類非常的難看,可以說是這次項目最大的缺憾阿。
我以后就鉆們搞技術搞了一個很牛的東西出來之后阿,我就去做商務
把自己做的東西啊,賣掉 你看比爾蓋茨就是這么發財的。
以后也許還可以用hibernate換掉jdbc的實現。目前感覺沒有大問題。今天感冒,頭疼。唉。我可不能死啊,好日子還沒過呢。
webwork還是不夠熟悉,用了spring和webwork,好容易才搞定了驗證問題和i18n的顯示,都是一些細節問題。
唉。千怕萬怕還是出錯拉,下午再聯系現場,搞不好還是要跑一趟,真是麻煩啊。
|