NEW OFFICE AT 2005-12-05
----------------------------------------------------------------------------------------------
換了新的環(huán)境,
新辦公室 很大,很新,
大得大家坐一間屋子里,稍微遠點就看不清楚摸樣了
新得連地毯,空調(diào)都沒得。
昏暗的燈光下。感覺像手工作坊的織衣車間
樓頂橫七豎八的管道和吊燈,有點像學(xué)校的洗澡堂
可能,設(shè)計師要的就是這份簡潔,
... 似乎在向我們詮釋,節(jié)約
大老遠從城市中出來,
找的,就是這刻回歸自然的感覺
荒涼?
一個連吃飯都緊張的地方。
明天打算自己帶盒飯過來試試
2005-12-05 New Office
最近,用各種算是流行的方法寫了些Hibernate的例子(基于測試)。上次打算寫兩篇文章。① Hibernate 常用工具的配置和使用。② Hibernate 比較簡單的,基于單表操作的例子。寫了80%吧。越想越感覺意義不大。現(xiàn)在網(wǎng)上很多這方面的文章。我自己也沒有理由,自私的所謂備份。占用Blogjava的硬盤空間。就成了后來的 “冰 凍 閑 聊”
上個星期五,因為公司停電。所以休息了三天。一年前,這個數(shù)字可能會感覺太短。但是現(xiàn)在卻是突然覺得連續(xù)三天不上班。不知道該干什么好。
難道是對這種“月光”族的生活上癮拉?… 這樣的話題,等以后想明白了再說吧!~
接著說這個周末吧!因為無聊,翻翻,去年用過的一些散亂的筆記。越看越搞笑,字跡潦草,還好基本上是一些技術(shù)痕跡。找不到從前那些“少年不知愁滋味”的感覺。
因為我一直不是很喜歡看書。現(xiàn)在的書,寫得好的不多,但是價錢蠻貴的。所以,有時候就會把一些疑惑的問題寫在一張紙上。然后去網(wǎng)上先收集一些資料,再閱讀總結(jié)。
這里,我發(fā)現(xiàn)了一條有趣的問題。
打開hibernate.cfg.xml看看具體的JDBCTransaction 和 JTATransaction 配置:

2

3

4

5

6

7

8

9

10

可能你還會問:“除了這兩種還有其他的選擇嗎?到底選擇那一種好呢?在一個應(yīng)用中能混合使用嗎?”等等問題
分析和解答:
第一個問題
可以選擇其他的事務(wù)管理方式。不過都是JTA的不同實現(xiàn)版本。這個目錄下面有羅列出來hibernate-3.0\src\org\hibernate\transaction。比如:

2

3

4

第二個問題
概念事務(wù):事務(wù)就是能以整體的原子操作形式完成的一系列操作。
是不是感覺有些饒口?簡單的說,事務(wù) 就是一個邏輯工作單元。其中包括一系列的操作。至于事務(wù)為什么會產(chǎn)生?有什么基本特性?等等。。這些問題今天不就詳細的羅列了。網(wǎng)絡(luò)上有寫得很好的文章。
Hibernate 是JDBC的輕量級封裝。他本身并不具備事物管理的能力。事務(wù)的管理和調(diào)度將委托給JDBC或者JTA去做。
先說,他默認的事務(wù)處理機制[ JDBC Transaction ],這的確是最簡單的處理方式,因為Hibernate只是對JDBC事物做了一層簡單
的封裝。JDBC事務(wù)由Connection管理。事務(wù)周期局限于Connection的生命周期之內(nèi)。在Hibernate中這種事務(wù)周期也就局限于一個Session之內(nèi)。做個比較吧!
Connection conn = … ; <--- session = sf.openSession();// 初始化數(shù)據(jù)庫連接,
和setAutoCommit= false;
conn.setAutoCommit(false); <--- tx = session.beginTransactioin(); 會再次確認setAutoCommit是否是false
調(diào)用業(yè)務(wù)方法 <--- 調(diào)用業(yè)務(wù)方法
conn.commit(); <--- tx.commit(); (對應(yīng)左邊的兩句) 這里很關(guān)鍵,關(guān)掉自動commit。自己就必須做commit。否則數(shù)據(jù)是不會被持久到數(shù)據(jù)庫
conn.setAutoCommit(true);
conn.close(); <--- session.close();
簡單吧!如果你對JDBC有了解,看到這里可能會壞笑,NND就這么簡單,我也會封裝…有興趣的話可以直接去看看具體的源代碼。
JTA 提供了跨Session的事務(wù)管理能力。JTA的事務(wù)是要容器支持的,即JTS,用來分布式的要求比較多一些,比如像銀行這種大系統(tǒng),處理多個事務(wù)源的這些的。
JTA事務(wù)管理則是由JTA容器實現(xiàn)。事務(wù)的生命周期完全由容器來維護。容器中可以有很多Connection。按照執(zhí)行的順序,因該是串聯(lián)的一條JDBC Connection事務(wù)鏈。所以JTA的事務(wù)周期可以跨多個JDBC Connection的生命周期。在Hibernate中這種事務(wù)周期也就可以跨越多個Session。
所以。JTA事務(wù)的Connection不能對事務(wù)管理進行干涉。意思就是,假如使用了JTA就不應(yīng)該再重復(fù)調(diào)用Hibernate的Transaction功能。這里涉及到一種事務(wù)模型(嵌套式事務(wù)模型)的問題。這里也不詳細的介紹具體的幾種事務(wù)模型了。在EJB2.0規(guī)范里面也不支持這種事務(wù)處理模型。
例如 :

