總結的不錯!
-------------------------------------------------------------------------------------------------
生產環境最佳實踐
yjhmily堅持走自己的路…… |
2009年10月26日 # 原文出處: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。
adb shell # mount -oremount,rw /dev/block/mtdblock3 /system # pm list packages -f (列出apk和包名的對應關系) adb uninstall com.android.mms 返回Success,就說明卸載成功了 注意.. 復制代碼 給備份一下, 避免出錯(系統老是Force Close, 沒法用). # mount -oremount,rw /dev/block/mtdblock3 /system # pm list packages -f (列出apk和包名的對應關系)
adb uninstall com.android.mms
返回Success,就說明卸載成功了
注意..
復制代碼 給備份一下, 避免出錯(系統老是Force Close, 沒法用).
最近的機器內存又爆滿了,出了新增機器內存外,還應該好好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這個對象已經成為垃圾,至于什么時候回收,還不能確定! 這可讀性也不好! =================================================== 提示/boot目錄空間不足,查了一些資料,最后把久的內核給卸載得以解決。 1.首先查看自己使用的內核 lxz@lxz-pc:~$ uname -aLinux lxz-pc 2.6.35-25-generic #44-Ubuntu SMP Fri Jan 21 17:40:48 UTC 2011 i686 GNU/Linux
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 在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里面應該就可以看到正常顯示出名字的手機了。 目前手上的項目需要用到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的服務器端:
如果要結束Memcache進程,執行: # kill cat /tmp/memcached.pid 也可以啟動多個守護進程,不過端口不能重復。
原處: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多年的經驗積累,希望對大家有所幫助。作為過來人,我真誠地希望在職的朋友們及即將就業的大學生們也能夠以一種“空杯心態” 看待這篇文章。有時候,過來人的經驗是非常有價值的,那是他們用時間和金錢換來的血汗教訓。有的人偏偏不信這一套,認為只有自己親自體會過,才能知道是什 么滋味,別人的經驗只是別人的,和自己無關。如果你這樣想,那我也沒有辦法。我也要有一種寬容的心態,冷靜看待那些“不見棺材不掉淚,不撞南墻不回頭”的 “人才”,不是嗎?參加一下培訓,適當充一下電,為未來做更好、更完善的準備,才是積極的人生態度。記住:抱怨永遠解決不了問題!)
假設我們現在有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數據 進入10年了,先回顧一下吧: 08年注定是變化的一年,該死的金融危機上來就搞倒了我待了3年多的公司,到現在還灰常的懷念以前公司的工作氛圍和那些一起奮斗的日子。那時候做項目,真的是把項目當自己的孩子來養,很有感情;懷念ing. 09年注定是壓抑的一年,生活壓抑,工作壓抑,很多壓抑。。。壓抑到實在不想糾纏。 10年注定是拼搏的一年,勾畫了美麗的圖,也承諾了很多事,必須做了。 10年的那些事在這里留個記錄吧,年終的時候再來看; 1、ZZ的那個網站,我已經答應下來了,不管多難也要搞出來; 2、WX的那些活,希望我能做的比去年更好,也希望他那邊能再多接一些新活; 3、公司的那攤事,走一步看一步吧,畢竟09年失望太多,希望能找到合適的契機和方向; 4、考駕照、買車,今年必須實現了,要不5年計劃沒法劃上句號了; |