隨筆 - 18  文章 - 0  trackbacks - 0
          <2010年1月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿

          隨筆分類(lèi)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          首先引包:
              import jxl.Workbook;
          代碼示例:
              jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File("C:/Documents and Settings/Administrator/桌面/department.xls"));   
              jxl.Sheet rs = rwb.getSheet("部門(mén)信息"); //sheet名稱(chēng),也可以getSheet(0)方法取得sheet  
              String sheetContext = rs.getCell(1, 0).getContents();
              ServletActionContext.getRequest().setAttribute("sheetName", sheetContext);

          具體操作見(jiàn):
              http://philos.javaeye.com/blog/90802
          posted @ 2010-03-09 11:22 lucas_y 閱讀(154) | 評(píng)論 (0)編輯 收藏
          hibenate的面試總結(jié).
          可能現(xiàn)在大家常常還會(huì)遇到一個(gè)些面試的時(shí)候問(wèn)一些關(guān)于hibernate的問(wèn)題,我個(gè)人覺(jué)得,這些東西一般做過(guò)開(kāi)發(fā)的人在使用上沒(méi)有任何的問(wèn)題的,但是如果是要你來(lái)說(shuō)就不一定能夠說(shuō)好的,下面是從goole上找的一些常見(jiàn)的面試。
          1.Hibernate session接口的get和load方法有何異同?
          答: get不到實(shí)體對(duì)象時(shí)會(huì)返回null,load會(huì)拋出異常
            - get會(huì)立即加載實(shí)體對(duì)象,load默認(rèn)是延遲加載
            - get會(huì)忽略二級(jí)緩存(這個(gè)沒(méi)有試驗(yàn)過(guò)),load則是一級(jí)和二級(jí)緩存都使用

          2.在持久化層,對(duì)象分為哪些狀態(tài)?分別列出來(lái).
          答:瞬時(shí)態(tài)(Transient)、持久態(tài)(Persistent)、脫管態(tài)(Detached)。
          瞬時(shí)態(tài)(Transient)
          是對(duì)象是創(chuàng)建時(shí),瞬時(shí)對(duì)象在內(nèi)存孤立存在,它是攜帶信息的載體,不和數(shù)據(jù)庫(kù)的數(shù)據(jù)有任何關(guān)聯(lián)關(guān)系,在Hibernate中,可通過(guò)session的save()或 saveOrUpdate()方法將瞬時(shí)對(duì)象與數(shù)據(jù)庫(kù)相關(guān)聯(lián),并將數(shù)據(jù)對(duì)應(yīng)的插入數(shù)據(jù)庫(kù)中,此時(shí)該瞬時(shí)對(duì)象轉(zhuǎn)變成持久化對(duì)象。
          持久態(tài)(Persistent)
          是該對(duì)象在數(shù)據(jù)庫(kù)中已有對(duì)應(yīng)的記錄,并擁有一個(gè)持久化標(biāo)識(shí),如果是用hibernate的delete()方法,對(duì)應(yīng)的持久對(duì)象就變成瞬時(shí)對(duì)象,因數(shù)據(jù)庫(kù)中的對(duì)應(yīng)數(shù)據(jù)已被刪除,該對(duì)象不再與數(shù)據(jù)庫(kù)的記錄關(guān)聯(lián)。
              當(dāng)一個(gè)session執(zhí)行close()或clear()、evict()之后,持久對(duì)象變成脫管對(duì)象,此時(shí)持久對(duì)象會(huì)變成脫管對(duì)象,此時(shí)該對(duì)象雖然具有數(shù)據(jù)庫(kù)識(shí)別值,但它已不在hibernate持久層的管理之下。
            持久對(duì)象具有如下特點(diǎn):
               1. 和session實(shí)例關(guān)聯(lián);
               2. 在數(shù)據(jù)庫(kù)中有與之關(guān)聯(lián)的記錄。
          脫管態(tài)(Detached)
          當(dāng)與某持久對(duì)象關(guān)聯(lián)的session被關(guān)閉后,該持久對(duì)象轉(zhuǎn)變?yōu)槊摴軐?duì)象。當(dāng)脫管對(duì)象被重新關(guān)聯(lián)到session上時(shí),并再次轉(zhuǎn)變成持久對(duì)象。
                 脫管對(duì)象擁有數(shù)據(jù)庫(kù)的識(shí)別值,可通過(guò)update()、saveOrUpdate()等方法,轉(zhuǎn)變成持久對(duì)象。
                 脫管對(duì)象具有如下特點(diǎn):
            1.本質(zhì)上與瞬時(shí)對(duì)象相同,在沒(méi)有任何變量引用它時(shí),JVM會(huì)在適當(dāng)?shù)臅r(shí)候?qū)⑺厥眨?
          2. 比瞬時(shí)對(duì)象多了一個(gè)數(shù)據(jù)庫(kù)記錄標(biāo)識(shí)值。

          3.lock和update區(qū)別
          答: update是把一個(gè)已經(jīng)更改過(guò)的脫管狀態(tài)的對(duì)象變成持久狀態(tài)
          lock是把一個(gè)沒(méi)有更改過(guò)的脫管狀態(tài)的對(duì)象變成持久狀態(tài)(針對(duì)的是因Session的關(guān)閉 而處于脫管狀態(tài)的po對(duì)象(2),不能針對(duì)因delete而處于脫管狀態(tài)的po對(duì)象)
          對(duì)應(yīng)更改一個(gè)記錄的內(nèi)容,兩個(gè)的操作不同:
          update的操作步驟是:
          (1)屬性改動(dòng)后的脫管的對(duì)象的修改->調(diào)用update
          lock的操作步驟是:
          (2)調(diào)用lock把未修改的對(duì)象從脫管狀態(tài)變成持久狀態(tài)-->更改持久狀態(tài)的對(duì)象的內(nèi)容-->等待flush或者手動(dòng)flush

          4.save 和update區(qū)別
          答: save是把一個(gè)對(duì)象做為一個(gè)新的數(shù)據(jù)保存, update則是把一個(gè)脫管狀態(tài)的對(duì)象或自由態(tài)對(duì)象(一定要和一個(gè)記錄對(duì)應(yīng))更新到數(shù)據(jù)庫(kù),其實(shí)一個(gè)是保存一個(gè)是更新,一看都知道是有什么區(qū)別了。

          5.update 和saveOrUpdate區(qū)別
          答:這個(gè)是比較好理解的,顧名思義,saveOrUpdate基本上就是合成了save和update,而update只是update;引用hibernate reference中的一段話來(lái)解釋他們的使用場(chǎng)合和區(qū)別
          通常下面的場(chǎng)景會(huì)使用update()或saveOrUpdate():
          程序在第一個(gè)session中加載對(duì)象,接著把session關(guān)閉
          該對(duì)象被傳遞到表現(xiàn)層
          對(duì)象發(fā)生了一些改動(dòng)
          該對(duì)象被返回到業(yè)務(wù)邏輯層最終到持久層
          程序創(chuàng)建第二session調(diào)用第二個(gè)session的update()方法持久這些改動(dòng)
          saveOrUpdate(po)做下面的事:
          如果該po對(duì)象已經(jīng)在本session中持久化了,在本session中執(zhí)行saveOrUpdate不做任何事
          如果savaOrUpdate(新po)與另一個(gè)與本session關(guān)聯(lián)的po對(duì)象擁有相同的持久化標(biāo)識(shí)(identifier),拋出一個(gè)異常
          org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [org.itfuture.www.po.Xtyhb#5]
          saveOrUpdate如果對(duì)象沒(méi)有持久化標(biāo)識(shí)(identifier)屬性,對(duì)其調(diào)用save() ,否則update() 這個(gè)對(duì)象     

          6.flush和update區(qū)別
          答:這兩個(gè)的區(qū)別好理解update操作的是在自由態(tài)或脫管狀態(tài)(因session的關(guān)閉而處于脫管狀態(tài))的對(duì)象//updateSQL
          而flush是操作的在持久狀態(tài)的對(duì)象。
          默認(rèn)情況下,一個(gè)持久狀態(tài)的對(duì)象的改動(dòng)(包含set容器)是不需要update的,只要你更改了對(duì)象的值,等待hibernate flush就自動(dòng)更新或保存到數(shù)據(jù)庫(kù)了。hibernate flush發(fā)生在以下幾種情況中:
          1, 調(diào)用某些查詢的和手動(dòng)flush(),session的關(guān)閉、SessionFactory關(guān)閉結(jié)合
          get()一個(gè)對(duì)象,把對(duì)象的屬性進(jìn)行改變,把資源關(guān)閉。
          2,transaction commit的時(shí)候(包含了flush)
          posted @ 2010-03-08 16:14 lucas_y 閱讀(207) | 評(píng)論 (0)編輯 收藏
                  1、Web Services. 優(yōu)先支持編寫(xiě) XML web service 客戶端程序。你可以用過(guò)簡(jiǎn)單的annotaion將你的API發(fā)布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平臺(tái)實(shí)現(xiàn)或者Java Web Services Pack中提供. 
           

            2、Scripting. 現(xiàn)在你可以在Java源代碼中混入JavaScript了,這對(duì)開(kāi)發(fā)原型很有有用,你也可以插入自己的腳本引擎。  

            3、Database. Mustang 將聯(lián)合綁定 Java DB (Apache Derby). JDBC 4.0 增加了許多特性例如支持XML作為SQL數(shù)據(jù)類(lèi)型,更好的集成Binary Large OBjects (BLOBs) 和 Character Large OBjects (CLOBs) . 

            4、More Desktop APIs. GUI 開(kāi)發(fā)者可以有更多的技巧來(lái)使用 SwingWorker utility ,以幫助GUI應(yīng)用中的多線程。, JTable 分類(lèi)和過(guò)濾,以及添加splash閃屏。 

            5、Monitoring and Management. Mustang 添加更多的診斷信息,綁定了不是很知名的 memory-heap 分析工具Jhat 來(lái)查看內(nèi)核導(dǎo)出。 

            6、Compiler Access.  compiler API提供編程訪問(wèn)javac,可以實(shí)現(xiàn)進(jìn)程內(nèi)編譯,動(dòng)態(tài)產(chǎn)生Java代碼。  

            7、Pluggable Annotation. Java tool和framework 提供商可以定義自己的 annotations ,并且內(nèi)核支持自定義annotation的插件和執(zhí)行處理器  

            8、Desktop Deployment. Swing擁有更好的 look-and-feel , LCD 文本呈現(xiàn), 整體GUI性能的提升。Java應(yīng)用程序可以和本地平臺(tái)更好的集成,例如訪問(wèn)平臺(tái)的系統(tǒng)托盤(pán)和開(kāi)始菜單。Mustang將Java插件技術(shù)和Java Web Start引擎統(tǒng)一了起來(lái)。 

            9、Security. XML-數(shù)字簽名(XML-DSIG) APIs 用于創(chuàng)建和操縱數(shù)字簽名); 新的方法來(lái)訪問(wèn)本地平臺(tái)的安全服務(wù),例如本地Microsoft Windows for secure authentication and communicationnative 的Public Key Infrastructure (PKI) 和 cryptographic services, Java Generic Security Services (Java GSS) 和 Kerberos services for authentication, 以及訪問(wèn) LDAP servers 來(lái)認(rèn)證用戶. 

            10、The -ilities: 質(zhì)量,兼容性,穩(wěn)定性。 80,000 test cases 和數(shù)百萬(wàn)行測(cè)試代碼(只是測(cè)試活動(dòng)中的一個(gè)方面). Mustang 的快照發(fā)布已經(jīng)被下載15個(gè)月了,每一步中的Bug都被修復(fù)了,表現(xiàn)比J2SE 5還要好。
          posted @ 2010-03-05 16:34 lucas_y 閱讀(166) | 評(píng)論 (0)編輯 收藏

          原文地址:http://sjtu.blog.sohu.com/108202346.html

           

          ------------------------------------------軟開(kāi)開(kāi)發(fā)篇-------------------------
          -------------------------- 
           
               在我剛進(jìn)軟開(kāi)的時(shí)候,我想,這有什么啊,泡著茶寫(xiě)點(diǎn)兒JAVA的日子么?最多用JAVA查
          個(gè)數(shù)據(jù)庫(kù),插個(gè)數(shù)據(jù)庫(kù),還有啥?取錢(qián)存錢(qián)不也就是個(gè)人帳戶數(shù)據(jù)的此消彼長(zhǎng)么?IDE會(huì)幫你
          發(fā)現(xiàn)任何一個(gè)細(xì)小的失誤,而JAVA的簡(jiǎn)單語(yǔ)法也不會(huì)讓你擔(dān)心有什么疑難雜癥.我不知道
          跟我想法法一致的人有多少,但這確實(shí)就是我剛開(kāi)始看軟開(kāi)的眼光,安逸,掙閑錢(qián)的地方.
           
               然則,就類(lèi)似于能量守恒的定理,你做的東西少,一定是有人幫你做的東西多,JAVA是
          簡(jiǎn)單,可是那是JVM做的東西多,就如銀行,銀行的系統(tǒng)之復(fù)雜,是任何一個(gè)人無(wú)法想象的,
          然而它的真正目的不是像IBM一樣要向別人出賣(mài)技術(shù),所以對(duì)人才要求很高,它只是要使成
          熟的技術(shù)造福于自己特色業(yè)務(wù)的推廣,造福于針對(duì)業(yè)務(wù)的系統(tǒng)的開(kāi)發(fā),說(shuō)白了,是靠業(yè)務(wù)的
          走紅而不是技術(shù)的復(fù)雜來(lái)掙錢(qián),.JAVA雖簡(jiǎn)單,但是要想徹頭徹尾學(xué)明白也難,那么銀行軟
          開(kāi)不允許這種復(fù)雜性存在,它簡(jiǎn)單,但不徹底,那么我們就要讓它變得徹底的簡(jiǎn)單,我們要
          繼續(xù)開(kāi)發(fā)自己的系統(tǒng),提供一套很容易的開(kāi)發(fā)平臺(tái),當(dāng)這套平臺(tái)開(kāi)發(fā)出來(lái)之后,就招一批能
          夠泡著茶寫(xiě)JAVA的人去為業(yè)務(wù)服務(wù),所以這就是軟開(kāi)表面給大家造成這樣一種映向的原因
          ,工作難度是不大,但是絕對(duì)不是說(shuō)銀行系統(tǒng)無(wú)人,只是那些平臺(tái)的工作者沒(méi)有浮出水面,
          或者相對(duì)來(lái)說(shuō)比較低調(diào)而已. 
              回到了我不屑的泡著茶寫(xiě)JAVA,啊,的確,難度是不大,數(shù)據(jù)庫(kù)查來(lái)查去,日志記來(lái)記去
          ,流程可能夠復(fù)雜,但不是算法的復(fù)雜,只是實(shí)現(xiàn)起來(lái)很煩而已.但是,這些人真的有足夠的
          工夫泡茶么?大家喜歡用日新月異來(lái)形容當(dāng)今社會(huì)的發(fā)展,形勢(shì)日新月異了,業(yè)務(wù)需求一樣
          也是日新月異,于是他們每天都要針對(duì)各種業(yè)務(wù)需求寫(xiě)出不同的程序來(lái),這個(gè)時(shí)候,他們的
          關(guān)注點(diǎn)應(yīng)該從技術(shù)轉(zhuǎn)向業(yè)務(wù)上來(lái).業(yè)務(wù)需求給他們的壓力使他們?cè)贌o(wú)暇關(guān)注技術(shù)本身,所
          以寫(xiě)JAVA的人也有寫(xiě)JAVA的人的難處,只是業(yè)務(wù)上的繁瑣,向來(lái)被純正的喜歡搞底層/搞算
          法的人所鄙視,的確,你的腦筋可能是很活,但是物盡其才,如果真的有這樣的思維,是應(yīng)該
          去搞一些高深的東西,研究技術(shù)的創(chuàng)新,寫(xiě)JAVA,面對(duì)各種應(yīng)用需求,是有些埋沒(méi),但是話又
          說(shuō)回來(lái),這樣腦筋很活的人能干這樣的工作么?工作再枯燥也需要有人做,他們能有耐心應(yīng)
          付這樣的枯燥么? 
              現(xiàn)在滿大街的小公司,沒(méi)有幾個(gè)是真正搞什么底層?xùn)|西的,大家其實(shí)都在針對(duì)各種業(yè)
          務(wù)做各種項(xiàng)目,銀行的開(kāi)發(fā)之所以顯得有些乍眼,主要是因?yàn)?1,國(guó)企大氛圍;2,做出的東
          西不用面對(duì)銷(xiāo)售壓力.其開(kāi)發(fā)從技術(shù)含量來(lái)講,并無(wú)本質(zhì)區(qū)別. 
              所以在銀行軟開(kāi)工作,絕大部分人,絕對(duì)部分學(xué)計(jì)算機(jī)的人,需要面臨的是一個(gè)方向的
          調(diào)整,需要將注意力從技術(shù)的深度轉(zhuǎn)到業(yè)務(wù)的廣度上來(lái),一味盲目的覺(jué)得人家的工作乏味,
          沒(méi)技術(shù)含量是不現(xiàn)實(shí)的,這也是我目前一個(gè)態(tài)度的轉(zhuǎn)變. 
              技術(shù)做到最后,就是大同,惟有業(yè)務(wù),才能使其中的努力變成鈔票,大家(尤其是學(xué)計(jì)算
          機(jī)的人,尤其是并不適合搞算法,搞底層的人)如果想進(jìn)軟開(kāi),一定要有這樣的認(rèn)識(shí). 
           
          ----------------------------------------------------------------------------
          --------------------------------- 
           
          ------------------------------軟開(kāi)的壓力篇----------------------------------
          --------------------------- 
              銀行軟開(kāi)之所以有些乍眼,前面說(shuō)過(guò)一條,不用面對(duì)銷(xiāo)售的壓力,是,我們做出來(lái),業(yè)務(wù)
          人員就得用,可是真的沒(méi)有壓力么? 
                  我曾經(jīng)聽(tīng)說(shuō)過(guò)這樣一個(gè)例子:一個(gè)工行網(wǎng)點(diǎn)的客戶經(jīng)理,費(fèi)盡了口舌,花了半天工
          夫,說(shuō)服了兩個(gè)客戶買(mǎi)基金,終于她們被說(shuō)動(dòng)了,坐下來(lái)填單子準(zhǔn)備簽字了,這個(gè)時(shí)候,系統(tǒng)
          出故障了,交易無(wú)法進(jìn)行,沒(méi)辦法,客戶經(jīng)理只能含著淚,帶著她們出來(lái),把她們指給旁邊的
          農(nóng)行/建行(本人屬于工行,這些時(shí)候自然偏向工行,其他銀行朋友勿怪).這個(gè)例子,體現(xiàn)了
          銀行軟開(kāi)的一點(diǎn)壓力吧,不論什么時(shí)間,不論什么情況,不論你用什么手段什么方法,請(qǐng)你
          給我保持住穩(wěn)定,如果系統(tǒng)慢,客戶經(jīng)理還可以陪客戶聊天,可是如果宕了,什么叫所有努
          力付諸東流,這就是. 
              銀行在全國(guó)的網(wǎng)點(diǎn),大的數(shù)以萬(wàn)計(jì),小的也數(shù)以千計(jì)吧,各個(gè)地方,招來(lái)的柜員,那是怎
          么樣素質(zhì)的都有,我曾聽(tīng)說(shuō)過(guò)這樣的柜員,這輩子她就會(huì)干兩件事,做取款的交易和存款的
          交易,轉(zhuǎn)賬怎么辦?不會(huì)直接轉(zhuǎn)賬,先給A做提現(xiàn)的交易,再給B做存現(xiàn)的交易.內(nèi)部實(shí)現(xiàn)怎么
          別扭,但是外部的易用性你可得給我做足了,要不人家網(wǎng)點(diǎn)柜員是真不明白.記得唐朝詩(shī)人
          白居易還是王安石,每寫(xiě)一首詩(shī),都要問(wèn)老百姓能不能看懂,軟開(kāi)面臨的情況也很類(lèi)似,白
          居易王安石歷史上就這么兩個(gè)人,然而你要求每個(gè)軟開(kāi)員工每個(gè)項(xiàng)目都能做到這樣,不覺(jué)
          得有壓力么?尤其是心高氣傲的計(jì)算機(jī)人,那 更是不屑了.可是,這是軟開(kāi),如果想進(jìn)來(lái)玩,
          請(qǐng)放下你的架子,認(rèn)真/細(xì)致的處理好所有細(xì)節(jié). 
              還有一個(gè)路人皆知的壓力,如何保障運(yùn)營(yíng)系統(tǒng)的安全,大家存錢(qián)的時(shí)候按完密碼鍵盤(pán)
          了,系統(tǒng)沒(méi)有響應(yīng),柜員要求你重新輸入你會(huì)怎么想?難道不是我的密碼被盜了?你怎么能
          保證?這樣的事情只要發(fā)生,只要桶上來(lái),整個(gè)銀行總部的領(lǐng)導(dǎo)層都會(huì)開(kāi)始關(guān)注這個(gè)問(wèn)題,
          甚至銀監(jiān)會(huì)也要監(jiān)督你的處理方式.這個(gè)時(shí)候,軟開(kāi)員工身上的壓力將會(huì)可想而知,一旦最
          后查明是程序的問(wèn)題,所有一干人等(開(kāi)發(fā)/測(cè)試/小組領(lǐng)導(dǎo)/部門(mén)領(lǐng)導(dǎo)),全部要受罰,這是
          肯定的.網(wǎng)銀的運(yùn)營(yíng),得有多少加密措施來(lái)保障數(shù)據(jù)的安全,且不說(shuō)技術(shù)上的加密算法,就
          拿業(yè)務(wù)來(lái)說(shuō),大家去辦個(gè)U盾,看那個(gè)網(wǎng)點(diǎn)工作人員得填多少單子,就知道銀行為保證安全
          ,得下多少精力了. 
              很多小公司,常年就給一個(gè)醫(yī)院/一個(gè)機(jī)關(guān)做項(xiàng)目,每做一個(gè),掙10幾萬(wàn),然后全組人出
          動(dòng)到現(xiàn)場(chǎng),花幾天時(shí)間,解決各種安裝遇到的問(wèn)題,保證沒(méi)問(wèn)題后再大家都撤,老總請(qǐng)大家
          吃飯.銀行是怎么樣?做一個(gè)項(xiàng)目,全國(guó)所有省份所有網(wǎng)點(diǎn)均要投產(chǎn),如果大家各自全都出
          動(dòng),人手夠么?各種不一致的現(xiàn)象報(bào)上來(lái),就是招10倍人也解決不了,所以銀行軟開(kāi)壓力最
          大的時(shí)候就是投產(chǎn)前夕,所有人從老總到小兵全部通宵達(dá)旦地守在電腦旁,應(yīng)付各種可能
          問(wèn)題的出現(xiàn),而且作為高風(fēng)險(xiǎn)機(jī)構(gòu),銀行在投產(chǎn)時(shí)候遇到的問(wèn)題的解決,一定要準(zhǔn),一次性
          成功!就如密碼鍵盤(pán)來(lái)說(shuō),出現(xiàn)問(wèn)題是系統(tǒng)不響應(yīng),馬上回來(lái)改了,自己測(cè)過(guò)之后沒(méi)問(wèn)題,再
          發(fā)補(bǔ)丁,結(jié)果造成系統(tǒng)崩潰,你可以想象一下客戶的憤怒和不安!全中國(guó)這么大,我們不可
          能到處跑過(guò)去看問(wèn)題,所以,怎么樣才能保證程序在全國(guó)跑都沒(méi)問(wèn)題,這是問(wèn)題,也是巨大
          的壓力. 
              銀行軟開(kāi)的壓力,不來(lái)自于有沒(méi)有客戶,而來(lái)自于客戶太多,給我們系統(tǒng)造成的壓力,
          無(wú)人問(wèn)津的悲哀和無(wú)數(shù)人目光如炬的質(zhì)詢,后果都一樣,讓你身心俱疲. 
          ----------------------------------------------------------------------------
          ------------------------------------- 
           
          ------------------------------銀行軟開(kāi)的發(fā)展篇------------------------------
          ----------------------------- 
              銀行軟開(kāi)的發(fā)展,對(duì)于學(xué)計(jì)算機(jī)的人來(lái)說(shuō),是一個(gè)不小的難題,也是很多人對(duì)于要不
          要來(lái)這很猶豫的問(wèn)題,技術(shù)和業(yè)務(wù)上的難以抉擇.還有國(guó)企多少的一點(diǎn)特色對(duì)自己發(fā)展造
          成的干擾. 
              是的,這些都是問(wèn)題,值得研究,第一個(gè)關(guān)于技術(shù)和業(yè)務(wù)的問(wèn)題,我不想再多說(shuō),以掙錢(qián)
          為終點(diǎn),那么條條大路通羅馬,以境界的追求為終點(diǎn),軟開(kāi)可能不屬于一個(gè)好的地方,畢竟
          你的心高高在上,不屑于一些簡(jiǎn)單的活.路是自己選的,怎么走都可以,但是有一點(diǎn)要注意,
          軟開(kāi)是有一部分專(zhuān)搞技術(shù)的人的,只是因?yàn)殂y行軟開(kāi)的出發(fā)點(diǎn)是針對(duì)業(yè)務(wù)做開(kāi)發(fā),所以為
          開(kāi)發(fā)提供更便捷方式的平臺(tái)方面的人屬于少而精的配置.因?yàn)橐恍﹪?guó)企的特色,進(jìn)來(lái)后可
          能因?yàn)槲疫@篇文章,一些想要進(jìn)來(lái)做平臺(tái)的計(jì)算機(jī)人,有可能被領(lǐng)導(dǎo)分配到業(yè)務(wù)為主的開(kāi)
          發(fā)部門(mén),關(guān)于這些人我想說(shuō)的是,軟開(kāi)屬于計(jì)算機(jī)研發(fā)為主的企業(yè)性質(zhì)單位,人與人之間的
          關(guān)系,沾點(diǎn)國(guó)企的影子,卻遠(yuǎn)沒(méi)有那么復(fù)雜,關(guān)于自己角色的的定位,你可以跟領(lǐng)導(dǎo)好好溝
          通你的長(zhǎng)處和你希望干的內(nèi)容,一般來(lái)說(shuō),領(lǐng)導(dǎo)是會(huì)多少考慮的,即便不能百分百滿足你需
          要,百分之三十/四十/五十等等也能滿足一些,只會(huì)悶頭做技術(shù),不會(huì)與人交流的人還是不
          要來(lái)了,這里不適合你,即便你不跟領(lǐng)導(dǎo)溝通,你也需要跟下面分行的人溝通,交流,是工作
          需要. 
              有的人會(huì)說(shuō),銀行軟開(kāi)不掙錢(qián),掙錢(qián)的是那些懂業(yè)務(wù)的人,這里首先要明確,什么樣算
          掙錢(qián),工資是每個(gè)人都掙的,要是拿這個(gè)說(shuō)的話就沒(méi)意思了.大家說(shuō)的應(yīng)該是提成/分紅的
          那一類(lèi)人,的確,軟開(kāi)掙不到那樣一些錢(qián),那些屬于業(yè)務(wù)部該掙的錢(qián).我覺(jué)得大家在討論這
          樣一些問(wèn)題的時(shí)候,首先要把自己擺正,軟開(kāi)的人,其實(shí)也就相當(dāng)于一個(gè)IT公司的人,IT公
          司的那一部分分紅,軟開(kāi)一分錢(qián)都不會(huì)少,而且軟開(kāi)的錢(qián)有保證,不隨經(jīng)濟(jì)危機(jī)而起伏.平
          時(shí)福利也還可以.大家在羨慕業(yè)務(wù)的人拿得多的時(shí)候,是否可曾想到自己公司的銷(xiāo)售在談
          好一個(gè)項(xiàng)目的時(shí)候提成也是遠(yuǎn)勝于自己工資的呢?只要你自己肯轉(zhuǎn)變思路,專(zhuān)心學(xué)業(yè)務(wù),借
          助于自己的技術(shù)優(yōu)勢(shì),以后去業(yè)務(wù)部分掙錢(qián)也不是沒(méi)可能,關(guān)鍵就在于自己怎么看,不能既
          不想作出改變現(xiàn)狀的努力,又覺(jué)得人家掙錢(qián)掙那么多不公平.再者如果你實(shí)在干不了業(yè)務(wù),
          那么就干技術(shù),轉(zhuǎn)管理或者技術(shù)做到死當(dāng)技術(shù)經(jīng)理,總之就是成為領(lǐng)導(dǎo),軟開(kāi)領(lǐng)導(dǎo)同樣掙不
          少錢(qián),他們地位也和HP/IBM的高管地位一樣,也許錢(qián)一年比人家的少些,但是國(guó)企有國(guó)企的
          福利,這個(gè)是外企不能比的.每個(gè)人都該知足,生活提高一點(diǎn),抱怨就該少一點(diǎn),自己已經(jīng)掙
          了30W一年,夠花了,聽(tīng)說(shuō)別的部門(mén)一年年終獎(jiǎng)拿了20W,全年工資50W也該把心態(tài)放平和些,
          不就是錢(qián)么,又不是不夠花,何不知足長(zhǎng)樂(lè)呢?(注:業(yè)務(wù)部門(mén)不包括那些網(wǎng)點(diǎn)的柜員,他們
          工資很少的). 
               軟開(kāi)的發(fā)展空間最大的難處在我看來(lái),是這里雖然由業(yè)務(wù)指導(dǎo)開(kāi)發(fā),但是開(kāi)發(fā)量很大
          ,導(dǎo)致你也不能完全放下你的技術(shù),這樣技術(shù)和業(yè)務(wù)之間徘徊不定,最終會(huì)有礙人的成長(zhǎng),
          而且他的技術(shù)為了業(yè)務(wù)開(kāi)發(fā)的便捷,被很好的簡(jiǎn)化了最后有可能技術(shù)沒(méi)學(xué)成技術(shù),業(yè)務(wù)也
          沒(méi)懂多少.這個(gè)是確實(shí),一個(gè)地方不可能十全十美. 
              我的意見(jiàn)是,你一生比較想過(guò)安穩(wěn)的生活可以來(lái)這,你如果是一個(gè)有追求的人,并且腦
          筋可以變通的人,也可以來(lái)這,你如果是是一個(gè)有追求的人,并且好學(xué)的人(無(wú)論是業(yè)務(wù)還
          是技術(shù),都多得讓你學(xué)不完,當(dāng)你學(xué)得夠多就有資格提前成為領(lǐng)導(dǎo)了),也可以來(lái)這.一個(gè)有
          追求的人,并且勤勉踏實(shí)的人也可以來(lái),有這么兩類(lèi)人,技術(shù)的大牛人不要來(lái),你應(yīng)該去百
          度/GOOGLE發(fā)揮你的優(yōu)勢(shì)所在,有追求,但是沒(méi)有什么魄力改變現(xiàn)狀的人,就不要來(lái),免得一
          輩子平庸的現(xiàn)狀可能讓你萬(wàn)分苦惱. 
              還有一個(gè)難處我也提一下,它終歸是國(guó)企,它注重能力,畢竟銀行的系統(tǒng)不能瞎來(lái),同
          時(shí)也要求年限,年限一到才能往上升,所以不能忍的人也不要來(lái)了吧,當(dāng)然也可以來(lái)了再走
          ~呵呵 
             最后我說(shuō)一下薪資發(fā)展空間吧,現(xiàn)在銀行軟開(kāi)一般待遇都不差,但是升值空間,在你沒(méi)
          成為領(lǐng)導(dǎo)之前漲幅不大,其實(shí)任何地方都一樣,只有當(dāng)領(lǐng)導(dǎo),工資才能有質(zhì)的變化,只是軟
          開(kāi)要當(dāng)上領(lǐng)導(dǎo)的周期比外企要長(zhǎng)一些,也不會(huì)長(zhǎng)得不可理喻,大家有的總說(shuō)想來(lái)這,覺(jué)得穩(wěn)
          定但是又嫌工資漲得不快,這就是典型的魚(yú)和熊掌都想得到的心理了,選擇了軟開(kāi),選擇了
          國(guó)企的穩(wěn)定,必然要放棄一部分收入的增幅,既然思想不夠純粹,要為追求奮斗一生,而是
          選擇既有保障也要有追求的奮斗,那么你的生命里必將在別的地方付出一些代價(jià),怎么樣
          都能成功,問(wèn)題還是在于個(gè)人吧. 
              我簡(jiǎn)單說(shuō)明一下,工行軟開(kāi),屬于總行編制,恩,就這么多了. 

          posted @ 2010-03-01 11:25 lucas_y 閱讀(1292) | 評(píng)論 (0)編輯 收藏

           代理模式


          代理模式的作用是:

                為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)客戶不想或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)象之間起到中介的作用。


          代理模式一般涉及到的角色有:


          抽象角色:聲明真實(shí)對(duì)象和代理對(duì)象的共同接口;

          代理角色:代理對(duì)象角色內(nèi)部含有對(duì)真實(shí)對(duì)象的引用,從而可以操作真實(shí)對(duì)象,同時(shí)代理對(duì)象提供與真實(shí)對(duì)象相同的接口以便在任何時(shí)刻都能代替真實(shí)對(duì)象。同時(shí),代理對(duì)象可以在執(zhí)行真實(shí)對(duì)象操作時(shí),附加其他的操作,相當(dāng)于對(duì)真實(shí)對(duì)象進(jìn)行封裝。

          真實(shí)角色:代理角色所代表的真實(shí)對(duì)象,是我們最終要引用的對(duì)象。

          以下以《Java與模式》中的示例為例:

          代碼: //抽象角色:
          abstract public class Subject{
          abstract public void request();
          }

          //真實(shí)角色:實(shí)現(xiàn)了Subject的request()方法。
          public class RealSubject extends Subject{
          public RealSubject(){
          }
          public void request(){
          System.out.println("From real subject.");
          }
          }

          //代理角色:
          public class ProxySubject extends Subject{
          private RealSubject realSubject; //以真實(shí)角色作為代理角色的屬性
          public ProxySubject(){
          }
          public void request(){ //該方法封裝了真實(shí)對(duì)象的request方法
          preRequest();
          if( realSubject == null ){
          realSubject = new RealSubject();
          }
          realSubject.request(); //此處執(zhí)行真實(shí)對(duì)象的request方法
          postRequest();
          }
          private void preRequest(){
          //something you want to do before requesting
          }
          private void postRequest(){
          //something you want to do after requesting
          }
          }

          //客戶端調(diào)用:
          Subject sub=new ProxySubject();
          Sub.request();


                由以上代碼可以看出,客戶實(shí)際需要調(diào)用的是RealSubject類(lèi)的request()方法,現(xiàn)在用ProxySubject來(lái)代理RealSubject類(lèi),同樣達(dá)到目的,同時(shí)還封裝了其他方法(preRequest(),postRequest()),可以處理一些其他問(wèn)題。

                另外,如果要按照上述的方法使用代理模式,那么真實(shí)角色必須是事先已經(jīng)存在的,并將其作為代理對(duì)象的內(nèi)部屬性。但是實(shí)際使用時(shí),一個(gè)真實(shí)角色必須對(duì)應(yīng)一個(gè)代理角色,如果大量使用會(huì)導(dǎo)致類(lèi)的急劇膨脹;此外,如果事先并不知道真實(shí)角色,該如何使用代理呢?這個(gè)問(wèn)題可以通過(guò)Java的動(dòng)態(tài)代理類(lèi)來(lái)解決。

          2.動(dòng)態(tài)代理

          Java動(dòng)態(tài)代理類(lèi)位于Java.lang.reflect包下,一般主要涉及到以下兩個(gè)類(lèi):

          (1). Interface InvocationHandler:該接口中僅定義了一個(gè)方法Object:invoke(Object obj,Method method, Object[] args)。在實(shí)際使用時(shí),第一個(gè)參數(shù)obj一般是指代理類(lèi),method是被代理的方法,如上例中的request(),args為該方法的參數(shù)數(shù)組。這個(gè)抽象方法在代理類(lèi)中動(dòng)態(tài)實(shí)現(xiàn)。

          (2).Proxy:該類(lèi)即為動(dòng)態(tài)代理類(lèi),作用類(lèi)似于上例中的ProxySubject,其中主要包含以下內(nèi)容:
          Protected Proxy(InvocationHandler h):構(gòu)造函數(shù),估計(jì)用于給內(nèi)部的h賦值。

          Static Class getProxyClass (ClassLoader loader, Class[] interfaces):獲得一個(gè)代理類(lèi),其中l(wèi)oader是類(lèi)裝載器,interfaces是真實(shí)類(lèi)所擁有的全部接口的數(shù)組。

          Static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h):返回代理類(lèi)的一個(gè)實(shí)例,返回后的代理類(lèi)可以當(dāng)作被代理類(lèi)使用(可使用被代理類(lèi)的在Subject接口中聲明過(guò)的方法)。

          所謂Dynamic Proxy是這樣一種class:它是在運(yùn)行時(shí)生成的class,在生成它時(shí)你必須提供一組interface給它,然后該class就宣稱(chēng)它實(shí)現(xiàn)了這些interface。你當(dāng)然可以把該class的實(shí)例當(dāng)作這些interface中的任何一個(gè)來(lái)用。當(dāng)然啦,這個(gè)Dynamic Proxy其實(shí)就是一個(gè)Proxy,它不會(huì)替你作實(shí)質(zhì)性的工作,在生成它的實(shí)例時(shí)你必須提供一個(gè)handler,由它接管實(shí)際的工作。(參見(jiàn)文獻(xiàn)3)

          在使用動(dòng)態(tài)代理類(lèi)時(shí),我們必須實(shí)現(xiàn)InvocationHandler接口,以第一節(jié)中的示例為例:

          代碼: //抽象角色(之前是抽象類(lèi),此處應(yīng)改為接口):

          public interface Subject{
          public void request();
          }

          //具體角色RealSubject:實(shí)現(xiàn)了Subject接口的request()方法。
          public class RealSubject implements Subject{
          public RealSubject(){

          }
          public void request(){
          System.out.println("From real subject.");
          }
          }

          //代理角色:
          import java.lang.reflect.Method;
          import java.lang.reflect.InvocationHandler;
          public class DynamicSubject implements InvocationHandler{
          private Object sub;
          public DynamicSubject(Object sub){
          this.sub = sub;
          }
          public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
          System.out.println("before calling " + method);
          method.invoke(sub,args);
          System.out.println("after calling " + method);
          return null;
          }
          }

          該代理類(lèi)的內(nèi)部屬性為Object類(lèi),實(shí)際使用時(shí)通過(guò)該類(lèi)的構(gòu)造函數(shù)DynamicSubject(Object sub)對(duì)其賦值;此外,在該類(lèi)還實(shí)現(xiàn)了invoke方法,該方法中的"method.invoke(sub,args)" 其實(shí)就是調(diào)用被代理對(duì)象的將要被執(zhí)行的方法,方法參數(shù)sub是實(shí)際的被代理對(duì)象,args為執(zhí)行被代理對(duì)象相應(yīng)操作所需的參數(shù)。通過(guò)動(dòng)態(tài)代理類(lèi),我們可以在調(diào)用之前或之后執(zhí)行一些相關(guān)操作。

          客戶端:
          代碼: import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Proxy;
          import java.lang.reflect.Constructor;
          import java.lang.reflect.Method;
          public class Client{
          static public void main(String[] args) throws Throwable{
          RealSubject rs = new RealSubject(); //在這里指定被代理類(lèi)
          InvocationHandler ds = new DynamicSubject(rs); //初始化代理類(lèi)
          Class cls = rs.getClass();
          //以下是分解步驟
          /*
          Class c = Proxy.getProxyClass(cls.getClassLoader(),cls.getInterfaces());
          Constructor ct=c.getConstructor(new Class[]{InvocationHandler.class});
          Subject subject =(Subject) ct.newInstance(new Object[]{ds});
          */

          //以下是一次性生成

          Subject subject = (Subject) Proxy.newProxyInstance(cls.getClassLoader(),cls.getInterfaces(),ds);
          subject.request();
          }

          通過(guò)這種方式,被代理的對(duì)象(RealSubject)可以在運(yùn)行時(shí)動(dòng)態(tài)改變,需要控制的接口(Subject接口)可以在運(yùn)行時(shí)改變,控制的方式(DynamicSubject類(lèi))也可以動(dòng)態(tài)改變,從而實(shí)現(xiàn)了非常靈活的動(dòng)態(tài)代理關(guān)系。

          3.代理模式使用原因和應(yīng)用方面

          (1)授權(quán)機(jī)制 不同級(jí)別的用戶對(duì)同一對(duì)象擁有不同的訪問(wèn)權(quán)利,如Jive論壇系統(tǒng)中,就使用Proxy進(jìn)行授權(quán)機(jī)制控制,訪問(wèn)論壇有兩種人:注冊(cè)用戶和游客(未注冊(cè)用戶),Jive中就通過(guò)類(lèi)似ForumProxy這樣的代理來(lái)控制這兩種用戶對(duì)論壇的訪問(wèn)權(quán)限.

          (2)某個(gè)客戶端不能直接操作到某個(gè)對(duì)象,但又必須和那個(gè)對(duì)象有所互動(dòng).
          舉例兩個(gè)具體情況:
          如果那個(gè)對(duì)象是一個(gè)是很大的圖片,需要花費(fèi)很長(zhǎng)時(shí)間才能顯示出來(lái),那么當(dāng)這個(gè)圖片包含在文檔中時(shí),使用編輯器或?yàn)g覽器打開(kāi)這個(gè)文檔,打開(kāi)文檔必須很迅速,不能等待大圖片處理完成,這時(shí)需要做個(gè)圖片Proxy來(lái)代替真正的圖片.

          如果那個(gè)對(duì)象在Internet的某個(gè)遠(yuǎn)端服務(wù)器上,直接操作這個(gè)對(duì)象因?yàn)榫W(wǎng)絡(luò)速度原因可能比較慢,那我們可以先用Proxy來(lái)代替那個(gè)對(duì)象.

          總之原則是,對(duì)于開(kāi)銷(xiāo)很大的對(duì)象,只有在使用它時(shí)才創(chuàng)建,這個(gè)原則可以為我們節(jié)省很多寶貴的Java內(nèi)存. 所以,有些人認(rèn)為Java耗費(fèi)資源內(nèi)存,我以為這和程序編制思路也有一定的關(guān)系.

          (3)現(xiàn)實(shí)中,Proxy應(yīng)用范圍很廣,現(xiàn)在流行的分布計(jì)算方式RMI和Corba等都是Proxy模式的應(yīng)用

           

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/goodHabit/archive/2009/11/08/4784461.aspx

          posted @ 2010-02-04 17:52 lucas_y 閱讀(208) | 評(píng)論 (0)編輯 收藏
          JAVA反射機(jī)制
              JAVA反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類(lèi),都能夠知道這個(gè)類(lèi)的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱(chēng)為java語(yǔ)言的反射機(jī)制。
          Java反射機(jī)制主要提供了以下功能: 在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi);在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象;在運(yùn)行時(shí)判斷任意一個(gè)類(lèi)所具有的成員變量和方法;在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法;生成動(dòng)態(tài)代理。
          1. 得到某個(gè)對(duì)象的屬性

          1 public Object getProperty(Object owner, String fieldName) throws Exception {
          2     Class ownerClass = owner.getClass();

          4     Field field = ownerClass.getField(fieldName);

          6     Object property = field.get(owner);

          8     return property;
          9 }
          Class ownerClass = owner.getClass():得到該對(duì)象的Class。

          Field field = ownerClass.getField(fieldName):通過(guò)Class得到類(lèi)聲明的屬性。

          Object property = field.get(owner):通過(guò)對(duì)象得到該屬性的實(shí)例,如果這個(gè)屬性是非公有的,這里會(huì)報(bào)IllegalAccessException。

          2. 得到某個(gè)類(lèi)的靜態(tài)屬性

           1 public Object getStaticProperty(String className, String fieldName)
           2             throws Exception {
           3     Class ownerClass = Class.forName(className);
           4 
           5     Field field = ownerClass.getField(fieldName);
           6 
           7     Object property = field.get(ownerClass);
           8 
           9     return property;
          10 }

          Class ownerClass = Class.forName(className) :首先得到這個(gè)類(lèi)的Class。

          Field field = ownerClass.getField(fieldName):和上面一樣,通過(guò)Class得到類(lèi)聲明的屬性。

          Object property = field.get(ownerClass) :這里和上面有些不同,因?yàn)樵搶傩允庆o態(tài)的,所以直接從類(lèi)的Class里取。

          3. 執(zhí)行某對(duì)象的方法

           1 public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {
           2 
           3     Class ownerClass = owner.getClass();
           4 
           5     Class[] argsClass = new Class[args.length];
           6 
           7     for (int i = 0, j = args.length; i < j; i++) {
           8         argsClass[i] = args[i].getClass();
           9     }
          10 
          11     Method method = ownerClass.getMethod(methodName, argsClass);
          12 
          13     return method.invoke(owner, args);
          14 }
          Class owner_class = owner.getClass() :首先還是必須得到這個(gè)對(duì)象的Class。

          5~9行:配置參數(shù)的Class數(shù)組,作為尋找Method的條件。

          Method method = ownerClass.getMethod(methodName, argsClass):通過(guò)Method名和參數(shù)的Class數(shù)組得到要執(zhí)行的Method。

          method.invoke(owner, args):執(zhí)行該Method,invoke方法的參數(shù)是執(zhí)行這個(gè)方法的對(duì)象,和參數(shù)數(shù)組。返回值是Object,也既是該方法的返回值。

          4. 執(zhí)行某個(gè)類(lèi)的靜態(tài)方法

           1 public Object invokeStaticMethod(String className, String methodName,
           2             Object[] args) throws Exception {
           3     Class ownerClass = Class.forName(className);
           4 
           5     Class[] argsClass = new Class[args.length];
           6 
           7     for (int i = 0, j = args.length; i < j; i++) {
           8         argsClass[i] = args[i].getClass();
           9     }
          10 
          11     Method method = ownerClass.getMethod(methodName, argsClass);
          12 
          13     return method.invoke(null, args);
          14 }

          基本的原理和實(shí)例3相同,不同點(diǎn)是最后一行,invoke的一個(gè)參數(shù)是null,因?yàn)檫@是靜態(tài)方法,不需要借助實(shí)例運(yùn)行。

          5. 新建實(shí)例
           1 
           2 public Object newInstance(String className, Object[] args) throws Exception {
           3     Class newoneClass = Class.forName(className);
           4 
           5     Class[] argsClass = new Class[args.length];
           6 
           7     for (int i = 0, j = args.length; i < j; i++) {
           8         argsClass[i] = args[i].getClass();
           9     }
          10 
          11     Constructor cons = newoneClass.getConstructor(argsClass);
          12 
          13     return cons.newInstance(args);
          14 
          15 }

          這里說(shuō)的方法是執(zhí)行帶參數(shù)的構(gòu)造函數(shù)來(lái)新建實(shí)例的方法。如果不需要參數(shù),可以直接使用newoneClass.newInstance()來(lái)實(shí)現(xiàn)。

          Class newoneClass = Class.forName(className):第一步,得到要構(gòu)造的實(shí)例的Class。

          第5~第9行:得到參數(shù)的Class數(shù)組。

          Constructor cons = newoneClass.getConstructor(argsClass):得到構(gòu)造子。

          cons.newInstance(args):新建實(shí)例。

          6. 判斷是否為某個(gè)類(lèi)的實(shí)例

          1 public boolean isInstance(Object obj, Class cls) {
          2     return cls.isInstance(obj);
          3 }

          7. 得到數(shù)組中的某個(gè)元素
          1 public Object getByArray(Object array, int index) {
          2     return Array.get(array,index);
          3 }
          posted @ 2010-02-04 17:00 lucas_y 閱讀(175) | 評(píng)論 (0)編輯 收藏
          win7快捷鍵大全



          一、Win鍵相關(guān)的快捷鍵
          鍵位
           操作
           
          Win Home
           將所有使用中窗口以外的窗口最小化(和搖動(dòng)使用中窗口一樣意思) 
          Win Space空格鍵 將所有桌面上的窗口透明化(和鼠標(biāo)移到工作列的最右下角一樣意思) 
          Win  ↑ 上方向鍵
           最大化使用中窗口(和將窗口用鼠標(biāo)拖到屏幕上緣一樣意思) 
          Shift Win  ↑ 上方向鍵
           垂直最大化使用中窗口(但水平寬度不變) 
          Win ↓ 下方向鍵 最小化窗口/還原先前最大化的使用中窗口 
          Win 左/右方向鍵 將窗口靠到屏幕的左右兩側(cè)(和將窗口用鼠標(biāo)拖到左右邊緣一樣意思) 
          Shift Win 左/右方向鍵 將窗口移到左、右屏幕(如果你有接雙屏幕的話)工作列快速列 
          Win 1~9 開(kāi)啟工作列上相對(duì)應(yīng)的軟件,從左到右依順序?yàn)閃in+1到Win+9 
          Shift Win 1~9 開(kāi)啟對(duì)應(yīng)位置軟件的一個(gè)新「分身」,例如firefox的話會(huì)是開(kāi)新窗口(鼠標(biāo)是Shift+點(diǎn)軟件) 
          Ctrl Win 1~9 在對(duì)應(yīng)位置軟件已開(kāi)的分身中切換 
          Alt Win 1~9 開(kāi)啟對(duì)應(yīng)位置軟件的右鍵選單 
          Ctrl Shift 鼠標(biāo)點(diǎn)軟件 以管理員權(quán)限開(kāi)啟該軟件 
          WIN 點(diǎn)擊任務(wù)欄快捷方式 在此程序中新建一個(gè)實(shí)例 
          Win  (+/-):       打開(kāi)Windows放大、縮小功能 
          Win 在屏幕上的Gadget 間切換 
          Win 打開(kāi)移動(dòng)中心 
          Win 顯示桌面,最小化所有窗口 
          Win 打開(kāi)資源管理器 
          Win 打開(kāi)資源管理器搜索結(jié)果 
          Win 鎖定計(jì)算機(jī),回到登陸窗口 
          Win 最小化當(dāng)前窗口 
          Win 投影機(jī)輸出設(shè)定(僅屏幕、同步顯示、延伸、僅投影機(jī)) 
          Win 打開(kāi)運(yùn)行窗口 
          Win 工作列的Alt+Tab 
          Win 打開(kāi)控制面板輕松訪問(wèn)中心 
          Win Break 打開(kāi)控制面板系統(tǒng)屬性 
          Win Tab 打開(kāi)Flip3D任務(wù)切換功能 


           

          二、Windows基礎(chǔ)快捷鍵

          鍵位
           操作
           
          F1
           幫助
           
          Ctrl+C Ctrl+Insert)
           復(fù)制選中項(xiàng)目
           
          Ctrl+X
           剪切選中項(xiàng)目
           
          Ctrl+V Shift+Insert)
           粘貼選中項(xiàng)目
           
          Ctrl+Z
           撤銷(xiāo)
           
          Ctrl+Y
           重做
           
          Delete Ctrl+D)
           刪除選中項(xiàng)目至回收站
           
          Shift+Delete
           直接刪除選中項(xiàng)目
           
          F2
           重命名選中項(xiàng)目
           
          Ctrl+A
           全選
           
          F3
           搜索
           
          Alt+Enter
           顯示選中項(xiàng)目屬性
           
          Alt+F4
           關(guān)閉當(dāng)前項(xiàng)目或退出當(dāng)前程序
           
          Alt+空格
           打開(kāi)當(dāng)前窗口的快捷方式菜單
           
          Alt+Tab
           在當(dāng)前運(yùn)行的窗口中切換
           
          Ctrl+Alt+Tab
           使用方向鍵在當(dāng)前運(yùn)行的窗口中切換
          Ctrl+滾輪
           改變桌面圖標(biāo)大小
           
             +Tab
           開(kāi)啟Aero Flip 3-D
           
          Ctrl+  +Tab
           使用方向鍵在 Aero Flip 3D程序中切換
           
          Alt+Esc
           在當(dāng)前打開(kāi)的程序間切換
           
          F4
           顯示資源管理器的地址欄列表
           
          Shift+F10
           顯示選中項(xiàng)目的快捷方式菜單
           
          Ctrl+Esc
           打開(kāi)開(kāi)始菜單
           
          F10
           激活當(dāng)前窗口的菜單欄
           
          F5 Ctrl+R)
           刷新
           
          Alt+ 
           資源管理區(qū)中返回文件夾的上一級(jí)菜單
           
          Esc
           取消當(dāng)前操作
           
          Ctrl+Shift+Esc
           打開(kāi)任務(wù)欄管理器
           
          插入碟片時(shí)按住Shift
           禁止CD/DVD的自動(dòng)運(yùn)行
           
          右邊或左邊的 Ctrl+Shift
           改變閱讀順序
           


          三、資源管理器相關(guān)快捷鍵



          鍵位
           操作
           
          Ctrl N
           打開(kāi)新窗口
           
          Ctrl W
           關(guān)閉當(dāng)前窗口
           
          Ctrl Shift N
           新建文件夾
           
          End
           顯示文件夾底部
           
          Home
           顯示文件夾頂部
           
          F11
           最大/最小化當(dāng)前文件夾
           
          Ctrl 句號(hào) (.)
           順時(shí)針?lè)较蛐D(zhuǎn)圖片
           
          Ctrl 逗號(hào) (,)
           逆時(shí)針?lè)较蛐D(zhuǎn)圖片
           
          Num Lock 小鍵盤(pán)星號(hào) (*)
           顯示選中文件夾下的所有子文件夾
           
          Num Lock 小鍵盤(pán)加號(hào)( )
           顯示選中文件夾的內(nèi)容
           
          Num Lock 小鍵盤(pán)減號(hào) (-)
           折疊選中文件夾
           

           折疊選中文件夾或返回父文件夾
           
          Alt Enter
           打開(kāi)選中項(xiàng)目的屬性對(duì)話框
           
          Alt P
           預(yù)覽面板開(kāi)關(guān)
           
          Alt 
           打開(kāi)上一個(gè)文件夾
           
          Backspace
           打開(kāi)上一個(gè)文件夾
           

           選中第一個(gè)子文件夾
           
          Alt 
           打開(kāi)下一個(gè)文件夾
           
          Alt 
           返回上一層文件夾
           
          Ctrl 滾輪
           改變圖標(biāo)大小
           
          Alt D
           選中地址欄
           
          Ctrl E
           選中搜索框
           
          Ctrl F
           選中搜索框
           
          Shift+右鍵點(diǎn)選文件 出現(xiàn)「附到開(kāi)始菜單」和「復(fù)制為路徑」兩個(gè)額外的右鍵選項(xiàng) 
          Shift+右鍵點(diǎn)選文件夾 出現(xiàn)「在新處理程序開(kāi)啟(另開(kāi)新窗口)」、
          「在此處開(kāi)啟命令窗口(DOS!)」和
          「復(fù)制為路徑」三個(gè)額外的右鍵選項(xiàng)
           


          四、任務(wù)欄快捷鍵



          鍵位
           操作
           
          Shift 點(diǎn)擊任務(wù)欄程序按鈕
           在新窗口中打開(kāi)此程序
           
          Ctrl Shift 點(diǎn)擊任務(wù)欄程序按鈕
           以管理員身份運(yùn)行此程序
           
          Shift 右鍵點(diǎn)擊任務(wù)欄程序按鈕
           打開(kāi)此程序的窗口菜單
           
          Shift 右鍵點(diǎn)擊任務(wù)欄分組按鈕
           打開(kāi)本組的窗口菜單
           
          Ctrl 點(diǎn)擊任務(wù)欄分組按鈕
           在本組窗口中循環(huán) 

           

          “windows鍵”+“方向鍵”=大小化

            通過(guò)“windows鍵”+“方向鍵”,可分別實(shí)現(xiàn)“使當(dāng)前窗口最大化”、“當(dāng)前窗口最小化”、“窗口貼向屏幕左側(cè)或右側(cè),占用50%面積”四個(gè)操作結(jié)果。

            而“windows鍵”+“Home”,可實(shí)現(xiàn)最小化其他的“非當(dāng)前使用中的窗口”。例如當(dāng)前正在使用“IE瀏覽器”,通過(guò)此快捷鍵,可以把其他暫時(shí)不用的窗口最小化到任務(wù)欄上。再次按此快捷鍵,最小化窗口又會(huì)全部出現(xiàn)。

            “windows鍵”+“Space”=窗口透明化

            “windows鍵”+“Space”,可將目前顯示的所有窗口透明化,以便查看桌面。“windows鍵”+“D”可將目前顯示的所有窗口最小化,以便查看桌面。

            以往我們打開(kāi)一個(gè)程序的新窗口時(shí)(比如word),需要在已經(jīng)打開(kāi)的word窗口的工具欄中選擇“新建”,現(xiàn)在通過(guò)windows7快捷鍵,只需一個(gè)操作就可以快速新建一個(gè)窗口,即“Shift”+“鼠標(biāo)左鍵”組合快捷鍵。按住Shift鍵,在某個(gè)程序圖標(biāo)上點(diǎn)擊鼠標(biāo)左鍵,可以打開(kāi)一個(gè)此程序的“新建窗口”。

            “windows鍵”+數(shù)字鍵=快速啟動(dòng)

            windows7左下方有快速啟動(dòng)欄,通過(guò)“windows鍵”+數(shù)字鍵,可快捷打開(kāi)固定在快速啟動(dòng)欄中的程序,如要打開(kāi)排在第二位的IE程序,可以使用Win+2即可快速打開(kāi)。

            通過(guò)“Shift鍵”+“鼠標(biāo)右鍵”可實(shí)現(xiàn)一組程序的還原、最大或關(guān)閉操作。按住Shift鍵,在某個(gè)程序圖標(biāo)上點(diǎn)擊鼠標(biāo)右鍵。

            通過(guò)“Window Menu”,進(jìn)行還原、移動(dòng)、最大/最小化等操作。如果某個(gè)程序已經(jīng)打開(kāi)了很多窗口,那么“WindowsMenu”將可以進(jìn)行還原、最大/最小化、關(guān)閉組。

           

          以下六種快捷鍵組合是所謂的“鍵盤(pán)流”高手最常用的六種,習(xí)慣使用這幾種之后,我們會(huì)發(fā)現(xiàn)自己操作電腦的速度會(huì)快如此之多!這些快捷鍵經(jīng)測(cè)試在win7下也可以正常使用。(微軟:汗……我可沒(méi)傻到在win7里頭去掉這些大大方便用戶的功能……)

            1.Win+D: 這是高手最常用的第一快捷組合鍵。這個(gè)快捷鍵組合可以將桌面上的所有窗口瞬間最小化,無(wú)論是聊天的窗口還是游戲的窗口……只要再次按下這個(gè)組合鍵,剛才的所有窗口都回來(lái)了,而且激活的也正是你最小化之前在使用的窗口!

            2.Win+F:不用再去移動(dòng)鼠標(biāo)點(diǎn)“開(kāi)始→搜索→文件和文件夾”了,在任何狀態(tài)下,只要一按Win+F就會(huì)彈出搜索窗口。

            3.Win+R:在我們的文章中,你經(jīng)常會(huì)看到這樣的操作提示:“點(diǎn)擊‘開(kāi)始→運(yùn)行’,打開(kāi)‘運(yùn)行’對(duì)話框……”。其實(shí),還有一個(gè)更簡(jiǎn)單的辦法,就是按Win+R!

            4.Alt+Tab:如果打開(kāi)的窗口太多,這個(gè)組合鍵就非常有用了,它可以在一個(gè)窗口中顯示當(dāng)前打開(kāi)的所有窗口的名稱(chēng)和圖標(biāo),選中自己希望要打開(kāi)的窗口,松開(kāi)這個(gè)組合鍵就可以了。而alt+tab+shift鍵則可以反向顯示當(dāng)前打開(kāi)的窗口。

            5.Win+E:當(dāng)你需要打開(kāi)資源管理器找文件的時(shí)候,這個(gè)快捷鍵會(huì)讓你感覺(jué)非常“爽”!再也不用騰出一只手去摸鼠標(biāo)了!

            6.Win:就是開(kāi)始菜單咯!!!

           

          1. Windows鍵 + 空格鍵“Space”

            功能:透明化所有窗口,快速查看桌面。使用此快捷鍵可以立即將目前顯示的所有窗口透明化,以便查看桌面。這有什么用?如果你已經(jīng)習(xí)慣使用vista系統(tǒng)中的側(cè)邊欄小工具,Windows 7系統(tǒng)中的小工具更是可以隨心所欲在桌面上擺放,當(dāng)你正在工作時(shí),突然想起看看時(shí)間、股票指數(shù)、日程安排...按下這組快捷鍵就會(huì)馬上看見(jiàn),放手后立即恢復(fù)之前的窗口,對(duì)自己的工作毫無(wú)影響。

          Win7鍵盤(pán)常用快捷鍵組合 - Loshua - 忘憂Yu軒

          Win7鍵盤(pán)常用快捷鍵組合 - Loshua - 忘憂Yu軒

            按下Windows鍵 + 空格鍵“Space”快捷鍵后桌面顯示

            2. Windows鍵 + 字母鍵“D”

            功能:最小化所有窗口,并快速查看桌面。這組快捷鍵幫助用戶立即將當(dāng)前桌面上所有窗口最小化,以便查看桌面,再次按下此快捷鍵時(shí),剛剛最小化的窗口又會(huì)全部出現(xiàn)了。

            不知道小編是否已經(jīng)講清了以上兩組快捷鍵的不同用法,如果還不是太明白的網(wǎng)友,自己試試便知。

            3. Windows鍵 + 數(shù)字鍵

            功能:按照數(shù)字排序打開(kāi)相應(yīng)程序。針對(duì)固定在快速啟動(dòng)欄中的程序,如果你能記住啟動(dòng)欄中的程序排序,直接按下此快捷鍵就能馬上調(diào)用了,如圖中啟動(dòng)欄上的IE瀏覽器排在第一位,使用“Win+1”快捷鍵立即打開(kāi)IE瀏覽器。

          Win7鍵盤(pán)常用快捷鍵組合 - Loshua - 忘憂Yu軒

            4. Windows鍵 + 字母鍵“T”

            功能:依次查看已經(jīng)打開(kāi)程序的預(yù)覽圖。Windows 7的強(qiáng)大任務(wù)欄得到了大量用戶的喜愛(ài),用戶可以輕松從任務(wù)欄預(yù)覽已打開(kāi)程序的縮略圖,使用這組快捷鍵就能從左到右循環(huán)查看任務(wù)欄上的所有預(yù)覽圖,同時(shí)使用Windows鍵+Shift鍵+“T”可以從右至左,相反方向循環(huán)查看任務(wù)欄上的預(yù)覽圖。

            5. Windows鍵 + 字母鍵“G”

            功能:依次顯示桌面小工具。微軟vista系統(tǒng)開(kāi)始啟用了桌面小工具這一深受用戶喜愛(ài)的功能,Windows 7系統(tǒng)中繼續(xù)將該特性充分發(fā)揮,如果你的桌面上有太多的小工具以致于發(fā)生層疊的時(shí)候,查看起來(lái)就不太方便了,此時(shí)使用快捷鍵迅速讓層疊的小工具依次顯示在面前,想找哪一個(gè)都十分方便。

            6. Windows鍵 + 字母鍵“P”

            功能:打開(kāi)“外接顯示”的設(shè)置面板,當(dāng)然這個(gè)功能只有接入了一些外接設(shè)備后才能派上用場(chǎng)。

            7. Windows鍵 + 字母鍵“X”

            功能:打開(kāi)“移動(dòng)中心”設(shè)置面板,Windows 7中的移動(dòng)中心提供了顯示器亮度控制、音量控制、筆記本電池監(jiān)控、Mobile手機(jī)同步設(shè)置、外接顯示器管理...等多種功能。

          Win7鍵盤(pán)常用快捷鍵組合 - Loshua - 忘憂Yu軒

            8. Windows鍵 + 符號(hào)鍵“+” 功能:打開(kāi)放大鏡。Windows 7中新增加了放大鏡功能,也許對(duì)于視力不好的用戶來(lái)說(shuō)十分友好的一項(xiàng)新功能。當(dāng)首次按下此快捷鍵組合時(shí),Windows 7將自動(dòng)打開(kāi)放大鏡功能,重復(fù)使用該快捷鍵可以不斷放大內(nèi)容。能放大當(dāng)然也必須能縮小至還原,使用Windows鍵+符號(hào)鍵“-”即可實(shí)現(xiàn)縮小功能。

           

           

          按住右Shift 八秒鐘: 啟用和關(guān)閉篩選鍵
            按左 Alt+左 Shift+PrtScn(或 PrtScn):?jiǎn)⒂没蜿P(guān)閉高對(duì)比度
            按左 Alt+左 Shift+Num Lock :?jiǎn)⒂没蜿P(guān)閉鼠標(biāo)鍵
            按 Shift 五次: 啟用或關(guān)閉粘滯鍵
            按住 Num Lock 五秒鐘:?jiǎn)⒂没蜿P(guān)閉切換鍵
            Windows 徽標(biāo)鍵 : 打開(kāi)輕松訪問(wèn)中心
            3. 對(duì)話框鍵盤(pán)快捷方式
            Ctrl+Tab 在選項(xiàng)卡上向前移動(dòng)
            Ctrl+Shift+Tab 在選項(xiàng)卡上向后移動(dòng)
            Tab 在選項(xiàng)上向前移動(dòng)
            Shift+Tab 在選項(xiàng)上向后移動(dòng)
            Alt+加下劃線的字母 執(zhí)行與該字母匹配的命令(或選擇選項(xiàng))
            Enter 對(duì)于許多選定命令代替單擊鼠標(biāo)
            空格鍵 如果活動(dòng)選項(xiàng)是復(fù)選框,則選中或清除該復(fù)選框
            箭頭鍵 如果活動(dòng)選項(xiàng)是一組選項(xiàng)按鈕,則選擇某個(gè)按鈕
            F1 顯示幫助
            F4 顯示活動(dòng)列表中的項(xiàng)目
            Backspace 如果在“另存為”或“打開(kāi)”對(duì)話框中選中了某個(gè)文件夾,則打開(kāi)上一級(jí)文件夾
            4. Windows 徽標(biāo)鍵相關(guān)的快捷鍵
            Windows徽標(biāo)鍵就是顯示為Windows旗幟,或標(biāo)有文字Win或Windows的按鍵,以下簡(jiǎn)稱(chēng)Win鍵。XP時(shí)代有4個(gè)經(jīng)典的 Win 鍵組合:R/E/F/L。到了 Win7,花樣更多了。
            Win:打開(kāi)或關(guān)閉開(kāi)始菜單
            Win Pause:顯示系統(tǒng)屬性對(duì)話框
            Win D:顯示桌面
            Win M:最小化所有窗口
            Win SHIFT M:還原最小化窗口到桌面上
            Win E:打開(kāi)我的電腦
            Win F:搜索文件或文件夾
            Ctrl Win F:搜索計(jì)算機(jī)(如果您在網(wǎng)絡(luò)上)
            Win L:鎖定您的計(jì)算機(jī)或切換用戶
            Win R:打開(kāi)運(yùn)行對(duì)話框
            Win T:切換任務(wù)欄上的程序(感覺(jué)是和alt+ESC 一樣 )
            Win 數(shù)字:讓位于任務(wù)欄指定位置(按下的數(shù)字作為序號(hào))的程序,新開(kāi)一個(gè)實(shí)例。(感覺(jué)這個(gè)比較新穎,貌似快速啟動(dòng)。) Shift Windows logo key +number:Start new instance of the program pinned to the taskbar in the position indicated by the number
            Ctrl Win 數(shù)字:讓位于任務(wù)欄指定位置(按下的數(shù)字作為序號(hào))的程序,切換到上一次的活動(dòng)窗口。 Ctrl+Windows logo key +number:Switch to the last active window of the program pinned to the taskbar in the position indicated by the number
            ALT Win 數(shù)字:讓位于任務(wù)欄指定位置(按下的數(shù)字作為序號(hào))的程序,顯示跳轉(zhuǎn)清單。 Alt+Windows logo key +number: Open the Jump List for the program pinned to the taskbar in the position indicated by the number
            Win TAB:循環(huán)切換任務(wù)欄上的程序并使用的Aero三維效果
            Ctrl Win TAB:使用方向鍵來(lái)循環(huán)循環(huán)切換任務(wù)欄上的程序,并使用的Aero三維效果
            按Ctrl Win B:切換到在通知區(qū)域中顯示信息的程序
            Win 空格:預(yù)覽桌面
            Win ↑:最大化窗口
            Win ↓:最小化窗口
            Win ←:最大化到窗口左側(cè)的屏幕上
            Win →:最大化窗口到右側(cè)的屏幕上
            Win Home:最小化所有窗口,除了當(dāng)前激活窗口
            Win+ SHIFT ↑:拉伸窗口的到屏幕的頂部和底部
            Win+ SHIFT →/←:移動(dòng)一個(gè)窗口,從一個(gè)顯示器到另一個(gè)
            Win P:選擇一個(gè)演示文稿顯示模式
            Win G:循環(huán)切換側(cè)邊欄的小工具
            Win U:打開(kāi)輕松訪問(wèn)中心
            Win x:打開(kāi)Windows移動(dòng)中心

          posted @ 2010-02-01 13:59 lucas_y 閱讀(2472) | 評(píng)論 (0)編輯 收藏
          一.類(lèi)型轉(zhuǎn)換
          eg:point 自動(dòng)轉(zhuǎn)換PointAction-conversion.properties  在“-”前面要與一個(gè)包下的action同名,里面內(nèi)容是point = com.test.util.TypeConverter,而TypeConverter是TypeConverter extends DefaultTypeConverter,結(jié)構(gòu)如下:


          示例代碼如下:
          @Override
           public Object convertValue(Map context, Object value, Class toType) {
            if (Point.class == toType) {
             Point point = new Point();
             if (value != null && !"".equals(value)) {
              String[] str = (String[])value;
              String[] val = str[0].split(",");
              if (val != null && 2 == val.length) {
               String x = val[0];
               String y = val[1];
               if (StringUtil.isInteger(x) && StringUtil.isInteger(y)) {
                point.setX(Integer.parseInt(x));
                point.setY(Integer.parseInt(y));
               }
              }
             }
             return point;
            } else if (String.class == toType) {
             StringBuffer sb = new StringBuffer();
             Point point = (Point)value;
             Integer x = point.getX();
             Integer y = point.getY();
             sb.append("[").append(x).append(",").append(y).append("]");
             return sb.toString();
            }
            return null;
           }

          總結(jié):
          類(lèi)型轉(zhuǎn)換:    
          全局                                                                局部
          ***Action-conversion.properties             xwork-converison.properties

          校驗(yàn):
          ***Action.properties                                  message.properies(message名字可任意取,但要在配置)
          ***Action-validation.xml (配置的元素在package com.opensymphony.xwork2.validator.validators.default.xml里)                          
          posted @ 2010-01-27 18:23 lucas_y 閱讀(185) | 評(píng)論 (0)編輯 收藏

          1.策略模式:封裝了變化(算法),而且便利進(jìn)行單元測(cè)試(可以通過(guò)自己的借口進(jìn)行單元測(cè)試),在實(shí)際情況中,為了使客戶端減小判斷的壓力并且降低耦合,最好與簡(jiǎn)單工廠模式結(jié)合,把選擇判斷寫(xiě)在context的構(gòu)造方法里。考慮到健壯性,(比如增加需求,有新的算法)用發(fā)射機(jī)制。(反射,反射,程序員的快樂(lè),呵呵~)

          持續(xù)更新,謝謝~

          posted @ 2010-01-25 17:35 lucas_y 閱讀(168) | 評(píng)論 (0)編輯 收藏
          主站蜘蛛池模板: 横山县| 孟村| 黄山市| 香格里拉县| 贵阳市| 资中县| 周口市| 铜梁县| 上犹县| 柳州市| 上林县| 隆德县| 德令哈市| 桓仁| 鲜城| 凤阳县| 咸阳市| 迁西县| 突泉县| 宿迁市| 广宗县| 凤冈县| 莱阳市| 庄河市| 嵊泗县| 潞城市| 抚顺市| 剑河县| 南召县| 响水县| 格尔木市| 嫩江县| 九寨沟县| 荃湾区| 射阳县| 黄梅县| 柞水县| 永城市| 商丘市| 桂林市| 惠来县|