2

3

4

5

6

7

8

9

那么下面這段代碼

2

3

就不能在class A 和 class B 中出現(xiàn)。
原因:session.beginTransaction()也同樣執(zhí)行了InitialContext.lookup方法來獲UserTransaction的實例,tx.commit()也同樣調(diào)用了UserTransaction.commit().這樣做就會形成嵌套式的事務(wù)。在Hibernate里面是不被允許的。會導(dǎo)致運行期錯誤。
談到這里,不難看出,他們都有著自己鮮明的特點和基本的聯(lián)系。回到開頭的問題,在實際項目中該選用誰好呢?
這就需要分情況而定了。
1) 如果項目有用到Sessionbean.可能你會疑問?這時候由誰來管理事務(wù)呢?
答案:用SessionBean來管理。使用JTA會很方便。因為你完全沒有必要去理會Transaction。直接在SessionBean的部署描述符里面聲明事務(wù)就行了。
2) 自己實現(xiàn)一個Service類,來統(tǒng)一調(diào)用持久層的方法。這樣也能做到前后臺的松耦合。但是這時候你對session和Transaction的處理就需要小心了。如果系統(tǒng)考慮分布式就使用JTA否則就JDBC足夷。但還是有必要考慮系統(tǒng)的升級,變遷什么的。對session和Transaction的處理,最好不要放在DAO里面做。單獨實現(xiàn)一個模板類來統(tǒng)一做。具體的原因和做法,以后有時間再寫出來。
第三個問題
由于SessionFactory是線程安全的,他的創(chuàng)建過程非常復(fù)雜,代價極其昂貴。一個應(yīng)用中最好只有一個SessionFactory。事務(wù)管理類型的選擇是在SessionFactory的屬性里面配置的。這里只能選擇一種事務(wù)管理方式。
當然,你可以說還有特殊的情況,假如,這個應(yīng)用需要連接到兩臺數(shù)據(jù)庫服務(wù)器,就必須為他創(chuàng)建另一個SessionFactory。那么就可以選用另一種事務(wù)管理方式。表面上看這種情況是可以的。居于兩種事務(wù)的性能考慮?;旌陀玫囊饬x不是很大。假設(shè)這樣用+面對考慮不周全的DAO,也違背了設(shè)計原則,想想,這樣的話,因為數(shù)據(jù)庫的變動,還得回去修改DAO的代碼嗎?(可能會產(chǎn)生嵌套問題)
所以關(guān)于這個問題的結(jié)論就是:
在一個SessionFactory中只能選用一種事務(wù)管理
面對多個SessionFactory的時候,可以混合用,但是不推薦
2005-11-28 CTU OFFICE GOINGMM
遺憾昨天晚上的比賽沒有看。補時4分鐘?是不是裁判知道尤文又贏了,認為AC 必須得贏球??!
這種眼神很長時間沒見著了
附上:舍甫琴科 上一場的4個進球,如果單純的是為了酣暢淋漓。讓你提前墊付了未來三場的運氣,
有些不劃算哦
2005-11-28 CTU OFFICE
很久沒有回來了。大家好
今年的成都可真夠冷的。想..想...想.. 還沒有發(fā)餉,想什么都虛幻
閑來無聊,寫些無聊的東西。本來想放Blog上,但是太雜亂,所以這篇Blog寫了80%后我就停下了。
結(jié)果,變成了幾行無聊的文字
航班日期:
航班號:CA422
起飛/到達時間:13:00/15:30
完成我的使命。該回家了。明天就要離開這個城市。離開一起戰(zhàn)斗了26個日日夜夜的項目組。項目和團隊全局意義的勝利,還需要一些時間去考驗。祝福他們在剩下的日子里能做得更好。
北京,今年來了兩次。工作原因,使我頂多算一個匆匆的看客。一直沒有機會去真正了解這個Master城市。為什么叫他Master城市呢?因為我們平時看到的很多機構(gòu)在這里就是總部。外表其實也就那樣。但是權(quán)力卻是Master的。背負著沉重的歷史,注定這座城市不會給我們太多華麗和浮華的外表。想想兒時向往的天安門,其實就一座二層老房子。近看我還是覺得單薄了一點。沒什么氣勢。尤其是兩邊的看臺。比大學(xué)足球場的看臺還簡單??赡苓@只是鞭策中國人的一種象征物吧。
要讓我拿北京和成都做個比較的話??赡芤魈煸诼飞线呑哌吙矗艜行└杏X。但是我不大可能在飛機上給大家發(fā)Blog吧。隨便說一些生活上的感覺。這邊上班時間比成都要早(8:30)。但是因為離得不是太遠,而且每天上下班打車。這方面,的確方便了很多。累了一天后很容易恢復(fù)。這樣早上會睡得好一點。北京很大,大得五環(huán)外也會經(jīng)常塞車。據(jù)說今年北京是暖冬,帶了很多衣服過來都還沒機會穿。而且家里有暖氣。想想在成都這幾天不敢穿著短褲趴窗臺上上網(wǎng)吧!~ 遺憾我還沒有能看到北方的雪,和沙塵暴。只是每天回家灰塵挺嚇人的。 干燥的氣候,隨時都會被靜電襲擊的危險。所以我的手基本還好,但是衣服的袖子就可憐了。剛開始,不理解的北京人,還以為我是怕他們的地方臟。幸好好奇的問了我,不然成天大的誤會了。
這次過來基本沒有出去玩。北京的朋友還有老同學(xué)些。真是對不住了,沒有去看你們。有機會咱們成都見。那里才有正宗的水煮魚,夫妻肺片…北京的飲食比較實在。貴但是量足。北京人自豪的烤鴨不好吃。說不出有什么特色?;旧衔叶疾粫云鸬臇|西。還好這次找到一家,川菜做得不錯。
停一下 剛才抓拍了幾張照片。全當是這次生活的一個縮影送給大家
最后,我不得不感謝 “聽濤小區(qū)長期穩(wěn)定的無限網(wǎng)絡(luò)” 雖然也不知道是誰家的,而且只發(fā)射到我的窗臺上。但是這種共享精神充分體現(xiàn)了北方人,為人淳樸 豪爽 耿直 的特點。我會把你們的這種精神帶回南方,不過,得等我有無限網(wǎng)絡(luò)的那一天….
2005-11-14夜 聽濤 窗臺
------------------------------------------------------------------------------------------------
Eclipse Platform Version:
Junit Version:
1)看看完成后的效果圖
2) 運行Eclipse。新建一個workplace項目,點擊 file->new->project,選擇Java項目,點擊下一步。寫一個項目名稱,例如UseJUnit。點擊Finish。這樣就完成新項目的建立。再來配置一下Eclipse,在構(gòu)建路徑中添加JUnit類庫。在工具條上點擊項目->屬性,選擇Java Build Path,Libraries,選擇 Add external JARs,瀏覽Junit被存儲的目錄,選擇junit.jar,點擊打開。你將會看見JUnit出現(xiàn)在庫的列表中。點擊確定,讓Eclipse重建路徑。
3)新建一個Class Person
4) 新建一個Test Class TestCaseWithJunit
代碼如下:public void testSay() 方法是我自己加進去的
5) Run Test case
6) 看看測試結(jié)果
7)修改一下測試代碼
8)再看測試結(jié)果
呵呵! 第一次發(fā)圖。如果上面的過程描述有什么不清楚的地方。請與我聯(lián)系
2005-11-13 聽濤 窗臺
-------------------------------------------------------------------------------------------------
MySQL-Front V3.2 Build 6.25
MySQL V4.1
-------------------------------------------------------------------------------------------------
從名字看雙胞胎一般的他們倆。是絕配嗎?我也不知道,有時候,MySQL-Front會告訴我:“我不認識MySQL”。不要以為我和他有啥子關(guān)系。這就是我今天要談到的問題。因為剛用MySQL一段時間。不知道還有沒有更好的組合式用法。
1)用[MySQL Command Line Client]進入MySQL cmd操作模式
drop database dbName;
create database dbName;
use dbName;
2) 數(shù)據(jù)庫建立好以后開始建立表
drop table person;
create table person (
person_name varchar(16) not null primary key,
person_pass varchar(32) not null,
person_sex int(1) default '0' ,
person_email varchar(30) default null,
person_lastLogTime dateTime,
active_status int(1) default '0'
);
3) 現(xiàn)在你可以插入一些數(shù)據(jù)
insert into person values('goingmm','***','男', 'todogoingmm@163.com', '
…………...........
4) OK 現(xiàn)在可以查詢出來看了
select * from person
突然感覺老在這里操作很是不方便。于是想起了MySQL-Front。打開看看,咦!沒有找到數(shù)據(jù)庫dbName。努力了1個小時。原因猜完,辦法想盡。MySQL-Front還是說我認識他,你不要搞我拉!~果然,再搞 MySQL-Front死掉拉。有個性。
后來把剛才做的1)2)3)4)全部回滾。就是刪掉數(shù)據(jù)庫。在MySQL-Front里面先建立一個數(shù)據(jù)庫。然后去cmd建立表,插入數(shù)據(jù)。最后回到MySQL-Front。哈哈,這回看到剛剛建立的數(shù)據(jù)庫了。
不知道大家有沒有遇到過這個問題。是MySQL-Front的bug嗎?還有一些MySQL-Front很弱智的問題,比如SQL編輯器。希望他的下一個版本不要這么粗糙。畢竟MySQL 都5.0了
2005年11月5日
-----------------------------------------------------------------------------------------
很不好意思,前三篇都還是概念。
其一: 我想歸納下來,給自己以后看做一個備份
其二: 現(xiàn)在真沒時間去寫代碼
項目做完,回到成都,在后面的文章中,我會抽空寫一些實際的例子
---------------------------------------------------------------------------------------------------------------------
概念Hibernate中的接口
---------------------------------------------------------------------------------------------------------------------
大致分類:
■ 被用戶的應(yīng)用程序調(diào)用的,用來完成基本的創(chuàng)建、讀取、更新、刪除操作以及查詢操作的接口。這些接口是Hibernate實現(xiàn)用戶程序的商業(yè)邏輯的主要接口,它們包括Session、Transaction和Query
■ Hibernate用來讀取諸如映射表這類配置文件的接口,典型的代表有Configuration類
■ 回調(diào)(Callback)接口。它允許應(yīng)用程序能對一些事件的發(fā)生作出相應(yīng)的操作,例如Interceptor、Lifecycle和Validatable都是這一類接口
■ 一些可以用來擴展Hibernate的映射機制的接口,例如UserType、CompositeUserType和IdentifierGenerator。如果你確認有必要的話這些接口可由用戶程序來實現(xiàn)。
Session接口
Session接口對于Hibernate開發(fā)人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創(chuàng)建和銷毀它都不會占用很多資源。這在實際項目中確實很重要,因為在客戶程序中,可能會不斷地創(chuàng)建以及銷毀Session對象,如果Session的開銷太大,會給系統(tǒng)帶來不良影響。但值得注意的是Session對象是非線程安全的,因此在你的設(shè)計中,最好是一個線程只創(chuàng)建一個Session對象。
Hibernate的設(shè)計者將session看作介于數(shù)據(jù)連接與事務(wù)管理一種中間接口。我們可以將session想象成一個持久對象的緩沖區(qū),Hibernate能檢測到這些持久對象的改變,并及時刷新數(shù)據(jù)庫。我們有時也稱Session是一個持久層管理器,因為它包含這一些持久層相關(guān)的操作,諸如存儲持久對象至數(shù)據(jù)庫,以及從數(shù)據(jù)庫從獲得它們。請注意,Hibernate 的session不同于JSP應(yīng)用中的HttpSession。我們通常會將HttpSesion對象稱為用戶Session。
SessionFactory 接口
他用到了一個設(shè)計模式[工廠模式],用戶程序從工廠類SessionFactory中取得Session的實例。
但是請記住,SessionFactory并不是輕量級的!實際上它的設(shè)計者的意圖是讓它能在整個應(yīng)用中共享。典型地來說,一個項目通常只需要一個SessionFactory就夠了,但是當你的項目要操作多個數(shù)據(jù)庫時,那你必須為每個數(shù)據(jù)庫指定一個SessionFactory。
Configuration 接口
Configuration接口的作用是對Hibernate進行配置,以及對它進行啟動。在Hibernate的啟動過程中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,然后創(chuàng)建一個SessionFactory對象。
Transaction 接口
Transaction接口是一個可選的API,你可以選擇不使用這個接口,取而代之的是Hibernate的設(shè)計者自己寫的底層事務(wù)處理代碼。 Transaction接口是對實際事務(wù)實現(xiàn)的一個抽象,這些實現(xiàn)包括JDBC的事務(wù)、JTA中的UserTransaction、甚至可以是CORBA事務(wù)。
為什么要這樣設(shè)計呢?因為這樣使開發(fā)者能夠使用一個統(tǒng)一事務(wù)的操作界面,使得自己的項目可以在不同的環(huán)境和容器之間方便地移值。
Query和Criteria接口
Query接口讓你方便地對數(shù)據(jù)庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地數(shù)據(jù)庫的SQL語句。Query經(jīng)常被用來綁定查詢參數(shù)、限制查詢記錄數(shù)量,并最終執(zhí)行查詢操作
Callback 接口
當一些有用的事件發(fā)生時。例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。一般而言,Callback接口在用戶程序中并不是必須的,但你要在你的項目中創(chuàng)建審計日志時,你可能會用到它。
2005年11月3日 夜 陰天 溫度偏低
聽濤[601]室 窗臺
我這里是北京時間
現(xiàn)在項目組的核心開發(fā)小組,DBA,服務(wù)器管理,報表組,Domain還有一些協(xié)調(diào)的工作人員都集中在信心中心。我們就下到醫(yī)院流程現(xiàn)場。
核心開發(fā)小組:這組基本上是新加坡,馬來西亞過來的同事。他們負責解決系統(tǒng)隨時出現(xiàn)的緊急情況。
DBA:這個小組主要負責繼續(xù)做移植數(shù)據(jù)的效驗,和緊急的數(shù)據(jù)patch,最主要的還是負責數(shù)據(jù)庫壓力監(jiān)控和調(diào)優(yōu)。
服務(wù)器管理組:他們負責看好四臺Web服務(wù)器(有兩臺是備用的),一臺應(yīng)用服務(wù)器。還有其他的測試服務(wù)器。
報表組:這組人員現(xiàn)在的壓力可不小。各個部門的流程單據(jù),還有PA的財務(wù)報表,那可是用戶眼見為實的東西。他們的 從容, 總算讓我了解ShuaiYu同志去年拿那么多獎金背后的故事拉。
Domain組:…
協(xié)調(diào)的同事組:他們也挺辛苦的,雜亂的工作。該怎么去閱讀他們,我想自己嘗試過后都能理解。
大家可能會疑惑,goingmm你娃在說啥子哦!半天說不到主題,大伙張著嘴巴呼吸在等現(xiàn)場鏡頭呢!!
沒有伏筆,沒有漂亮的引詞.我們直接去住院處看看吧!
早上8:00準點到達現(xiàn)場。大廳擠滿了人,和大家念書的時候去學(xué)校財務(wù)處交錢是差不多的。大家都生怕自己手上的錢交不掉似的。這次單槍匹馬殺過來的。打心里還是有一點不塌實的感覺。還沒有按上門鈴人家已經(jīng)熱情的開門叫我進去拉。還沒打完招呼做完自我介紹,他們領(lǐng)導(dǎo)說話了:“快,小伙子8:30就開始錄入拉,我們還有兩員工是第一次使用系統(tǒng),趕快帶他們過一次”。當場暈忽忽的…怎么還有這回事啊。沒辦法啊,我們出來混,上面明確要求不能對用戶說“不”。
8:30到了,全部窗口打開,那可是鈔票進,發(fā)票出的場面。站在里面的我看著心里挺爽的。時間過了大概一個小時,系統(tǒng)開始有異常的情況出現(xiàn)了。最先暴露的就是大家熟悉的查詢。我橫著一看四臺機器全部顯示請等待。緊接著就是標準的北京腔調(diào)的疑問,“小伙子,你得給我看看,這是怎么拉。半天沒動靜,你叫我怎么辦啊?”穩(wěn)住他們,立馬電話連通信息中心,“喂…請幫我查一下,為什么系統(tǒng)現(xiàn)在特別慢,住院處已經(jīng)沒法繼續(xù)拉”。還沒有收到電話里面的回復(fù)。信息中心已經(jīng)有人趕到現(xiàn)場,通知用戶趕快把系統(tǒng)切換到103(另一臺web服務(wù)器)。結(jié)果出人意料,切換到103的用戶登陸后,頁面錯誤頻頻。用戶操作一半失敗了。眼睛帖著屏幕仔細一看內(nèi)存不嚴重不足。NND一直驚風(fēng)火扯的Error Page 這回算是看過癮了。四臺電腦同時Show給我看,
住院處的領(lǐng)導(dǎo)們還是見過大場面的。臨場指揮,果斷堅決。帖一紙條“手工辦理”上窗戶。指揮著,“大家體諒一下,現(xiàn)在系統(tǒng)正在升級,難免出現(xiàn)問題。緊急的用戶可以先到這邊來,我們幫你們做手工錄入,呆會系統(tǒng)好了,錄進去把條子給你們送過去?!?/SPAN>
我也沒有傻呆著,組織起兩臺客戶機器,再試一試101(住院處主服務(wù)器)。TNND這回就更加不可接受了。服務(wù)器直接down掉。我看到的是IBM字樣的提示信息了?!?/SPAN>IBM”啊,我們把你們的硬件軟件一起放在那間神圣的機房里面。門口得刷卡進去。其他得連灰塵也沒讓它靠近你。就差點上幾根香,擱一大盤子放點蘋果橘子把你供起來拉!就這樣回報我們啊???
NND不會吧?才一個小時就玩完拉?這時候信息中心果斷的重起了一次服務(wù)器,雖然沒有通知我們。但是我還是很感謝他們及時的處理。NND再進頁面狀態(tài)入初,那種感覺就像是早上起床推開那玻璃窗戶。多爽??!后來,103也重啟好拉,這回通知拉,主要給住院處用。我又指揮著,大家都確認進103吧。這次切換還算滿意,一直到病人錄入完畢都沒有發(fā)生問題(四臺一起工作)。在住院處守侯了一天,看著他們不時拿出全部發(fā)票,鈔票,數(shù)著算著,最后打開報表核對,呵呵!他們也怕錢不夠。還好,平均每個人核對過3次。精確到小數(shù)點后面兩位數(shù)。都能對上。
中午回研發(fā)室吃盒飯。正好碰上老大在給蔡總匯報情況。挺實在的,包括問題,出現(xiàn)原因,現(xiàn)在的解決辦法。從系統(tǒng)設(shè)置,到硬件,那可是都說到點子上拉?!熬秃帽裙菊f要讓他們動起來每人發(fā)5000先用著吧。” 話語中我能感覺到明天早上的壓力會比今天小。不管能小多少,能不斷進步就好。聽得入神拉,難吃的盒飯,快吃完才感覺出來難吃死老。這回還真對得起這10塊錢。
看到這里,我想大家,還會為我明天早上的遭遇,捏一把汗??偨Y(jié)一下:“問題會延續(xù)... 時間不確定;壓力依然在,時間不確定;”可能這個時間越短,我們能學(xué)到的越多。
2005年10月31日 聽濤 601室 窗臺
閉上眼睛,回首23年來的經(jīng)歷。真的能看見眼前快速閃過的畫面。使勁的想扎進去看清楚一點。那里有童趣,幼稚,天真,有夢想,還有堅持。是會意的傻笑把我拉回了現(xiàn)實。奇怪沒有找到
的確,眼前的經(jīng)歷注定了
在這里留下這些雜亂的文字,遙寄在遠方默默支持我們的成都團隊全體同事。讓我們一起來分享這美妙時刻。我大致能體會你們此時難以描述的心情。擔心…擔心系統(tǒng)承受的壓力,擔心前方的開發(fā)人員面臨的難題。自豪…自豪一天內(nèi)系統(tǒng)幾乎沒有大的問題,自豪自己就是開發(fā)團隊的一員。喔!說什么哦!都說難以描述拉…真想把你們每一個人都寫的活靈活現(xiàn),可憐我沒那樣的文筆,還是到現(xiàn)場去看看吧!
鏡頭一
鏡頭二
由于數(shù)據(jù)移植推遲了一點時間。早上7:30左右完成數(shù)據(jù)移植,同時啟動了應(yīng)用服務(wù)器
這時候,DBA(+Shuaiyu)全然忘記自己是通宵到現(xiàn)在,還在不知疲憊的檢查驗證數(shù)據(jù),做數(shù)據(jù)庫優(yōu)化。這時候問題出現(xiàn)了。由于昨天晚上5.4(老系統(tǒng))的收銀機沒有完全關(guān)閉。Patch進去的補丁會產(chǎn)生問題。這邊報表服務(wù)器也進不去了,還有誰改了我們熟悉的iHIS的密碼。管理員登陸不了拉。那邊電話里面?zhèn)鬟^來的消息說:“用戶已經(jīng)迫不及待的登陸進了系統(tǒng)”…說到這里場面已經(jīng)有一點混亂了。
老板此時的臉上看不出笑容,找不到慌亂,可能是他的堅持還強撐著極限中的自信和寬容。這是一個需要英雄的時刻,但說實話,我什么忙也幫不上。經(jīng)過大家的努力,密碼問題輕松搞定,收銀機的Patch也有驚無險。報表組拼盡全力,依然毫無頭緒。平時做100次也沒有問題,偏偏今天…
我們在住院處接到通知,應(yīng)用服務(wù)器需要重新啟動。感覺怪怪的,后來才知道。正是這次重啟解決了報表問題(報表在服務(wù)器啟動的時候會到一個MSTR表去load數(shù)據(jù),但是今天先啟動了服務(wù)器,然后才把這些數(shù)據(jù)Patch到MSTR表中,造成了幾個小時的“報表問題”)
鏡頭三
應(yīng)用程序問題解決了,住院用戶吹著病人等不急拉,我們得趕快下住院部去。時間:10點07分,Baijie(北京測試老大)帶領(lǐng)我們趕到住院處,協(xié)助他們開始做病人的住院登記以及住院費用處理。
去之前聽說這個部門壓力很大,四個窗口平時都忙不過來。心里還憷著呢!還好,到現(xiàn)場一打聽,今天是周末沒有那么多人。平時擠滿人的大廳幾乎是空蕩蕩的,外面看感覺和去銀行取錢的場景很相似。進去以后發(fā)現(xiàn)有一個很逗的老頭,不間斷的和我們開著玩笑。懷揣著北方人的幽默??赡苁撬臒崆楹屠暇?,讓我感覺北京話聽著還蠻淳樸的。
大概在11:30的時候出了點小狀況。倆女患者(都還挺漂亮的)過來辦理出院。系統(tǒng)打印出的單據(jù)上顯示:住院6天,但是床位費用收了7天。我們的第一反映就是希望患者能留下電話或者其他聯(lián)系方式。做好最后的確認再通知她們過來。就是這樣一個折中的意見惹火了其中一個。大咧著嗓子說:我們住的是400一天的病房。系統(tǒng)打印不是6天嗎?憑什么收7天的錢?承不承認是你們系統(tǒng)錯了?
無意間,我看到Baijie無奈的抿了一下嘴,但還是自信的說:“我們馬上檢查”系統(tǒng)沒有這個問題。面對這么裸感的質(zhì)問,我真的感覺心酸…這一次算是給我留下了深深的烙印。以后每寫一行代碼的時候可能都會想起…
10分鐘后,問題終于有了答案。是昨天的數(shù)據(jù)移植把收費日期給弄錯了(27日)應(yīng)該是28日。所以每一個用戶都多算了一天的床位費用。這個改動很快就被patch到數(shù)據(jù)庫
在這里的幾個小時,我總結(jié)了一下
1) 用戶需要快速準確的業(yè)務(wù)過程(還真碰上了非常急迫的用戶,為了趕飛機該補50掏出100等不急找錢退卡就要走)
2) 我們的需求,和第一線用戶的想法還有差距,他們的想法更加實用。對系統(tǒng)現(xiàn)在新功能的認可和中肯意見都讓人佩服
3) 這里的一線用戶都表現(xiàn)了良好的素質(zhì)和風(fēng)度。包含著對我們現(xiàn)狀的寬容和理解
鏡頭四
時間已經(jīng)是下午2:00多了,回到信息中心,一些同事在啃面包,吃盒飯,打電話,改程序,頁面測試,數(shù)據(jù)效驗… 這時候的我只想找根煙去廁所享受一下。路過研發(fā)室,隱約聽見里面討論和不時的笑聲。項目組的老大們和用戶在里面進行上線后的第一次溝通匯報會議。
鏡頭五
這個鏡頭可能有些偏離物理視線。我們今天大概在20:00離開醫(yī)院。到這個時候仍然看不到一點笑容,聽不到到一點笑聲,偷偷的幾乎都沒有。不得不承認這真是一只成熟的團隊。這里沒有浮躁,沒有僥幸,沒有自負… 因為每一個人都清楚的知道,真正的考驗應(yīng)該是下周一。這個時候才是對系統(tǒng)承受壓力的真正考驗。在這之前,DBA和負責應(yīng)用服務(wù)器的同事得充分估計,做好最后的優(yōu)化工作。
鏡頭六
哎!寫不完,還有很多….比如:Leo和歡哥的故事,經(jīng)典得很。
我不敢想象,一天之內(nèi)能有這么豐富的經(jīng)歷。時間對于每一個人真的是公平的。
真心的希望我們能一路走好!
微軟最近每天都在走人,他們到底有多少人?走完了怎么辦?呵呵!這些不是我們能關(guān)心的問題。
到底是利益沖突,還是微軟的企業(yè)文化真的混不下去了?
其實每次看到這樣的消息都會有些感傷。熟不知,“天下無不散之筵席”,離開可能是逃避...可能是更好的開始...
也可能是一種解脫... 但是我覺得求變的心是勇敢的。因為全世界的人都還在關(guān)注著他們
新浪科技訊:美國當?shù)貢r間10月25日(北京時間10月26日)消息,據(jù)國外媒體報道,微軟發(fā)言人盧-蓋洛斯(Lou Gellos)對外表示,MSN門戶總經(jīng)理哈蒂-帕托維(Hadi Partovi)已向公司提出辭呈,并計劃離職后自己創(chuàng)業(yè)
蓋洛斯表示,在微軟找到繼任者之前,帕托維今后數(shù)周內(nèi)仍將替微軟工作。此前微軟出臺了部門重組計劃,其中包括將MSN業(yè)務(wù)并入Windows部門。在微軟與Netscape進行的瀏覽器大戰(zhàn)過程中,帕托維曾扮演了重要角色。此后他于1999年離開微軟并創(chuàng)辦Tellme通信公司。2002年帕托維重返微軟,并參與創(chuàng)辦MSN Music等新興業(yè)務(wù)。
最近數(shù)周內(nèi),已有數(shù)名高管離開了微軟。如wikis發(fā)明人Ward Cunningham已離開微軟,加盟一家非盈利性開放源代碼軟件公司。在微軟宣布重組計劃后,Windows產(chǎn)品負責人Jim Allchin也宣布了自己的退休計劃。此前有傳聞稱,微軟Office開發(fā)者之一Don Gagne計劃于今年12月離職。對此微軟和Don Gagne尚未發(fā)表評論。(明月)
摘錄地址:http://tech.sina.com.cn/i/2005-10-26/0715748233.shtml
今天已經(jīng)星期二了嗎?幾乎都忘記了...
我們作為現(xiàn)場支持的項目就快要上線了。說不緊張是假的。至少,每一個人都不希望自己手上的模塊down在客戶的
業(yè)務(wù)流程中。這么大的項目,控制起來的確需要一些功力。能親身經(jīng)歷也能從中收獲蠻多。想寫出來,但是這會兒整個人
感覺很累。而且我覺得寫在這個時候有些不合適宜。希望這段時間過了,我還會有興趣來寫下曾經(jīng)的這份經(jīng)歷。
對了。剛才和一個新加坡同事聊天,發(fā)現(xiàn)一個奇怪的問題。新加坡應(yīng)該是用的北京時間。但是QQ的時候我們彼此的
時間顯示都不正確。這是為什么呢?
Xxx: 12:32:21
電視天天都在采訪新的CEO。。。。
todo.goingmm 21:31:09
SCS 新的CEO?
Xxx: 12:33:31
嗯。。。陳東海
todo.goingmm 21:31:42
新加坡人 ?
Xxx: 12:33:50
問他咱個扭虧為盈。
todo.goingmm 21:31:52
能聽出他有什么策略嗎?
Xxx: 12:33:59
應(yīng)該是
Xxx: 12:34:20
他都說些套話。。。
todo.goingmm 21:32:35
他提到 xXXX 沒有呢 ?
Xxx: 12:34:58
他問成都的人工那么便宜,為啥子這些項目拖這么久了都不叫成都做。。。
Xxx: 12:35:10
你看現(xiàn)在瘋狂的從成都調(diào)人過來。。。。
todo.goingmm 22:00:24
不過你機器的時間有問題
Xxx: 13:02:47
沒的問題哦
todo.goingmm 22:00:54
12:35:10
todo.goingmm 22:00:56
你看嘛
Xxx: 13:03:37
我這里是22:03
Xxx: 13:04:21
我看你的才7點過呢
todo.goingmm 22:02:23
QQ的時間處理有問題
都說 夜里的“聽濤”豐富多彩,天上人間,凡人俗事,顛覆睡眠….每天晚上等到凌晨2點,早上睡到天完全變藍。不知道是因為疲倦睡得太死,還是外面真的鴉雀無聲。感覺這邊比成都好睡。我才知道我被騙了…
今天已經(jīng)是第四天了。準確的說起床時間已經(jīng)是23號下午。坐在窗臺前一邊吃早餐一邊找尋無線網(wǎng)絡(luò)。對面那排空房(幾天了都沒見亮過燈),刺眼的陽光。樓下偶爾能見送水的小工… 潛意識中想沖出去,要逃離…
在這里的生活其實和坐牢一樣,星期一到星期六出去干活,周末留一天在家里睡覺。能在網(wǎng)絡(luò)上遇上兩個朋友,寒暄兩句。有人探視的感覺,美妙…
呵呵!~ 太灰暗了點。 推開玻璃窗,呼吸點新鮮空氣,這種感覺全無了。準備出去找個地方把中午飯解決了。
學(xué)習(xí)Hibernate之前,需要理解 對象持續(xù)性和對象-關(guān)系映射 的核心問題
【概念】
1)Hibernate是一個面向java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射(ORM)工具。
2)ORM 表示一種技術(shù),用來把對象模型表示的對象映射到基于SQL的關(guān)系模型中去。
【目標】
對于開發(fā)者通常的數(shù)據(jù)持久化的編程任務(wù)。解放其中的95%,成為Java管理持續(xù)性數(shù)據(jù)問題的一種完整的解決方案
【體現(xiàn)】
他協(xié)調(diào)應(yīng)用與關(guān)系數(shù)據(jù)庫的交互,讓開發(fā)者解放出來專注于手中的業(yè)務(wù)問題。他是一種非強迫性的解決方案
【運行Hibernate需要的第三方庫】
dom4j (必需): Hibernate在解析XML配置和XML映射元文件時需要使用dom4j。
CGLIB (必需): Hibernate在運行時使用這個代碼生成庫強化類(與Java反射機制聯(lián)合使用)。
Commons Collections and Commons Logging (必需): Hibernat使用Apache Jakarta Commons項目提供的多個工具類庫
ODMG4 (必需) : Hibernate提供了一個可選的ODMG兼容持久化管理界面。如果你需要映射集合,你就需要這個類庫,
就算你不是為了使用ODMG API (注意:為什么在Hibernate 3.0 就沒有這個jar了?)
Log4j (可選):Log4j 是一款優(yōu)秀的Debug工具,具體使用方式網(wǎng)絡(luò)上有很多介紹