<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 32, 文章 - 1, 評論 - 5, 引用 - 0
    數據加載中……

    2010年8月21日

    利用反射打印測試JavaBean

    /**
      * 測試方法
      *
      * @param obj
      * @return
      */
     public static StringBuffer testPOJO(Object obj) {
      Class cls = obj.getClass();
      Field[] fields = cls.getDeclaredFields();
      StringBuffer resultBuf = new StringBuffer();
      try {
       for (int i = 0; i < fields.length; i++) {
        String fieldName = fields[i].getName();
        Class fieldType = fields[i].getType();
        Method method;
        if (fieldType.equals(boolean.class)) {
         method = cls.getMethod("is" + genMethodName(fieldName));
        } else {
         method = cls.getMethod("get" + genMethodName(fieldName));
        }
        Object res;
        if ((res = method.invoke(obj)) != null) {
         String result = res.toString();
         resultBuf.append("[" + fieldName + "] = " + result + "\n");
        } else {
         resultBuf.append("[" + fieldName + "] = NULL \n");
        }
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
      return resultBuf;
     }
     
     public static String genMethodName(String fieldName) {
      String firstWord = fieldName.substring(0, 1);
      String others = fieldName.substring(1, fieldName.length());
      return firstWord.toUpperCase() + others;
     }

    posted @ 2011-10-12 16:34 colorfire 閱讀(393) | 評論 (0)編輯 收藏

    轉 淘寶2011.9.21校園招聘會筆試題

    原鏈接 http://blog.csdn.net/hackbuteer1/article/details/6823329

    一、單選題
    1、我們有很多瓶無色的液體,其中有一瓶是毒藥,其它都是蒸餾水,實驗的小白鼠喝了以后會在5分鐘后死亡,而喝到蒸餾水的小白鼠則一切正常?,F在有5只小白鼠,請問一下,我們用這五只小白鼠,5分鐘的時間,能夠檢測多少瓶液體的成分(C)
    A、5瓶                     B、6瓶                           C、31瓶                               D、32瓶

    2、若某鏈表最常用的操作是在最后一個結點之后插入一個結點和刪除最后一個結點,則采用()存儲方式最節省時間?
    A、單鏈表                   B、帶頭結點的非循環雙鏈表                       C、帶頭節點的雙循環鏈表                D、循環鏈表

    3、如果需要對磁盤上的1000W條記錄構建索引,你認為下面哪種數據結構來存儲索引最合適?()
    A、Hash Table                      B、AVL-Tree                      C、B-Tree                 D、List

    4、可用來檢測一個web服務器是否正常工作的命令是()

    A、ping                      B、tracert                          C、telnet                           D、ftp

    只有C可以測試Web主機的網頁服務器是否工作正常,假設該服務器的網頁服務器使用的是默認端口,則可以使用命令telnet hostname 80 來測試其是否工作。

    5、下面哪個操作是Windows獨有的I/O技術()
    A、Select                           B、Poll                               C、IOCP                               D、Epoll

    6、IPV6地址包含了()位
    A、16                               B、32                                C、64                              D、128

    7、數據庫里建索引常用的數據結構是()
    A、鏈表                         B、隊列                       C、樹                             D、哈希表

    8、在公司局域網上ping www.taobao.com沒有涉及到的網絡協議是()

    A、ARP                          B、DNS                               C、TCP                         D、ICMP

    DNS是將域名www.taobao.com映射成主機的IP地址,ARP是將IP地址映射成物理地址,ICMP是報文控制協議,由路由器發送給執行ping命令的主機,而一個ping命令并不會建立一條TCP連接,故沒有涉及TCP協議。

    二、填空題
    1、http屬于(應用層)協議,ICMP屬于(網絡層)協議。
    2、深度為k的完全二叉樹至少有(2^(k-1))個結點,至多有(2^k-1)個結點。
    3、字節為6位的二進制有符號整數,其最小值是(-32)。

    4、設有28盞燈,擬公用一個電源,則至少需有4插頭的接線板數(9)個。

    第一個板4個口,此后每增加1個板會消耗1個原來的口,總的只增加3個口,故N個接線板能提供 1+3*N個電源口。

    三、綜合題
    1、有一顆結構如下的樹,對其做鏡像反轉后如下,請寫出能實現該功能的代碼。注意:請勿對該樹做任何假設,它不一定是平衡樹,也不一定有序。
      1 1
      / | \ / | \
      2 3 4 4 3 2
      /|\ /\ | | / \ / | \
      6 5 7 8 9 10 10 9 8 7 5 6

      答:以孩子、兄弟的存儲結構來存儲這棵樹,使之成為一顆二叉樹,然后對二叉樹進行鏈表的轉換。

     

    1. typedef struct TreeNode  
    2. {  
    3.     int data;  
    4.     struct TreeNode *firstchild;  
    5.     struct TreeNode *nextsibling;  
    6. }TreeNode,*Tree;  
    7.   
    8. void MirrorTree(Tree root)  
    9. {  
    10.     if(!root)  
    11.         return ;  
    12.     if(root->firstchild)  
    13.     {  
    14.         Tree p=root->firstchild;  
    15.         Tree cur=p->nextsibling;  
    16.         p->nextsibling=NULL;  
    17.         while(cur)  
    18.         {  
    19.             Tree curnext=cur->nextsibling;  
    20.             cur->nextsibling=p;  
    21.             if(p->firstchild)  
    22.                 MirrorTree(p);  
    23.             p=cur;  
    24.             cur=curnext;  
    25.         }  
    26.         root->firstchild=p;  
    27.     }  
    28. }  
    29.   
    30. int main(void)  
    31. {  
    32.     TreeNode *root=(TreeNode *)malloc(sizeof(TreeNode));  
    33.     Init();  
    34.     MirrorTree(root);  
    35.     OutPut();  
    36. }  
    2、假設某個網站每天有超過10億次的頁面訪問量,出于安全考慮,網站會記錄訪問客戶端訪問的ip地址和對應的時間,如果現在已經記錄了1000億條數據,想統計一個指定時間段內的區域ip地址訪問量,那么這些數據應該按照何種方式來組織,才能盡快滿足上面的統計需求呢,設計完方案后,并指出該方案的優缺點,比如在什么情況下,可能會非常慢?

     

    答:用B+樹來組織,非葉子節點存儲(某個時間點,頁面訪問量),葉子節點是訪問的IP地址。這個方案的優點是查詢某個時間段內的IP訪問量很快,但是要統計某個IP的訪問次數或是上次訪問時間就不得不遍歷整個樹的葉子節點。答:

    或者可以建立二級索引,分別是時間和地點來建立索引。

    四、附加題
    1、寫出C語言的地址對齊宏ALIGN(PALGNBYTES),其中P是要對齊的地址,ALIGNBYTES是要對齊的字節數(2的N次方),比如說:ALIGN(13,16)=16
    1. ALIGN(P,ALIGNBYTES) ( (void*)( ((unsigned long)P+ALIGNBYTES-1)&~(ALIGNBYTES-1) ) )  
    2、在高性能服務器的代碼中經常會看到類似這樣的代碼:
    typedef union
    {
      erts_smp_rwmtx_t rwmtx;
      byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];
    }erts_meta_main_tab_lock_t;

    erts_meta_main_tab_lock_t main_tab_lock[16];

    請問其中用來填充的cache_line_align的作用是?

    3、在現代web服務系統的設計中,為了減輕源站的壓力,通常采用分布式緩存技術,其原理如下圖所示,前端的分配器將針對不同內容的用戶請求分配給不同的緩存服務器向用戶提供服務。
      分配器
      / | \
      緩存 緩存 ...緩存
      服務器1 服務器2 ...服務器n

    1)請問如何設置分配策略,可以保證充分利用每個緩存服務器的存儲空間(每個內容只在一個緩存服務器有副本)

    2)當部分緩存服務器故障,或是因為系統擴容,導致緩存服務器的數量動態減少或增加時,你的分配策略是否可以保證較小的緩存文件重分配的開銷,如果不能,如何改進?

    3)當各個緩存服務器的存儲空間存在差異時(如有4個緩存服務器,存儲空間比為4:9:15:7),如何改進你的策略,按照如上的比例將內容調度到緩存服務器?

    posted @ 2011-10-10 10:19 colorfire 閱讀(312) | 評論 (0)編輯 收藏

    safari 地址欄中url兩遍

    環境:mac os 10.6.6,safari 5.0.5

    現象:
    在地址欄中輸入url提交后,地址欄中地址竟然又被復制一次。 e.g 輸入http://www.baidu.com/回車提交變為http://www.baidu.comwww.baidu.com,而以數字結尾的例如http://sparklet.net/?p=207則訪問正常。

    問題解決:
    該問題實際是由于代理導致,之前使用web代理上網,后來web服務器我給關掉了,但代理忘記改回來,結果導致這種奇怪現象。不知道是不是safari的bug。
    總結:blogjava的文檔輸入太難用了,分類也不方便。

    posted @ 2011-05-18 22:36 colorfire 閱讀(280) | 評論 (0)編輯 收藏

    zz碼字-電信行業體制內

    第一段:回顧歷史
         先說幾個例子:
         80年達大家忙著找后門進國企的時候,慶幸找個鐵飯碗的時候,全國有幾人會想到10年
    后國企就大規模破產;
         90年代大家忙著往北電等外企跑的時候,覺得無比光榮有面子,全國有幾人會想到10年
    后北電掛了,華為的收入一騎絕塵;
         90年代末大家覺得運營商特別體面,收入特高的時候,有幾人會想到過不了幾年有個玩
    意叫全員營銷?每年離職的人越來越多?
         21世紀初大家覺得事業單位還不錯的時候,覺得起碼還算穩定,全國有幾人會想到幾年
    后事業單位改制就愈演愈烈?編制逐步取消,退休制度改革,壟斷收入逐步減少,市場競爭
    壓力逐步加大;
         2010左右大家瘋了一般地考公務員,以為肯定必須是個金飯碗,全國有幾人會注意到,
    很多地方的公務員聘任制已經悄然開始了。
         很多事情,我們想起來可能都不太可能,但是他曾經發生過——80年代大批人辭去公職
    下海,90年代初我國政府財政瀕臨破產,公務員的工資是打白條,國務院都在裁員。曾經糖
    煙酒公司比煙草公司高幾個檔次,曾經糧食局是很多地方政府里為數不多的發得出工資的單
    位。曾經大家覺得去了海關就可以到處撈黑錢,曾經大家覺得運營商是個讓人眼紅的金飯碗
    ……上述這些事情發生轉變一般不超過10年
      
         中國數百年來的戰略眼光第一人,太祖,在1945年的最大的奮斗目標就是能搞個聯合政
    府,讓tg能參政就心滿意足了。這逆天第一人都沒想到4年之后他就成為本朝太祖了。所以
    ,我們不應該妄加判斷未來會一定會怎樣怎樣,政府一定不會對公務員等體制內動手。
      
      
    ————————————————————————————————————————
    第二段:以通信業為鑒,看歷史變遷對通信業體制內外的影響
         以史為鏡吧,我們看看曾經90年代極為風光的體制內運營商的變遷,在20年前,地方電
    信一般是當地數得上的好地方了,很多公務員也眼饞的地方。20年了,請看變遷情況。
      
    1.歷史及現狀:
         中國的通信業是較早實現對內,對外開放的行業。在最開始,最爽的不是愛立信的員工
    ,雖說當時愛立信收入不低,但是跟運營商比也就半斤八兩,在地方地位也高,那時候也不
    存在指標問題,都是對方求著辦事。
         在本世紀初,隨著市場的進一步開放,競爭不斷加劇,固網運營商為對付移動推出小靈
    通,南網通北電信在對手地盤大打固網價格戰,員工的收入是一年不如一年,指標是一年高
    過一年,全員營銷也是那時候出來的。不過那時候還好,起碼收入高于付出。
         到了近幾年,上面下的指標太高,搞的大家只能靠做假指標了(各位運營商同仁都知道
    ,不管是市場的還是網絡的,假指標已經全面鋪開了),至于說收入——歡迎論壇上這幾年
    所在運營商沒降薪的兄弟姐妹們舉手?;疃噱X少必加班,升職無望加薪沒盼,雞肋的工作天
    天還得做。
         我們再舉一個例子:設計院,運營商的三產,這些都是曾經的銀飯碗,現在呢?各個地
    方設計院除了四大院之外還有哪個紅火的?收入、工作在當地還能稱得上體面嗎?
         與此相對的是,這幾年設備商的收入,尤其是一線設備商的收入節節增高,我就不多評
    價了。在06年,我寫《通信行業求職寶典》的時候,我提了兩個觀點——1.看好華為;2.如
    果這兩年能進移動抓緊進,再過兩年就沒必要了。如果合適華為,那時候進華為,就算是在
    國內,20來萬一年也該有了。那時候進移動,現在也該是個主管了,好歹不用自己天天去一
    線干指標了。至于說現在過去,那不好說。
      
    2. 簡要分析:
         最早,通信業的收益主要是依靠壟斷地位帶來的,跟個人能力無關。幸運的是,當這種
    壟斷被打破的時候,正好趕上了通信業高速發展的時候,行業有足夠的容量來吸納各色人等
    ,大家可以看到前幾年被改革掉的設計院、三產在近幾年都沒有發生太大的沖突。但是一旦
    當這個行業走下下坡路的時候,體制內的保護如果被打破,從業人員就面臨巨大的風險。于
    是大家可以看到近兩年地方設計院改行的人越來越多,因為在繼續做下去就餓死了,接觸過
    的一些副院長級的甚至都開始跳槽了。
         總體來說,越早被打開的行業,可能最開始會有一陣陣痛,但是后來肯定是幸福的。例
    如運營商的人是幸福的,因為大家所在的企業已經初步脫離了體制內了,運營商的很多技術
    人員技術水平不錯,設備商愿意接受,市場人員跳出來去其它公司做市場也不錯。我們現在
    已經可以看到,幾家運營商內部相互挖墻腳的情況已經慢慢開始了,運營商也開始初步引入
    很多設備商的人。在以前,你能想到去了移動之后跳槽到電信?
        而且更關鍵的是:運營商的年輕人現在都還有能力,年老的人基本位置都穩定,在這種
    情況運營商逐步脫離體制內,對于大家都是個好事情。想想,萬一你40歲的時候,市場競爭
    忽然加劇,你坐慣了20年的辦公室,忽然要去搞16個小時的校園促銷。。。。。
      
      
    3. 看其它事業單位、體制內的行業:
        運營商的現狀,只是很多體制內的一個縮影,這個縮影在近幾年可以用來被很多事業單
    位參考,例如出版社、醫院、學校、報社等,在不久的未來,這個縮影也會被很多公務員所
    參考。大家都會走過一段工作性價比降低,減員增效,然后逐步健康化的階段。
        在這可以舉幾個例子,有已經發生的,有未來將會發生的。
    出版社、報社:
        出版社、報社過去那絕對是個鐵飯碗,現在呢?窮的出版社一月發2、3K工資,在市場上
    聽不到聲音,市場化的出版社有的編輯富的冒油,有人餓的要死,國內的出版行業基本已經
    脫離了體制內。報社就更不用說了,除了一些黨報,別的哪家還有體制內的影子?就算黨報
    ,現在很多地方的黨報也已早不如當年的紅火了。
    醫生:
        未來,我們會看到醫生的現狀會大幅改變,現在的現狀是醫院基于體制內和體制外游走
    ,搞的又國企又市場化,導致底層累死,管理層爽呆,其實就是運營商前兩年的縮影。再過
    3、4年,下一輪醫療改革真正開始的時候,我們會看到跳槽、裁員、創業會成為醫院的常態
    ,有能力的醫生收入會大幅提高,出入行的醫生也不會像現在這樣承擔很多變態的任務,但
    是對于服務態度、責任心的要求肯定也會提高很多。
    學校:
        再舉一個例子,學校,現在的幼兒教育由于早些年政府退出的早,導致現在的幼兒園教
    育發展的比中小學發展的快多了。大家不用光看上幼兒園難、貴,但是對比中小學的僵化程
    度,應該說幼兒教育的質量已經一騎絕塵了,比什么中小學、高校的教育強了好幾倍。至于
    說收入,很多地方小學老師的收入可真比不上幼兒園老師的收入。高中教育由于政府不負擔
    ,很多地方開展的也比初高中教育好多了,當然教師的工作強度肯定也大了很多。
        至于說高校的改革,可能要很久很久,畢竟蓋大學太費錢了。。。
    ————————————————————————————————————————
      
      第三段:細看運營商、公務員變遷的幕后——剩余價值的分配取決于生產關系
      
         我國是一個“民主集中制”的體制,這也是我國生產關系的一個特點,民主咱不討論,
    不過集中倒是很常見。權力、資源控制在一小部分企業和人手中,,雖說這兩年在改善,但
    是改善的步伐這兩年是越來越小。
         這也造成了一個浮在表面的現象——公務員、央企的部分員工性價比遠高于那些不占據
    資源的行業。但這其實只是一個表象,實際上我國的資源、權力不是集中在政府、央企中,
    而是集中在某一小群人中。這是一個非常明顯的金字塔結構。
         這種生產關系,是體制內幸福或痛苦的根源。
      
    1.行業、企業的興衰難確定:
        某個部委、行業、央企的興衰甚至只是因為某幾個人的爭奪,只是因為某一個人的失敗
    或者得勢,雖然這一個人的背后是一群人乃至百萬、千萬人的利益,但是他敗了大家就敗了
    ,他贏了大家就贏了。
        這樣的例子在中國有很多,已經確定了像糖煙酒公司和煙草局,糧食局和中儲糧,聯通
    和網通,幾大發電集團,不確定的像電監會和電網,工信部和某部委。敗了,從上到下所占
    據的權力、資源逐步被剝奪走,勝了,雞犬升天。
      
        運營商最早的改革來自哪??????????很多年輕的byr都不知道,第一波真正的
    改革來自各個部委對于電信業高額利潤的垂涎!原來的郵電總局扛不住這種壓力。聯通為什
    么叫聯通?是因為十幾個部委、央企聯合成立的,所以叫聯合通信,是一批電信圈外的人對
    電信圈蛋糕的逼搶。當時大家也不太會玩游戲規則,哪知道成立個什么銀監會之類的,郵電
    總局一直在被動接招,電信業一步步地淪為各類人等洗錢地方。
        還可以舉的一個例子是:原聯通和網通的合并,這個是個非常具有代表性的案例了,跟
    論壇里很多人的老板的老板甚至直系老板都有關系。如果老板是原聯通的,那么整個省里面
    聯通的都爽了,如果是原網通的,呵呵,那么網通的自然。。。
        現在電網很紅火,那是趕上想分拆的時候遭遇了電力短缺、冰災、美國大停電等事件(
    NND,冰災的時候明顯體現的是通信業的三家重復建設對于通信的保障作用,非得被人家電
    網說成得一家來做才能保障用電安全),現在又趕上換屆,再加上既得利益集團的強大。如
    果有一天,國網的領導保不住外人對于電網的垂涎,最終被拆分,那么電網行業就會重演電
    信業走過的老路。別說啥電網不會被拆分,本地網不適合重復建設,這是胡扯,當年拆分電
    信的時候也這么說,連那么激進的闞凱力老師都說本地網得保留,是門檻。結果現在南方縣
    城里面聯通、移動的寬帶鋪的火熱朝天。大家的工資也降得本冷到底。
      
        記住,上述事情跟你個人,跟你所在團隊等無關,只跟你們公司、行業的幾個人有關系
    。
      
    2.個人前途發展
        體制內的特性決定資源傾斜在上層,因此導致了領導的首要事情是取得他的領導的認可
    ,這樣才能要到更多的資源。這樣自己才有前途。而非體制內,一個市場化的地方,領導要
    考慮的是如何激活員工的活力,讓員工努力地為他從客戶那獲得資源。
        這是體制內領導對待員工和他領導的不同態度的根本原因。這也可以解釋,為什么某些
    看似市場化的企業,如IBM等,大家為啥繞著領導轉的原因,因為在這些企業,員工的作用
    不是最重要的,最重要的是你的老板能給你批下來什么樣的折扣,這導致你這個單子能成還
    是不能成。
        再舉個例子,CMCC利潤、收入年年增加,員工薪水月月降薪,王建宙寧贈友邦,不予家
    奴。因為家奴影響不了他的升遷,友邦影響他的位置,于是我們看到卓望、12580等一個個
    洗錢工具的誕生,看到全國各地B類員工的離職率都開始持續上升。
        國網的降薪搞了好幾年了,員工不同意,有個P用,老大需要搞定的是他老大的意見。很
    可能某次突然降薪只是因為某人看到一篇新聞,隨口跟國網老大提起了這事,國網老大就把
    這個P當作諭旨去執行了。
        你在體制內的前途完全寄托在你的領導身上,而你的領導的前途也完全寄托在他的領導
    身上,你是憑借喝酒、干活、拍馬屁、文體等哪項能上位,完全取決于你的領導的喜好。當
    然,現在領導選拔看能力的越來越多了。
      
    3. 升遷
        上一個可以解釋你未來如何升遷。你的大部分工作,依靠的還是上面領導的支持,依靠
    的是上層的資源傾斜。今年能否完成指標,最重要的并不是下面員工的能力。CMCC的都知道
    ,要想哪個業務大發展,列入今年的KPI指標就行了,12580不就靠這個嗎。
        而領導的喜好是不好琢磨的,再說,萬一換個領導怎么辦?當然,我們可喜地看到,注
    重業績的領導越來越多了。
      
    4. 收入:
        不談公司好壞,不談前途,不談行業是否興衰。在同樣的情況下,收入也很不確定。由
    于歷史原因,體制內的工資一直未能市場化,工資都不高,主要是靠獎金、補貼等活。這帶
    來一個結果是員工的收入非常不穩定,員工今年的收入完全看老板敢不敢發錢,而不是看公
    司、部門、個人的業績如何。
        BMCC,李躍來了大家都爽了一把,ZJMCC,大家都得罵娘。同樣是稅務,上海的稅務部門
    底層員工真是得用清廉、辛苦來形容了。
      
    灰色收入:
        前幾天職版有個帖子說某省直的公務員收入,lx很多兄弟回帖說這是實情,很多圍觀的
    群眾表示存在眾多灰色收入等。我想說的是:
    第一,你有足夠的權力才有灰色收入。你手里一年就100萬預算,你能拿多少灰色收入?收
    了你還得孝敬上面。有花錢權力的公務員才占公務員隊伍的百分之幾?
    第二,就算有,你敢拿嗎?我開公司兩年了,遭遇過好幾任稅務工商,有熟的大家私下聊到
    ,除非特高(幾百萬的)或者特少的(給盒月餅),否則誰敢拿,為了幾萬丟掉飯碗,不值
    。底層公務員等壓力現在還是很大的,一個底層員工哪敢咋樣,大家都想著到了處長那一級
    就敢錢,但是到了處長那一級又有他的顧慮,又想接著再往上去。誰都有誰的顧慮,有機會
    拿黑錢的還是少數。
      
    歷史背景:
        90年年代初期地方公務員都快發不出工資了,也就是因為90年代后期政府發明了賣地財
    政,這幾年公務員才跟著沾光。近幾年中央公務員明顯不如地方公務員收入高,不就是因為
    賣地財政嗎?
        年輕的師弟師妹們可以翻翻歷史資料,找老人問問,問問這幾年公務員熱門單位的變遷
    ,或者看看近二十年大型貪污案件高發的部門就知道了。
        最早哪最熱門?海關、稅務,因為當時國家能收上來錢的就這幾個地方,出事率也最高
    ?,F在呢?海關、稅務是被看的最死的。接著受賄案出事最高的就變成了國土局等部門。
         收入是很不透明且難以估量的,未來一旦賣地財政破產,行政收費取消,地方公務員的
    收益很難保障。
      
    5.壓力:
         任務指標非正?;?,超高、沒有必要的指標到處都是。
         體制內并不是一個以股東收益、市場效率為導向的地方,而是以政治為導向的一個地方
    ,因此很多指標是只能提高不能降低,不管這個指標是否合理。因此做假指標是各個地方最
    常見的情況。不管是哪,大家面臨的共同事情就是研究如何造假指標,上面的領導也心知肚
    明。
         這導致大家的壓力來源很不正常,有些地方可能1、2年都很輕松,但是可能換了個領導
    之后,下的都是一些非常指標,生活會變得異常充實。
      
      
    —————————————————————————————————————————
      
    第四段:展望未來,風險與機遇——生產力決定生產關系  
        說了上面這么多,并不是說體制內完全不好,只是列舉一些風險,希望大家別總是聽信
    水木那些“我同學、我親戚、我朋友”的言論,多去了解事情的歷史,背后的原因,未來的
    走向,而不是盯著眼前那么短暫的幾年時光。在過去的二十年里,絕大部分體制內一旦被推
    向市場,就基本走向了衰敗,壟斷保護帶來的絕對不會是高效。因此事業單位和央企的前途
    都不會那么清晰。
         而對于公務員而言,收益到底未來會怎樣?我不好做太多的評判,生產關系改革并不是
    論壇討論的內容,我真寫了就該被刪樓了,只方便就下面幾點評述一下。
      
    1、收益:
         公務員其實也只是一份職業,警察等都只是一種職業,這份職業的優越性取決于從業人
    員掌控的資源和受管制的內容。財務部、稅務、海關等都是大家認為能掌控很多資源的地方
    ,但是現在他們受到的管制、監管卻極為嚴格。雖然這種監管是來自上層,而不是來自人民
    ,但是也導致了絕大部分底層員工獲得高額收益的機會是少數的。除非你掌控的資源不受監
    管。
      
    2、職業化:
         這幾年去稅務、工商、公安局、法院辦事,我發現很多地方職業化了許多,基本都是公
    事公辦,敲詐、態度不好等現象基本不存在——當然,前提是你沒有特別大的油水。當然,
    二三線城市可能不是這個樣子。
         政治改革的不斷深化,最起碼讓大部分公務員比以前像個職業人士了。
      
    3、穩定性:
         央企、事業單位的穩定性很快就會跟企業一樣了——最起碼對于新人而言。公務員的穩
    定性鄙人不好評價,但是由于政府會一直存在,因此這種職業的穩定性還是會很高的,最起
    碼應該會比絕大部分行業都穩定。
         不過前提是你熟練掌握相關的技能,不會被裁掉,不管這種技能是做報表、喝酒、還是拍
    馬屁。
         當有一天財政破產的時候,政府依然會裁員的,這種事情在8、90年代就發生過了,因
    此不用擔心未來不會發生,因此還是得干好這份職業該干的事情。
      
    4、上升空間:
         這個不用說了,太難了??由偃硕啵绻厦鏇]人,自己沒料的就別想了。
      
      
    ————————————————————————————————————————
    第五段:第一份工作如何盡力地去把控自己的命運
      
      
         我在《通信行業求職寶典:獵頭視角》里面提出過幾個觀點,想做什么,能做什么,該
    做什么。從理論上講,找個合適的工作最好,求穩定的找穩定的,求高薪的找高薪的,求事業的做事業,可問題是大部分人

    看不懂自己要做啥
    ,還有一部分人知道自己要做啥,但是不知道這個行業、企業前途如何。
         因此這里,我們談談如何盡量控制自己的命運——完全把控是不可能的,太祖太宗美國
    總統聯合國主席也做不到。
      
    1、伴隨你命運的東西:
         首先說一個大的話題,職業生涯中,跟你相關的是哪幾點?我一般從以下幾方面衡量一
    個人:人格、能力、知識體系及其它方面。
    a.人格
         這是一個心理學名詞,主要是指人所具有的與他人相區別的獨特而穩定的思維方式和行
    為風格。說的通俗、簡單一些,就是你的性格、做
      
    事習慣。
         人格很難改,畢竟是二十多年形成的,我們只能說揚長避短,盡量去改善、規范自己不
    好的地方。
    b.能力
         這個主要是指學習、溝通、管理等能力。這個大家可能覺得虛,其實,呵呵,不多說了
    ,稍微專業的HR、leader都比較容易評判這些能力。
    c.知識體系
         這個就是跟你工作等相關的東西了,例如通信知識、開發語言掌握等。
    d.其它方面
         這個包含很多內容,口碑、人脈、品味等。
      
    2、如何掌控命運
         第一份工作對于大部分人而言是職業生涯最重要的起點,不要相信先擇業后就業這種說
    法,這是荒謬的。你工作幾年后,你的上述四方面能力基本定型了,跳槽的時候,大家首先
    就是通過你之前的工作經驗來評判你,因此你找第一份工作的時候,必須要考慮到上面那四
    個方面的內容培養問題。
      
    a.盡量找一個適合自己人格的行業
         盡量做自己適合做,想做的事情。這個很難,第一大部分人不知道自己適合做什么,第
    二大部分人不知道有哪些行業、職業。我的建議是先做排除法,然后再做選擇法。先確定自
    己絕對不適合做什么,在去在剩下的里面挑。
         另外,這些行業、職業一定要自己全面了解之后再決定。很多時候你覺得你適合做的職
    業,當你真正做了之后會發現根本不是那么回事。
    b、找一個技能短期內快速提升能力的職業、行業;找一個技能會長久提升的行業  
         如果真找到想做的職業、行業了,那么找一個合適的起點,找一個地方能讓你這些技能
    快速提升的地方,以便1、2年后就能跟同行們拉開差距。
         這個起點可能是大公司,也可能是小公司,這個跟你所在的行業、你所缺的東西、你職
    業相關,比如說你做銷售,那么在華為可能比在某些外企好,因為很多外企的銷售其實就是
    在忙著處理內部流程,寫郵件,而不是忙著如何談單子談項目。你做技術,可能IBM好,有
    可能某個小公司好,因為IBM可能讓你養成好的職業習慣、素養,但是也可能荒廢了你的快
    速學習、抗壓能力,小公司可能做事不規范,但是可能你能力提高的很快。
    c、知識的積累有用的行業
        你的大部分技能在工作4、5年后就基本定型了,某些組織、管理能力可能在10年左右定
    型,但是你的知識不會,你的收入、職位會隨著你的知識、口碑等的上升而上升。
         應該找一個你N年前掌握的知識對你現在工作還會有用的行業,進入知識的積累會一直
    給你帶來增值的行業。這樣的行業,人員的收入才會不斷地增值,而不是貶值,當你體力老去的時候,行業的新入者才不會

    很快替代你。你才會越來越吃香,越老越輕松,例如醫生、某些行業顧問等。
         例如一些sap的顧問為啥前幾年這么吃香,一方面是因為需求量暴增,另外一方面是因
    為他們積累的知識不是短期內能速成的,你必須熟悉這個行業的情況、流程后才能去所sap
    顧問。
      
         在這里,我很反感某些人說的“不要進入那種40歲了還要不斷學習的行業”,小朋友可
    以反過來想想,如果一個人40歲的時候不需要學習了,那么對于公司而言,40歲的人跟50的
    歲人掌握的東西是一樣的,那么公司是不是該考慮換個成本低的,年輕點的?
      
         我們需要避免的是那種40歲的時候,之前積累的知識完全無用的工作,而不是說不需要
    你學習的工作。如果一份工作,不需要你學習了,那么意味著你的收入到頭了,不會增長了,
    你的工作也很容易被更年輕的人替代了。
    d、其它方面的培養
        這個對你們而言,最要緊的就是做好現在能做的每一件事情。
      
    3、其它該規避的
    a、行業風險
         盡量不要進入一個在走下坡路的行業,如傳統的單機硬件、軟件公司,這些公司慢慢會
    走向沒落,你可能在這里會養成良好的職業相關,但是用不了多少年,你還是需要跳槽。與
    其這樣,不如當時就進入一個較為新興的行業。
         大體可以說幾個大家較為常去的行業:對于通信口,無線》有線,設備商》運營商》設
    計院,對于計算機,互聯網》傳統軟件》傳統硬件,這里的互聯網是一個寬泛的互聯網概念
    ,包括B/S架構等的軟件開發等。
         當然,上述只是一個寬泛的概念,指的是同level的公司,并不是說去一個某三線的設
    備商強于去CMCC HQ。
    b、公司內部風險
         很多公司進去的時候不確定你去什么部門,這類公司盡量避免去或者去之前談妥,尤其
    是一些公司可能產品線很多,萬一你去了之后被分到一個快垮掉的產品線,你哭都來不及。
    c、再補充講一下體制內
         公務員是一份穩定的職業,是一個國家難起缺失的職業,只不過是這個機構臃腫還是精
    干的問題,工作強度高還是低,收益高還是低的問題,我之前說了很多了,不重復了。
         但是某些企業、事業單位的未來的存續、前景是很值得質疑。
      
      
         最后說的是,找工作很容易,找好工作也很容易,努努力,每天刻苦15小時(留9個小
    時給大家吃飯睡覺運動洗澡),去個想去的公司做想做的事情總能做到的,但是這只是人生
    的起點,以后的路想過的舒服,還需要繼續努力。

    posted @ 2011-04-18 16:17 colorfire 閱讀(294) | 評論 (0)編輯 收藏

    java 數據對象測試方法

    /**
         * 測試方法
         * 
    @param obj
         * 
    @return
         
    */

        
    public static StringBuffer testPOJO(Object obj) {
            Class cls 
    = obj.getClass();
            Field[] fields 
    = cls.getDeclaredFields();
            StringBuffer resultBuf 
    = new StringBuffer();
            
    try {
                
    for (int i = 0; i < fields.length; i++{
                    String fieldName 
    = fields[i].getName();
                    Class fieldType 
    = fields[i].getType();
                    Method method;
                    
    if (fieldType.equals(boolean.class)) {
                        method 
    = cls.getMethod("is" + genMethodName(fieldName));
                    }
     else {
                        method 
    = cls.getMethod("get" + genMethodName(fieldName));
                    }

                    Object res;
                    
    if ((res = method.invoke(obj)) != null{
                        String result 
    = res.toString();
                        resultBuf.append(
    "[" + fieldName + "] = " + result + "\n");
                    }
     else {
                        resultBuf.append(
    "[" + fieldName + "] = NULL \n");
                    }

                }

            }
     catch (Exception e) {
                e.printStackTrace();
            }

            
    return resultBuf;
        }

    posted @ 2011-04-14 17:06 colorfire 閱讀(237) | 評論 (0)編輯 收藏

    [aws]亞馬遜云計算體驗1

    前些天,剛注冊了AWS,EC2服務免費體驗一年,配置也不錯,這便宜好大。

    昨天來公司登陸時發現,公司屏蔽了22端口,無奈,回家把端口改掉吧。
    順便將默認只能raskey登陸方式,改掉,重新配置ssh一下。

    # 1. 關于 SSH Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式
    Port 22          # SSH 預設使用 22 這個 port,您也可以使用多的 port !
                  # 亦即重復使用 port 這個設定項目即可!

    Protocol 2,1        # 選擇的 SSH 協議版本,可以是 1 也可以是 2 ,
                  # 如果要同時支持兩者,就必須要使用 2,1 這個分隔了!
    #ListenAddress 0.0.0.0   # 監聽的主機適配卡!舉個例子來說,如果您有兩個 IP,
                  # 分別是 192.168.0.100 及 192.168.2.20 ,那么只想要
                  # 開放 192.168.0.100 時,就可以寫如同下面的樣式:

    ListenAddress 192.168.0.100          # 只監聽來自 192.168.0.100 這個 IP 的SSH聯機。
                       # 如果不使用設定的話,則預設所有接口均接受 SSH

    PidFile /var/run/sshd.pid      # 可以放置 SSHD 這個 PID 的檔案!左列為默認值
    LoginGraceTime 600     # 當使用者連上 SSH server 之后,會出現輸入密碼的畫面,
                  # 在該畫面中,在多久時間內沒有成功連上 SSH server ,
                  # 就斷線!時間為秒!

    Compression yes      # 是否可以使用壓縮指令?當然可以啰!
     
    # 2. 說明主機的 Private Key 放置的檔案,預設使用下面的檔案即可!

    HostKey /etc/ssh/ssh_host_key    # SSH version 1 使用的私鑰
    HostKey /etc/ssh/ssh_host_rsa_key  # SSH version 2 使用的 RSA 私鑰
    HostKey /etc/ssh/ssh_host_dsa_key  # SSH version 2 使用的 DSA 私鑰

    # 2.1 關于 version 1 的一些設定!

    KeyRegenerationInterval 3600     # 由前面聯機的說明可以知道, version 1 會使用 
                       # server 的 Public Key ,那么如果這個 Public 
                       # Key 被偷的話,豈不完蛋?所以需要每隔一段時間
                       # 來重新建立一次!這里的時間為秒!

    ServerKeyBits 768           # 沒錯!這個就是 Server key 的長度!
    # 3. 關于登錄文件的訊息數據放置與 daemon 的名稱!

    SyslogFacility AUTH         # 當有人使用 SSH 登入系統的時候,SSH會記錄資
                       # 訊,這個信息要記錄在什么 daemon name 底下?
                       # 預設是以 AUTH 來設定的,即是 /var/log/secure
                       # 里面!什么?忘記了!回到 Linux 基礎去翻一下
                       # 其它可用的 daemon name 為:DAEMON,USER,AUTH,
                       # LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,

    LogLevel INFO            # 登錄記錄的等級!嘿嘿!任何訊息!
                       # 同樣的,忘記了就回去參考!
    # 4. 安全設定項目!極重要!
    # 4.1 登入設定部分

    PermitRootLogin no     # 是否允許 root 登入!預設是允許的,但是建議設定成 no!
    UserLogin no        # 在 SSH 底下本來就不接受 login 這個程序的登入!
    StrictModes yes      # 當使用者的 host key 改變之后,Server 就不接受聯機,
                  # 可以抵擋部分的木馬程序!
    #RSAAuthentication yes   # 是否使用純的 RSA 認證!?僅針對 version 1 !

    PubkeyAuthentication yes  # 是否允許 Public Key ?當然允許啦!只有 version 2
    AuthorizedKeysFile      .ssh/authorized_keys
                  
    # 上面這個在設定若要使用不需要密碼登入的賬號時,那么那個
                  # 賬號的存放檔案所在檔名!
    # 4.2 認證部分

    RhostsAuthentication no  # 本機系統不止使用 .rhosts ,因為僅使用 .rhosts 太
                  # 不安全了,所以這里一定要設定為 no !

    IgnoreRhosts yes      # 是否取消使用 ~/.ssh/.rhosts 來做為認證!當然是!
    RhostsRSAAuthentication no # 這個選項是專門給 version 1 用的,使用 rhosts 檔案在
                  # /etc/hosts.equiv配合 RSA 演算方式來進行認證!不要使用

    HostbasedAuthentication no # 這個項目與上面的項目類似,不過是給 version 2 使用的!
    IgnoreUserKnownHosts no  # 是否忽略家目錄內的 ~/.ssh/known_hosts 這個檔案所記錄
                  # 的主機內容?當然不要忽略,所以這里就是 no 啦!

    PasswordAuthentication yes # 密碼驗證當然是需要的!所以這里寫 yes 啰!
    PermitEmptyPasswords no  # 若上面那一項如果設定為 yes 的話,這一項就最好設定
                  # 為 no ,這個項目在是否允許以空的密碼登入!當然不許!

    ChallengeResponseAuthentication yes  # 挑戰任何的密碼認證!所以,任何 login.conf 
                       # 規定的認證方式,均可適用!
    #PAMAuthenticationViaKbdInt yes      # 是否啟用其它的 PAM 模塊!啟用這個模塊將會
                       # 導致 PasswordAuthentication 設定失效!
     
    # 4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos 主機,所以底下不用設定!
    #KerberosAuthentication no
    #KerberosOrLocalPasswd yes
    #KerberosTicketCleanup yes
    #KerberosTgtPassing no
     
    # 4.4 底下是有關在 X-Window 底下使用的相關設定!

    X11Forwarding yes
    #X11DisplayOffset 10
    #X11UseLocalhost yes
    # 4.5 登入后的項目:

    PrintMotd no              # 登入后是否顯示出一些信息呢?例如上次登入的時間、地點等
                 # 等,預設是 yes ,但是,如果為了安全,可以考慮改為 no !

    PrintLastLog yes     # 顯示上次登入的信息!可以?。☆A設也是 yes !
    KeepAlive yes       # 一般而言,如果設定這項目的話,那么 SSH Server 會傳送
                 # KeepAlive 的訊息給 Client 端,以確保兩者的聯機正常!
                 # 在這個情況下,任何一端死掉后, SSH 可以立刻知道!而不會
                 # 有僵尸程序的發生!

    UsePrivilegeSeparation yes # 使用者的權限設定項目!就設定為 yes 吧!
    MaxStartups 10      # 同時允許幾個尚未登入的聯機畫面?當我們連上 SSH ,
                 # 但是尚未輸入密碼時,這個時候就是我們所謂的聯機畫面啦!
                 # 在這個聯機畫面中,為了保護主機,所以需要設定最大值,
                 # 預設最多十個聯機畫面,而已經建立聯機的不計算在這十個當中
    # 4.6 關于使用者抵擋的設定項目:

    DenyUsers *        # 設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部
                 # 擋吧!若是部分使用者,可以將該賬號填入!例如下列!

    DenyUsers test
    DenyGroups test      
    # 與 DenyUsers 相同!僅抵擋幾個群組而已!
    # 5. 關于 SFTP 服務的設定項目!

    Subsystem       sftp    /usr/lib/ssh/sftp-server


    引用自:http://doc.licess.org/openssh/sshd_config.html

    posted @ 2011-03-15 10:51 colorfire 閱讀(468) | 評論 (0)編輯 收藏

    py2exe使用說明

    py2exe

    posted @ 2011-03-04 16:39 colorfire 閱讀(506) | 評論 (0)編輯 收藏

    人性的小船

    聽到一個故事,10幾個人在海上遇難,只有一個小船可以活命。船上什么也沒有,所有人都因為幾天沒吃沒喝而奄奄一息,但大家都堅持不喝海水,因為一旦喝了海水人脫水的速度會更快。
    但是有一個年輕人,幾近虛脫,為了生存終于忍不住喝了海水。。。

    又過了幾天,這一船人被救了。當他們被救上來的同時,發現那個喝海水的年輕人被割喉,血被吸干了。人吃人的消息不脛而走。
    一船人被帶進法院。是殺人、是自救?是有罪、是無罪?是人治、是法制?每個人都該有自己的判斷。

    最終一船人被判無罪釋放。

    老爸說,人這一生無非就是提出問題,然后解決問題,以及做出選擇。出現了問題,要面對它解決它,不能逃避。

    posted @ 2011-02-23 12:36 colorfire 閱讀(1854) | 評論 (4)編輯 收藏

    總結

    2011年了,拿點什么來總結一下過去的2010呢?盤點一下自己這一年讀過的書吧,以
    供自勉。

    總體感覺這一年看的書雜而不精,而且大多數的書囫圇吞棗,看完就忘了,工作中用到
    還得上網去查。大牛們幫看看,給一些指導吧(我09年本科畢業,對Java和Web方面有
    著比較強烈的興趣,職業規劃是成長為一名Java和web方面的技術專家)
     

    《數據結構(C語言版)》:內功心法類的書,考研時讀過,現在想回頭溫習一下,當
    年辛辛苦苦看的,不能給丟的一干二凈。
    《計算機網絡(第4版)》:看了概述、傳輸層和應用層。跳出了TCP/IP協議棧的范疇
    來看網絡基本原理。11年要重點閱讀。
     

    《Java面向對象編程》:孫衛琴的書,通俗易懂,個人認為Java居家必備,恨學校當
    年沒有選這本書作為教材。
    《Think in Java(第4版)》:先讀了線程那一章,趕緊把簡歷上精通Java改為熟悉
    Java。接著讀了一切皆是對象、接口、異常、RTTI章節,然后小心地把簡歷上熟悉
    Java改為熟練使用Java。11年要重點閱讀。
    《設計模式:可復用面向對象軟件的基礎》:據說是設計模式的葵花寶典,可惜自己沒
    練成。書很薄,只有200來頁,字字珠璣,模式的定義都很精辟,另外把模式按性質的
    一個分類太妙了:creational,structural,behavioral。
    《Java與模式》:在這本書上找到了設計模式的感覺,通俗易懂。
    《敏捷軟件開發原則、模式與實踐》:沖著Robert大叔的名頭去的,讀了一遍,給我
    的感覺是看不懂、看不懂啊。不過附錄A倒是讓我學會了CGI,附錄C中的諷刺小品很有
    意思。,大牛們都說每讀一遍,感覺都不一樣,11年再仔細揣摩吧。
    《UML精粹:標準對象語言簡明指南(第3版)》:看完忘了,不記得內容了
    《UML for Java Programmers》:經典巨著,畫UML圖時,總參照這本書。書后咖
    啡機的例子,非常震撼。
    《領域驅動設計》:經典巨著,看了一點點,受益匪淺。11年要重點閱讀。
    《軟件架構設計》:看了一遍,理解不了,只是大概弄懂了幾個概念,平臺、框架、垂
    直架構、水平架構...以后再閱讀吧
     

    《編程之美》:很有意思、開動腦筋的一本書,求職必備。
    《編程珠璣》:對我來說,有點難,讀著很費勁,但應該能鍛煉大腦吧。
    《并發的藝術》:很好的一本書,看到了一直想看的并發排序、并發搜索。
     

    《Head First HTML and CSS、HTMl》:簡單流暢的一本書,但是內容有點過于簡
    單了。
    《Eric Meryer談CSS》:買書時,作為添頭送的,不怎么樣,僅僅看到了幾個賣噱頭
    的CSS技巧。
    《JavaScript語言精粹》:無愧于書名,JavaScript進階必讀。
    《PPK談JavaScript》:談的很到位,JavaScript語言核心、DOM、BOM、JSON...
    《JavaScript設計模式》:第一部分對JavaScript面向對象思想的講解非常不錯,
    真正的主題第二部分,列舉了10幾種模式,但對模式的講解感覺很生硬,有生搬硬套之
    嫌,反正我是沒掌握。
    《AJAX實戰》:總體很一般的書,門戶那一章倒是幫了不少忙,當時搞Portal,從這
    一章看了一些Portal的基本技術原理。
    《JQuery 實戰》:很不錯的一本書,簡潔流暢,能讓你的JQuery快速起步和有力奔
    跑。另外,附錄中關于JavaScript語言本身的講解,對我幫助很大。
    《Web應用程序性能測試指南 》:試圖展開Web性能測試的理論體系和指導方法,不
    過,我的腦子或者說思維類型,對這種書完全接納不了,看完覺得很空洞,沒留下什么
    在我腦子里。
    《瞬間之美:Web 界面設計如何讓用戶心動》:同事在看,沖著書名,我也湊過去看了
    看,看的時候覺得挺好玩,完了就忘了,我思維類型實在不適合搞這個。
    《RESTful Web Services》:應該是自身水平問題,書里好多概念到現在都是似懂
    非懂,說不清、道不明的狀態。但這本書倒是提醒我要重新認識和理解WEB和HTTP協
    議,問問自己,是否在項目中做到很好地分析資源,并使之符合HTTP的規范。
     

    《Struts2 in Action》:沒有系統地看這本書,用到的時候翻翻,造成到現在也沒
    系統掌握Struts2。
    《精通struts 2:web 2.0開發實戰》:很不咋地的一本書,沒營養,沒內涵,準備當
    二手書賣了。
    《Spring In Action》:很好的一本in action書,也比較新,按照spring 2..5
    講的。

    《Hibernate in Action(第2版)》:去年過生日時哥們送的,年初看了一遍,不
    少地方沒看懂,尤其是事務控制那一塊,因為背后的數據庫事務理論不太了解,所以看
    著費勁。11年工作要用到Hibernate,要重點看這本書。
     
    《數據庫系統概念》:看了,特想罵人,罵當年軟院選書的老師,有些老師真是無良,
    為了那點利益,耽誤了好多學生。無論是開發人員,還是DBA,無論是想搞關系數據
    庫,還是NoSQL都很有必要讀讀這本書。
    《SQL應用重構》:上半年看的,沒看懂,沒有任何收獲,11年有空的話,就再翻翻
    吧,看能不能發現點驚喜。
    《高性能MySQL》:Jolt Award獲獎圖書,看了前3章,非常棒。11年重點看。
    《MySQL技術內幕 InnoDB存儲引擎》:很喜歡這本書,一個資深DBA的經驗談,行文
    功力還湊合,日后如果我寫書的話,估計就是這個這種風格。11年重點看。
    《MySQL核心內幕》:感覺被Chinapub騙了,書評很好,但這本書實在是太爛了。當
    時我還推薦一哥們買了,現在那叫一個后悔啊。

    《UNIX和shell程序設計權威教程》:以后再也不買這種書了,完全掃盲貼的水平。對
    VI、Sed、AWK的講解都是點到為止。
     

    《贏》:杰克·韋爾奇的指引:“找到一份好工作,此后的人生不再是勞作”,“怎樣選擇
    一份新工作:薪水+5(人、機遇、主導權、工作內容、未來)”。打算再買幾本送人。
    《德川家康》:比歷史還真實的小說。讀了前4本,當時經常陷入情節,讀到凌晨2、3
    點,后來沒時間讀了,11年有空的話,很想再看看。

    《別跟我說你懂日本》:記得有一章的名字叫“走近她,了解她,原來如此”。
    《其實沒有什么天才》
    《郎咸平說新帝國主義在中國》
    《亮劍》
     

    《詩經》:隨手翻了翻,很美,看完就忘了。
    《拜倫 雪萊 濟慈抒情詩精選集》

    posted @ 2011-01-04 14:01 colorfire 閱讀(221) | 評論 (0)編輯 收藏

    批處理異常問題

    ibatis 批處理唯一性異常,執行到事務結束。

    循環第二次執行批處理時會將表鎖死。

    SqlMapClient smc = this.getSqlMapClient();
            
    int index = 0;
            
    try {
                smc.startTransaction();
                smc.startBatch();
                
                TCuBillfileChecks check 
    = new TCuBillfileChecks();
                check.setTaskname(taskName);
                
    for (int i = 0; i < recordList.size(); i++{
                    Record record 
    = recordList.get(i);
                    Object    custInfo 
    = pojoFactory.generatePojo(taskName, billMonth, record);
                    smc.insert(taskName 
    + ".insert_custinfo", custInfo);
                    
    if (index ++ > batchNum) {// 記錄斷點
                        check.setBillname(record.getAttribute("Source_FileName"));
                        check.setFilenum(Integer.parseInt(record.getAttribute(
    "RowNum")));
                        smc.update(
    "T_CU_BILLFILE_CHECKS.updateByPrimaryKey", check);
                        smc.executeBatch();
                        index 
    = 0;
                    }

                }


                check.setBillname(recordList.get(recordList.size() 
    - 1).getAttribute("Source_FileName"));
                check.setFilenum(Integer.parseInt(recordList.get(recordList.size() 
    - 1).getAttribute("RowNum")));
                smc.update(
    "T_CU_BILLFILE_CHECKS.updateByPrimaryKey", check);
                smc.executeBatch();
            }
     catch (Exception e) {
                e.printStackTrace();
            }
     finally {
                
    try {
                    smc.commitTransaction();
                    smc.endTransaction();
                }
     catch (Exception e) {
                    e.printStackTrace();
                }

            }

    posted @ 2010-12-17 17:51 colorfire 閱讀(394) | 評論 (0)編輯 收藏

    osgi配置參數

    僅作筆記,啟動本地osgi服務
    -Dccontainer=baseapp -Declipse.ignoreApp=true -Dosgi.noShutdown=true  -Dosgi.parentClassloader=app -Dorg.osgi.framework.bootdelegation=* -Dorg.osgi.framework.system.packages=javax.naming,javax.naming.spi,javax.management,javax.management.loading,javax.management.modelmbean,javax.net,javax.net.ssl,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.security.auth,javax.security.auth.spi,javax.security.auth.callback,javax.security.auth.login,javax.security.cert,javax.xml.parsers,javax.xml.xpath,javax.xml.transform.sax,javax.xml.transform.dom,javax.xml.namespace,javax.xml.transform,javax.xml.transform.stream,javax.xml.validation,org.xml.sax,org.xml.sax.helpers,org.xml.sax.ext,com.sun.org.apache.xalan.internal,com.sun.org.apache.xalan.internal.res,com.sun.org.apache.xml.internal.utils,com.sun.org.apache.xpath.internal,com.sun.org.apache.xpath.internal.jaxp,com.sun.org.apache.xpath.internal.objects,com.sun.org.apache.xml.internal,org.w3c.dom,org.w3c.dom.traversal,org.w3c.dom.ls,javax.sql,javax.transaction,sun.misc,javax.jms,javax.resource,javax.resource.spi,javax.resource.cci,javax.resource.spi.work,javax.transaction,javax.sql.rowset,javax.transaction.xa,javax.ejb,javax.resource.spi.endpoint,com.sun.rowset,com.sun.jdmk.comm,javax.mail,javax.mail.internet,javax.swing,javax.swing.border,javax.swing.event,javax.swing.table,javax.swing.text,javax.swing.tree,javax.xml.parsers,javax.xml.datatype,javax.xml,javax.naming,org.ietf.jgss,javax.rmi -Xms256M -Xmx800M

    posted @ 2010-12-14 12:26 colorfire 閱讀(550) | 評論 (0)編輯 收藏

    轉:讓oracle跑的更快

    http://blog.csdn.net/tianlesoftware/archive/2010/09/01/5854583.aspx

    posted @ 2010-12-10 15:27 colorfire 閱讀(163) | 評論 (0)編輯 收藏

    eclipse你不知道的.classpath

    題目是噱頭,用的人都知道。我想說的是classpath中不太注意的classpathentry excluding。

    昨天在跑junit測試時,報錯提示springframe.test.jar多次加載。 nnd,前天跑還一切正常,今天切了一下版本,又切回來,就不行了。

    java.lang.IllegalStateException: Unable to dynamically start generated unit test bundle
        at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.postProcessBundleContext(AbstractOnTheFlyBundleCreatorTests.java:
    527)
        at org.springframework.osgi.test.AbstractConfigurableBundleCreatorTests.postProcessBundleContext(AbstractConfigurableBundleCreatorTests.java:
    223)
        at org.springframework.osgi.test.AbstractOsgiTests.startup(AbstractOsgiTests.java:
    262)
        at org.springframework.osgi.test.AbstractOsgiTests.prepareTestExecution(AbstractOsgiTests.java:
    374)
        at org.springframework.osgi.test.AbstractOsgiTests.runBare(AbstractOsgiTests.java:
    203)
        at org.springframework.osgi.test.AbstractOsgiTests$
    1.protect(AbstractOsgiTests.java:184)
        at junit.framework.TestResult.runProtected(TestResult.java:
    124)
        at org.springframework.osgi.test.AbstractOsgiTests.run(AbstractOsgiTests.java:
    181)
        at junit.framework.TestSuite.runTest(TestSuite.java:
    230)
        at junit.framework.TestSuite.run(TestSuite.java:
    225)
        at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:
    130)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
    38)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
    460)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
    673)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
    386)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
    196)
    Caused by: org.osgi.framework.BundleException: Cannot 
    import a package more than once "org.springframework.osgi.test"
        at org.eclipse.osgi.internal.resolver.StateBuilder.checkImportExportSyntax(StateBuilder.java:
    533)
        at org.eclipse.osgi.internal.resolver.StateBuilder.validateHeaders(StateBuilder.java:
    185)
        at org.eclipse.osgi.internal.resolver.StateBuilder.createBundleDescription(StateBuilder.java:
    49)
        at org.eclipse.osgi.internal.resolver.StateObjectFactoryImpl.createBundleDescription(StateObjectFactoryImpl.java:
    32)
        at org.eclipse.osgi.internal.baseadaptor.BaseStorage.updateState(BaseStorage.java:
    1112)
        at org.eclipse.osgi.internal.baseadaptor.BundleInstall.commit(BundleInstall.java:
    128)
        at org.eclipse.osgi.framework.internal.core.Framework.installWorkerPrivileged(Framework.java:
    965)
        at org.eclipse.osgi.framework.internal.core.Framework$
    2.run(Framework.java:854)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.eclipse.osgi.framework.internal.core.Framework.installWorker(Framework.java:
    905)
        at org.eclipse.osgi.framework.internal.core.Framework.installBundle(Framework.java:
    849)
        at org.eclipse.osgi.framework.internal.core.BundleContextImpl.installBundle(BundleContextImpl.java:
    234)
        at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.installAndStartBundle(AbstractOnTheFlyBundleCreatorTests.java:
    539)
        at org.springframework.osgi.test.AbstractOnTheFlyBundleCreatorTests.postProcessBundleContext(AbstractOnTheFlyBundleCreatorTests.java:
    524)
         
    15 more



    找了一個小時都沒找到原因。
    項目背景是該模塊使用的是osgi框架,框架中包含spring的所有包。但是在編譯時,需要單獨把測試包加進來。

    根據問題,我懷疑是classpath,但是如果去掉jar包引用,連編譯都編譯不過去。

    最后翻到eclipse的.classpath文件才找到原因,classpathentry excluding這家伙被覆蓋掉了。

    excluding標簽是保證項目在啟動時不會講指定的目錄jar加載到內存,只做編譯引用。

    我在切換版本時,將其覆蓋了。

    posted @ 2010-12-09 18:24 colorfire 閱讀(3217) | 評論 (0)編輯 收藏

    perl讀取文件

     1#!/usr/bin/perl
     2print "This is aaa file handler.\n";
     3if(open(MYFILE,"Radius20101101-001.txt")){
     4    while($line=<MYFILE>){
     5        @array=split("Identifier=",$line);
     6        @array=split("\t",$array[1]);
     7        print $array[0];
     8        print ("\n");
     9    }
    10    close(FD);
    11}

    posted @ 2010-12-01 17:37 colorfire 閱讀(208) | 評論 (0)編輯 收藏

    perl中神奇的split

    perl的split,感覺它還是很容易讓新人誤會.但有很多時候,如果數據是固定標記來分隔,用他比使用正則可是方便多了.
    為什么講perl的第三個參數很神奇啦.主要在于split的第三個參數.
    我們知道split是工作在列表的環境,他會裝輸入的數據,多分割幾次,在建立結果列表,然后返回.接著,會返回第三個參數內的數據,其它的都扔棄.
    第三個參數一定要非常小心,為什么,如下的程序,我們只需要前二個參數.我們注意第三個參數

    #!/usr/bin/perl
    while(<DATA>){
      
    my ($aa, $dd= split(/\s+/, $_, 2);
        
    print "$aa  || $dd ||\n";

    }

    __DATA__
    1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
    1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
    1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
    1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
    1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx 

    如果split第三個參數是寫的2的話,輸出如下結果
    11xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
    2||
    31xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
    4|| 
    5


    如果split是寫的3的話,輸出如下結果
    11xxxxxxx  || 2xxxxxx ||
    21xxxxxxx  || 2xxxxxx || 
    3


    這主要是因為,如果想取得前2個字段,字段記數為3.因為需要給文件切成3份.拿出前二份.不然都給最后面部分做一份了.
    轉自遠望技術論壇。

    第三個參數在大數據量情況下還是可以提高不少速度。

    posted @ 2010-12-01 17:36 colorfire 閱讀(970) | 評論 (1)編輯 收藏

    安裝perl的crc32模塊

    因為要寫一個相關的perl腳本,需要crc32函數,默認的perl又不帶,沒辦法只好安裝一個:

    1. 下載:
      wget -c http://search.cpan.org/CPAN/authors/id/S/SO/SOENKE/String-CRC32-1.4.tar.gz
    2. 安裝:
      tar zxvfp String-CRC32-1.4.tar.gz
      cd String-CRC32-1.4
      perl Makefile.PL
      make
      make test #這里沒什么提示錯誤就恭喜了:)
      make install
    3. 使用(來自官方):

          use String::CRC32;

          
    $crc = crc32(“some string”);
          
    $crc = crc32(“some string”, initvalue);

          
    $somestring = “some string”;
          
    $crc = crc32($somestring);
          
    print $crc.\n”;

          
    #open(SOMEFILE, “location/of/some.file”);
          #$crc = crc32(*SOMEFILE);
          #close(SOMEFILE);

    1. 運行:
      perl t.pl
      4182587481

    系統要部署到AIX平臺

    問題:
    make編譯報錯,提示:cc_r not found!編譯器找不到?那就手動指定一下,cc_r應該是在/usr/vac/bin目錄下。
    #vi MakeFile 找到CC = cc_r 改成 /usr/vac/bin/cc_r,然后執行make
    提示: The license for the Evaluation version of IBM XL C/C++ for AIX, V10.1 compiler product has expired. 我去!過期了。。。這家伙還沒免費的。。

    另找辦法,cc_r不讓用就用gcc吧。
    AIX Toolbox download:http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html 中免費下載。
    傻瓜式安裝 #
    rpm –ivh gcc-4.2.0-3.aix5.3.ppc.rpm 
    把cc_r替換為gcc,執行make編譯。報錯一大堆,各種的編譯選項類型不符。


    解決方案
    網上搜的:

    現在AIX自帶的perl實例因為不是用gcc編譯的,所以不可以在其基礎上用gcc編譯安裝相關模塊;

    需要從網上下載perl的源代碼,使用gcc編譯安裝一份新的perl實例;

    現在AIX自帶的perl實例因為不是用gcc編譯的,所以不可以在其基礎上用gcc編譯安裝相關模塊;

    需要從網上下載perl的源代碼,使用gcc編譯安裝一份新的perl實例;


    那就去perl下最新的源碼包吧,http://www.perl.com/
    指定編譯器和目錄 #sh Configure -de -Dcc=gcc –Dprefix=/opt/perl-5.10
    #make
    #make install

    設置PATH環境變量:export PATH=/opt/perl-5.10/bin:$PATH (注意把新的perl實例的bin路徑設置在前面,是因為系統中原有的perl實例還存在,可以做到優先使用新的perl實例)
    #perl -version 確認一下最新的版本

    然后再去編譯String-CRC32吧
    #perl MakeFile.pl
    #make
    #make install

    安裝完成,測試成功。這一大圈繞的。

    posted @ 2010-11-29 16:41 colorfire 閱讀(2268) | 評論 (0)編輯 收藏

    利用Java反射讀取XML配置文件

         摘要: 背景:項目配置文件分散,有FTP、文件格式、數據庫等。且單個任務配置都不一樣。故有了統一配置文件的想法,由統一的工具類生成配置對象。 使用:dom4j,Java ioc 首先是XML文件的定義,懶得寫schema,直接手寫了。配置項由于很多,且分類明確,所以一開始就打算將其分為多個Java類配置。  1<?xml version="1.0" ...  閱讀全文

    posted @ 2010-11-23 17:17 colorfire 閱讀(791) | 評論 (0)編輯 收藏

    轉:JAVA處理XML文件方法比較

    在平時工作中,難免會遇到把XML作為數據存儲格式。面對目前種類繁多的解決方案,哪個最適合我們呢?在這篇文章中,我對這四種主流方案做一個不完全評測,僅僅針對遍歷XML這塊來測試,因為遍歷XML是工作中使用最多的(至少我認為)。

      預備

      測試環境:

      AMD毒龍1.4G OC 1.5G、256M DDR333、Windows2000 Server SP4、Sun JDK 1.4.1+Eclipse 2.1+Resin 2.1.8,在Debug模式下測試。

      XML文件格式如下:

     ?。?xml version="1.0" encoding="GB2312"?><RESULT><VALUE>

      <NO>A1234</NO>

     ?。糀DDR>四川省XX縣XX鎮XX路X段XX號</ADDR></VALUE><VALUE>

      <NO>B1234</NO>

      <ADDR>四川省XX市XX鄉XX村XX組</ADDR></VALUE></RESULT>

      測試方法:

      采用JSP端調用Bean(至于為什么采用JSP來調用,請參考:http://blog.csdn.net/rosen/archive/2004/10/15/138324.aspx),讓每一種方案分別解析10K、100K、1000K、10000K的XML文件,計算其消耗時間(單位:毫秒)。

      JSP文件:

     ?。?@ page contentType="text/html; charset=gb2312" %><%@ page import="com.test.*"%>

     ?。糷tml><body><%String args[]={""};MyXMLReader.main(args);%></body></html>

      測試

      首先出場的是DOM(JAXP Crimson解析器)

      DOM是用與平臺和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然后才能做任何工作。由于它是基于信息層次的,因而DOM被認為是基于樹或基于對象的。DOM以及廣義的基于樹的處理具有幾個優點。首先,由于樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。

      另一方面,對于特別大的文檔,解析和加載整個文檔可能很慢且很耗資源,因此使用其他手段來處理這樣的數據會更好。這些基于事件的模型,比如SAX。

      Bean文件:

      package com.test;

      import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*;

      public class MyXMLReader{

      public static void main(String arge[]){

      long lasting =System.currentTimeMillis();

      try{

      File f=new File("data_10k.xml");

      DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

      DocumentBuilder builder=factory.newDocumentBuilder();

      Document doc = builder.parse(f);

      NodeList nl = doc.getElementsByTagName("VALUE");

      for (int i=0;i<nl.getLength();i++){

      System.out.print("車牌號碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());

      System.out.println("車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());

      }

      }catch(Exception e){

      e.printStackTrace();

      }

      System.out.println("運行時間:"+(System.currentTimeMillis() - lasting)+"毫秒");}}

      10k消耗時間:265 203 219 172

      100k消耗時間:9172 9016 8891 9000

      1000k消耗時間:691719 675407 708375 739656

      10000k消耗時間:OutOfMemoryError

      接著是SAX

      這種處理的優點非常類似于流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。

      選擇DOM還是選擇SAX?

      對于需要自己編寫代碼來處理XML文檔的開發人員來說,

      選擇DOM還是SAX解析模型是一個非常重要的設計決策。

      DOM采用建立樹形結構的方式訪問XML文檔,而SAX采用的事件模型。

      DOM解析器把XML文檔轉化為一個包含其內容的樹,并可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然后利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務中。

      SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag。特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。

      Bean文件:

      package com.test;import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

      public class MyXMLReader extends DefaultHandler {

      java.util.Stack tags = new java.util.Stack();

      public MyXMLReader() {

      super();}

      public static void main(String args[]) {

      long lasting = System.currentTimeMillis();

      try {

      SAXParserFactory sf = SAXParserFactory.newInstance();

      SAXParser sp = sf.newSAXParser();

      MyXMLReader reader = new MyXMLReader();

      sp.parse(new InputSource("data_10k.xml"), reader);

      } catch (Exception e) {

      e.printStackTrace();

      }

      System.out.println("運行時間:" + (System.currentTimeMillis() - lasting) + "毫秒");}

      public void characters(char ch[], int start, int length) throws SAXException {

      String tag = (String) tags.peek();

      if (tag.equals("NO")) {

      System.out.print("車牌號碼:" + new String(ch, start, length));}if (tag.equals("ADDR")) {

      System.out.println("地址:" + new String(ch, start, length));}}

      public void startElement(String uri,String localName,String qName,Attributes attrs) {

      tags.push(qName);}}

      10k消耗時間:110 47 109 78

      100k消耗時間:344 406 375 422

      1000k消耗時間:3234 3281 3688 3312

      10000k消耗時間:32578 34313 31797 31890 30328

      然后是JDOM http://www.jdom.org/

      JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現更快。由于是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規范請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發。

      JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。

      JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對于大多數Java/XML應用程序來說當然是有用的,并且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。

      JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼。

      Bean文件:

      package com.test;

      import java.io.*;import java.util.*;import org.jdom.*;import org.jdom.input.*;

      public class MyXMLReader {

      public static void main(String arge[]) {

      long lasting = System.currentTimeMillis();

      try {

      SAXBuilder builder = new SAXBuilder();

      Document doc = builder.build(new File("data_10k.xml"));

      Element foo = doc.getRootElement();

      List allChildren = foo.getChildren();

      for(int i=0;i<allChildren.size();i++) {

      System.out.print("車牌號碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());

      System.out.println("車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());

      }

      } catch (Exception e) {

      e.printStackTrace();

      }

      System.out.println("運行時間:" + (System.currentTimeMillis() - lasting) + "毫秒");}}

      10k消耗時間:125 62 187 94

      100k消耗時間:704 625 640 766

      1000k消耗時間:27984 30750 27859 30656

      10000k消耗時間:OutOfMemoryError

      最后是DOM4J http://dom4j.sourceforge.net/

      雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合并了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標準DOM接口具有并行訪問功能。從2000下半年開始,它就一直處于開發之中。

      為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。

      在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力于成為比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。

      DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J。

      Bean文件:

      package com.test;

      import java.io.*;import java.util.*;import org.dom4j.*;import org.dom4j.io.*;

      public class MyXMLReader {

      public static void main(String arge[]) {

      long lasting = System.currentTimeMillis();

      try {

      File f = new File("data_10k.xml");

      SAXReader reader = new SAXReader();

      Document doc = reader.read(f);

      Element root = doc.getRootElement();

      Element foo;

      for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {

      foo = (Element) i.next();

      System.out.print("車牌號碼:" + foo.elementText("NO"));

      System.out.println("車主地址:" + foo.elementText("ADDR"));

      }

      } catch (Exception e) {

      e.printStackTrace();

      }

      System.out.println("運行時間:" + (System.currentTimeMillis() - lasting) + "毫秒");}}

      10k消耗時間:109 78 109 31

      100k消耗時間:297 359 172 312

      1000k消耗時間:2281 2359 2344 2469

      10000k消耗時間:20938 19922 20031 21078

      JDOM和DOM在性能測試時表現不佳,在測試10M文檔時內存溢出。在小文檔情況下還值得考慮使用DOM和JDOM。雖然JDOM的開發者已經說明他們期望在正式發行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現廣泛應用于多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基于非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在Javascript中使用DOM)。

      SAX表現較好,這要依賴于它特定的解析方式。一個SAX檢測即將到來的XML流,但并沒有載入到內存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內存中)。

      無疑,DOM4J是這場測試的獲勝者,目前許多開源項目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J吧!

    posted @ 2010-11-23 11:14 colorfire 閱讀(445) | 評論 (0)編輯 收藏

    IBATIS執行SQL語句

    數據庫使用oracle10g,不支持自動分區,設計要求按時間分區。

    NC想法,要求定時建表,表名用時間區別。

    系統使用IBATIS,把時間檔參數怎么傳也報參數錯誤。

    原來:ibatis,使用#xxx#當做變量使用,會自動加單引號。查資料,用$號代替,搞定。

    posted @ 2010-11-17 16:07 colorfire 閱讀(268) | 評論 (0)編輯 收藏

    如何管理你的代碼?

    在線應用
    Google Project Host 兩個G,免費,缺點是必須開源。
    assembla 同樣兩個G,免費,且不必開源,很不錯不是么。

    本地應用
    svn server 是首選,但是有點麻煩。
    git 是個不錯的選擇,簡單并可以分布式。

    posted @ 2010-11-12 10:40 colorfire 閱讀(124) | 評論 (0)編輯 收藏

    關于Flash游戲的更新不動

    LD玩Flash游戲,但有時候在游戲加載時老是卡在一個地方不動。刷新多次都一樣。
    瀏覽器用的是搜歌的,換IE問題依舊,換chrome就可以了。

    分析應該是緩存問題,但清空IE緩存還是不行。

    原來FLASH還有自己的緩存,清空后,刷新正常。


    大部分Flash游戲都要求保留10m緩存,方便快速加載,但經常出現更新問題。此方法可以解決。

    posted @ 2010-11-09 16:09 colorfire 閱讀(147) | 評論 (0)編輯 收藏

    Eclipse自動補全

    打開 Eclipse 的 窗口(Window) -> 首選項(Perferences) -> Java -> 編輯器(Editor )-> 內容輔助(Content)(新版本叫做Context Assist),最下面一欄 自動激活(Auto)-Java的自動激活觸發器(Activation) 會看到只有一個”.”存在。表示:只有輸入”.”之后才會有代碼提示,我們要修改的地方就是這里,可是Eclipse默認只允許輸入4個自定義字符。 先把上圖中”.”的地方輸入幾個隨便的字符,例如”qwer”,點最下面的”OK”來保存設置。 然 后打開 Eclipse的 文件(File) -> 導出(Export),在窗口中展開 常規(General) -> 首選項(Perferences)–>全部導出(Export all)然后點擊 下一步(NEXT)。然后點擊瀏覽(Browse)選擇任意的一個路徑,保存配置文 件,然后點擊完成(Finish) 。

    用記事本打開剛才保存的那個配置文件(擴展文件名:*.epf),按搜索”ctrl + F”,輸入剛才設置的”qwer”,找到剛才字符串。把”aaaa”修改為”abcdefghijklmnopqrstuvwxyz.”,然后保存,退出記事本。

    打開Eclipse的 文件(File) -> 導入(Import) 然后在打開的窗口里展開 常規(General) -> 首選項(Perferences),點擊下一步(NEXT) ,選中剛才修改過的配置文件,點擊 完成(Finish) ?,F在,再打開窗口(Window) ->首選項(Perferences) ,并依次展開 Java -> 編輯器(Editor) -> 內容輔助(Content)的Java的自動激活觸發器(Activation),會發現已經超過了4個字符,也就是說我們輸入任何字母和”.”都會有代碼提示了。

    posted @ 2010-10-27 11:37 colorfire 閱讀(1237) | 評論 (0)編輯 收藏

    [數據庫]Oracle釋放磁盤空間

    --查看當前系統版本--
    SQL> select * from v$version;
     
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
    PL
    /SQL Release 11.1.0.6.0 - Production
    CORE    
    11.1.0.6.0    Production
    TNS 
    for Linux: Version 11.1.0.6.0 - Production
    NLSRTL Version 
    11.1.0.6.0 - Production

    --查看數據表占用磁盤空間--
    SQL> select segment_name,segment_type,bytes,blocks,extents from user_segments where segment_name='T_FUSE_SEPARATE_SESSION_H_TEMP';
     
    SEGMENT_NAME                                                                     SEGMENT_TYPE            BYTES     BLOCKS    EXTENTS
    -------------------------------------------------------------------------------- ------------------ ---------- ---------- ----------
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
    T_FUSE_SEPARATE_SESSION_H_TEMP                                                   
    TABLE PARTITION        131072         16          1
     
    12 rows selected

    SQL
    > truncate table T_FUSE_SEPARATE_SESSION_H_TEMP;

    --清除空間--
    SQL> alter table T_FUSE_SEPARATE_SESSION_H_TEMP move;
     
    alter table T_FUSE_SEPARATE_SESSION_H_TEMP move
     
    ORA
    -14511: 不能對分區對象進行操作

    --直接刪除表--
    SQL> drop table T_FUSE_SEPARATE_SESSION_H_TEMP;
     
    Table dropped
     
    SQL
    > commit;
     
    Commit complete

    --重啟數據庫--
    SQL> shutdown immediate;
    #lsnrctl start
    #sqlplus 
    /nolog
    SQL
    > connect /as sysdba;
    SQL
    > startup;

    posted @ 2010-08-25 10:07 colorfire 閱讀(1632) | 評論 (0)編輯 收藏

    Python批量更新文件修改時間

     本地模擬測試準備腳本

    import os,sys,time,re
    ##########################################################
    #
    #Reset The ModifyDate of AAA File With FileName.                ##
    #
    #For Example: filename is AAA_01_20100703_2130_0683.TXT##
    #
    #Auther:qiuwg Date:2010-08-24                                                    ##
    #
    #########################################################
    def list_file_dir(level,rootpath):
        
    for path in os.listdir(rootpath):
            absolutely_path 
    = os.path.join(rootpath,path)
            
    if os.path.isdir(absolutely_path):
                list_file_dir(level
    +1, absolutely_path) 
            
    else:
                modify_file_date(absolutely_path)

    def modify_file_date(file):
        idx
    =file.rfind("/")
        path
    ="./"
        filename
    =file
        
    if idx > -1:
            path
    =file[:idx+1]
            filename
    =file[idx+1:]
        
    #mt=os.path.getmtime(filename)
        expression=r"^AAA_\d{2}_\d{8}_\d{4}_\d{4}.TXT$"
        
    if re.match(expression,filename):
            temp
    =filename.split("_");
            
    print path+filename+" modifydate >> "+temp[2]+temp[3]
            temptime
    =time.strptime(temp[2]+temp[3],'%Y%m%d%H%M')
            mtime
    =time.mktime(temptime)
            os.utime(path
    +filename,(mtime,mtime))

    if __name__ == "__main__":
        list_file_dir(
    1,"/ldata/fuse-udr-split/")
        
    print "Handed Over"

    增加了文件名正則匹配,和遞歸目錄查找。

    posted @ 2010-08-24 19:09 colorfire 閱讀(890) | 評論 (0)編輯 收藏

    JAVA為什么要生成Class文件

    題目是前兩天朋友突然提出的問題,一時間答不上來。

     

    后來仔細查了一下class文件的作用。我想javaer都清楚class文件是作為jvm的可執行文件,與C/C++的機器碼文件不一樣,它是字節碼文件。

     

    字節碼文件的好處:

    1、對源代碼文件進行語法檢查、語義分析,這一步驟消耗了大量的時間和資源,所以對jvm來說就要輕松多了。

    2、更加抽象,一次編譯到處執行,這是java的宣傳口號。當然字節碼文件是與平臺無關的。(這點是在別資料上看到的,感覺源代碼文件跨平臺也是沒問題的,例如python)

    3、字節碼文件可以看作是對源代碼文件的壓縮封裝,占用更少的存儲空間以及更快的傳輸速度。

     

    自己再擴展下問題:考慮大胡子James在設計java時為什么要求在執行之前,先編譯成class文件?如果是我,更傾向于將源文件直接交給jvm執行,省去javac的步驟進而由jvm自己編譯。好處是程序員不用關注編譯路徑是否配置、源代碼文件是否都編譯通過、是否有個別文件的class文件沒有生成、源代碼與class版本是否一致等問題。

     

    當然生成class文件的好處也很多:

    1、java在設計初期應是面向瀏覽器/嵌入式開發語言,字節碼文件的好處就體現出來了,由于class是在編譯過程生成的,所以jvm就不需要做的很大,同時java的運行環境也不要求很高,畢竟最耗時/耗系統資源的工作已經在前一步完成。

    2、不需要重復編譯,java是面向對象語言,涉及到大量的復用,jar/class的復用比直接復用源代碼省去了編譯時間。

     

     

    推薦看下深入java虛擬機這書

    posted @ 2010-08-21 11:02 colorfire 閱讀(681) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 日韩亚洲国产高清免费视频| 成人毛片18女人毛片免费| 国产人在线成免费视频| 可以免费观看的一级毛片| 国精产品一区一区三区免费视频| 四虎1515hh永久久免费| 亚洲国产精品乱码一区二区| 亚洲色图.com| 男女猛烈xx00免费视频试看| 久久综合国产乱子伦精品免费| 亚洲国产成人精品久久久国产成人一区二区三区综 | 免费国产精品视频| 亚洲伊人久久大香线蕉| 久久精品视频免费| 亚洲伊人成无码综合网| 亚洲精华国产精华精华液| 18以下岁毛片在免费播放| 国产亚洲精品无码成人| 男女交性无遮挡免费视频| 天堂在线免费观看中文版| 亚洲天堂福利视频| 91精品啪在线观看国产线免费| 亚洲啪啪AV无码片| 一级毛片高清免费播放| 国产成人免费ā片在线观看| 亚洲人配人种jizz| 精品成在人线AV无码免费看 | 亚洲av纯肉无码精品动漫| 国产在线观看片a免费观看| 在线观看亚洲人成网站| 免费成人高清在线视频| 亚洲日韩欧洲无码av夜夜摸| 特级无码毛片免费视频| 国产又黄又爽又刺激的免费网址| 国产成人精品日本亚洲18图| 欧洲一级毛片免费| 亚洲成综合人影院在院播放| 91精品全国免费观看含羞草| 亚洲激情在线观看| 最近高清中文字幕免费| 亚洲综合视频在线观看|