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

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

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

    當前訪問本站: hits

    yjhmily

    堅持走自己的路……

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      100 Posts :: 8 Stories :: 353 Comments :: 0 Trackbacks

    2007年1月16日 #

    原文出處:http://space.itpub.net/133735/viewspace-710117 
    總結的不錯!
    -------------------------------------------------------------------------------------------------
    生產環境最佳實踐
    1.linux 系統:
    1】關閉文件系統/分區的atime 選項
    Vi /etc/fstab
    在對應的分區項后面添加noatime ,nodiratime
    LABEL=/1 / ext3 defaults 1 1
    LABEL=/data1 /data ext4 defaults,noatime,nodiratime 1 2
    2】設置文件句柄4k+,目前該配置已經集成到啟動腳本中。
    Vi /etc/security/limit.conf
    * soft nproc 65536
    * hard nproc 65536
    * soft nofile 65536
    * hard nofile 65536
    3】不要使用large vm page (不要使用大內存頁選項)
    Linux 大內存頁參考:http://linuxgazette.net/155/krishnakumar.html
    4】用dmesg 查看主機的信息。
    2.linux 文件系統的選擇:
    Mongodb 采用預分配的大文件來存儲數據,我們推薦
    1】ext4
    2】xfs
    3.內核版本:
    網絡上對2.6.33-31 以及2.6.32 的表現持懷疑度, 而強力推薦2.6.36
    4.線程堆棧的尺寸
    默認的線程堆棧尺寸為10m ,調整為1m ,已經集成在啟動腳本中。
    項目過程中的總結與建議
    1.大小寫問題
    mongodb 是默認區分大小寫的,但是這會不會衍生出跟mysql 一樣的問題?(mysql 區
    分大小寫,導致windows 與linux 下的表名,字段名不一致)。
    如果無特別用途,建議表名,字段名全部用小寫字母。
    2.盡可能的縮短字段名的長度
    mongodb 的schema free 導致了每筆數據都要存儲他的key 以及屬性,這導致了這些數
    據的大量冗余。開發同事也許考慮到,從易讀性出發設計的key 基本比較長,基本都是按
    照起字面意思去設計的。這導致key 很長。對應的數據存儲占用了很大的空間。
    必要的時候,可以考慮建立一個key 與實際意義的map 表,盡量降低key 的長度。
    示例定義:
    // 基本信息
    static final String _ID = "_id";
    static final String STATUS_CODE = "sc";
    // 緩沖
    static final String DATE = "date";
    static final String MAX_AGE = "age";
    // 內容
    static final String CONTENT = "content";
    static final String CONTENT_TYPE = "ctype";
    static final String CONTENT_LENGTH = "clen";
    static final String ZIP = "zip";
    3. mongodb 單表最大索引數為64
    無索引排序的最大數據量為4M, 超過則報錯退出。
    建議where 條件盡量落在索引字段上,排序字段需要建立索引,索引的使用原則與oracle
    mysql 一致,盡量降低索引數量,索引長度。
    mongodb 的查詢每次只能用到一個索引,對數據的查詢不會“并發”執行
    例如: db.tab.find({'id'=1,'name'=2}) 如果‘id’,‘name' 列上分別有索引
    對查詢效率提升意義不大,如果索引為('id','name') 則大幅提升效率。
    4.mongodb 添加字段
    如果添加字段且帶有default 值,需要全部數據都要修改,這也是設計階段需要考慮的
    事情,這個問題的另外一種解法是應用代碼里做一次判斷。
    5.測試過程的密碼問題
    對于用作數據庫使用的Mongodb,在代碼測試階段都應加上密碼驗證,目前上線階段基
    本都會在密碼驗證方面出現問題(做緩存使用的可以不做密碼驗證)。
    6.數據源連接方式
    使用連接池模式,盡量減少認證帶來的性能額外消耗
    建議采用標準的uri 連接方式: mongodb://user:passwd@host:port,host:port/db
    7.Mongodb日志量
    正常情況下不需要開啟-v 日志選項。
    Mongodb 的-v 日志適合在開發環境的調試線上部署不建議采用這個參數,目前線上
    部署的情況,-v 日志一天也會有幾個G 的日志量,去掉這個參數,跟數據查詢相關的操作
    就不會記日志了,數據庫的內部的重要操作還是會寫日志的。
    8.連接數大小的設置
    Mongodb 驅動程序采用的連接池的方式連接到數據庫,目前從觀察到的情況是應用一
    開啟便根據變量的設置,建立全部連接,然后提供給程序使用,并且一旦其中某個連接
    到數據庫的訪問失敗,則會清空整個連接池到這臺數據庫的連接,并重新建立連接。
    而mongodb 對中斷連接的垃圾清理工作則是懶惰的被動清理方式,如果驅動程序端配
    置的連接數過大,一旦發生重連,則會導致mongo 端堆積大量的垃圾連接數據,導致
    主機資源耗盡。
    建議: mongodb 驅動的連接池大小的設置一般應該控制100 以下,一般情況30-50 足
    夠支撐應用訪問。
    9.鎖的問題
    Mongodb 對數據庫的訪問全部加鎖,如果是查詢請求則設置共享鎖,數據修改請求,
    則設置全局排他鎖,并且是實例級別的排他鎖。并且寫鎖會阻塞讀請求,如果長時間持有
    寫鎖,會阻塞整個實例的讀請求。
    部署建議:
    1】一般情況下,建議不同的應用不要合用一套示例。
    2】如果資源不滿足,需要合用,應該具有相同屬性的應用合用一套實例。
    例如合同mongo 的應用都是讀多寫少,防止一臺寫多應用阻塞讀請求。
    10.關于map/reduce問題
    mongodb 對map/reduce 的支持是單線程的,我們不建議在前臺使用該功能, group by
    是通過map/reduce 實現的,開發過程中,要慎用。
    11.安全問題
    1】Mongodb 運行在mongodb 用戶之上,并禁止mongodb 用戶登錄
    2】使用Mongodb 自帶的認證方法(adduser、auth)限制用戶訪問行為
    3】將Mongodb 置于內網環境中
    4】Mongodb 必須暴露在外網環境中的時候,使用IPTABLES 等網絡層技術進行防護
    5】網絡層面內容為明文傳輸,可以考慮存儲加密文檔,應用端,加解密。
    12.性能監控
    Mongodb 自帶有性能數據收集系統
    Mongostat 實時采集數據庫的多項指標,提供http console 端口號為應用端口號+1000。
    關注的主要性能指標:
    1】Faults:顯示Mongodb 每秒頁面故障的數量,這個是mongoDB 映射到虛擬地址空間,
    而不是物理內存,這個值如果飆高的話,可能意味著機器沒有足夠的內存來
    存儲數據和索引。
    2】Flushes:每秒做了多少次fsync,顯示多少次數據被刷新進了磁盤
    3】locked:寫鎖
    4】idx miss:索引未命中比例
    5】qr | qw:讀寫鎖的請求隊列長度。
    6】conn: 當前已經建立的連接數。
    其他命令:
    Db.stat()
    db.serverStatuse()
    Db.collection.stats()
    13.碎片問題
    Mongodb 數據庫如果數據修改很頻繁,會出現比較嚴重的空間碎片問題,表現在磁盤
    文件擴張與實際數據量不相符,內存不夠用,索引命中率低,查詢效率降低。
    碎片整理,目前我們采用的版本沒有太有效的方法。
    可以用db.repaireDatabase() 來整理數據庫,這個過程非常的慢
    如果是Master-slave 模式則相當于執行一次主從切換,然后從新建立從庫。
    如果是replSet 架構可以停掉數據庫,然后刪除數據目錄,從新從復制復制組中全同步數據,
    這個時候要考慮oplog 的尺寸。
    一個大體的步驟:
    1.】先調用rs.freeze(1200),將每個不想讓它成為primary 的機器讓它在1200 秒內無法成為
    primary(這步也可以不做)
    2. 】將primary stepDown,不出意外新的primary 會起來.
    3. 】將原primary kill 掉.
    4. 】刪掉所有data 數據(調用repair 很慢,真不如干掉重新來)
    5. 】再重啟動原primary 的進程
    6. 】以此循環完成整個復制組的全部重建。
    14.系統備份:
    Mongodb 目前不支持在線備份,只能離線備份。
    我們采用的架構為replSet 和Master-slave .
    基于我們目前的架構以及數據一致性要求,我們沒有安排相關的備份系統。
    15.應用代碼中Mongodb連接問題
    在有些應用在使用Mongodb 過程中會存在以下兩個小問題:
    1. 在應用啟動過程中,應用存在要求連接池中所有的連接都建立成功才讓應用正
    常啟動,這種做法不可取,因為存在網絡問題、Mongodb 拒絕連接或Mongodb 假死情況,如
    果沒加外部try catch 做防護,則Resin 不斷重啟也不能正常啟動端口。
    2.有些應用在使用Mongodb 中連接池配置了safe=true,w=1;這種配置意味著客戶端在
    插入數據或更新數據的時候,要求mongodb 必須將所更新的數據寫入磁盤并返回更新成功
    的信息給程序。如果碰上應用程序訪問壓力大,mongodb 就會反應遲鈍,并會發生假死可能,
    針對此情況,需要評估數據的一致性需求,做出合適調整。我們一般建議關閉此選項。
    16.補充開發方面的一些問題
    1】skip+limit翻頁,越往后面越慢,有資料說用數組元素的分頁可以解決,目前還沒
    試過,比較靠譜的做法是,先找出上次的id,翻頁的時候不用skip:
    last_row_id = ObjectId(‘....’);
    db.activity_stream->find({_id:{$lt: last_row_id },
    user_id:20 } ).sort( {_id:-1} ).limit(10);
    2】.只有真正需要的字段才select出來
    3】.更新的某條數據的時候,先查出來再更新會減小鎖的時間
    4】.只有返回很少結果的查詢才用索引,否則會加載太多數據,比沒有用索引還慢
    5】.屬性比較多的時候,建立分層的關系能夠提高查詢效率,否則每個記錄都要過一遍
    才能找到要的屬性
    17.關于硬件資源的選擇:
    虛擬機可以很好的隔離資源,并可動態的擴展。
    我們建議mongodb 的部署采用虛擬機的方式,每個虛擬機部署一個實例,使各節點分
    散在不同的物理機上,根據應用的前期預測,平衡虛擬機的之間的i/o。
    posted @ 2012-09-29 22:17 kangxm 閱讀(633) | 評論 (0)編輯 收藏

    adb shell

    # mount -oremount,rw /dev/block/mtdblock3 /system

    # pm list packages -f (列出apk和包名的對應關系)
    # cd /system/app (APK文件所在地)
    # rm Mms.* (rom自帶的短信)
    # exit

     

    adb uninstall com.android.mms

     

    返回Success,就說明卸載成功了

     

    注意..
    刪除之前, 最好用

    1. adb pull /system/app/xxx.apk .

    復制代碼

    給備份一下, 避免出錯(系統老是Force Close, 沒法用).
    出錯后, 可以用

    1. adb push xxx.apk /system/app
    adb shell

    # mount -oremount,rw /dev/block/mtdblock3 /system

    # pm list packages -f (列出apk和包名的對應關系)
    # cd /system/app (APK文件所在地)
    # rm Mms.* (rom自帶的短信)
    # exit

     

    adb uninstall com.android.mms

     

    返回Success,就說明卸載成功了

     

    注意..
    刪除之前, 最好用

    1. adb pull /system/app/xxx.apk .

    復制代碼

    給備份一下, 避免出錯(系統老是Force Close, 沒法用).
    出錯后, 可以用

    1. adb push xxx.apk /system/app
    posted @ 2012-08-10 17:56 kangxm 閱讀(539) | 評論 (0)編輯 收藏

    最近的機器內存又爆滿了,出了新增機器內存外,還應該好好review一下我們的代碼,有很多代碼編寫過于隨意化,這些不好的習慣或對程序語言的不了解是應該好好打壓打壓了。
    下面是參考網絡資源和總結一些在java編程中盡可能做到的一些地方
    -
    1.盡量在合適的場合使用單例
    使用單例可以減輕加載的負擔,縮短加載的時間,提高加載的效率,但并不是所有地方都適用于單例,簡單來說,單例主要適用于以下三個方面
    第一,控制資源的使用,通過線程同步來控制資源的并發訪問
    第二,控制實例的產生,以達到節約資源的目的
    第三,控制數據共享,在不建立直接關聯的條件下,讓多個不相關的進程或線程之間實現通信
    -
    2.盡量避免隨意使用靜態變量
    要知道,當某個對象被定義為stataic變量所引用,那么gc通常是不會回收這個對象所占有的內存,如
    public class A{
    static B b = new B();
    }
    此時靜態變量b的生命周期與A類同步,如果A類不會卸載,那么b對象會常駐內存,直到程序終止。
    -
    3.盡量避免過多過常的創建java對象
    盡量避免在經常調用的方法,循環中new對象,由于系統不僅要花費時間來創建對象,而且還要花時間對這些對象進行垃圾回收和處理,在我們可以控制的范圍內,最
    大限度的重用對象,最好能用基本的數據類型或數組來替代對象。
    -
    4.盡量使用final修飾符
    帶 有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String。為String類指 定final防止了使用者覆蓋length()方法。另外,如果一個類是final的,則該類所有方法都是final的。java編譯器會尋找機會內聯 (inline)所有的final方法(這和具體的編譯器實現有關)。此舉能夠使性能平均提高50%。
    -
    5.盡量使用局部變量
    調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧(Stack)中,速度較快。其他變量,如靜態變量,實例變量等,都在堆(Heap)中創建,速度較慢。
    -
    6.盡量處理好包裝類型和基本類型兩者的使用場所
    雖然包裝類型和基本類型在使用過程中是可以相互轉換,但它們兩者所產生的內存區域是完全不同的,基本類型數據產生和處理都在棧中處理,包裝類型是對象,是在堆中產生實例。
    在集合類對象,有對象方面需要的處理適用包裝類型,其他的處理提倡使用基本類型。
    -
    7.慎用synchronized,盡量減小synchronize的方法
    都 知道,實現同步是要很大的系統開銷作為代價的,甚至可能造成死鎖,所以盡量避免無謂的同步控制。synchronize方法被調用時,直接會把當前對象鎖 了,在方法執行完之前其他線程無法調用當前對象的其他方法。所以synchronize的方法盡量小,并且應盡量使用方法同步代替代碼塊同步。
    -
    8.盡量使用StringBuilder和StringBuffer進行字符串連接
    這個就不多講了
    -
    9.盡量不要使用finalize方法
    實際上,將資源清理放在finalize方法中完成是非常不好的選擇,由于GC的工作量很大,尤其是回收Young代內存時,大都會引起應用程序暫停,所以再選擇使用finalize方法進行資源清理,會導致GC負擔更大,程序運行效率更差。
    -
    10.盡量使用基本數據類型代替對象
    String str = "hello";
    上面這種方式會創建一個“hello”字符串,而且JVM的字符緩存池還會緩存這個字符串;
    String str = new String("hello");
    此時程序除創建字符串外,str所引用的String對象底層還包含一個char[]數組,這個char[]數組依次存放了h,e,l,l,o
    -
    11.單線程應盡量使用HashMap, ArrayList
    HashTable,Vector等使用了同步機制,降低了性能。
    -
    12.盡量合理的創建HashMap
    當你要創建一個比較大的hashMap時,充分利用另一個構造函數
    public HashMap(int initialCapacity, float loadFactor)
    避 免HashMap多次進行了hash重構,擴容是一件很耗費性能的事,在默認中initialCapacity只有16,而loadFactor是 0.75,需要多大的容量,你最好能準確的估計你所需要的最佳大小,同樣的Hashtable,Vectors也是一樣的道理。
    -
    13.盡量減少對變量的重復計算
    for(int i=0;i<list.size();i++)
    應該改為
    for(int i=0,len=list.size();i<len;i++)
    并且在循環中應該避免使用復雜的表達式,在循環中,循環條件會被反復計算,如果不使用復雜表達式,而使循環條件值不變的話,程序將會運行的更快。 
    -
    14.盡量避免不必要的創建
    A a = new A();
    if(i==1){list.add(a);}
    應該改為
    if(i==1){
    A a = new A();
    list.add(a);}
    -
    15.盡量在finally塊中釋放資源
    程序中使用到的資源應當被釋放,以避免資源泄漏。這最好在finally塊中去做。不管程序執行的結果如何,finally塊總是會執行的,以確保資源的正確關閉。 
    -
    16.盡量使用移位來代替'a/b'的操作
    "/"是一個代價很高的操作,使用移位的操作將會更快和更有效
    int num = a / 4;
    int num = a / 8;
    應該改為
    int num = a >> 2;
    int num = a >> 3;
    但注意的是使用移位應添加注釋,因為移位操作不直觀,比較難理解
    -
    17.盡量使用移位來代替'a*b'的操作
    同樣的,對于'*'操作,使用移位的操作將會更快和更有效
    int num = a * 4;
    int num = a * 8;
    應該改為
    int num = a << 2;
    int num = a << 3;
    -
    18.盡量確定StringBuffer的容量
    StringBuffer 的構造器會創建一個默認大小(通常是16)的字符數組。在使用中,如果超出這個大小,就會重新分配內存,創建一個更大的數組,并將原先的數組復制過來,再 丟棄舊的數組。在大多數情況下,你可以在創建 StringBuffer的時候指定大小,這樣就避免了在容量不夠的時候自動增長,以提高性能。 
    如:StringBuffer buffer = new StringBuffer(1000);  
    -
    19.盡量早釋放無用對象的引用
    大部分時,方法局部引用變量所引用的對象 會隨著方法結束而變成垃圾,因此,大部分時候程序無需將局部,引用變量顯式設為null。
    例如:
    Public void test(){
    Object obj = new Object();
    ……
    Obj=null;
    }
    上面這個就沒必要了,隨著方法test()的執行完成,程序中obj引用變量的作用域就結束了。但是如果是改成下面:
    Public void test(){
    Object obj = new Object();
    ……
    Obj=null;
    //執行耗時,耗內存操作;或調用耗時,耗內存的方法
    ……
    }
    這時候就有必要將obj賦值為null,可以盡早的釋放對Object對象的引用。
    -
    20.盡量避免使用二維數組
    二維數據占用的內存空間比一維數組多得多,大概10倍以上。
    -
    21.盡量避免使用split
    除 非是必須的,否則應該避免使用split,split由于支持正則表達式,所以效率比較低,如果是頻繁的幾十,幾百萬的調用將會耗費大量資源,如果確實需 要頻繁的調用split,可以考慮使用apache的StringUtils.split(string,char),頻繁split的可以緩存結果。
    -
    22.ArrayList & LinkedList
    一 個是線性表,一個是鏈表,一句話,隨機查詢盡量使用ArrayList,ArrayList優于LinkedList,LinkedList還要移動指 針,添加刪除的操作LinkedList優于ArrayList,ArrayList還要移動數據,不過這是理論性分析,事實未必如此,重要的是理解好2 者得數據結構,對癥下藥。
    -
    23.盡量使用System.arraycopy ()代替通過來循環復制數組
    System.arraycopy() 要比通過循環來復制數組快的多 
    -
    24.盡量緩存經常使用的對象
    盡可能將經常使用的對象進行緩存,可以使用數組,或HashMap的容器來進行緩存,但這種方式可能導致系統占用過多的緩存,性能下降,推薦可以使用一些第三方的開源工具,如EhCache,Oscache進行緩存,他們基本都實現了FIFO/FLU等緩存算法。
    -
    25.盡量避免非常大的內存分配
    有時候問題不是由當時的堆狀態造成的,而是因為分配失敗造成的。分配的內存塊都必須是連續的,而隨著堆越來越滿,找到較大的連續塊越來越困難。
    -
    26.慎用異常
    當 創建一個異常時,需要收集一個棧跟蹤(stack track),這個棧跟蹤用于描述異常是在何處創建的。構建這些棧跟蹤時需要為運行時棧做一份快照,正是這一部分開銷很大。當需要創建一個 Exception 時,JVM 不得不說:先別動,我想就您現在的樣子存一份快照,所以暫時停止入棧和出棧操作。棧跟蹤不只包含運行時棧中的一兩個元素,而是包含這個棧中的每一個元素。
    如 果您創建一個 Exception ,就得付出代價。好在捕獲異常開銷不大,因此可以使用 try-catch 將核心內容包起來。從技術上講,您甚至可以隨意地拋出異常,而不用花費很大的代價。招致性能損失的并不是 throw 操作——盡管在沒有預先創建異常的情況下就拋出異常是有點不尋常。真正要花代價的是創建異常。幸運的是,好的編程習慣已教會我們,不應該不管三七二十一就 拋出異常。異常是為異常的情況而設計的,使用時也應該牢記這一原則。

    文章主要是為了拋磚引玉,希望有更多牛人的指點

    謝謝的 xuanyuan 的建議:
    ===================================================
    7.慎用synchronized,盡量減小synchronize的方法
    re:同意,不過文中有個地方說錯了,使用synchronized關鍵字并不一定都是鎖定當前對象的,要看具體的鎖是什么。如果是在方法上加的synchronized,則是以對象本身為鎖的,如果是靜態方法則鎖的粒度是類。
    ---------------
    9.盡量不要使用finalize方法
    re:同意,其實不推薦用finalize方法的根本原因在于,JVM的規范并不保證何時執行該方法,所以用這個方法來釋放資源很不合適,有可能造成長時間資源得不到釋放。
    ---------------
    16.盡量使用移位來代替'a/b'的操作;17.盡量使用移位來代替'a*b'的操作
    re:個人不太同意這兩條。這樣做確實有更好的性能,但是卻犧牲了可讀性。這兩個操作符對很多程序員來說并不直觀。我認為在如今硬件價格不那么昂貴的情況下,略微犧牲一些性能,換來更好的可讀性和可維護性是好的選擇。
    ===================================================
    19.盡量早釋放無用對象的引用
    大部分時,方法局部引用變量所引用的對象 會隨著方法結束而變成垃圾,因此,大部分時候程序無需將局部,引用變量顯式設為null。
    例如:
    Public void test(){
    Object obj = new Object();
    ……
    Obj=null;
    }
    上面這個就沒必要了,隨著方法test()的執行完成,程序中obj引用變量的作用域就結束了。但是如果是改成下面:
    Public void test(){
    Object obj = new Object();
    ……
    Obj=null;
    //執行耗時,耗內存操作;或調用耗時,耗內存的方法
    ……
    }
    如果Object obj = new Object(); 如果這對象并不是大對象,這有必要嗎?Obj=null;只是告訴jvm這個對象已經成為垃圾,至于什么時候回收,還不能確定! 這可讀性也不好!
    ===================================================
    posted @ 2011-08-22 15:18 kangxm 閱讀(558) | 評論 (0)編輯 收藏

    提示/boot目錄空間不足,查了一些資料,最后把久的內核給卸載得以解決。

    1.首先查看自己使用的內核

    lxz@lxz-pc:~$ uname -a

    Linux lxz-pc 2.6.35-25-generic #44-Ubuntu SMP Fri Jan 21 17:40:48 UTC 2011 i686 GNU/Linux


    2.然后查看自己boot目錄,選擇需要卸載的版本
    lxz@lxz-pc:~$    cd /boot
    lxz@lxz-pc:/boot$  ls -l
    總計 35125
    -rw-r--r-- 1 root root   705861 2011-01-22 06:04 abi-2.6.35-25-generic
    -rw-r--r-- 1 root root   709370 2011-03-01 23:56 abi-2.6.35-28-generic-pae
    -rw-r--r-- 1 root root   128615 2011-01-22 06:04 config-2.6.35-25-generic
    -rw-r--r-- 1 root root   129056 2011-03-01 23:56 config-2.6.35-28-generic-pae
    drwxr-xr-x 3 root root     7168 2011-03-23 10:31 grub
    -rw-r--r-- 1 root root 10761551 2011-03-04 10:49 initrd.img-2.6.35-25-generic
    -rw-r--r-- 1 root root 10741569 2011-03-23 10:18 initrd.img-2.6.35-28-generic-pae
    drwx------ 2 root root    12288 2011-01-05 04:52 lost+found
    -rw-r--r-- 1 root root   165084 2010-09-25 01:14 memtest86+.bin
    -rw-r--r-- 1 root root   167264 2010-09-25 01:14 memtest86+_multiboot.bin
    -rw-r--r-- 1 root root  1831296 2011-01-22 06:04 System.map-2.6.35-25-generic
    -rw-r--r-- 1 root root  1873873 2011-03-01 23:56 System.map-2.6.35-28-generic-pae
    -rw-r--r-- 1 root root     1192 2011-01-22 06:06 vmcoreinfo-2.6.35-25-generic
    -rw-r--r-- 1 root root     1196 2011-03-01 23:57 vmcoreinfo-2.6.35-28-generic-pae
    -rw-r--r-- 1 root root  4294672 2011-01-22 06:04 vmlinuz-2.6.35-25-generic
    -rw-r--r-- 1 root root  4428048 2011-03-01 23:56 vmlinuz-2.6.35-28-generic-pae
    上面顯示的情況中,是我已經把linux-image-2.6.35-27-generic的結果

    3.卸載舊內核應該使用命令:
    lxz@lxz-pc:/boot$  sudo apt-get remove linux-image-2.6.35-27-generic

    4.查看/boot目錄:
    lxz@lxz-pc:/boot$ sudo du -m /boot           //以MB為單位顯示
    1    /boot/grub/locale
    2    /boot/grub
    1    /boot/lost+found
    36    /boot

    5.查看文件系統使用情況,和文件系統被掛在的位置:
    lxz@lxz-pc:/boot$  df  -lh
    文件系統            容量  已用  可用 已用%% 掛載點
    /dev/sda7              71G  7.7G   60G  12% /
    none                 1001M  244K 1001M   1% /dev
    none                 1007M  216K 1006M   1% /dev/shm
    none                 1007M  100K 1006M   1% /var/run
    none                 1007M     0 1007M   0% /var/lock
    /dev/sda8              92M   42M   46M  48% /boot
    posted @ 2011-04-06 12:09 kangxm 閱讀(3188) | 評論 (0)編輯 收藏

    在ubuntu環境下進行android開發,想把目標設備定為真實的手機。

    前幾天剛買了個defy就試了下,結果打開手機usb調試模式連接到電腦后,在eclipse里面手機名字顯示為一堆???號,且無法使用。

    需要以下的步驟才能連接到:

    1 把手機設備為usb調試模式并和電腦連接

    2 打開終端運行

        lsusb


        屏幕上會有一行顯示類似

        Bus 002 Device 012: ID 22b8 :xxxx Motorola xxxxxxxxxxxx

        這就是你的android手機了

    3 然后在終端運行

       sudo gedit /etc/udev/rules.d/50-android.rules

       并編輯其中加入行: SUBSYSTEM=="usb", SYSFS{"Motorola xxxxxxxxxxxx "}=="22b8 ", MODE="0666"

    4 接著運行

        sudo chmod a+rx /etc/udev/rules.d/50-android.rules

        sudo /etc/init.d/udev restart

    5 最后進入android sdk的tools目錄 platform-tools 運行

        sudo ./adb kill-server

        sudo ./adb devices

    試著重新打開eclipse,在運行參數里選則手動選取目標設備,這時在Device Chooser里面應該就可以看到正常顯示出名字的手機了。

    posted @ 2011-03-23 14:11 kangxm 閱讀(2069) | 評論 (2)編輯 收藏

            
            目前手上的項目需要用到memory cache,于是我選擇強大的Memcached。至于Memcached的強大先不在這里說了,
    后續有時間,我專門來介紹一下Memcached吧。今天只介紹下安裝和配置;
             直接進入主題吧;
             1、下載
                   Memcached下載地址: http://memcached.org/  我下載的最新版本v1.45
                   Libevent下載地址:http://www.monkey.org/~provos/libevent/   我下載的版本是libevent-1.4.13-stable
                  
              因為Memcache用到了libevent這個庫用于Socket的處理,所以需要安裝libevent

            2、先安裝libevent
                 # tar zxvf libevent-1.4.13-stable.tar.gz
                 # cd libevent-1.4.13-stable
                 # ./configure –prefix=/usr
                 # make
                 # make install
          
            3、再安裝Memcached,同時需要安裝中指定libevent的安裝位置:
                 # tar zxvf memcached-1.4.5.tar.gz
                 # cd memcached-1.4.5
                 # ./configure –with-libevent=/usr
                 # make
                 # make install
                 安裝完成后會把memcached放到 /usr/local/bin/memcached ,

            4、memcached的基本設置

                 啟動Memcache的服務器端:
                 # /usr/local/bin/memcached -d -m 100 -u root -l 192.168.1.192 -p 12000 -c 256 -P /tmp/memcached.pid

        -d選項是啟動一個守護進程,
        -m是分配給Memcache使用的內存數量,單位是MB,我這里是100MB,
        -u是運行Memcache的用戶,我這里是root,
        -l是監聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的IP地址192.168.1.192,
        -p是設置Memcache監聽的端口,我這里設置了12000,最好是1024以上的端口,
        -c選項是最大運行的并發連接數,默認是1024,我這里設置了256,按照你服務器的負載量來設定,
        -P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,

               如果要結束Memcache進程,執行:

               # kill  cat /tmp/memcached.pid

              也可以啟動多個守護進程,不過端口不能重復。

                
    posted @ 2010-04-20 12:19 kangxm 閱讀(650) | 評論 (0)編輯 收藏

    原處:http://www.javaeye.com/topic/644277

    《為什么畢業后5年同學間的差距會拉得如此巨大?》 引起大家不少的共鳴,今天繼續發布一篇勵志的文章,首先聲明:如果你是“憤青”或“類憤青”,對不起,請你離開,我怕我的觀點再次傷害你那“純潔”得幾乎不識人間煙火的心靈!

       如果你想從此改變自己,那么,就花上十幾分鐘的時間,仔仔細細把這篇文章看完。如果你想改變自己的命運,那么,從現在就開始行動。有時候我們之所以失 敗,99%的原因是因為說得太多,而行動得太少!那1%的人或許并不聰明,或許只是小學畢業,但是人家成功了,做了你的上司,那是因為人家善于用行動證明 自己,而不是嘴巴。我不敢保證看了我這篇文章就一定會使你平步青云,我沒有那個本事。如果你有一天飛黃騰達,也絕對與這篇文章沒有直接的關系。因為,你的 命運,只掌握在你自己的手中!

       同樣是打工,為什么你一個月只有2、3K,而唐駿的身價卻可以高達10億?

       或許你會反駁我,說人人都成為唐駿的概率有多大?的確,人人都成為唐駿的確不現實,但是經過努力,月薪達到8K、1W的總是大有人在吧?雖然不能達到大富大貴,但也不至于被女朋友看不起,付不起房貸首付款吧?

        很多人都喜歡抱怨,覺得這個世道不好。但現實是,在同樣世道不好的情況下,為什么有的人成功,而你卻碌碌無為?差距在哪里?怪世道不好嗎?還是怪自己沒本 事?我說這話可能你不愛聽。但是一個無法辯駁的事實是:你要是有本事,為什么月薪只有2、3K或者3、4K?事實勝于雄辯。所以,如果看到這里還想抱怨的 人,那么,也請你趁早離開。抱怨永遠解決不了問題。

        職場是一個復雜的綜合體。看到別人在職場上呼風喚雨,你認為很愜意,是么?但是他們風光表面的背后,又有幾個有看到他們曾經付出的巨大艱辛?這個社會其實 是很公平的。努力不一定有回報,但是如果不努力,就一定沒有回報。要怪,就怪自己投錯胎,怪自己的老子沒本事,當初沒有給你留下一大筆可以揮霍的資本!

       說歸說,對于那些想改變自己的朋友們來說,還是需要看清楚一些東西,有一些經驗也想和大家分享分享。同樣是職場人士,我也有我的經驗和感受。在打工的3年 里,我得到了7次加薪(同時進入公司的員工,加薪不超過2次的員工大有人在),順利地從員工做到了總監,是公司所有員工中成長最快的。我敢肯定,在看過這 篇文章的人當中,肯定有人比我更優秀。但是對于那些更渴望得到幫助的朋友們來說,我還是希望把自己的經驗寫出來,與大家分享。

    我自己寫了一篇文章,叫《決定前程的8件事,你做到了幾件?》在這里整理出來,希望能對大家有所幫助。

    一、一定要清楚自己未來的目標是什么
    很多人把職場想得太美好,其實不然。如果你沒有規劃好,你就會難免遇到各種各樣的問題:工作不開心;沒有前進的動力;工作不是自己想像的那么好;自己的才能無法發揮;看到以前的同學待遇如何如何,便受不了刺激,急切地想跳槽;當初為了生存而找的工作,根本就不適合自己……
    這是幾乎所有初入職場的朋友都會面臨的問題。而這些問題通常會在步入職場的1-3年之內最明顯(3年之后之所以不明顯,是因為你已經被現實折磨得 太久了,已經被種種不平現象同化了,因此也就習慣了。你曾經的種種抱負被現實碾得粉碎,于是,你也從一個志向遠大的年輕人一下子變成了一個碌碌無為、甘于 平庸、成天為了生計而奔走的普通打工者)。

       如果不及早解決這些問題,那么,你就會荒廢這3年的時間(有的人可能會更長),而對于一個職場新人來說,這3年至關重要,是鍛煉能力、積累資本的黃金3 年!一旦錯過,則要花費更多的時間,從頭再來,重新彌補!更有甚者,可能一輩子都無法彌補!這絕對不是危言聳聽!因此,如果你的職場年齡還沒有超過3年, 恭喜你,還有改變命運的機會。而一旦超過了3年,那么,你的每一次改變,都將付出巨大的代價!

       為什么要清楚自己的目標?因為,有了目標,才有行動的指南。知道自己想干什么,喜歡干什么,這才是你前進的最終動力。工作不開心、動力不足、盲目跳槽的最 根本原因是職業目標不清晰。沒有目標,便沒有了追求,于是,所有的行動只是為了掙一口飯吃。你根本沒有考慮過自己的未來應該端什么飯碗。
    或許你在30歲之前還有揮霍的資本,因為年輕嘛,做什么都不怕。連廣告上都說了,“30歲之前,有什么好怕的?!”而一旦過了30歲,你走的每 一步都必須要慎之又慎,因為:你要結婚、你要養活老婆孩子、你要供房貸、你要供養年邁的父母、孩子大了還要上學、父母年邁了需要照顧……等等等等,所有的 這些責任,都要你來承擔。如果沒有規劃,一旦出現問題,你只能自亂陣腳。

       人生的職業發展如同品牌塑造一樣,只不過你的產品就是你自己。你自己的發展目標,也就是你人生的品牌目標。有了目標,就要考慮該怎么走。每走一步,都應該 離目標更近,而不是更遠。所以,你每做一個決定的時候,要衡量這個決定對不對,唯一的標準就是:它是不是能夠幫助你離目標更近?如果不是,那么,趕緊住 手,因為,你走的路偏離了你的目標!再走下去,只能錯得更離譜!

       對于人生目標,涉及到職業生涯規劃的問題。這是一個老話題,很多人以為自己很了解了,其實卻遠不是那么回事。大家可以看一些相關書籍,但在中國,此類書籍 的最大問題就是說教性比較強,實用性非常差!很多人看了書之后依然一頭霧水,不知所措,看了之后反而更糊涂。我的意見是,最好還是找一些專門的機構咨詢一 下。
    注意:是咨詢,不是測評。二者的區別在于,咨詢的意義在于“為客戶提供可應用性的解決方案”,而測評則僅僅局限于“幫助你認識自己”,至于怎么 做,怎樣行動才能更接近自己的目標,不知道!因為測評的人都是專家,而國內的專家都是做研究的,沒有實戰經驗,甚至對職場升遷是怎么回事都不太清楚,怎么 可能指導你做實戰規劃?建議大家去做一下職業生涯規劃。如果現在不解決,恐怕未來3年你都會白白浪費,更有可能因此而毀了你的一生!
    記住:有了規劃,不一定能夠成功;但沒有規劃,一定不會成功!

    二、能力固然重要,但并不能代表全部

      這里所說的能力,是指專業技能。步入職場你會發現,能力其實并沒有你想像的那么重要,它并不是是步步高升的全部資本。你會發現一個能力不太強的人做了你的 上司,只因為他在這個公司干了10年——這說明“資歷”是你高升的本錢(這種現象,在國有企業和政府機構里特別明顯,因此,在國企工作的朋友和公務員同志 要注意了);有時候你會發現能力并不怎么強,但是與老板關系非常好的人通常能夠得到提拔——這說明“關系”也是本錢。在我原先工作的公司,有兩個特別明顯 的例子。

        一 個有著豐富工作經驗的男士,跳槽來到公司,能力也特別強,但就是與同事處理不好關系,自認為自己非常牛,喜歡主動當別人的“導師”,動不動就對別人的工作 指手畫腳,頂頭上司非常討厭他;而同時進入公司的另外一位女士,能力不是特別強,但是非常踏實、勤奮、與其他同事相處得也很好,能夠顧全大局。最后試用期 結束時,那位女士得到了公司的認可,而那位男士則收到了公司的辭退通知。

       在職場上,一定要對職場有清醒的認識,不要生活在夢幻當中,不要太理想化,不要標新立異,不要恃才傲物,不要認為有能力就可以走遍天下。專業技能固然重 要,但是職場發展看的是一個人的綜合素質。綜合素質高的人,才是職場發展的“潛力股”。這些綜合素質,包括溝通能力、人際關系能力、團隊合作能力、管理能 力、工作態度及敬業精神等各種“軟實力”。

        對于有些朋友而言,可能會對這些“軟實力”不屑一顧。很多人會說,如果老板喜歡愛拍馬屁的人,難道我就要委屈自己,學著去拍馬屁?很不幸,我會告訴你,答 案是肯定的,你一定要學會拍馬屁,否則吃虧的是自己。但要聲明的是,我不是教你詐。中國有句成語,叫外圓內方,用在人際交往上,就是說你與人相處要學會妥 善處理各種關系,但不可因此而失去了內心的準則,否則就變質了。尤其在中國這種注重人情的社會,這種人際交往的能力一定要好好練練。
    如果有時間,看一下《厚黑學》,了解一下社會現實,切忌不可因此而迷失了自己。

    三、要手足夠的“亮劍”資本

        有的大學生經常會跟我說,我畢業之后一定要找到一份月薪多少多少的工作,爭取做到什么什么職位。這時候我總是會耐心聽完他們的“遠大藍圖”,然后問一句:“你憑什么達到你的目標?你的資本是什么?”然后他就會啞口無言。

        我相信讀過這篇文章的人也會和這位大學生一樣,有著自己的偉大抱負,但是大學四年下來,你有沒有想到,要實現這些目標,你的資本是什么?對于很多已經身在職場的朋友而言,你晉升的資本又是什么?

       人生在發展過程中,很多時候都需要毫不猶豫地向別人展示自己的實力,要敢于展示,善于展示,這就是“亮劍”。因為這年頭,酒香也怕巷子深,是金子未必會發 光。相反,發光的倒是那些碎玻璃、爛瓶子。中國什么都缺,就是不缺人。茫茫人海,如果你一直都謙虛地默默無聞,那么,你就大錯特錯了。

       既然具備了“亮劍”的意識,那么,下一步你就要考慮到亮什么劍:我到底拿什么資本給人家看?對于職場上的朋友而言,你“亮劍”的資本又在哪里?你的業績提 升了嗎?你的能力提升了嗎?你在一年內看過多少本對自己的職業有益的書籍?你參加過幾次培訓班來為自己充電?如果沒有,你又憑什么讓老板為你加工資?靠抱 怨?你肯定會提前被職場淘汰出局!


    四、慎重對待第一份工作

    這一觀點,對于大學生來說,更有意義。
    現在整個社會、媒體、專家等等各種單位都一直在鼓吹“先就業,再擇業”。這種論調不是今年就有,而是多好多年前就出現了,并且屢屢出現,不絕于耳。相信當年我們大學畢業時候,也會有很多人相信了這一點吧?管它呢,騎驢找馬,先找份工作掙錢填飽肚子再說!

    但是根據本人自身的經驗及職場發展的現實情況來看,本人絕對不贊同這種說法。相信現在在職場上發展不順的朋友,多半也和第一份工作有關系吧?俗話說,“男怕入錯行,女怕嫁錯郎。”第一步錯了,以后就會經常犯錯。正所謂一步錯,步步錯。

    為什么第一分工作這么重要呢?原因有三:

    1、先入為主的觀念影響。
    具體是指,先聽進去的話或先獲得的印象往往在頭腦中占有主導地位,以后再遇到不同的意見時,就不容易接受。舉個最簡單的例子:在你的頭腦印象中, 諾基亞已經是手機的代名詞。如果有一天諾基亞生產出了一種“諾基亞牌電腦”,你的心里是什么感覺?非常不對勁對不對?這主是先入為主現象。

    我原先有一個同事,曾經在海爾工作過,她用的是海爾的手機,功能也非常不錯,但她總是說要換一部手機,我問她原因,她說,兜里裝著海爾的手機,總 感覺像裝了一個大冰箱,非常不舒服。為什么?先入為主唄!不要小看這一現象,其實對人的潛意識影響非常大。海爾的手機和電腦等IT產品賣得不好,相當一部 分是因為先入為主:大家普遍認為海爾是家電的代名詞,而不是IT的代名詞。

    對于求職的大學生來說,這一觀念同樣會影響你以后的發展。你的第一份工作會對你以后的工作產生影響,你跳槽時,你的新雇主也會通過你的第一份工作 經驗來判斷你是否能夠勝任這份工作。曾經有一個大學生,畢業之后想做策劃,就找了一家廣告公司。剛進公司時,因為文筆不錯,被安排到了文案的位子上。而與 他同時進去的另外一個人,恰恰因為文筆不好而被安排到了策劃的位子上。后來她屢次想轉行做策劃,但都是因為前一份工作經驗的影響,而始終沒有得到轉行的機 會。

    2、職場中不允許從頭再來。

    如果公司招聘的是有幾年工作經驗的老員工,一定要求是“相關經驗”!這一點至關重要!因為這樣的員工一般不需要培訓,可以直接上崗,會很快為公司 帶來最大的效益。如果是工作幾年以后再打算轉行的應聘人員,一般不會受到重視,一是不會給公司直接帶來效益,二是培訓起來也比較困難,思維已經固化。與其 這樣,倒不如招一名應屆生,白紙一張,可塑性強,發展起來潛力更大。

    所以,一旦有了工作經驗之后,再想轉行從頭再來,難度相當大。除非你認識公司的高層領導,可以得到一個機會,否則,很難。

    3、時間成本不允許。

    步入職場的前三年,是一個人職業成長的最重要、最關鍵的時期。如果你這時候還把工作的重點放在騎驢找馬式的轉行上,則會浪費你最寶貴的青春,你的成長也因此比其他人慢一步,而很多晉升的機會將因此而失去。
    所以,對待第一份工作,一定要慎重。找工作就像結婚,情愿不結,絕不能亂結。
    如果現在你剛剛步入職場還不到3年,勸你趁早做一個職業規劃,亡羊補牢,尤未為晚。一旦你結婚了買房子了,你再想彌補都已經晚了!

    五、要保持一種“空杯心態”

    給大家講一個故事。古時候有一個佛學造詣很深的人,聽說某個寺廟里有位德高望重的老禪師,便去拜訪。老禪師的徒弟接待他時,他態度傲慢,心想:我 是佛學造詣很深的人,你算老幾?后來老禪師又十分恭敬地接待了他,并為他沏茶。可在倒水時,明明杯子已經滿了,老禪師還不停地倒。他不解地問:“大師,為 什么杯子已經滿了,還要往里倒?”大師說:“是啊,既然已滿了,干嘛還要倒呢?”

    禪師的意思是,既然你已經很有學問了,干嘛還要到我這里求教?這就是“空杯心態”的故事哲理。它最直接的含義就是一個裝滿水的杯子很難接納新東 西,要將心里的“杯子”倒空,將自己所重視、在乎的很多東西以及曾經輝煌的過去從心態上徹底了結清空,只有將心倒空了,才會有外在的松手,才能擁有更大的 成功。這是每一個想在職場發展的人所必須擁有的最重要的心態。它告訴我們一個道理:做事的前提是先要有好心態。如果想學到更多的學問,先要把自己想象成 “一個空著的杯子”,而不是驕傲自滿。

    我見過很多的大學畢業生,剛進入公司時常常處處吹牛,說自己在學校如何如何,本來可以找到更好的工作,迫不得已才來到了這里等等之類的話,好像這 家公司委屈了自己。在這里提醒一下那些即將步入職場的大學生:這種心態千萬要不得!不要認為自己很牛。還是那句你不愛聽的話:中國什么都缺,就是不缺人! 話又說回來,你要是這么牛,為什么不像比爾?蓋茨、戴爾、喬布斯那樣,大學沒畢業就退學去創辦一家世界級的大企業?火車不是推的,牛皮不是吹的。
    你要是有本事,就用事實證明給人家看,而不是成天抱怨!

    對于身在職場的朋友而言,這一心態同樣重要。中國有一個詞,叫“虛懷若谷”。我們都知道,優秀的人有極高的素養,甚至是虛懷若谷,他們都有一個能 包容一切的胸懷,有了這樣的胸懷,你在職場上就會獲得別人的尊重,就會獲得更多的發展機會。類似的詞還有“大智若愚”“大巧若拙”等等,不多說,自己去體 會。

    六、要懂一點做人的常識
    職場就像一個大熔爐。在職場中,不僅僅是要掙一碗飯吃,更重要的是學會做人的道理。如果連最起碼的道理都不懂,你不僅得不到別人的尊重,更會失去更多的發展機會。因為,在中國,人際關系也是生產力。中國有句古話:得道多助,失道寡助。

    我見過很多人,雖然已經工作多年,但對于做人,卻連一點最基本的常識都不懂。做人的道理萬萬千,但其中最重要的,莫過于以下三條:

    1、嚴于律己,寬以待人。
    職場不同于生活。雖然職場上同事之間的相互關系表面上會比較好,但你總會感覺到缺點兒什么。非常明顯的一點,就是大家都在相互利用,人與人之間難免會因為利益關系而鬧得不愉快。這時候,你若是錙銖必較,勢必引起同事之間的不愉快。
    在這種情況下,為避免糾紛,同時也為了贏得他人的尊重,你要學會大度一些,容忍一些。出現問題時,首先想想是不是自己出了問題,而不是一出現問題就去找別人的責任(長此以往,你的心態就會變得非常不平衡,因此也難以容人了)。
    嚴于律己,寬以待人,是十分必要的。長期下去,你會積累很多的人脈,會得到大家的尊重;而你需要幫助時,大家也樂意伸手。
    2、學會傾聽。
    無論什么時候,傾聽都顯示出一個人的職業素養。與別人交談時,一定要記住等對方說完話時再發表意見,切不可中途插話或者打斷他人。通過這種方式,大家都樂意和你交往,同樣也會有助于樹立你個人在大家心目中的形象。
    3、誠實守信。
    職業中固然處處充滿了相互利用、利益至上的現象,在這種情況下,誠實守信仍然不失為一種傳統美德。誠信同樣可以帶來效益。只要你誠實守信,長此以 往,大家都會對你形成一種良好的印象,都愿意和你交往。而那種兩面三刀、當面一套背后一套的人,固然可以占一點小便宜,但要想成就大事業,誠實守信的基本 原則絕對不能丟。
    七、要學會遵守游戲規則
    我為什么在文章一開頭就提醒“憤青”或者“類憤青”們不要看這篇文章?
    因為他們多半是放蕩不羈、不會遵守游戲規則的主兒!很多人都會感覺到,在職場上發展,不僅會受到各種約束,而且處處都充滿了不公平現象。比如上班 遲到老板會扣你工資,但你加班的時候卻從來沒有拿過加班工資。這是最常見的一種現象,其他不公平的現象也比比皆是,這里就不多就了,大家都有體會。
    在這個世界上,不要奢求公平。那只是一種烏托邦式的理想,從來都不存在于現實社會中。
    員工和老板之間的關系,就好像是一場游戲。是游戲就會有游戲規劃,否則,游戲就玩不下去。但是,游戲規則是誰制定的呢?當然是老板,各種利益也偏向老板!身在職場的你,一開始看不慣這種現象,是很正常的,因為你初涉職場,本質上還是比較純潔的。
    但你一定要學會慢慢接受這種游戲規則。不要試圖改變這種規則,因為在老板面前,你沒有太多的話語權。說得再難聽些,你只是一個打工的,混口飯吃,給你吃就不錯了,還嫌飯涼?如果不想做,可以離開。還是那句話:中國什么都缺,就是不缺人。
    記住這句話:“如果你不是游戲規則的制定者,你的選擇只有兩條:要么屈從,要么離開!”
    八、機會只垂青有準備的人
    無論你再怎么抱怨,再怎么不開心,飯還是要吃的,覺還是要睡的,工作還是要做的,未來的事情永遠只屬于自己的。買房子也好,娶老婆也罷,壓力只有 自己扛,老板不會為你操任何心。與其有時間去抱怨,但不如踏踏實實靜下心來,好好提升自己的基本功,用事實證明自己的本事,讓別人對你刮目相看,萬不可因 為自己的書生意氣而自做一個自毀前程的“憤青”。
    當然,你的準備是多方面的,除了專業技能外,其他的輔助技能也是非常必要的,比如溝通能力、人際關系處理能力、管理能力等等。當然,更重要的是 要為自己的未來做一個規劃,清楚地知道自己的目標是什么,應該怎么努力才能實現。適當的時候也要充充電,不要舍不得那半個月的工資,這也算是為自己的未來 進行投資,有什么舍不得的呢?如果你現在不學會“舍”,以后將永遠也“得”不到。
    有時候,你之所以發展得不好,不是因為沒有機遇,而是因為你沒有準備好,導致機遇與你擦肩而過。這個社會就是這樣,再怎么不合理,再怎么不公 平,但是發展機遇是時時都會面臨的,只看你有沒有準備好。你要是真的練就了一身令人刮目相看的真本事,說不定明天就有人請你做某世界500強的總裁也不一 定呢。
    以上只是本人做HR多年的經驗積累,希望對大家有所幫助。作為過來人,我真誠地希望在職的朋友們及即將就業的大學生們也能夠以一種“空杯心態” 看待這篇文章。有時候,過來人的經驗是非常有價值的,那是他們用時間和金錢換來的血汗教訓。有的人偏偏不信這一套,認為只有自己親自體會過,才能知道是什 么滋味,別人的經驗只是別人的,和自己無關。如果你這樣想,那我也沒有辦法。我也要有一種寬容的心態,冷靜看待那些“不見棺材不掉淚,不撞南墻不回頭”的 “人才”,不是嗎?參加一下培訓,適當充一下電,為未來做更好、更完善的準備,才是積極的人生態度。記住:抱怨永遠解決不了問題!)

    posted @ 2010-04-16 12:24 kangxm 閱讀(507) | 評論 (0)編輯 收藏

           假設我們現在有user和org兩張表:
    1、user用戶表 字段包含:id、name、orgId 其中orgId標示該用戶所屬的組織
    2、org組織表   字段包含:id、name
    兩表之間的關系很簡單,一個組織下會擁有多個用戶,一個用戶屬于某個組織。

             在解析之前先普及一下數據庫空值(null)的概念:
    有很多時候我們都能碰到某表中某字段值為空的情況,空值不等同于字符串中的空格、空串
    也不等同于數字類型的0,所以,一般我們用IS NULL 關鍵字來檢索有空值字段的記錄。而不是用!=、<>這些判斷符。

            接下來,我們給示例庫表中做上一些測試數據,如下圖:
                                 

            有了這些數據,咱們就可以進入正題啦:
    一、左連接、右連接
            A Left join(左連接)優先解出左表中所有的記錄,包含右表中沒有匹配到得記錄。
            A Right join(右連接)優先解出右表中所有的記錄,包含左表中沒有匹配到得記錄。

    左右連接是相互對應的,所以在這里一并解釋。
    羅嗦一句如何區分左表和右表:
            在JOIN的左邊出現的表叫左表,在JOIN的右邊出現的表叫右表
    具體體現在SQL語句上即:(以左連接為例)
            左連接語句:SELECT user.name,org.name FROM user LEFT JOIN org ON  user.orgId = org.id
            右鏈接語句:SELECT user.name,org.name FROM user RIGHT JOIN org ON  user.orgId = org.id
    顯而易見,該SQL中,user為左表、org為右表
    下面我們來看看這兩個語句分別執行后的效果:
                                       
            為了更好的看出左右連接的效果,我們再來看看內連接查詢出來的效果
            內連接:SELECT user.name,org.name FROM user JOIN org ON  user.orgId = org.id
    內連接語句執行后的效果:
                                                        
            很明顯:
    內連接與左連接相比,檢索結果集中漏掉了user表的user3數據
    內連接與右連接相比,檢索結果集中漏掉了org表的org4數據

    posted @ 2010-03-14 18:25 kangxm 閱讀(674) | 評論 (0)編輯 收藏

           
            進入10年了,先回顧一下吧:

            08年注定是變化的一年,該死的金融危機上來就搞倒了我待了3年多的公司,到現在還灰常的懷念以前公司的工作氛圍和那些一起奮斗的日子。那時候做項目,真的是把項目當自己的孩子來養,很有感情;懷念ing.

            09年注定是壓抑的一年,生活壓抑,工作壓抑,很多壓抑。。。壓抑到實在不想糾纏。

            10年注定是拼搏的一年,勾畫了美麗的圖,也承諾了很多事,必須做了。

            10年的那些事在這里留個記錄吧,年終的時候再來看;

            1、ZZ的那個網站,我已經答應下來了,不管多難也要搞出來;
            2、WX的那些活,希望我能做的比去年更好,也希望他那邊能再多接一些新活;
            3、公司的那攤事,走一步看一步吧,畢竟09年失望太多,希望能找到合適的契機和方向;
            4、考駕照、買車,今年必須實現了,要不5年計劃沒法劃上句號了;


            
    posted @ 2010-02-24 10:15 kangxm 閱讀(467) | 評論 (2)編輯 收藏

    早上讀RSS,看到不錯的東西,抄錄下來


    1、? 堅持不懈的向團隊傳達目標

    2、? 崇拜質量

    3、? 每天都和項目成員聊上兩句

    4、? 敢于說不,慎于說不

    5、? 幫助項目成員解決困難,而不是幫他干活

    6、? 敏感,不將風險留到最后才面對

    7、? 懂得歡慶

    個人覺得總結的蠻好,簡單易懂,回想我工作這幾年:
    不管作項目組成員,還是作Team Manager;
    不管項目成功,還是失敗;
    以上都比較有感觸

    posted @ 2009-05-12 11:24 kangxm 閱讀(440) | 評論 (0)編輯 收藏

    不小心把快速啟動里面的“顯示桌面”圖標搞沒了,懶得折騰,所以一直用WIN+D,還是覺得不太習慣。總覺得少了點什么......

    后來還是把“顯示桌面”找回來了!記錄一下

    以前用過一個自己編寫“顯示桌面.scf”文件的辦法干過,具體操作如下:

    記事本輸入:[Shell]Command=2IconFile=explorer.exe,3[Taskbar]Command=ToggleDesktop另存為"顯示桌面.scf",文件類型為所有文件。然后將文件拖到快速啟動欄即可;


    不過有點麻煩,這次?google了一下,找到一個更簡單的辦法;

    “start”-->“Run”-->輸入“regsvr32 /n /i:u shell32”

    顯示桌面.jpg

    這個時候你會發現你的快速啟動欄里面就有了“顯示桌面”
    posted @ 2009-04-21 10:29 kangxm 閱讀(554) | 評論 (0)編輯 收藏

         摘要: 轉:唐駿:我的創業第一步
    尋找新的發展空間
      我的人生其實經歷了很多次失敗。考大學是一次失敗,留學日本讀研究生又是一次失敗。我和板倉老師發生沖突后私逃美國的行為,無論如何都是不妥當的。但從另一個角度講,從日本到美國的人生環境轉變,是我的主動選擇,也為我未來的職業生涯創造了新的契機。

      閱讀全文
    posted @ 2008-12-18 11:33 kangxm 閱讀(496) | 評論 (0)編輯 收藏

    例子在:\jasperreports-3.1.2-project\jasperreports-3.1.2\demo\samples

    用ant工具運行就可以看到效果

    1. alterdesign

    該例子演示了報表編譯后,在報表展現的時候如何動態的控制其中的元素
    比如讓某一個矩形變色或其他

    2. antcompile

    演示如何讓 ant 來編譯
    3. chart

    演示了如何在報表中添加圖像,JasperReport是用Scriptlet的方式
    往報表中添加圖像,而Scriptlet是調用也是開源的jfreechart的Api來
    生成圖形,去jfreechart看一下,該工具能的圖形生成能力也很強
    4. datasource

    演示了如何在報表中使用各種數據源,能夠使用beanarray
    beancollection,也可以用自定義的數據源,只要繼承了JRDataSource的
    兩個接口,這個能給用戶提供非常大的靈活性,報表的數據不用局限于一
    條Sql語句,也可以使用存儲過程,對生成報表中的數據也可以排序,二
    次檢索,等等
    5. fonts

    各種字體的演示
    6. horizontal

    演示了水平分欄的報表,演示報表中分了三欄,其中還用到了
    textFieldExpression,就像if語句的效果來選擇輸出的內容
    7. hyperlink

    演示了各種樣式的鏈接
    8. images

    演示了如何在報表中加入圖像以及圖像的顯示方式
    9. jasper

    演示了分組分欄的報表,演示中用了2次group
    10. jcharts

    演示了調用另一個開源的API jcharts來往報表中加入分析圖形,原理同
    上chart,如果jfreechart都還不能滿足你分析圖形的要求,那到jcharts
    里找找看吧,說不定有
    11. landscape

    演示橫向的報表
    12. nopagebreak

    演示比如在IE中不分頁的方式打印出報表的內容,通過這個演示也可以
    了解報表輸出如何配置參數
    13. noreport

    演示了如何直接通過java程序生成JasperPrint對象來輸出
    14. noxmldesign

    演示了如何直接通過java程序生成JasperDesign對象來動態的生成報
    表,根據這個例子,用戶可以作出自定義選列的報表,當然比較麻煩,
    而且肯定自己要補充他的API庫
    (JasperReport真是強大啊,呵呵)
    15. pdfencrypt

    演示了pdf的輸出方式,可以給pdf文件加密碼,其實就是pdf輸出方式的
    參數配置,具體有那些參數可配置,去看看API吧
    16. printservice

    演示了如何直接打印報表
    17. query

    演示了如何讓查詢的sql動態起來,比如你可以通過一個Jsp頁面傳
    報表的sql的where條件,order條件,甚至整個sql語句
    18. rotation

    演示了文字縱向顯示的報表
    19. scriptlet

    演示了如何繼承JRDefaultScriptlet,并加入自己的處理語句,這個功能
    可是很強大的哦,看看這些接口
    beforeReportInit() afterReportInit() beforePageInit()
    afterPageInit() beforeColumnInit() afterColumnInit()
    beforeGroupInit(String groupName)
    afterGroupInit(String groupName)
    看看這些名字就知道你能完成那些功能,比如顯示一列數據后,馬上跟
    上該列數據的分析圖形,當然你也可以加上自己的方法并在報表中調用
    20. shapes

    演示了JasperReport中自帶的圖形,及能配置的參數
    當然你也能繼承或者覆寫JasperReport中的Api生成你要的圖形,
    21. stretch

    演示了如何處理報表中數據拉伸以及帶來周圍的線及框的拉伸,
    你能了解到雖然黑框式表格不是JasperReport中缺省的展現方式,
    但在JasperReport中不難實現
    22. subreport

    演示了子報表,還告訴你一個報表中可以有n個子報表,子報表中還可以
    嵌套子報表
    23. tableofcontents

    演示了如何生成一個有目錄的,復雜的報表
    24. unicode

    演示了各種 字符編碼
    25. webapp

    演示了如何把報表放到一個JavaWeb項目中,可以用Jsp Servlet
    applet,筆者做了一個有參數頁面,可以選擇html pdf applet
    輸出方式的報表,有興趣的 我可以在后面放上代碼
    posted @ 2008-12-09 16:59 kangxm 閱讀(1093) | 評論 (0)編輯 收藏

         摘要: SiteMesh:一個優于Apache Tiles的Web頁面布局、裝飾框架  閱讀全文
    posted @ 2007-09-28 15:34 kangxm 閱讀(9946) | 評論 (3)編輯 收藏

         摘要: 最近經常看一些朋友寫的源代碼,總是感覺編碼規范問題還沒有成為大家的關注點,導致代碼的通用可讀性相對比較差;

    所以在此嘮叨幾句編碼規范(以struts2+spring2+hibernate3架構的項目為例),大家各取所需,歡迎拍磚!
      閱讀全文
    posted @ 2007-09-27 13:31 kangxm 閱讀(3639) | 評論 (10)編輯 收藏

         摘要: 教你十招優化WinXp系統盤  閱讀全文
    posted @ 2007-09-21 16:13 kangxm 閱讀(994) | 評論 (2)編輯 收藏

    ??? 水木周平:“中國99%的白領以及他們的家庭即將面臨破產。而且是必然破產!無路可逃!這件事可能是發生在未來2-10年。你可以盡量去懷疑這個數字。但它必然發生,絕非危言聳聽。”
    ???
    ??? 就如我預言中國國營企業職工必然失業一樣,在當時來說沒人信。但確實會發生。因為在中國這樣一個發展中國家,其必然以不斷的以通貨膨脹和改革手段來換取經 濟的發展。而每一次改革所帶來的陣痛都是由百姓來承擔的。無論是上山下鄉時迷茫的知青們還是改革開放帶來的大量國企紛紛倒閉時大量下崗職工。如果他們能有 一定的前瞻性的話,那么我想他們也許會為自己留一點后路。但是由于過分相信文件以及過分相信生活不會突變,所以才導致了他們的人生悲劇。有人說政府不會坐 視不理白領破產,其實政府當然不愿意。可有的事情……怎么說呢。想想當年的下崗職工吧。引起了那么大的社會震動。又能怎樣呢?今天的白領明天破產的時候也 那樣而已。

    ??? 而改革開放20多年來,中國的經濟發展快速騰飛。但舊的體制并沒有完全更改。各種重要行業依然施行的是政府壟斷機制在運轉。如:銀行,金融,冶金,能源, 信息,運輸,醫療,教育,土地。在改革開放初期我國不可能對這些東西進行全方面的改革開放。但到了今天,壟斷經營所帶來的矛盾日益突出。首當其沖的就是房 地產。由于我國的法制不健全,尤其是金融以及改革領域里出現了各種失誤導致房地產節節攀升。隨著房地產的增加以及外來人口向大城市集中。所以城市新民工也 就是所謂的“白領”收入表面上也在提升,以北京為例3000-15000元人民幣的月薪處處可見。但這一部分收入主要用于支付租房或還貸。

    ??? 為了深入地了解為什么99%的白領家庭會破產,我們就必須先了解房價為什么會這么高?高在哪里?資金是運轉的?(這里的白領指買房或者準備買房族。)以及發展趨勢帶來的相關效應。本文會分三個階段向你闡述。
    ???
    ??? 1:導致房價爆漲的第一個因素:銀行競爭下的貸款開放。--水木周平

    ????其實房價的爆漲的因素主要是因為百姓在替政府所犯下的錯誤買單。比如以前一個開發商通過某銀行貸款了1000萬開發了一個房子。如果還不起那他就 倒霉了,因為所有的銀行都是一個體系,你欠了錢沒還就再也沒有翻身的機會。但是中國在銀行改革的基礎上開了一條口子,為了各銀行之間的競爭所以把工行,農 行,建設銀行等等全部獨立運營。這本來是好事。但問題是這些銀行都不是私有的,而是國家的。我們不難想象。當一個開發商從工行貸款1000萬的后果。他只 需要用500萬來開發房子,然后把售價提升,再把這個開發中的房子按他的售價標準抵押從農行再貸款2000萬,然后再用這2000萬中的1000萬開發一 套售價更高的房子來找建設銀行抵押貸款4000萬。就是這樣一個滾雪球的瘋狂貸款模式。房子賣不賣得出去不重要,關鍵是房價要高,不得降價。反正銀行的錢 不是私人的,所以稍微疏通一下行長加之又有“合法的”高零售價的樓盤做抵押所以自然就越來越好從銀行貸款。

    ??? 那么這樣造成的結果就是,房子價格只攀不跌!因為不能跌!一跌銀行貸出去的款就再也回不來了。這可是政府的銀行,政府的錢!所以為了堵住這個資金黑洞一些 被收買的專家、媒介便開始瘋狂制造輿論用各種輿論手段威逼利誘人買房子。比如土地資源嚴重緊張,再不買房將來就只能住在郊區呀之類的。導致人們不得不去買 房。其實住不了市中心這種情況這根本不可能發生,城市居民是一個新老替換的過程,要上班的住城里,老人退休喜歡住郊區。只要人口不爆炸就不會出現上班族住 不了市中心的情況。雖然這些輿論造成了很多人買房子,但是僅僅是這樣,房價還沒有高到現在這樣的離譜。緊接著政府又犯了第二個錯誤。


    ??? 2:導致房價爆漲的第二個錯誤:中國特色的按揭。--水木周平

    ????按揭本來是一種西方很流行的制度,也很合適。但這個制度一旦運用到中國就有點問題了。因為從大的體制上來說。所有銀行都是國家的,而不是私人的。所以貸款這個關口就不可能控制得住。只要文件上說得過去,人們就能貸到款。

    ????為了早日緩解第一個錯誤所帶來的資金黑洞。政府開始實行個人按揭制度來售房。還經常舉什么美國來太太和中國老太太的例子來誘惑人們去按揭。確實有 人按揭了,而且是瘋狂的按揭。只要和銀行有點“路子”的人。他們先按揭一套80萬的房子,自己出10萬首付然后再從銀行貸出70萬。之后再把這個房子抬高 價格到180萬出售。這個時候他們的親戚或者老爸老媽再去買下,也用按揭的方式自己出首付30萬再從銀行貸出150萬。然后就不管了。他們不還貸款怎么 辦?銀行愛收不收。反正根據合同我還不上錢你可以收走房子,我們兩不相欠。

    ????所以轉了一圈,抬高了幾倍價格的房子又回到了政府回到了銀行手里。這就解釋了為什么很多新樓盤剛開始修就被“炒房團”買走了。他們炒的不是賭房子會升值。而是拿了房子去收拾銀行。

    ????銀行拿到這個房子怎么辦?更不敢降價了。只好再加點價接著賣。所以普通老百姓現在根本別想買到真正合理價格的房子!即使你直接從開發商手里買來的 房子都說不定已經轉了好幾次手又回到銀行以及開發商手里的了。說句不好聽的現在8000/平的房子里,有只有2500才是房價,有5500都是以為決策錯 誤帶來的資金黑洞!也就是說你正在替人任勞任怨的擦屁股。


    ??? 3:第三個問題:白領家庭何時破產??--水木周平

    ????那么我們研究了房子價格為什么會漲,再來研究一下中國城市所謂的白領家庭破產的必然性。

    ????首先國外白領收入確實是高,但是高得有價值。而中國所謂的白領則普遍素質較差。中國企業內耗嚴重。人人相輕,人人頑固。所以難怪外資企業一進入中 國大陸市場就開始驚呼:“在中國辦企業招不到人!”對此我也深有體會。那有人會說:“既然現在的白領不值這個身價,那水木周平你說說為什么他們還能拿到這 樣的薪水呢?”

    ????其實,這由于房地產的火爆造成的一個量子效應。銀行損失的資金大量的經過少數人之手流向了市場。這些人開始在中國的其他領域瘋狂投資。因為他們自 己也知道房地產就快要崩盤了。他們這樣一輪又一輪的投資熱潮正在快速消化這些資金,他們投資互聯網,投資高新技術,投資娛樂,投資很多很多。但起碼付出的 工資要夠員工付房子月租或者月供吧。所以正是因為房價的高漲所以造就了中國城市人口工資水平的相對提升。不相信你自己算算你所在的城市白領階級平均收入一 旦交完每月的房錢,手上還能剩多少錢?我想這個問題就不用我再羅嗦了吧。大家心理有數。所以我可以說一旦房地產崩盤緊接著崩潰的就是你的工資。

    ????有很多很多我認識的白領們都購了房。他們的算盤很簡單:“兩口子除開各種稅收保險每月純收入還余12000。交3000房錢算什么?我還能再買一 套呢!”是的不算什么。但因為房子貴所以什么東西都貴。吃的貴,交通貴,學費貴,醫療費用更貴!!!所以交了房錢你再除開生活費用就基本上一分錢存不下 來,就算存點也趕不上正常的通貨膨脹率。問題是如果能一直保持這個現狀的話,理論上說應該沒事。你這二十年賺來的錢正好可以彌補政府的兩個錯誤帶來的虧 損。

    ????但問題也出在這里。隨著WTO5年緩沖期的結束,具體時間應該是在2006年的12月31日。大量外資通訊,銀行,醫療,保險等等公司都會陸續進 入中國。到時候沒有人能阻止你把錢存入花旗,存入匯豐。請問一下到那個時候誰愿意把錢存在呆帳壞帳如此之多的中國國有銀行呢?即使政府再怎么采取措施也可 能擠兌,所以到時候會發生什么現在還很難說。但有一點可以肯定的是到時中國國有這些銀行的壓力將變得非常巨大。貸款就會難上加上,因為銀行根本無錢可貸! 同時大量具備高素質人材的外資企業進入中國必定帶來市場的強烈沖擊和大量現有企業的倒閉以及白領失業。也就是說。一旦外資企業加入競爭,中國現有的99% 的白領都將面臨大環境下的就業壓力!

    ????而且外資銀行一旦積累了資金開始投資房地產,那么由于它們是正常的操作流程所以造出來的房子就會便宜,其必然拉動全國房地產大幅下跌。如我剛才所 說,房價一跌,緊跟著跌的就是你所在的企業的工資收入!可你之前買的房子還貸價格并不會降低或者減少,所以你將無力支付高昂的貸款。那么你的的房子會被銀 行收走,你的存款會被直接凍結。所以未來中國城市中的白領們最大的可能是和幾十年前的中國國有企業職工一樣。辛辛苦苦二十年,到頭來竹籃打水一場空!

    ??? 如何避免破產?--水木周平

    ????看到這里您應該明白,不要買房是一個避免破產的好辦法。不過我還要提醒你,為了托住樓市不跌,他們還有個辦法,那就是鼓吹老百姓不買房就不是個爺 們兒!您別說,這還真有點效果。現在的人一張口第一句就是:“你有房嗎。”似乎你沒房就是個太監一樣。我實在是氣得連罵人的力氣都沒有了。還有人在百度水 木周平這個帖吧里發帖說:“不買房子你住哪里?”我就奇怪了,住和買有必然聯系嗎?在中國一個土地都不屬于你的房子賣給你和租給你有什么區別?(笑)。更 別提土匪一樣的物業和把人不當人的強制拆遷!這不純粹是“皇帝的新裝”嗎?不過既然WTO中已經說明出版業和傳媒業中國還是不對外開放的。那么輿論救市就 會成為政府和開發商手中的最后一張王牌。所以我們在面對很多花言巧語的時候還是自己多動動腦子。以后我們聽到的房產的鬼話會越來越多,越來越令人發指!比 如最近就有磚家在鼓吹房價不貴時都說:“什么即使年薪5萬,兩口子也是一年10萬,5年就50萬。所以房價當然不貴。”我奇怪的是居然有人點頭稱是?也許 對于這種或者此類已經進化到了不吃不喝不病不穿不動且爹娘早已死絕不用贍養的磚家來說也許還真是那么回事。所以大家注意提高警惕。

    ??? 結束語:--水木周平

    ????已經買房或者準備買房的白領一族必定隨著房價的崩潰而崩潰,那會是一個緩慢發生的過程。短則兩年,長則十年。但這是不可逆轉的趨勢。所以中國 99%城市白領一族已經面臨破產一說絕非危言聳聽!今天你往銀行交的每一分房錢都是替政府替炒房者補洞,只有一小部分是真正的房錢。明天大環境一變,你沒 有那么多資金來補洞的時候就會被市場和銀行一腳踢回老家,換一批新人來接著補。不信?走著瞧唄!--PS:為什么我說99%這個數,是因為根據我的了解 99%的人一旦月薪過5000就開始買房,甚至3000,4000都買。小倆口什么都不明白這樣買下去人生一定會很慘。我只是替他們感到憂傷。當然如果你 是那1%的智者,多勸救他們吧。獨樂樂不如眾樂樂。

    ??? 本文轉載自:http://www.tkk7.com/fanyingjie/archive/2007/09/05/142964.html
    posted @ 2007-09-14 10:47 kangxm 閱讀(608) | 評論 (3)編輯 收藏

    ??? 我終于有機會帶項目了!鼓勵一下自己!:-)

    ??? 先全力以付把系統設計做好!加油!!!
    posted @ 2007-06-18 09:03 kangxm 閱讀(840) | 評論 (2)編輯 收藏

         摘要: 共享一個MyEclipse5.5GA注冊碼  閱讀全文
    posted @ 2007-05-28 09:21 kangxm 閱讀(13470) | 評論 (170)編輯 收藏


    Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了)

    Ctrl+D: 刪除當前行? ?

    Ctrl+Alt+↓ 復制當前行到下一行(復制增加)

    Ctrl+Alt+↑ 復制當前行到上一行(復制增加)

    Alt+↓? 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)

    Alt+↑? 當前行和上面一行交互位置(同上)

    Alt+←? 前一個編輯的頁面

    Alt+→? 下一個編輯的頁面(當然是針對上面那條來說了)

    Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性

    Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最后)

    Shift+Ctrl+Enter 在當前行插入空行(原理同上條)

    Ctrl+Q? 定位到最后編輯的地方

    Ctrl+L? 定位在某行? (對于程序超過100的人就有福音了)

    Ctrl+M 最大化當前的Edit或View (再按則反之)

    Ctrl+/? 注釋當前行,再按則取消注釋

    Ctrl+O? 快速顯示 OutLine

    Ctrl+T? 快速顯示當前類的繼承結構

    Ctrl+W? 關閉當前Editer

    Ctrl+K? 參照選中的Word快速定位到下一個

    Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)

    Ctrl+/(小鍵盤) 折疊當前類中的所有代碼

    Ctrl+×(小鍵盤) 展開當前類中的所有代碼

    Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)

    Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作)

    Ctrl+J? 正向增量查找(按下Ctrl+J后,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)

    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)

    Ctrl+Shift+F4 關閉所有打開的Editer

    Ctrl+Shift+X? 把當前選中的文本全部變味小寫

    Ctrl+Shift+Y? 把當前選中的文本全部變為小寫

    Ctrl+Shift+F? 格式化當前代碼

    Ctrl+Shift+P 定位到對于的匹配符(譬如{}) (從前面定位后面時,光標要在匹配符里面,后面到前面,則反之)

    Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節省很多勞動力)

    Alt+Shift+M 抽取方法 (這是重構里面最常用的方法之一了,尤其是對一大堆泥團代碼有用)

    Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)

    Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字符串抽取成一個變量,尤其是多處調用的時候)

    Alt+Shift+F 把Class中的local變量變為field變量 (比較實用的功能)

    Alt+Shift+I 合并變量(可能這樣說有點不妥Inline)

    Alt+Shift+V 移動函數和變量(不怎么常用)

    Alt+Shift+Z 重構的后悔藥(Undo)

    posted @ 2007-05-10 11:15 kangxm 閱讀(603) | 評論 (0)編輯 收藏


    一、page?對象
    ????page對象代表JSP本身,更準確地說它代表JSP被轉譯后的Servlet,它可以調用Servlet類所定義的方法。
    ????????
    二、config?對象
    ????config?對象里存放著一些Servlet?初始的數據結構。
    ????config?對象實現于javax.servlet.ServletConfig?接口,它共有下列四種方法:
    ????????public?String?getInitParameter(name)
    ????????public?java.util.Enumeration?getInitParameterNames(?)
    ????????public?ServletContext?getServletContext(?)
    ????????public?Sring?getServletName(?)

    三、request?對象
    ????request?對象包含所有請求的信息,如:請求的來源、標頭、cookies和請求相關的參數值等等。
    ????request?對象實現javax.servlet.http.HttpServletRequest接口的,所提供的方法可以將它分為四大類:
    ????1.儲存和取得屬性方法;
    ????????void?setAttribute(String?name,?Object?value)?????? 設定name屬性的值為value
    ????????Enumeration?getAttributeNamesInScope(int?scope)????取得所有scope?范圍的屬性
    ????????Object?getAttribute(String?name)?????????????????? 取得name?屬性的值
    ????????void?removeAttribute(String?name)?????????????? ?? 移除name?屬性的值
    ????2.取得請求參數的方法
    ????????String?getParameter(String?name)?????????????? ? ? 取得name?的參數值
    ????????Enumeration?getParameterNames(?)?????????????? ? ? 取得所有的參數名稱
    ????????String?[]?getParameterValues(String?name)??????? ? 取得所有name?的參數值
    ????????Map?getParameterMap(?)?????????????????????????????取得一個要求參數的Map
    ????3.能夠取得請求HTTP?標頭的方法
    ????????String?getHeader(String?name)????????????????????? 取得name?的標頭
    ????????Enumeration?getHeaderNames()?????????????????????? 取得所有的標頭名稱
    ????????Enumeration?getHeaders(String?name)??????????????? 取得所有name?的標頭
    ????????int?getIntHeader(String?name)????????????????????? 取得整數類型name?的標頭
    ????????long?getDateHeader(String?name)??????????????? ??? 取得日期類型name?的標頭
    ????????Cookie?[]?getCookies(?)??????????????????????? ??? 取得與請求有關的cookies
    ????4.其他的方法
    ????????String?getContextPath(?)?????????????????????????? 取得Context?路徑(即站臺名稱)
    ????????String?getMethod(?)??????????????????????????????? 取得HTTP?的方法(GET、POST)
    ????????String?getProtocol(?)?????????????????????????? ?? 取得使用的協議?(HTTP/1.1、HTTP/1.0?)
    ????????String?getQueryString(?)??????????????????? ? ? ?? 取得請求的參數字符串,不過,HTTP的方法必須為GET
    ????????String?getRequestedSessionId(?)???????????? ? ? ?? 取得用戶端的Session?ID
    ????????String?getRequestURI(?)????????????????????????????取得請求的URL,但是不包括請求的參數字符串
    ????????String?getRemoteAddr(?)????????????????????????????取得用戶的IP?地址
    ????????String?getRemoteHost(?)????????????????????????????取得用戶的主機名稱
    ????????int?getRemotePort(?)?????????????????????????? ? ? 取得用戶的主機端口
    ????????String?getRemoteUser(?)????????????????????? ? ? ? 取得用戶的名稱
    ????????void?etCharacterEncoding(String????encoding)?????? 設定編碼格式,用來解決窗體傳遞中文的問題

    四、response?對象
    ????response?對象主要將JSP?處理數據后的結果傳回到客戶端。
    ????response?對象是實現javax.servlet.http.HttpServletResponse?接口。response對象所提供的方法。
    ????1.設定表頭的方法
    ????????void?addCookie(Cookie?cookie)??????????????????? ? 新增cookie
    ????????void?addDateHeader(String?name,?long?date)???????? 新增long類型的值到name標頭
    ????????void?addHeader(String?name,?String?value)????????? 新增String類型的值到name標頭
    ????????void?addIntHeader(String?name,?int?value)??????? ? 新增int類型的值到name標頭
    ????????void?setDateHeader(String?name,?long?date)????? ?? 指定long類型的值到name標頭
    ????????void?setHeader(String?name,?String?value)?????? ?? 指定String類型的值到name標頭
    ????????void?setIntHeader(String?name,?int?value)????????? 指定int類型的值到name標頭
    ????2.設定響應狀態碼的方法
    ????????void?sendError(int?sc)?????????????????????????????傳送狀態碼(status?code)
    ????????void?sendError(int?sc,?String?msg)???????????????? 傳送狀態碼和錯誤信息
    ????????void?setStatus(int?sc)?????????????????????????????設定狀態碼
    ????3.用來URL?重寫(rewriting)的方法????
    ????????String?encodeRedirectURL(String????url)????????????對使用sendRedirect(?)方法的URL予以編碼

    五、out?對象
    ????out?對象能把結果輸出到網頁上。
    ????out主要是用來控制管理輸出的緩沖區(buffer)和輸出流(output?stream)。
    ????????void?clear(?)??????????????????????????????????? ? 清除輸出緩沖區的內容
    ????????void?clearBuffer(?)??????????????????????????????? 清除輸出緩沖區的內容
    ????????void?close(?)??????????????????????????????????? ? 關閉輸出流,清除所有的內容
    ????????int?getBufferSize(?)?????????????????????????? ? ? 取得目前緩沖區的大小(KB)
    ????????int?getRemaining(?)??????????????????????????? ? ? 取得目前使用后還剩下的緩沖區大小(KB)
    ????????boolean?isAutoFlush(?)?????????????????????????? ? 回傳true表示緩沖區滿時會自動清除;false表示不會自動清除并且產生異常處理
    ????????
    六、session?對象
    ????session對象表示目前個別用戶的會話(session)狀況。
    ????session對象實現javax.servlet.http.HttpSession接口,HttpSession接口所提供的方法
    ????????long?getCreationTime()?????????????????????????? ? 取得session產生的時間,單位是毫秒
    ????????String?getId()?????????????????????????????????????取得session?的ID
    ????????long?getLastAccessedTime()????????????????????? ?? 取得用戶最后通過這個session送出請求的時間
    ????????long?getMaxInactiveInterval()?????????????????? ?? 取得最大session不活動的時間,若超過這時間,session?將會失效
    ????????void?invalidate()?????????????????????????????? ?? 取消session?對象,并將對象存放的內容完全拋棄
    ????????boolean?isNew()????????????????????????????????????判斷session?是否為"新"的
    ????????void?setMaxInactiveInterval(int????interval)?????? 設定最大session不活動的時間,若超過這時間,session?將會失效

    七、application對象
    ????application對象最常被使用在存取環境的信息。
    ????因為環境的信息通常都儲存在ServletContext中,所以常利用application對象來存取ServletContext中的信息。
    ????application?對象實現javax.servlet.ServletContext?接口,ServletContext接口容器所提供的方法
    ????????int?getMajorVersion(?)?????????????????????????????取得Container主要的Servlet?API版本
    ????????int?getMinorVersion(?)?????????????????????????????取得Container次要的Servlet?API?版本
    ????????String?getServerInfo(?)??????????????????????? ? ? 取得Container的名稱和版本
    ????????String?getMimeType(String?file)?????????????? ? ?? 取得指定文件的MIME?類型
    ????????ServletContext?getContext(String?uripath)????? ? ? 取得指定Local?URL的Application?context
    ????????String?getRealPath(String?path)??????????????? ? ? 取得本地端path的絕對路徑
    ????????void?log(String?message)??????????????????????? ?? 將信息寫入log文件中
    ????????void?log(String?message,?Throwable?throwable)????? 將stack?trace?所產生的異常信息寫入log文件中

    八、pageContext對象
    ????pageContext對象能夠存取其他隱含對象。
    ????1.pageContext對象存取其他隱含對象屬性的方法,此時需要指定范圍的參數。
    ????????Object?getAttribute(String?name,?int?scope)
    ????????Enumeration?getAttributeNamesInScope(int?scope)
    ????????void?removeAttribute(String?name,?int?scope)
    ????????void?setAttribute(String?name,?Object?value,?int?scope)
    ????范圍參數有四個,分別代表四種范圍:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE
    ????2.PageContext對象取得其他隱含對象的方法
    ????????Exception?getException(?)?????????????????????? ?? 回傳目前網頁的異常,不過此網頁要為error?page,
    ????????JspWriter?getOut(?)??????????????????????????? ??? 回傳目前網頁的輸出流,例如:out?
    ????????Object?getPage(?)?????????????????????????????? ?? 回傳目前網頁的Servlet?實體(instance),例如:page
    ????????ServletRequest?getRequest(?)?????????????????? ? ? 回傳目前網頁的請求,例如:request
    ????????ServletResponse?getResponse(?)?????????????????? ? 回傳目前網頁的響應,例如:response
    ????????ServletConfig?getServletConfig(?)?????????????? ?? 回傳目前此網頁的ServletConfig?對象,例如:config
    ????????ServletContext?getServletContext(?)????????????????回傳目前此網頁的執行環境(context),例如:application
    ????????HttpSession?getSession(?)????????????????????????? 回傳和目前網頁有聯系的會話(session),例如:session
    ????3.PageContext對象提供取得屬性的方法
    ????????Object?getAttribute(String?name,?int?scope)????????回傳name?屬性,范圍為scope的屬性對象,回傳類型為Object
    ????????Enumeration?getAttributeNamesInScope(int?scope)????回傳所有屬性范圍為scope?的屬性名稱,回傳類型為Enumeration
    ????????int?getAttributesScope(String?name)??????????????? 回傳屬性名稱為name?的屬性范圍
    ????????void?removeAttribute(String?name)??????????????? ? 移除屬性名稱為name?的屬性對象
    ????????void?removeAttribute(String?name,?int?scope)?????? 移除屬性名稱為name,范圍為scope?的屬性對象
    ????????void?setAttribute(String?name,?Object?value,?int?scope)????????指定屬性對象的名稱為name、值為value、范圍為scope
    ????????Object?findAttribute(String?name)????????????????? 尋找在所有范圍中屬性名稱為name?的屬性對象

    九、exception對象
    ????若要使用exception?對象時,必須在page?指令中設定。<%@?page?isErrorPage="true"?%>才能使用。
    ????exception提供的三個方法:
    ????????getMessage(?)
    ????????getLocalizedMessage(?)、
    ????????printStackTrace(new?java.io.PrintWriter(out))?

    原文出處:http://www.javaresearch.org/article/68164.htm
    posted @ 2007-05-09 10:12 kangxm 閱讀(702) | 評論 (3)編輯 收藏

         摘要: 千萬別把JAVA環境變量和TOMCAT的配置方法忘了!!!  閱讀全文
    posted @ 2007-03-16 02:20 kangxm 閱讀(1189) | 評論 (0)編輯 收藏

    ?????從上周起,公司的電腦一開機諾盾就報:C:\WINDOWS\SYSTEM32\LWIGW.DLL被感染木馬:??

    2007 - 3 - 14 ? 10 : 19 : 10 ????文件?C:\WINDOWS\SYSTEM32\LWIGW.DLL:?檢測到?木馬程序?Trojan - Downloader.Win32.Agent.bbb

    2007 - 3 - 14 ? 10 : 20 : 00 ????文件?C:\WINDOWS\system32\drivers\fpvsy.sys:?檢測到?木馬程序?Trojan - Downloader.Win32.Agent.bbb

    ?????并且還清除失敗(明顯殺毒能力太差);工作太忙沒顧得上管它;
    ?????

    ???今天實在是忍受不了了,下了個卡巴斯基開殺,沒想到這下殺出毛病來了:

    ???卡巴斯基一上來就發現了這個病毒,然后提示刪除,我點擊確定,卡巴又提示我重啟后刪除,我心想,那就重啟唄!只要能殺掉,省
    ??? 得它老在這煩我!重啟完我就傻了,卡巴又提示有這個病毒,和剛才一樣,繼續要求重啟后刪除;就這樣不聽的循環.........................

    ???現在的病毒太欺負殺毒軟件了!!!!!!!!!!?? 搞得殺毒軟件就只好欺騙我!!!!!!!!

    ???小樣,我就不信治不了你! Google了一下,發現這個木馬還蠻牛:

    ?Trojan / Agent.bbb“代理木馬”變種bbb是一個盜取用戶機密信息的木馬程序。“代理木馬”變種bbb運行后,自我
    復制到系統目錄下,文件名隨機生成。修改注冊表,實現開機自啟。從指定站點下載其它木馬,偵聽黑客指令,盜取用戶機密信息。

    ??? 搜了點資料最后將其搞定,以下是我結合各種資料并試驗成功的辦法(自認為比較簡單)


    ?????1、下載一個叫unlocker的工具,它有解鎖功能,可以知道你要刪除的文件被哪一些程序占用了該目錄或文件,并將其解鎖,然后就可以正常刪掉了!
    ?????????????????地址:
    http://www.skycn.com/soft/22964.html


    ??????2、在殺毒軟件提示你被感染病毒的文件目錄下找到對應的文件,點擊鼠標右鍵,選擇Unlocker解鎖,會彈出一個框告訴你當前是哪些程序在使用該文件,點擊“全部解鎖”即可;

    ??????3、確定所有被感染的文件都解鎖后,運行殺毒軟件殺毒,一切OK!
    ????????????保證不會再被病毒欺負!!!!!

    ???
    ????????????
    ???

    ???
    ???

    posted @ 2007-03-14 18:55 kangxm 閱讀(3184) | 評論 (6)編輯 收藏

         摘要: 早上讀RSS源,無意間看這個最近很火的Psytopic特別版MBTI測試,狂喜!

    很早以前就聽說大名鼎鼎的MBTI了,可惜一直沒找到可以做的地方!

    啥話不說,感受先......

      閱讀全文
    posted @ 2007-03-12 09:53 kangxm 閱讀(8306) | 評論 (7)編輯 收藏

    堅持做一件事情確實不是一件容易的事情!

    看看我Blog上的內容就知道了,很久很久沒更新自己寫的文章了,反而轉載卻越來越多;

    反省一下,客觀原因是工作比較忙,其實最主要的還是自己那種惰性思想在作怪!

    必須強迫自己堅持寫下去!!!!

    不是為寫blog而寫blog,應該是為了培養堅持做某件事情的素質而寫blog!!!!

    Come On Baby!!!

    posted @ 2007-03-08 09:13 kangxm 閱讀(782) | 評論 (2)編輯 收藏

         摘要: 中國人正在上的四個大當  閱讀全文
    posted @ 2007-03-01 00:15 kangxm 閱讀(709) | 評論 (0)編輯 收藏

         摘要: 可憐的戴爾:戴爾預計無法滿足最后期限 摘牌勢在必然  閱讀全文
    posted @ 2007-01-25 16:43 kangxm 閱讀(722) | 評論 (0)編輯 收藏

         摘要: 主要是最近Eclipse Plugins裝的比較多,對Links方式安裝的方便之處感觸越來越深.

    主推原因: 方便,省事,易遷移.

    下面我以Log4E插件為例:( 順便推薦一下Log4E插件 :-) )  閱讀全文
    posted @ 2007-01-25 14:29 kangxm 閱讀(1485) | 評論 (2)編輯 收藏

         摘要: vi基本技巧  閱讀全文
    posted @ 2007-01-23 02:00 kangxm 閱讀(1084) | 評論 (0)編輯 收藏

         摘要: Vista的銷售價錢,連邦軟件商城獨家發售的Windows Vista的5個版本  閱讀全文
    posted @ 2007-01-23 00:28 kangxm 閱讀(1245) | 評論 (3)編輯 收藏

         摘要: DOM是基于平臺、語言無關的官方W3C標準。基于樹的層次,其優點是可以移植,編程容易,開發人員只需要調用建樹的指令。其缺點是加載大文件不理想。 SAX是基于事件模型的,它在解析 XML 文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。類似與流媒體的解析方式,所以在加載大文件時效果不錯。 JDOM是想成為 Java 特定文檔模型。它簡化與 XML 的交互并且比使用 DOM 實現更快。使用的是具體類不使用接口,運用了大量的COllections類,方便程序員。 DOM4J是一個獨立的開發結果。是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。推薦使用。  閱讀全文
    posted @ 2007-01-16 09:04 kangxm 閱讀(1086) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 国产精品亚洲av色欲三区| 免费在线看黄网站| 久久久久亚洲?V成人无码| 无码国产精品一区二区免费3p| 亚洲午夜在线电影| 日本媚薬痉挛在线观看免费| 成人毛片100免费观看| 亚洲成人一级电影| 亚洲国产成人精品无码久久久久久综合 | 亚洲国产成人无码AV在线| 免费一级毛片不卡在线播放 | 国产a级特黄的片子视频免费| 中国在线观看免费的www| 亚洲高清有码中文字| 亚洲精品乱码久久久久久中文字幕| 可以免费看的卡一卡二| 丰满人妻一区二区三区免费视频| 亚洲第一男人天堂| 久久精品国产亚洲麻豆| 成人免费无码精品国产电影| 98精品全国免费观看视频| 日本激情猛烈在线看免费观看| 亚洲六月丁香六月婷婷色伊人| 国产亚洲av片在线观看18女人 | 亚洲av无码精品网站| 日本无吗免费一二区| 最近中文字幕2019高清免费| 午夜不卡AV免费| 亚洲欧洲免费无码| 精品亚洲成AV人在线观看| 亚洲中文字幕无码一久久区| 国产美女做a免费视频软件| 日本黄网站动漫视频免费| a毛片全部免费播放| 免费人成大片在线观看播放| 亚洲中文字幕无码mv| 亚洲校园春色小说| 亚洲一区影音先锋色资源| 亚洲成av人影院| 国产亚洲日韩在线三区| yy6080亚洲一级理论|