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

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

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

    當前訪問本站: hits

    yjhmily

    堅持走自己的路……

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      100 Posts :: 8 Stories :: 353 Comments :: 0 Trackbacks

    2008年11月14日 #

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

    復制代碼

    給備份一下, 避免出錯(系統(tǒng)老是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 .

    復制代碼

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

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

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

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

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

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

    1.首先查看自己使用的內(nèi)核

    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
    上面顯示的情況中,是我已經(jīng)把linux-image-2.6.35-27-generic的結果

    3.卸載舊內(nèi)核應該使用命令:
    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.查看文件系統(tǒng)使用情況,和文件系統(tǒng)被掛在的位置:
    lxz@lxz-pc:/boot$  df  -lh
    文件系統(tǒng)            容量  已用  可用 已用%% 掛載點
    /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環(huán)境下進行android開發(fā),想把目標設備定為真實的手機。

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

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

    1 把手機設備為usb調(diào)試模式并和電腦連接

    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,在運行參數(shù)里選則手動選取目標設備,這時在Device Chooser里面應該就可以看到正常顯示出名字的手機了。

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

            
            目前手上的項目需要用到memory cache,于是我選擇強大的Memcached。至于Memcached的強大先不在這里說了,
    后續(xù)有時間,我專門來介紹一下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使用的內(nèi)存數(shù)量,單位是MB,我這里是100MB,
        -u是運行Memcache的用戶,我這里是root,
        -l是監(jiān)聽的服務器IP地址,如果有多個地址的話,我這里指定了服務器的IP地址192.168.1.192,
        -p是設置Memcache監(jiān)聽的端口,我這里設置了12000,最好是1024以上的端口,
        -c選項是最大運行的并發(fā)連接數(shù),默認是1024,我這里設置了256,按照你服務器的負載量來設定,
        -P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,

               如果要結束Memcache進程,執(zhí)行:

               # kill  cat /tmp/memcached.pid

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


    四、慎重對待第一份工作

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

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

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

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

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

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

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

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

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

    3、時間成本不允許。

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

    五、要保持一種“空杯心態(tài)”

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

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

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

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

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

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

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

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

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

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

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

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

    左右連接是相互對應的,所以在這里一并解釋。
    羅嗦一句如何區(qū)分左表和右表:
            在JOIN的左邊出現(xiàn)的表叫左表,在JOIN的右邊出現(xiàn)的表叫右表
    具體體現(xiàn)在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為右表
    下面我們來看看這兩個語句分別執(zhí)行后的效果:
                                       
            為了更好的看出左右連接的效果,我們再來看看內(nèi)連接查詢出來的效果
            內(nèi)連接:SELECT user.name,org.name FROM user JOIN org ON  user.orgId = org.id
    內(nèi)連接語句執(zhí)行后的效果:
                                                        
            很明顯:
    內(nèi)連接與左連接相比,檢索結果集中漏掉了user表的user3數(shù)據(jù)
    內(nèi)連接與右連接相比,檢索結果集中漏掉了org表的org4數(shù)據(jù)

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

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

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

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

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

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

            1、ZZ的那個網(wǎng)站,我已經(jīng)答應下來了,不管多難也要搞出來;
            2、WX的那些活,希望我能做的比去年更好,也希望他那邊能再多接一些新活;
            3、公司的那攤事,走一步看一步吧,畢竟09年失望太多,希望能找到合適的契機和方向;
            4、考駕照、買車,今年必須實現(xiàn)了,要不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

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

         摘要: 轉:唐駿:我的創(chuàng)業(yè)第一步
    尋找新的發(fā)展空間
      我的人生其實經(jīng)歷了很多次失敗。考大學是一次失敗,留學日本讀研究生又是一次失敗。我和板倉老師發(fā)生沖突后私逃美國的行為,無論如何都是不妥當?shù)摹5珡牧硪粋€角度講,從日本到美國的人生環(huán)境轉變,是我的主動選擇,也為我未來的職業(yè)生涯創(chuàng)造了新的契機。

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

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

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

    1. alterdesign

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

    2. antcompile

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

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

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

    各種字體的演示
    6. horizontal

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

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

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

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

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

    演示橫向的報表
    12. nopagebreak

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

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

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

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

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

    演示了如何讓查詢的sql動態(tài)起來,比如你可以通過一個Jsp頁面?zhèn)?br />報表的sql的where條件,order條件,甚至整個sql語句
    18. rotation

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

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

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

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

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

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

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

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

    主站蜘蛛池模板: 99久久免费精品高清特色大片| 国产亚洲精品免费| 污污网站免费观看| 免费毛片a线观看| 日批视频网址免费观看| 国产精品内射视频免费| 中文字幕免费在线视频| a级毛片高清免费视频| 成全高清在线观看免费| 一级毛片不卡片免费观看| 最近新韩国日本免费观看| 精品免费人成视频app| 美女视频黄免费亚洲| 在线中文高清资源免费观看| 日本v片免费一区二区三区| 国产成人免费高清在线观看| 亚洲AV中文无码乱人伦在线视色| 亚洲福利中文字幕在线网址| 亚洲综合精品网站| 亚洲av片劲爆在线观看| 中文字幕亚洲综合精品一区| 亚洲三级在线视频| 久久精品国产亚洲AV电影网| 香港特级三A毛片免费观看| 在线视频网址免费播放| 日本视频免费高清一本18| www.免费在线观看| 午夜影视在线免费观看| 亚洲黄片手机免费观看| 久久精品亚洲中文字幕无码网站| 亚洲精品美女久久久久9999| 亚洲色欲啪啪久久WWW综合网| 免费人妻精品一区二区三区| 黄色视频在线免费观看| 99国产精品免费视频观看| 一二三四在线观看免费高清中文在线观看 | 免费又黄又爽又猛的毛片| 自拍偷自拍亚洲精品第1页| 久久亚洲精品中文字幕| 亚洲精品无码你懂的| 2022免费国产精品福利在线|