• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            陋居

            淡薄名利,修身養性

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              31 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks

            常用鏈接

            留言簿

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            #

            好書列表 V2.1
            jacinth(jacinth@m2-68.ym.edu.tw)
            2000-1-14 16:09:40


            書評內容
                
                                 
             蔣按:這是臺灣一名研究生的推薦 書目,看起來很不錯,不過很多書我都沒有見過, 
                   國內買原版書太難了,而且也太貴了!
                   如果你有心目中的好 書,不妨也發言吧!

            ===============================================================================
            1) 本 列表乃個人涉獵范圍內所列的書目,所以在其他很多topic上并沒有整理,目前整理
               出來的書目,分為以下主題:

                ==& gt;系統網路管理(含系統安全)  程式系統工具  Shell程式設計
                ==>作業系統通論  COMPILER  Unix作 業系統
                ==>系統網路程式設計(含Pthread)
                ==>程式語 言: C  C++  Perl  Assembly
                ==>Data-structure  Algorithm
                ==>Architecture

            2) 有 網友問說為什麼不把全部的相關書籍都列出來,嗯,有幾個原因啦....
               一是真的書太多了,全部列出來的結果是: 我會累死
               二 是我希望列出來的書單內的東西基本上都是我涉獵過的,或是網友推薦的(我會注明)
               而不希望把全部的書都列出來。若全列出來,結果會不知道誰 好誰不好。當然憑我一已
               所學要來要求這份文件的完整性是太勉強了點,因能力實在有限,關於這個問題就只好
               祈盼網友們的不吝指 教了

            3) 會想整理這份文件是因為當初學弟妹們在問要入門unix要看什麼書較好,而剛好那時又
               沒事,就順手整理了一份起 來。後來看到滿多人在網路上問這方面的問題,心想乾脆就
               把整理出來的東西再美化一下,再加上一些網路上大家介紹的書......最後就成了 這份
               小小的文件。

               謝謝很多網友在我前幾次post後給我的建議,還有你們推薦的書,讓這份文件不至成為
               只 有我這只井底之蛙知道的東西......

               我想這份文件應該能給一些人幫助,畢竟所列的書都是那些topic 上數一數二的好書。
               為 了方便使用,我以個人的學習經驗,為它們粗做分類,再加上一點點個人的看法,像
               它是入門書或是進階書,它適合什麼等。

               今 後將以大概一個月一次的速度對這份文件做修改,并post出來

            4) 若您有任何好書想和大家分享,可直接reply在版上或是mail給 我,我會在下次整理時
               把它們加進去。若對內容有任何不滿,也煩請來信告知,有勞了.....謝謝

                                                                 by jacinth
                                        jacinth@m2-68.ym.edu.tw

            ===============================================================================
            以 下為網路上眾網友推薦的網路書局....(抱歉,私自放入....)

            www.a1books.com
            www.acses.com
            以 上兩者為用來比較各家網路書局售價用的網站

            www.addall.com
            www.amazon.com
            www.barnesandnoble.com
            www.bookpool.com
            www.cbooks.com
            www.clbooks.com
            www.computerliteracy.com

            ===============================================================================
            【系 統,網路管理】
            1) Learning the Unix Operating System              

            1565923901 O'reilly/1997-4ed
                    *** 強力推薦給想入門unix的網友們!!
                       就只有薄薄的不到100頁,在書局偶然發現....深覺其內容適合初學者
                       相 信只要讀它,一個下午就可以了解基本UNIX的操作!!


            2) Unix : Visual Quickstart Guide          

            0201353954 A-W/1998-1ed
                *** 強力推薦給想入門unix的網友們!!
                   比上面那本大了點,也是寫的很淺顯易懂,大概一兩天就是對unix有基本的
                   認 識!!
            3) Essential System Administration:                

            1565921275 O'reilly/1996-2ed
                    Help for Unix System Administrators
                    *** 網友推薦,unix入門書....


            4) TCP/IP Network Administration                   

            1565923227 O'reilly/1998-2ed
                    *** 網管入門書,一開始網路的概念介紹得棒!!

            5) Unix system administration handbook             

            0131510517  PTH/1995-2ed
                    *** 網路上昵稱其為"紅皮書",系統,網路都說的十分詳細,無可挑惕!!
                       進階用書,不適合初學者

            6) Sendmail                                        

            1565922220 O'reilly/1997-2ed
                    *** 十分詳細,且平易近人,是這個主題的bible(我覺得啦)


            7) DNS and BIND                                    

            1565925122 O'reilly/1998-3ed
                *** 這一版加入了BIND 8與Perl module


            1) The complete FreeBSD                            

            1517162272 Walnut/1998-3ed
                    *** 最新版出來了(for 3.0)!!但臺灣還只看得到for 2.2.7的版本....另外,
                   我覺得handbook更好....


            1) A Practical Guide to Linux                      

            0201895498 A-W/1997-1ed
                    *** (A Practical Guide to UNIX的再版)
                       Linus寫序提到, 他當初就是用這本書學 Unix, 沒想到七年後很榮幸的為
                       作者寫序.

            2) Running Linux                                   

            O'Reilly/1999-3ed


            3) Linux Network Administrator's Guide             

            O'Reilly/1999-2ed
            *** 新版書出來羅!!只是我沒有找到它們的ISBN碼,請各位們行到書局找
                   都是1999年出的就是了(2和3)
            ===> LINUX的書好多喔!!而我又很久沒玩了,所以沒法提供更多的書目。以上三本書乃
                LINUX各部分較具代表性的高水準作品,希望有研究 的網友提供更多更好的書目,
                讓大家飽飽眼福!!


            1) Solaris System Administrator's Guide            

            157870040X Macmillan/1998-2ed


            2) Solaris Advanced System Administrator's Guide   

            1578700396 Macmillan/1998-2ed


            3) Solaris Performance Administration :            

            0070117683 McGraw/1998-1ed
                    Performance Measurement, Fine Tuning, and Capacity Planning for
                    Releases 2.5.1 and 2.6 Solaris Servers
                    *** 以上三本書為網友所提供。但amazon上對第二本的評價差到極點,大家叁考
                       看看。小弟學習時深覺其隨機附的manual 十分的精彩,十分的棒,有那份
                       manual就十分足夠了


            4) Sun Performance and Tuning:Java and Internet    

            0130952494 PTH/1998-2ed
                *** 網友fjchang推薦!!評語:
                   市面上所有針對 UNIX performance tuning 的書中,以這一本 對 Solaris
                   寫得最深入,風評絕非上述第三本可比擬


            5) Configuration and Capacity Planning for Solaris 

            0133499529 PTH/1997-1ed
                Servers
                *** 網友fjchang推薦!!評語:
                   此書幾乎沒有任何 UNIX 指令出現,但卻是一本硬書,提到許多規劃方面
                   應 注意的事項。本書對 Storage System 描寫之詳盡,無任何書可匹敵,
                   書評均認為此處乃本書最成功之處,單單這個部分 就值回整本書價了。上
                   一本書作者 Adrian 受本書作者之薰陶與影響甚深。

            【系統安全】
            1) maximum Security:A hacker's guide to            

            0672313413 Sams/1998-2ed
                    protecting your internet site and network


            2) Cracking Des : Secrets of Encryption            

            1565925203 O'reilly/1998-1ed
                    Research, Wiretap Politics & Chip Design


            3) Practical Unix and Internet Security            

            1565921488 O'reilly/1996-2ed


            4) Building Internet Firewalls             

            1565921240 O'reilly/1995-1ed
            ===& gt;基本上....網路是最大也是最好的一本書....

            【Shell 程式設計】
            1) UNIX SHELLS by example                          

            0134608666 PTH/1998-1ed
                    *** 錯誤頗多,但卻是一本好的shell programming入門書
            ===>對於shell programming,其實很多介紹 unix的書上面都會有簡單的介紹,但完全討論
                這個主題的好像只有這本。它另外還有教awk,grep,sed,都很詳細

            【程 式&系統工具】
            1) managing projects with make                     

            0937175900 O'reilly/1993-2ed
                    *** 對make有詳細的說明


            2) programming with GUN SOFTWARE                   

            1565921127 O'reilly/1997-1ed
                    *** 個人強力推薦!!教你用emacs,gcc,gdb,gmake....


            3) UNIX power tools                                

            1565922603 O'reilly/1997-2ed
                    *** 網友推薦,有很多的實用技巧.....

            【作業系統通論】
            1) Operating System concepts                       

            0201591138 A-W/1997-5ed
                    *** 大學教科書(operating system),俗稱"恐龍書"。很棒的作業系統入門書


            2) Modern operating system                         

            9813076623 PTH/1996-2ed
                    *** 大學教科書,配合恐龍書服用,效果加倍


            3) Operating systems design and implememtation     

            0136301959 PTH/1997-2ed
                    *** 大學教科書(advanced operating system)
                       教你寫一個完整的OS(Minix),不含網路系統


            4) Distributed Operating systems                   
            0131439340 PTH/1995-2ed

            【Data structure and algorithm】
            1) Fundamemtals of DATA STRUCTURES IN C        

            0716782502 CS/1993-1ed(?)
                *** 大學教科書(data structure),另有PASCAL,C++版本
              //蔣按:有大陸版


            2) Introduction to algorithms              

            0262031418 MIT/1990-1ed
                *** 大學教科書(algorithm)


            3) Computer Algorithms/C++             

            0716783150 CS/1996-1ed
                *** 大學教科書(algorithm),另有PASCAL版本。
                   不必我說,IA和CA兩本都是超棒的!!都拿來讀讀,多讀幾 次......
                   閱讀順序由個人選擇。我選CA->IA
              //蔣按:有大陸版


            4) The Art of Computer Programming (Vol 1):    

            0201896834 A-W/1997-3ed
                Fundamental Algorithms


            5) The Art of Computer Programming (Vol 2):        

            0201896842 A-W/1997-3ed
                Seminumerical Algorithms


            6) The Art of Computer Programming (Vol 3):        

            0201896850 A-W/1998-2ed
                Sorting and Searching
                *** 以上三本....我不必介紹了吧??(好想找時間完整的研究一次....)


            7) Distributed Algorithms              

            1558603484 M-K/1997-1ed
                *** 還沒玩完,但只想說: 真的好棒!!

            【Unix】
            1) Unix internals -the new frontiers               

            0131019082 PTH/1996-1ed
                    *** 深入UNIX.....進階用書(SVR4 BSD都有討論)


            2) 4.4 BSD Operating System                        

            0201549794 A-W/1996-2ed
                    *** 同上,但以4.4BSD為主題


            3) The Magic Garden Explained : The                

            0130981389 PTH/1994-1ed
                    Internals of Unix System V Release 4 : An Open Systems Design
                    *** 同上,但以SVR4為主題。臺灣沒有書,我是向國外訂的
                       (聽說臺大圖書館有喔~~~)


            4) The Design of the UNIX operating system         

            0132017997 PTH/1986-1ed
                    *** 同上,BACH著,很多教科書都指名它為reference....


            5) Lions' Commentary on Unix : With Source Code    

            1573980137 P-t-P/1996-6th


            6) Unix Internals : A Practical Approach           

            020187721X A-W/1996-1ed


            7) Unix Systems for Modern Architecture            

            0201633388 A-W/1994-1ed
                    : Symmetric Multiprocesssing and Caching for Kernel Programmers


            8) The Linux Kernel Book                           

            0471981419 Wiley/1998-1ed
                *** 我覺得翻譯得怪怪的(因為它是由別國語言翻成英文)....
                   最好先對kernel有多些概念再讀會較好....


            9) Linux Kernel Internals                          

            0201331438 A-W/1997-2ed
                    *** 討論linux kernel的書,恐龍書上在linux部分的reference,個人推薦


            10)Linux Device Drivers                

            1565922921 O'reilly/1998-1ed
                *** 網友推薦,作者是來自義大利的駭客....

            【系統,網路程式設計】
            1) Advanced programming in the UNIX environment    

            0201563177 A-W/1992-1ed
                    ***Richard Steven 所著,十分適合對系統,C有基礎的人,亦是一本好的manual


            2) UNIX systems programming(for SVR4)              

            1565921631 O'relly/1997-1ed
                    *** 網路上評語為其討論內容過雜,但我覺得滿適合拿來當reference


            3) internetworking with TCP/IP vol 1:              

            0132169878 PTH/1995-3ed
                    Principles, Protocols, and Architecture


            4) internetworking with TCP/IP vol 2:              

            0130102210 PTH/1999-3ed
                    design,implementation and internals


            5) internetworking with TCP/IP vol 3:              

            0132621487 PTH/1996-2ed
                    client-server programming and application
                    *** 以上三本乃comer所著,屬bible級讀物。為大學教科書.....
                   vol1講TCPIP的原理,vol2講TCPIP的 implementation,vol3講APP的寫作
                   另外vol3分成三個版本,分別為 BSDsockets,winsock,TLI


            6) TCP/IP illustrated vol 1                        0201633469 A-W/1994-1ed
            7) TCP/IP illustrated vol 2                        020163354x A-W/1995-1ed
            8) TCP/IP illustrated vol 3                        0201634953 A-W/1996-1ed
                    *** 以上三本乃Richard Steven所著,影響小弟甚深,bible級讀物。
                       vol1講TCPIP的原理,vol2講 TCPIP的implementation,vol3講APP的寫作


            9) UNIX network programming                        

            9813026537 PTH/1994-1ed


            10)UNIX network programming                        

            0136493289 PTH/1998-2ed
                    vol 1:networking API:Sockets and XTI
                    *** 以上兩本亦為Richard Steven所著,第一本為第一版,小弟無緣
                       第二本為第二版,強力推薦!!


            11)UNIX network Programming                        

            0130810819 PTH/1998-2ed
                    vol 2: Interprocess Communications
                    *** 以IPC為主題,覺得"雜"了點....但不失為一代宗師之作


            12)Programming With Curses             

            0937175021 O'reilly/1986-1ed
                *** 講unix下curses函式庫,若你要控制terminal,很好的叁考書


            13)Thread Time:The Multithreaded Programming Guide 

            0131900676 PTH/1996-1ed


            14)Multithreaded Programming With Pthreads     

            0136807291 PTH/1997-1ed


            15)Programming With Posix Threads          

            0201633922 A-W/1997-1ed


            16)Programming With Threads            

            0131723898 PTH/1995-1ed


            17)Pthreads Programming                

            1565921151 O'reilly/1996-1ed
                *** 以上五本書都是以pthread為主題,個人推薦(14)(16),其他的也很不錯,只是
                   我沒細讀,不很清楚....

            【程 式語言:C】

            1) C : How to Program                              

            0132261197 PTH/1994-2ed
                    *** 教科書,初學C語言可考慮


            2) the c progamming language                       

            0131103628 PTH/1988-2ed
                    ***K&R 所著,乃C之bible中的bible,為c programmer 必讀之書藉。
                       惟不適合初學者,進階用書


            3) The C Answer Book                   

            0131096532 PTH/1988-2ed
                ***K&R 的解答本....好貴:<....所以不買了....:)


            4) C: The Complete Reference               

            0078821010 McGraw/1995-3ed
                *** 評價直逼K&R的一本好書....可能也不適合初學者(我沒看過)

            【程式語言:C++】

            1) C++ primer                                      

            0201824701 A-W/1998-3ed
                    *** 一本十分適合初學者拿來學習的書....
                   以下為候捷老師的評語:
                   在「C++ 百科」類書中, 與 The C++ Programming Language 齊名,
                   親和性較佳。老字號,有口碑。副作 者 Josee Lajoie 是 ANSI/ISO
                   C++ Standard 委員會的核心語言工作小組主席,因此本書在與
                   C++ Standard 的 密合度上,當可令人放心。


            2) the C++ programming language                    

            0201889544 A-W/1998-3ed
                    *** 以下為候捷候老師評語:
                   屬「C++ 百科」級的書。此書可謂 C++ 原典,具權威性,由 C++ 之父
                   所 著。連 ANSI C++ 制定時都得叁考此書。不論是內容深度或文字風格,
                   都不適合生手,但很適合做為進階研究或叁考查閱壯膽之 用。原文書之
                   code 編排令我感到不舒服,行文之間學院派的味道頗重。本書為與
                   C++ Standard 相 映合,有份量極重之 errata,務請讀者上網下載。


            3) Thinking in C++                 

            0139177094 PTH/1995-1ed
                *** 以下為候捷候老師評語:
                   也屬「C++ 百科」類書。口碑甚佳,唯目錄所列頁次與實際頁次 offset 4
                   1/e 年 代過於陳舊,當此 C++ Standard 已定案之際,應屬過時。
                   ps.第二版將不會有以上現象,但還未完書
              // 蔣按:大陸版有Thinking in Java

            4) C++ Standard                    

            抱 歉我查不到資料....
                ***以下為候捷候老師評語:
                   醉心學術以及喜歡看 definition 的人,一定會喜 歡。有此資料在手,
                   與人爭辯 C++ 時可使用最大的膽子和最大的分貝。電子版(PDF 格式)
                   可 於 http://webstore.ansi.org/ 購得,US$ 18.0。列印出來裝訂得
                   美美的,擺在架上足以唬人。


            5) Effective C++, 2nd Edition:             

            0201924889 A-W/1998-2ed
                50 Specific Ways to Improve Your Programs and Designs
                *** 以下為候捷候老師評語:
                   以條列方式列出 50 條寶貴的程式經驗。每一條均有深入的原理說明。
                   適合 有 C++ programming 經驗者。
              //蔣按:有大陸版

            6) More Effective C++:                 

            020163371x A-W/1996-1ed
                35 More Ways to Improve Your Programs and Designs
                *** 以下為候捷候老師評語:
                   以條列方式列出 35 條寶貴的程式經驗。每一條均有深入的原理說明。
                   適合 有 C++ programming 經驗者。


            7) Inside the C++ Object Model                 

            0201834545 A-W/1996-1ed
                *** 以下為候捷候老師評語:
                   適合給已有 C++ 經驗的人閱讀。可為你扎下 C++ 內部機制的深厚基礎。
                   原文 書筆誤極多(100 個以上,大大小?。绊戦喿x甚巨,建議讀中譯
                   本。對大部份人而言,chap3,4 可帶來最大邊際效益。


            8) The Design and Evolution of C++                 

            0201543303 A-W/1994-1ed


            9) The Annotated C++ Reference Manual              

            0201514591 A-W/1990-1ed


            10)Advanced C++ Programming Styles and Idioms      

            0201548550 A-W/1991-1ed


            11)C++ Programming Style                           

            0201563657 A-W/1992-1ed


            12)C++ Strategies and Tactics                      

            0201563827 A-W/1993-1ed
                    *** 以上五本書為網友推薦,都算是進階用書

            【程式語言:perl】


            1) Learning Perl                   

            1565922840 O'reilly/1997-2ed
                *** 最易上手的入門書,有程式基礎的人三天內就可學到一些東西(親身經驗....)


            2) Programming Perl                

            1565921496 O'reilly/1996-2ed
                ***Perl's father 親 手寫的書,若先看過(1),會很快吸收


            3) Advanced Perl Programming               

            1565922204 O'reilly/1997-1ed


            4) The Perl Cookbook                   

            1565922433 O'reilly/1998-1ed


            5) Web Client Programming with Perl        

            156592214X O'reilly/1997-1ed


            6) Perl Resource Kit-Unix Edition          

            1565923707 O'reilly/1997-1ed


            7) Learning Perl/Tk                

            1565923146 O'reilly/1999-1ed

            【程 式語言:Assembly】

            1) IBM PC Assembly Language and Programming        

            0137566107 PTH/1997-4ed
                *** 初學用書....

            【Computer Architecture】

            1) Computer Organization and Design :              

            1558604286 Morgan/1997-2ed
                    The Hardware/Software Interface
                *** 大學教科書(計算機組織),這個topic的入門書


            2) Computer Architecture :                         

            1558603298 Morgan/1996-2ed
                    A Quantitative Approach
                *** 大學教科書(計算機組織),這個topic的入門書


            3) Computer Architecture : 

            Concepts and Evolution  0201105578 A-W/1997-1ed

            【compiler】
            1) Crafting a Compiler With C              

            0805321667 A-W/1991-1ed
                *** 大學教科書(compiler)


            2) Compilers Principles, Techniques, and tools     

            0201100886 A-W/1986-1ed
                *** 大學教科書(compiler),個人推薦!!因為我用它學的:>

            posted @ 2010-09-17 08:26 eircQ 閱讀(512) | 評論 (0)編輯 收藏

            一位軟件工程師的6年總結

             

            --------------------------------------------------------------------------------

             

            2007-10-29 21:47:12 標簽:程序人生   [推送到技術圈]

             

             

             一位軟件工程師的6年總結     

             

             

            作者:成曉旭

             

            (聲明:歡迎轉載,請保證文章的完整性)

             

            “又是一年畢 業時”,看到 一批批學子離開人生的象牙塔,走上各自的工作崗位;想想自己也曾經意氣風發、躊躇滿志,不覺感嘆萬千……本文是自己工作6年的經歷沉淀或者經驗提煉,希望對所有的軟件工程師們有所幫助,早日實現自己的人生目標。本文主要是關于軟件開發人員如何提高自己的軟件專業技術方面的具體建議,前面幾點旨在確定大的方向,算是廢話吧。

             

            謹以此文獻給那個自己為你奉獻3年青春與激情的開發團隊。還有團隊成員:PPL、YT、YK 、TYF、LGL、CHL、CDY、CB、DPD。

             

            1、 分享第一條經 驗:“學歷代表過去、能力代表現在、學習力代表未來。”其實這是一個來自國外教育領域的一個研究結果。相信工作過幾年、十幾年的朋友對這個道理有些體會吧。但我相信這一點也很重要:“重要的道理明白太晚將抱憾終生!”所以放在每一條,讓剛剛畢業的朋友們早點看到哈!

             

            2、 一定要確定自己的發展方向,并為此目的制定可行的計劃。不要說什么,“我剛畢業,還不知道將來可能做什么?”,“跟著感覺走,先做做看”。因為,這樣的觀點會通過你的潛意識去暗示你的行為無所事事、碌碌無為。一直做技術,將來成為專家級人物?向管理方向走,成為職業經理人?先熟悉行業和領域,將來自立門戶?還是先在行業里面混混,過幾年轉行做點別的?這很重要,它將決定你近幾年、十年內“做什么事情才是在做正確的事情!”。

             

            3、 軟件開發團隊中,技術不是萬能的,但沒有技術是萬萬不能的!在技術型團隊中,技術與人品同等重要,當然長相也比較重要哈,尤其在MM比較多的團隊中。在軟件項目團隊中,技術水平是受人重視和尊重的重要砝碼。無論你是做管理、系統分析、設計、編碼,還是產品管理、測試、文檔、實施、維護,多少你都要有技術基礎。算我孤陋寡聞,我還真沒有親眼看到過一個外行帶領一個軟件開發團隊成功地完成過軟件開發項目,哪怕就一個,也沒有看到。倒是曾經看到過一個“高學歷的牛人”(非技術型)帶一堆人做完過一個項目,項目交付的第二天,項目組成員扔下一句“再也受不了啦!”四分五裂、各 奔東西。那個項目的“成功度”大家可想而知了。

             

            4、 詳 細制定自己軟件開發專業知識學習計劃,并注意及時修正和調整(軟件開發技術變化實在太快)。請牢記:“如果一個軟件開發人員在1、2年內都沒有更新過自己的知識,那么,其實他已經不再屬于這個行業了。”不要告訴自己沒有時間。來自時間管理領域的著名的“三八原則”告誡我們:另外的那8小時如何使用將決定你的人生成敗!本人自畢業以來,平均每天實際學習時間超過2小時。

             

            5、 書籍是人類進步的階梯,對軟件開發人員尤其如此。書籍是學習知識的最有效途徑,不要過多地指望在工作中能遇到“世外高人”,并 不厭其煩地教你。對于花錢買書,我個人經驗是:千萬別買國內那幫人出的書!我買的那些家伙出的書,!00%全部后悔了,無一本例外。更氣憤的是,這些書在二手市場的地攤上都很難賣掉。“擁有書籍并不表示擁有知識;擁有知識并不表示擁有技能;擁有技能并不表示擁有文化;擁有文化并不表示擁有智慧。”只有將書本變成的自己智慧,才算是真正擁有了它。

             

            6、 不要僅局限于對某項技術的表面使用上,哪怕你只是偶爾用一、二次。“對任何事物不究就里”是任何行業的工程師所不應該具備的素質。開發Windows應用程序,看看Windows程序的設計、加載、執行原理,分析一下PE文件格式,試試用SDK開發從頭開發一個Windows應用程序;用VC++、Delphi、Java、.Net開發應用程序,花時間去研究一下MFC、VCL、J2EE、.Net它們框架設計或者源碼;除了會用J2EE、JBoss、Spring、Hibernate等等優秀的開源產品或者框架,抽空看看大師們是如何抽象、分析、設計和實現那些類似問題的通用解決方案的。試著這樣做做,你以后的工作將會少遇到一些讓你不明就里、一頭霧水的問題,因為,很多東西你“知其然且知其所以然”!

             

            7、 在一種語言上編程,但別為其束縛了思想。“代碼大全”中說:“深入一門語言編程,不要浮于表面”。深入一門語言開發還遠遠不足,任何編程語言的存在都有其自身的理由,所以也沒有哪門語言是“包治百病”的“靈丹妙藥”。編程語言對開發人員解決具體問題的思路和方式的影響與束縛的例子俯拾皆是。我的經驗是:用面對對象工具開發某些關鍵模塊時,為什么不可以借鑒C、C51、匯編的模塊化封裝方式?用傳統的桌面開 發工具(目前主要有VC++、Delphi)進行系統體統結構設計時,為什么不可以參考來自Java社區的IoC、AOP設計思想,甚至借鑒像Spring、Hibernate、JBoss等等優秀的開源框架?在進行類似于實時通信、數據采集等功能的設計、實現時,為什么不可以引用來自實時系統、嵌入式系統的優秀的體系框架與模式?為什么一切都必須以個人、團隊在當然開發語言上的傳統或者經驗來解決問題???“他山之石、可以攻玉”。

             

            8、 養成總結與反思的習慣,并有意識地提煉日常工作成果,形成自己的個人源碼庫、解決某類問題的通用系統體系結構、甚至進化為框架。眾所周知,對軟件開發人員而言,有、無經驗的一個顯著區別是:無經驗者完成任何任務時都從頭開始,而有經驗者往往通過重組自己的可復用模塊、類庫來解決問題(其實這個結論不應該被局限在軟件開發領域、可以延伸到很多方面)。這并不是說,所有可復用的東西都必須自己實現,別人成熟的通過測試的成果也可以收集、整理、集成到自己的知識庫中。但是,最好還是自己實現,這樣沒有知識產權、版權等問題,關鍵是自己實現后能真正掌握這個知識點,擁有這個技能。

             

            9、 理論與實踐并重,內外雙修。工程師的內涵是:以工程師的眼光觀察、分析事物和世界。一個合格的軟件工程師,是真正理解了軟件產品的本質及軟件產品研發的思想精髓的人(個人觀點、歡迎探討)。掌握軟件開發語言、應用語言工具解決工作中的具體問題、完成目標任務是軟件工程師的主要工作,但從軟件工程師這個角度來看,這只是外在的東西,并非重要的、本質的工作。學習、掌握軟件產品開發理論知識、軟件開發方法論,并在實踐中理解、應用軟件產品的分析、設計、實現思想來解決具體的軟件產品研發問題,才是真正的軟件工程師的工作。站在成熟理論與可靠方法論的高度思考、分析、解決問題,并在具體實踐中驗證和修正這些思想與方式,最終形成自己的理論體系和實用方法論。

             

            10、心態有多開放,視野就有多開闊。不要抱著自己的技術和成果,等到它們都已經過時變成垃圾了,才拿出來丟人現眼。請及時發布自己的研究成果:開發的產品、有創意的設計或代碼,公布出來讓大家交流或者使用,你的成果才有進化和升華的機會。想想自己2000年間開發的那些Windows系統工具,5、6年之后的今天,還是那個樣子,今天流行的好多Windows系統工具都比自己的晚,但進化得很好,且有那么多用戶在使用。并且,不要保守自己的技術和思想,盡可能地與人交流與分享,或者傳授給開發團隊的成員。“與人交換蘋果之后,每個人還是只有一個蘋果;但交換思想之后,每個人都擁有兩種思想”,道理大家都懂,但有多少人真正能 做到呢?

             

            11、盡量參加開源項目的開發、或者與朋友共同研制一些自己的產品,千萬不要因為沒有錢賺而不做。網絡早已不再只是“虛擬世界”,網上有很多的開源項目、合作開發項目、外包項目,這都是涉獵工作以外的知識的絕好機會,并且能夠結識更廣的人緣。不要因為工作是做ERP,就不去學習和了解嵌入式、實時、通信、網絡等方面的技術,反過來也是一樣。如果當他別人拿著合同找你合作,你卻這也不會,那也不熟時,你將后悔莫及。

             

            12、書到用時方恨少,不要將自己的知識面僅僅局限于技術方面。諾貝爾經濟學獎得主西蒙教授的研究結果表明: “對于一個有一定基礎的人來說,他只要真正肯下功夫,在6個月內就可以掌握任何一門學問。”教育心理學界為感謝西蒙教授的研究成果,故命名為西蒙學習法。可見,掌握一門陌生的學問遠遠沒有想想的那么高難、深奧。多方吸取、廣泛涉獵。極力夯實自己的影響圈、盡量擴大自己的關注圈。財務、經濟、稅務、管理等等知識,有空花時間看看,韜光養晦、未雨綢繆。

             

            13、本文的總 結與反思:

             

            A:不要去做技術上的高手,除非你的目標如此。雖然本文是關于提高軟件開發知識的建議,做技術的高手是我一向都不贊同的。你可以提高自己的專業知識,但能勝任工作即止。

             

            B:提高軟件知識和技術只是問題的表面,本質是要提高自己認識問題、分析問題、解決問題的思想高度。軟件專業知識的很多方法和原理,可以很容易地延伸、應用到生活的其它方面。

             

            C:在能勝任工作的基礎上,立即去涉獵其它領域的專業知識,豐富自己的知識體系、提高自己的綜合素質,尤其是那些目標不在技術方面的朋友。


            posted @ 2010-09-02 09:37 eircQ 閱讀(102) | 評論 (0)編輯 收藏

             但是如果你希望,提前在5年內、3年內甚至1年內使你的收入加倍,你必須先使你的生產力加倍,然后收入加倍的美夢才可能成真。

                如何使生產力加倍呢?美國職業生涯規劃與時間管理專家Brian
            Tracy,集20年實務工作經驗與研究,發現能使你生產力加倍 的7個工作秘訣:


                一、全心投入工作(work harder at what you
                        do):當你工作時,一定要全心投入,不要浪費時間,不要把工作場所當成社交場合。光這個秘訣,如果你能長期實踐,就能使你的生產力加倍。


                二、工作步調快(work
                        faster):養成一種緊迫感,一次專心做一件事,并且用最快的速度完成,之后,立刻進入下一件工作。養成這習慣后,你會驚訝地發現,一天所能完成的工 作量居然是如此地驚人。


                三、專注于高附加值的工作(work on higher-value
                        activities):你要記住工作時數的多寡不見得與工作成果成正比。精明的老板或是上司關心的是你的工作數量及工作品質,工作時數并非重點。因此聰 明的員工,會想辦法找出對達成工作目標及績效標準有幫助的活動,然后投入最多時間與心力在這些事情上面。投入的時間愈多,每分鐘的生產力就愈高,工作績效 也就提高,自然贏得老板及上司的賞識與重用,加薪與升遷在望。


                四、熟練工作(do things you are better
                        at):你找出最有價值的工作項目后,接著要想辦法,通過不斷學習、應用、練習,熟練所有工作流程與技巧,累積工作經驗(一句話解決KNOW
                        HOW的問題)。你的工作愈純熟,工作所需的時間就愈短;你的技能愈熟練,生產力就提升得愈快。


                五、集中處理(bunch your
                        tasks):一個有技巧的工作人,會把許多性質相近的工作或是活動,例如,收發E-MAIL、寫信、填寫工作報表、填寫備忘錄等等,集中在同一個時段來 處理,這樣會比一件一件分開在不同時段處理,節省一半以上的時間,同時也能提高效率與效能。


                六、簡化工作(simplify your
                        work):盡量簡化工作流程,將許多分開的工作步驟加以整合,變成單一任務,以減少工作的復雜度,另外,運用授權或是外包的方式,避免把時間花費在低價 值的工作上。


                七、比別人工作時間長一些(work longer
                        hours):早一點起床,早點去上班,避開交通高峰;中午晚一點出去用餐,繼續工作,避開排隊用餐的人潮;晚上稍微留晚一些,直到交通高峰時間已過,再 下班回家。如此一天可以比一般人多出2至3個小時的工作時間,而且不會影響正常的生活步調。善用這些多出來的時間,可以使你的生產力加倍,進而使你的收入 加倍。一個成功的人,通常是一個行動派的人,一旦懂得提升生產力的方法,就會將這7個小秘訣,默記在心,不斷地應用、練習,直到成為工作、生活的習慣為 止。只要養成這個習慣,你的生產力一定會提高,收入也會加倍。


            posted @ 2010-09-02 09:29 eircQ 閱讀(120) | 評論 (0)編輯 收藏

            1 快速排序(QuickSort)

            快速排序是一個就地排序,分而治之,大規模遞歸的算法。從本質上來說,它是歸并排序的就地版本??焖倥判蚩梢杂上旅嫠牟浇M成。

            (1) 如果不多于1個數據,直接返回。

            (2) 一般選擇序列最左邊的值作為支點數據。

            (3) 將序列分成2部分,一部分都大于支點數據,另外一部分都小于支點數據。

            (4) 對兩邊利用遞歸排序數列。

            快速排序比大部分排序算法都要快。盡管我們可以在某些特殊的情況下寫出比快速排序快的算法,但是就通常情況而言,沒有比它更快的了。快速排序是遞歸的,對于內存非常有限的機器來說,它不是一個好的選擇。

            2 歸并排序(MergeSort)

            歸并排序先分解要排序的序列,從1分成2,2分成4,依次分解,當分解到只有1個一組的時候,就可以排序這些分組,然后依次合并回原來的序列中,這樣就可以排序所有數據。合并排序比堆排序稍微快一點,但是需要比堆排序多一倍的內存空間,因為它需要一個額外的數組。

            3 堆排序(HeapSort)

            堆排序適合于數據量非常大的場合(百萬數據)。

            堆排序不需要大量的遞歸或者多維的暫存數組。這對于數據量非常巨大的序列是合適的。比如超過數百萬條記錄,因為快速排序,歸并排序都使用遞歸來設計算法,在數據量非常大的時候,可能會發生堆棧溢出錯誤。

            堆排序會將所有的數據建成一個堆,最大的數據在堆頂,然后將堆頂數據和序列的最后一個數據交換。接下來再次重建堆,交換數據,依次下去,就可以排序所有的數據。

            4 Shell排序(ShellSort)

            Shell排序通過將數據分成不同的組,先對每一組進行排序,然后再對所有的元素進行一次插入排序,以減少數據交換和移動的次數。平均效率是O(nlogn)。其中分組的合理性會對算法產生重要的影響。現在多用D.E.Knuth的分組方法。

            Shell排序比冒泡排序快5倍,比插入排序大致快2倍。Shell排序比起QuickSort,MergeSort,HeapSort慢很多。但是它相對比較簡單,它適合于數據量在5000以下并且速度并不是特別重要的場合。它對于數據量較小的數列重復排序是非常好的。

            5 插入排序(InsertSort)

            插入排序通過把序列中的值插入一個已經排序好的序列中,直到該序列的結束。插入排序是對冒泡排序的改進。它比冒泡排序快2倍。一般不用在數據大于1000的場合下使用插入排序,或者重復排序超過200數據項的序列。

            6 冒泡排序(BubbleSort)

            冒泡排序是最慢的排序算法。在實際運用中它是效率最低的算法。它通過一趟又一趟地比較數組中的每一個元素,使較大的數據下沉,較小的數據上升。它是O(n^2)的算法。

            7 交換排序(ExchangeSort)和選擇排序(SelectSort)

            這兩種排序方法都是交換方法的排序算法,效率都是 O(n2)。在實際應用中處于和冒泡排序基本相同的地位。它們只是排序算法發展的初級階段,在實際中使用較少。

            8 基數排序(RadixSort)

            基數排序和通常的排序算法并不走同樣的路線。它是一種比較新穎的算法,但是它只能用于整數的排序,如果我們要把同樣的辦法運用到浮點數上,我們必須了解浮點數的存儲格式,并通過特殊的方式將浮點數映射到整數上,然后再映射回去,這是非常麻煩的事情,因此,它的使用同樣也不多。而且,最重要的是,這樣算法也需要較多的存儲空間。

            9 總結

            下面是一個總的表格,大致總結了我們常見的所有的排序算法的特點。
            排序法  平均時間 最差情形 穩定度 額外空間 備注
            冒泡  O(n2)   O(n2)  穩定 O(1) n小時較好
            交換   O(n2)   O(n2) 不穩定 O(1) n小時較好
            選擇  O(n2)  O(n2) 不穩定 O(1) n小時較好
            插入  O(n2)  O(n2) 穩定 O(1) 大部分已排序時較好
            基數 O(logRB) O(logRB) 穩定 O(n)

             

            B是真數(0-9),

            R是基數(個十百)

            Shell O(nlogn) O(ns) 1<2 不穩定 O(1) s是所選分組
            快速 O(nlogn) O(n2) 不穩定 O(nlogn) n大時較好
            歸并 O(nlogn) O(nlogn) 穩定 O(1) n大時較好
            O(nlogn) O(nlogn) 不穩定 O(1) n大時較好

            posted @ 2010-08-23 19:29 eircQ 閱讀(184) | 評論 (0)編輯 收藏

            ;***************************************************************************************************************
            ;       strlen returns the length of a null-terminated string in bytes, not including the null byte itself.
            ;       Algorithm:
            ;       int strlen (const char * str)
            ;       {
            ;           int length = 0;
            ;
            ;           while( *str++ )
            ;                   ++length;
            ;
            ;           return( length );
            ;       }

            ;***************************************************************************************************************
            ;       memcpy() copies a source memory buffer to a destination buffer.
            ;       Overlapping buffers are not treated specially, so propogation may occur.
            ;       Algorithm:
            ;       void * memcpy(void * dst, void * src, size_t count)
            ;       {
            ;               void * ret = dst;
            ;               /*
            ;                * copy from lower addresses to higher addresses
            ;                */
            ;               while (count--)
            ;                       *dst++ = *src++;
            ;
            ;               return(ret);
            ;       }

            ;***************************************************************************************************************
            ;       memmove() copies a source memory buffer to a destination memory buffer.
            ;       This routine recognize overlapping buffers to avoid propogation.
            ;       For cases where propogation is not a problem, memcpy() can be used.
            ;       Algorithm:
            ;       void * memmove(void * dst, void * src, size_t count)
            ;       {
            ;               void * ret = dst;
            ;               if (dst <= src || dst >= (src + count)) {
            ;                       /*
            ;                        * Non-Overlapping Buffers
            ;                        * copy from lower addresses to higher addresses
            ;                        */
            ;                       while (count--)
            ;                               *dst++ = *src++;
            ;                       }
            ;               else {
            ;                       /*
            ;                        * Overlapping Buffers
            ;                        * copy from higher addresses to lower addresses
            ;                        */
            ;                       dst += count - 1;
            ;                       src += count - 1;
            ;
            ;                       while (count--)
            ;                               *dst-- = *src--;
            ;                       }
            ;
            ;               return(ret);
            ;       }

            ;***************************************************************************************************************
            int strcmp(const char *str1,const char *str2)
            {
            while((*str1==*str2)&&(*str1))
            {
            str1++;
            str2++;
            }
            if((*str1==*str2)&&(!*str1)) //Same strings
            return 0;
            else if((*str1)&&(!*str2))  //Same but str1 longer
            return -1;
            else if((*str2)&&(!*str1)) //Same but str2 longer
            return 1;
            else
            return((*str1>*str2)?-1:1);
            }

            ;***************************************************************************************************************
            char *strstr1(const char *str1, const char *str2)
            {
                 char *cp = (char *)str1;  //type transfer
                 char *s1, *s2;
                 if(!str2) 
                  return (char *)str1;
                 while (cp)
                 {
                  s1 = cp;
                  s2 = (char *)str2;
                  while( !s1 && !s2 && !(*s1-*s2))
                  {
                   s1++, s2++;
                  }
                  if(!s2) 
                   return cp;
                  else
                   cp++;
                 }
                 return NULL;
            }

            ;***************************************************************************************************************
            *char *_itoa, *_ltoa, *_ultoa(val, buf, radix) - convert binary int to ASCII string
            static void __cdecl xtoa (unsigned long val, char *buf, unsigned radix, int is_neg )
            {
                    char *p;                /* pointer to traverse string */
                    char *firstdig;         /* pointer to first digit */
                    char temp;              /* temp char */
                    unsigned digval;        /* value of digit */

                    p = buf;

                    if (is_neg) {
                        /* negative, so output '-' and negate */
                        *p++ = '-';
                        val = (unsigned long)(-(long)val);
                    }

                    firstdig = p;           /* save pointer to first digit */

                    do {
                        digval = (unsigned) (val % radix);
                        val /= radix;       /* get next digit */

                        /* convert to ascii and store */
                        if (digval > 9)
                            *p++ = (char) (digval - 10 + 'a');  /* a letter */
                        else
                            *p++ = (char) (digval + '0');       /* a digit */
                    } while (val > 0);

                    /* We now have the digit of the number in the buffer, but in reverse
                       order.  Thus we reverse them now. */

                    *p-- = '\0';            /* terminate string; p points to last digit */

                    do {
                        temp = *p;
                        *p = *firstdig;
                        *firstdig = temp;   /* swap *p and *firstdig */
                        --p;
                        ++firstdig;         /* advance to next two digits */
                    } while (firstdig < p); /* repeat until halfway */
            }
            char * __cdecl _itoa ( int val, char *buf, int radix )
            {
                    if (radix == 10 && val < 0)
                        xtoa((unsigned long)val, buf, radix, 1);
                    else
                        xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
                    return buf;
            }
            char * __cdecl _ltoa ( long val, char *buf, int radix )
            {
                    xtoa((unsigned long)val, buf, radix, (radix == 10 && val < 0));
                    return buf;
            }

            ;***************************************************************************************************************
            *long atol(char *nptr) - Convert string to long. Overflow is not detected.
            long __cdecl _tstol(const _TCHAR *nptr )
            {
                    int c;              /* current char */
                    long total;         /* current total */
                    int sign;           /* if '-', then negative, otherwise positive */
                    while ( _istspace((int)(_TUCHAR)*nptr) )
                             ++nptr;   /* skip whitespace */

                    c = (int)(_TUCHAR)*nptr++;
                    sign = c;           /* save sign indication */
                    if (c == _T('-') || c == _T('+'))
                        c = (int)(_TUCHAR)*nptr++;    /* skip sign */

                    total = 0;

                    while ( (c = _tchartodigit(c)) != -1 ) {
                        total = 10 * total + c;     /* accumulate digit */
                        c = (_TUCHAR)*nptr++;    /* get next char */
                    }

                    if (sign == '-')
                        return -total;
                    else
                        return total;   /* return result, negated if necessary */
            }
            int __cdecl _tstoi( const _TCHAR *nptr )
            {
                    return (int)_tstol(nptr);
            }

            ;***************************************************************************************************************
            ;performs a byteswap on an unsigned integer.
            unsigned short __cdecl _byteswap_ushort(unsigned short i)
            {
                unsigned short j;
                j =  (i << 8) ;
                j += (i >> 8) ;
                return j;
            }
            unsigned long __cdecl _byteswap_ulong(unsigned long i)
            {
                unsigned int j;
                j =  (i << 24);
                j += (i <<  8) & 0x00FF0000;
                j += (i >>  8) & 0x0000FF00;
                j += (i >> 24);
                return j;
            }

            ;***************************************************************************************************************
            *char *bsearch() - do a binary search on an array
            *Entry:
            *       const char *key    - key to search for const char *base   - base of sorted array to search unsigned int num   - number of *elements in array unsigned int width - number of bytes per element int (*compare)()   - pointer to function that compares two
            *array elements, returning neg when #1 < #2, pos when #1 > #2, and 0 when they are equal. Function is passed pointers to two
            *array elements.
            *Exit:
            *       if key is found: returns pointer to occurrence of key in array
            *       if key is not found:returns NULL

            void * __cdecl bsearch ( REG4 const void *key, const void *base, size_t num, size_t width, int (__cdecl *compare)(const void *, const void *)   )
            {
                    REG1 char *lo = (char *)base;
                    REG2 char *hi = (char *)base + (num - 1) * width;
                    REG3 char *mid;
                    size_t half;
                    int result;

                    while (lo <= hi)
                            if (half = num / 2)
                            {
                                    mid = lo + (num & 1 ? half : (half - 1)) * width;
                                    if (!(result = (*compare)(key,mid)))
                                            return(mid);
                                    else if (result < 0)
                                    {
                                            hi = mid - width;
                                            num = num & 1 ? half : half-1;
                                    }
                                    else    {
                                            lo = mid + width;
                                            num = half;
                                    }
                            }
                            else if (num)
                                    return((*compare)(key,lo) ? NULL : lo);
                            else
                                    break;

                    return(NULL);
            }

            ;***************************************************************************************************************
            void __cdecl _tmakepath (register _TSCHAR *path, const _TSCHAR *drive, const _TSCHAR *dir,
            const _TSCHAR *fname, const _TSCHAR *ext  )
            {
                 register const _TSCHAR *p;
                 /* copy drive */
                 if (drive && *drive) {
                            *path++ = *drive;
                            *path++ = _T(':');
                    }

                    /* copy dir */
                    if ((p = dir) && *p) {
                            do {
                                    *path++ = *p++;
                            }while (*p);
                            if (*(p-1) != _T('/') && *(p-1) != _T('\\')) {
                                    *path++ = _T('\\');
                            }
                    }

                    /* copy fname */
                    if (p = fname) {
                            while (*p) {
                                    *path++ = *p++;
                            }
                    }

                    /* copy ext, including 0-terminator - check to see if a '.' needs to be inserted. */
                    if (p = ext) {
                            if (*p && *p != _T('.')) {
                                    *path++ = _T('.');
                            }
                            while (*path++ = *p++)
                                    ;
                    }
                    else {
                            /* better add the 0-terminator */
                            *path = _T('\0');
                    }
            }


            posted @ 2010-08-23 14:42 eircQ 閱讀(392) | 評論 (0)編輯 收藏

            人生的一張時間表

            如果每天都有86400元進入您的銀行戶頭,而且必須當天用完,您會如何運用這筆錢?天下真有這樣的好事嗎?是的,您真的有這樣一個戶頭,那就是“時間”。每天每一個人都會有新的86400秒進帳??雌饋砗芨挥??假如一個人的壽命為60歲,那么一生時間中,睡覺要花掉20年,吃飯6年,穿衣和梳洗5年,生病3年,打電話1年,照鏡子70天(部分女性除外),抹鼻涕10天,剩下的工作時間是多少呢?您又是怎樣利用它們呢?

            哲學家伏爾泰說:最長的莫過于時間,因為它無窮無盡;最短的也莫過于時間,因為我們所有的計劃都來不及完成。您是否有過這樣的經歷:某一天,您雄心勃勃地準備把手底下的事清理干凈,可到頭來卻一事無成?也許每個人都曾有過這樣的經歷,但在某些人身上表現得格外明顯。

            讓我們分析一下時間是如何被浪費掉的。

            人生時間表

            假如一個人的壽命為60歲,那么他總共只有21900天。一生時間的用途分別為:

            • 睡20年(7300天);
            • 吃飯6年(2190天);
            • 穿衣和梳洗5年(1825天);
            • 生病3年(1095天);
            • 打電話1年(365天);
            • 照鏡子70天;
            • 抹鼻涕10天。

            最后只剩下3205天,即8年又285天,用來做有用的工作。(人生真的很苦短)

            如何找到時間浪費的原因

            在8年又285天的時間里,我們又做了哪些浪費時間的事情?不妨問問自己以下四個問題:

            • 我做了什么根本不需要做的事?
            • 我做了什么能夠由別人,并且應該由別人做的事?
            • 我做了什么耗時過長的事?
            • 我做了什么會浪費別人時間的事?

            也許您很少或者沒有做過以上那些事情,但問題有時并不在事情本身,看看自己是否也有這些浪費時間的習慣:

            • 做事目標不明確。
            • 作風拖拉。
            • 缺乏擾先順序,抓不住重點。
            • 過于注重細節。
            • 做事有頭無尾。
            • 沒有條理,不簡潔,簡單的事情復雜化。
            • 事必躬親,不懂得授權。
            • 不會拒絕別人的請求。
            • 消極思考。

            人人都需要時間管理

            一項國際查表明:一個效率糟糕的人與一個高效的人工作效率相差可達10倍以上。

            時間管理可以幫助您把每一天、每一周甚至每個月的時間進行有效的合理安排。運用這些時間管理技巧幫您統籌時間,對于每個人來說都是非常重要的。

            在時間管理中,“計劃組織”相對于其他技巧來說是最簡單的一種。比如,所有的時間管理建議都包括在一些表格當中,在表格中把您想要完成的任務填進去。對很多人來說,這是最簡單和普通的了。當然,制表格和填表對一些人來說是有困難的。這是一個天份問題,與一個人的邏輯能力、空間想象力、創造力和抽象思維能力無關。時間管理是需要經過訓練的,如果您沒有準備好接受專門訓練的話,您將不能成為一個優秀的時間管理者?!杜=蚬芾碓u論》上推薦的十大自我時間管理技巧,值得注意的是,沒有稱之為最好的方法,不過這些方法對作者本人是有幫助的,希望對您也能有所幫助。

            1. 每天清晨把一天要做的事都列出清單

              如果您不是按照辦事順序去做事情的話,那么您的時間管理也不會是有效率的。在每一天的早上或是前一天晚上,把一天要做的事情列一個清單出來。這個清單包括公務和私事兩類內容,把它們記錄在紙上、工作簿上、您的PDA或是其他什么上面。在一天的工作過程中,要經常地進行查閱。舉個例子,在開會前十分鐘的時候,看一眼您的事情記錄,如果還有一封電子郵件要發的話,您完全可以利用這段空隙把這項任務完成。當您做完記錄上面所有事的時候,最好要再檢查一遍。如果您和我有同樣的感覺,那么,在完成工作后通過檢查每一個項目,您體會到一種滿足感。

            2. 把接下來要完成的工作也同樣記錄在您的清單上

              在完成了開始計劃的工作后,把下來要做的事情記錄在您的每日清單上面。如果您的清單上在內容已經滿了,或是某項工作可以轉過天來做,那么您可以把它算作明天或后天的工作計劃。您是否想知道為什么有些人告訴您他們打算做一些事情但是沒有完成的原因嗎?這是因為他們沒有把這些事情記錄下來。如果我是一個管理者,我不會三翻五次地告訴我的員工我們都需要做哪些事情。我從不相信他們的記憶力。如果他們沒帶紙和筆,我會借給他們,讓他們要完成的工作和時間期限記錄下來。

            3. 對當天沒有完成的工作進行重新安排

              現在您有了一個每日的工作計劃,而且也加進了當天要完成的新的工作任務。那么,對一天下來那些沒完成的工作項目又將做處置呢?您可以選擇將它們順延至第二天,添加到您明天的工作安排清單中來。但是,希望您不要成為一個辦事拖拉的人,每天總會有干不完的事情,這樣,每天的任務清單都會比前一天有所膨脹。如果的確事情重要,沒問題,轉天做完它。如果沒有那么重要,您可以和與這件事有關的人講清楚您沒完成的原因。

            4. 記住應赴的約會

              使用您的記事清單來幫您記住應赴的約會,這包括與同事和朋友的約會。以我的經驗看,工作忙碌的人們失約的次數比準時赴約的次數還多。如果您不能清楚地記得每件事都做了沒有,那么一定要把它記下來,并借助時間管理方法保證它的按時完成。如果您的確因為有事而不能赴約,可以提前打電話通知您的約會對象。

            5. 制一個表格,把本月和下月需要優先做的事情記錄下來

              據我所知很多人都開始制定每一天的工作計劃。那么有多少人會把他們本月和下月需要做的事情進行一個更高水平的籌劃呢?除非您從事的是一項交易工作,它的時間表上總是近期任務,您經常是在每個月末進行總結,而月初又開始重新安排籌劃。對一個月的工作進行列表規劃是時間管理中更高水平的方法,再次強調,您所列入這個表格的一定是您必須完成不可的工作。在每個月開始的時候,將上個月沒有完成而這個月必須完成的工作添加入表。

            6. 把未來某一時間要完成的工作記錄下來

              您的記事清單不可能幫助提醒您去完成在未來某一時間要完成的工作。比如,您告訴您的同事,在兩個月內您將和他一起去完成某項工作。這時您就需要有一個辦法記住這件事,并在未來的某個時間提醒您。我一般是用一個電子日歷,因為很多電子日歷都有提醒功能。其實為了保險起見,您可以使用多個提醒方法,一旦一個沒起作用,另一個還會提醒您。

            7. 保持桌面整潔

              我從不相信一個把自已工作環境弄得亂糟糟人會是一個優秀的時間管理者。同樣的道理,一個人的臥室或是辦公室一片狼藉,他也不會是一個優秀的時間管理者。因為一個好的時間管理者是不會花很長時間在一堆亂文件中找出所需的材料的。

            8. 把做每件事所需要的文件材料放在一個固定的地方

              隨著時間的過去,您可能會完成很多工作任務,這就要注意保持每件事的有序和完整。我一般會把與某一件事有關的所有東西放在一起,這樣當我需要時查找起來非常方便。當我徹底完成了一項工作時,我會把這些東西集體轉移到另一個地方。

            9. 清理您用不著的文件材料

              也許您會感到吃驚,在過去的十年中,我只有一個裝文件的抽屜,那里有我這些年所有的工作文件。我總是把新用完的工作文件放在抽屜的最前端,當抽屜被裝滿的時候,我會清除在抽屜最后面的文件。換句話說,我總是保持有一個抽屜的文件,總量不會超出這個范圍。有的人會把所有的文件都保留著,這些沒完沒了的文件材料最后會成為無人問津的廢紙,很多文件可能都不會再被人用到。我在這里所提到的文件材料并不包括您的工作手冊或是必需的參考資料,而是那些用作積累的文件。當然,有的時候,我也會去查找用過的文件,它們雖然經過了我的清理,但原稿我會一直保留在計算機里。

            10. 定期備份并清理計算機

              我對保存在計算機里的文件的處理方法也和上面所說的差不多。我猜想,您保存在計算機里的95%的文件打印稿可能還會在您的手里放三個月。我定期地備份文件到光盤上,并馬上刪除機器中不再需要的文件。


            posted @ 2010-08-23 13:51 eircQ 閱讀(119) | 評論 (0)編輯 收藏

            為什么要用存儲過程 

             

             

            幾個去 IBM 面試的兄弟回來抱怨:去了好幾個不同的 IBM 項目組,幾乎每個面試官問到數據庫的時候都要問用沒用過存儲過程,煩人不?大家去面的程序員,又不是 DBA,以前的項目都沒有用到存儲,不照樣運行的好好的?

            存儲過程真的那么重要嗎,它到底有什么好處呢?

            筆者認為,存儲過程說白了就是一堆 SQL 的合并。中間加了點邏輯控制。

            但是存儲過程處理比較復雜的業務時比較實用。
            比如說,一個復雜的數據操作。如果你在前臺 處理的話??赡軙婕暗蕉啻螖祿爝B接。但如果你用存儲過程的話。就只有一次。從響應時間上來說有優勢。
            也就是說存儲過程可以給我們帶來運行效率 提高的好處。
            另外,程序容易出現 BUG 不穩定,而存儲過程,只要數據庫不出現問題,基本上是不會出現什么問題的。也就是說從安全上講,使用了存儲過程的系統更加穩定。

            數據量小的,或者和錢沒關系的項目不用存儲過程也可以正常運作。mysql 的存儲過程還有待實際測試。如果是正式項目,建議你用 sql server 或 oracle 的存儲過程。數據與數據之間打交道的話,過程會比程序來的快的多。面試官問有沒有用存儲,實際上就是想知道前來面試的程序員到底做過數據量大的項目沒。如 果是培訓出來的,或者小項目小公司出來的,對存儲肯定接觸的少了。

            所以,要想進大公司,沒有豐富存儲過程經驗,是不行的。

            那么什么時候才可以用存儲?對于數據量不是很大以及業務處理不是很復雜的小項目就無需要了么?
            錯。 存儲過程不僅僅適用于大型項目,對于中小型項目,使用存儲過程也是非常有必要的。其威力和優勢主要體現在:
              1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般 SQL 語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
              2.當對數據庫進行復雜操作時(如對多個表進行 Update,Insert,Query,Delete 時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。這些操作,如果用程序來完成,就變成了一條條的 SQL 語句,可能要多次連接數據庫。而換成存儲,只需要連接一次數據庫就可以了。
              3.存儲過程可以重復使用,可減少數據庫開發人員的工作量。
              4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權。
            posted @ 2010-08-20 15:36 eircQ 閱讀(276) | 評論 (0)編輯 收藏

               1. /***********************************/  
               2. /* 功能:求兩個單鏈表是否相交和交點*/  
               3. /* 轉載自CSDN博客                  * /  
               4. /* 日期:2010/03/29                */  
               5. /***********************************/  
               6.   
               7.   
               8. Node* find(Node* head1,Node* head2)     
               9. {     
              10.      Node *p1=head1,*p2=head2;     
              11.     int m=0,n=0;     
              12.     while(p1)//O(len1)     
              13.      {
              14.          p1=p1->next;     
              15.          m++;
              16.      }
              17.     while(p2)//O(len2)
              18.      {
              19.          p2=p2->next;     
              20.          n++;     
              21.      }
              22.      p1=head1;
              23.      p2=head2;
              24.           
              25.     if(m>n)
              26.      {     
              27.         for(i=0;i<m-n;i++)     
              28.              p1=p1->next;     
              29.      }
              30.     else
              31.      {
              32.         for(i=0;i<n-m;i++)
              33.                p2=p2->next;
              34.      }//O(abs(len1-len2))
              35.     while(p1!=p2)
              36.      {
              37.          p1=p1->next;
              38.          p2=p2->next;     
              39.      }//O(min(len1,len2))     
              40.     return p1;
              41. }
            posted @ 2010-08-18 11:26 eircQ 閱讀(251) | 評論 (0)編輯 收藏

            ==========================
             功能:選擇排序(由小到大)
             返回:指向鏈表表頭的指針
            ==========================
            */

            /*
             選擇排序的基本思想就是反復從還未排好序的那些節點中,
             選出鍵值(就是用它排序的字段,我們取學號num為鍵值)最小的節 點,
             依次重新組合成一個鏈表。

             我認為寫鏈表這類程序,關鍵是理解:
             head存儲的是第一個節點的地址,head->next存儲的是第二個節點的地址;
             任 意一個節點p的地址,只能通過它前一個節點的next來求得。

            單向鏈表的選擇排序圖示:
            ---->[1]---->[3]---->[2]...----> [n]---->[NULL](原鏈表)
            head   1->next  3->next  2->next   n->next

            ---->[NULL](空鏈表)
            first
            tail

            ---->[1]---->[2]---->[3]...---->[n]---->[NULL](排序后鏈表)
            first   1->next  2->next  3->next   tail->next

            圖10:有N個節點的鏈表選擇排序

            1、先在原鏈表中找最小的,找到一個后就把它放到另一個空的鏈表中;
            2、空鏈表中安放第一個進來的節點,產生一個有序鏈表,并且讓它在原鏈 表中分離出來(此時要注意原鏈表中出來的是第一個節點還是中間其它節點);
            3、繼續在原鏈表中找下一個最小的,找到后把它放入有序鏈表的尾指針的 next,然后它變成其尾指針;
            */
            struct student *SelectSort(struct student *head)
            {
             struct student *first; /*排列后有序鏈的表頭指針*/
             struct student *tail; /*排列后有序鏈的表尾指針*/
             struct student *p_min; /*保留鍵值更小的節點的前驅節點的指針*/
             struct student *min; /*存儲最小節點*/
             struct student *p; /*當前比較的節點*/
             
             first = NULL;
             while (head != NULL) /*在鏈表中找鍵值最小的節點。*/
             {
              /*注意:這里for語句就是體現選擇排序思想的地方*/
              for (p=head,min=head; p->next!=NULL; p=p->next) /*循環遍歷鏈表中的節點,找出此時最小的節點。*/
              {  
               if (p->next->num < min->num) /*找到一個比當前min小的節點。*/
               {
                p_min = p; /*保存找到節點的前驅節點:顯然p->next的前驅節點是p。*/
                min = p->next; /*保存鍵值更小的節點。*/
               }
              }
             
              /*上面for語句結束后,就要做兩件事;一是把它放入有序鏈表中;二是根據相應的條件判斷,安排它離開原來的鏈表。*/
             
              /*第一件事*/
              if (first == NULL) /*如果有序鏈表目前還是一個空鏈表*/
              {
               first = min; /*第一次找到鍵值最小的節點。*/
               tail = min; /*注意:尾指針讓它指向最后的一個節點。*/
              }
              else /*有序鏈表中已經有節點*/
              {
               tail->next = min; /*把剛找到的最小節點放到最后,即讓尾指針的next指向它。*/
               tail = min; /*尾指針也要指向它。*/
              } 

              /*第二件事*/
              if (min == head) /*如果找到的最小節點就是第一個節點*/
              {
               head = head->next; /*顯然讓head指向原head->next,即第二個節點,就OK*/
              }
              else /*如果不是第一個節點*/
              {
               p_min->next = min->next; /*前次最小節點的next指向當前min的next,這樣就讓min離開了原鏈表。*/
              } 
             }

             if (first != NULL) /*循環結束得到有序鏈表first*/
             {
              tail->next = NULL; /*單向鏈表的最后一個節點的next應該指向NULL*/
             }
             head = first;
             return head;
            }


            /*
            ==========================
             功能:直接插入排序(由小到大)
             返回:指向鏈表表 頭的指針
            ==========================
            */

            /*
             直接插入排序的基本思想就是假設鏈表的前面n-1個節點是已經按鍵值
             (就是用它排序的字段,我們取學號num為鍵值)排好 序的,對于節點n在
             這個序列中找插入位置,使得n插入后新序列仍然有序。按照這種思想,依次
             對鏈表從頭到尾執行一遍,就可以使無序鏈 表變為有序鏈表。
             
            單向鏈表的直接插入排序圖示:
            ---->[1]---->[3]----> [2]...---->[n]---->[NULL](原鏈表)
            head   1->next  3->next  2->next   n->next

            ---->[1]---->[NULL](從原鏈表中取第1個節點作為只有一個節點的有序鏈表)
            head
            圖11

            ---->[3]---->[2]...---->[n]---->[NULL](原鏈表剩下用于直接插入排序的節點)
            first   3->next  2->next   n->next
            圖12

            ---->[1]---->[2]---->[3]...---->[n]---->[NULL](排序后鏈表)
            head   1->next  2->next  3->next   n->next

            圖13:有N個節點的鏈表直接插入排序

            1、先在原鏈表中以第一個節點為一個有序鏈表,其余節點為待定節點。
            2、從圖12鏈表中取節點,到圖11鏈表中定位插入。
            3、上面 圖示雖說畫了兩條鏈表,其實只有一條鏈表。在排序中,實質只增加了一個用于指向剩下需要排序節點的頭指針first罷了。
               這一點請讀者務必搞清楚,要不然就可能認為它和上面的選擇排序法一樣了。
            */
            struct student *InsertSort(struct student *head)
            {
             struct student *first; /*為原鏈表剩下用于直接插入排序的節點頭指針*/
             struct student *t; /*臨時指針變量:插入節點*/
             struct student *p; /*臨時指針變量*/
             struct student *q; /*臨時指針變量*/
             
             first = head->next; /*原鏈表剩下用于直接插入排序的節點鏈表:可根據圖12來理解。*/
             head->next = NULL; /*只含有一個節點的鏈表的有序鏈表:可根據圖11來理解。*/

             while (first != NULL) /*遍歷剩下無序的鏈表*/
             {
              /*注意:這里for語句就是體現直接插入排序思想的地方*/
              for (t=first, q=head; ((q!=NULL) && (q->num < t->num)); p=q, q=q->next); /*無序節點在有序鏈表中找插入的位置*/
             
              /*退出for循環,就是找到了插入的位置*/
              /*注意:按道理來說,這句話可以放到下面注釋了的那個位置也應該對的,但是就是不能。原因:你若理解了上面的第3條,就知道了。*/
              first = first->next; /*無序鏈表中的節點離開,以便它插入到有序鏈表中。*/
             
              if (q == head) /*插在第一個節點之前*/
              {
               head = t;   
              }
              else /*p是q的前驅*/
              {
               p->next = t;  
              }
              t->next = q; /*完成插入動作*/
              /*first = first->next;*/
             }
             return head;
            }


            /*
            ==========================
             功能:冒泡排序(由小到大)
             返回:指向鏈表表頭的 指針
            ==========================
            */

            /*
             直接插入排序的基本思想就是對當前還未排好序的范圍內的全部節點,
             自上而下對相鄰的兩個節點依次進行比較和調整,讓鍵值 (就是用它排
             序的字段,我們取學號num為鍵值)較大的節點往下沉,鍵值較小的往
             上冒。即:每當兩相鄰的節點比較后發現它們的排序與 排序要求相反時,
             就將它們互換。


            單向鏈表的冒泡排序圖示:
            ---->[1]---->[3]---->[2]...----> [n]---->[NULL](原鏈表)
            head   1->next  3->next  2->next   n->next 

            ---->[1]---->[2]---->[3]...---->[n]---->[NULL](排序后鏈表)
            head   1->next  2->next  3->next   n->next

            圖14:有N個節點的鏈表冒泡排序

            任意兩個相鄰節點p、q位置互換圖示:
            假設p1->next指向p,那么顯然p1->next->next就指向q,
            p1->next->next->next 就指向q的后繼節點,我們用p2保存
            p1->next->next指針。即:p2=p1->next->next,則 有:
            [  ]---->[p]---------->[q]---->[  ](排序前)
              p1->next  p1->next->next  p2->next
            圖15

            [  ]---->[q]---------->[p]---->[  ](排序后)

            圖16

            1、排序后q節點指向p節點,在調整指向之前,我們要保存原p的指向節點地址,即:p2=p1->next->next;
            2、 順著這一步一步往下推,排序后圖16中p1->next->next要指的是p2->next,所以 p1->next->next=p2->next;
            3、在圖15中p2->next原是q發出來的指向,排序后圖16中 q的指向要變為指向p的,而原來p1->next是指向p的,所以p2->next=p1->next;
            4、在圖15中 p1->next原是指向p的,排序后圖16中p1->next要指向q,原來p1->next->next(即p2)是指向q 的,所以p1->next=p2;
            5、至此,我們完成了相鄰兩節點的順序交換。
            6、下面的程序描述改進了一點就是記錄了每次最后一 次節點下沉的位置,這樣我們不必每次都從頭到尾的掃描,只需要掃描到記錄點為止。
               因為后面的都已經是排好序的了。
            */
            struct student *BubbleSort(struct student *head)
            {
             struct student *endpt; /*控制循環比較*/
             struct student *p; /*臨時指針變量*/
             struct student *p1;
             struct student *p2;

             p1 = (struct student *)malloc(LEN);
             p1->next = head; /*注意理解:我們增加一個節點,放在第一個節點的前面,主要是為了便于比較。因為第一個節點沒有前驅,我們不能交換地址。*/
             head = p1; /*讓head指向p1節點,排序完成后,我們再把p1節點釋放掉*/

             for (endpt=NULL; endpt!=head; endpt=p) /*結合第6點理解*/
             {
              for (p=p1=head; p1->next->next!=endpt; p1=p1->next)
              {
               if (p1->next->num > p1->next->next->num) /*如果前面的節點鍵值比后面節點的鍵值大,則交換*/
               {
                p2 = p1->next->next; /*結合第1點理解*/
                p1->next->next = p2->next; /*結合第2點理解*/
                p2->next = p1->next; /*結合第3點理解*/
                p1->next = p2; /*結合第4點理解*/
                p = p1->next->next; /*結合第6點理解*/
               }
              }
             }

             p1 = head; /*把p1的信息去掉*/
             head = head->next; /*讓head指向排序后的第一個節點*/
             free(p1); /*釋放p1*/
             p1 = NULL; /*p1置為NULL,保證不產生“野指針”,即地址不確定的指針變量*/

             return head;
            }


            /*
            ==========================
             功能:插入有序鏈表的某個節點的后面(從小到大)
             返 回:指向鏈表表頭的指針
            ==========================
            */

            /*
            有序鏈表插入節點示意圖:

            ---->[NULL](空有序鏈表)
            head

            圖18:空有序鏈表(空有序鏈表好解決,直接讓head指向它就是了。)

            以下討論不為空的有序鏈表。
            ---->[1]---->[2]---->[3]...----> [n]---->[NULL](有序鏈表)
            head   1->next  2->next  3->next   n->next

            圖18:有N個節點的有序鏈表

            插入node節點的位置有兩種情況:一是第一個節點前,二是其它節點前或后。

            ---->[node]---->[1]---->[2]---->[3]...---->[n]---->[NULL]
            head  node->next  1->next  2->next  3->next   n->next

            圖19:node節點插在第一個節點前

            ---->[1]---->[2]---->[3]...---->[node]...---->[n]---->[NULL]
            head   1->next  2->next  3->next    node->next  n->next

            圖20:node節點插在其它節點后
            */
            struct student *SortInsert(struct student *head, struct student *node)
            {
             struct student *p; /*p保存當前需要檢查的節點的地址*/
             struct student *t; /*臨時指針變量*/

             if (head == NULL) /*處理空的有序鏈表*/
             {
              head = node;
              node->next = NULL;
              n += 1; /*插入完畢,節點總數加1*/
              return head;
             }

             p = head; /*有序鏈表不為空*/
             while (p->num < node->num && p != NULL) /*p指向的節點的學號比插入節點的學號小,并且它不等于NULL*/
             {
              t = p; /*保存當前節點的前驅,以便后面判斷后處理*/
              p = p->next; /*后移一個節點*/
             }
             
             
             if (p == head)  /*剛好插入第一個節點之前*/
             {
              node->next = p;
              head = node;    
             }
             else /*插入其它節點之后*/
             { 
              t->next = node; /*把node節點加進去*/
              node->next = p; 
             }
             n += 1; /*插入完畢,節點總數加1*/
             
             return head;
            }

            /*

            測試代碼如下:

            */

            /*測試SelectSort():請編譯時去掉注釋塊*/

             /*
             head = SelectSort(head);
             Print(head);
             */
             
             /*測 試InsertSort():請編譯時去掉注釋塊*/

             /*
             head = InsertSort(head);
             Print(head);
             */

             /*測試BubbleSort():請編譯時去掉注釋塊*/

             /*
             head = BubbleSort(head);
             Print(head);
             */

             /*測試SortInsert():上面創建鏈表,輸入節點時請注意學號num從小到大的順序。請編譯時去掉注釋塊*/

             /*
             stu = (struct student *)malloc(LEN);
             printf("\nPlease input insert node -- num,score: ");
             scanf("%ld,%f",&stu->num,&stu->score);
             head = SortInsert(head,stu);
             free(stu);
             stu = NULL;
             Print(head);
             */


            posted @ 2010-08-12 16:29 eircQ 閱讀(1846) | 評論 (2)編輯 收藏

            1、不說"不可能";
            2、凡事第一反應: 找方法,不找借口;
            3、遇到挫折對自己說聲:太好了,機會來了;
            4、不說消極的話,不落入消極的情緒,一旦發生立即正面處理;
            5、凡事先訂立目標;
            6、行動前,預先做計劃;
            7、工作時間,每一 分、每一秒做有利于生產的事情;
            8、隨時用零碎的時間做零碎的 事情;
            9、守時;
            10、寫點日記,不要太依*記憶;
            11、隨時記錄想到的靈感;
            12、把重要的觀念、方法寫下來,隨時提示自己;
            13、走路比平時快30%,肢體語言健康有力,不懶散、萎靡;
            14、每天出門照鏡子,給自己一個自信的微笑;
            15、 每天自我反省一次;
            16、每天堅持一次運動;
            17、聽心跳一分鐘,在做重要的事情,疲勞時,緊張時,煩躁時。。。。
            18、開會做前排;
            19、微笑;
            20、用心傾聽,不打斷對方的 話;
            21、說話有力,感覺自己的聲音能產生感染力的磁場;
            22、說話之前,先考慮一下對方的感覺;
            23、每天有意識贊美別人三次以上;
            24、即使表示感謝,如果別人幫助了你的話;
            25、控制住不要讓自己作出為自己辯護的第一反應;
            26、不用訓斥、指責的口吻與別人說話;
            27、每天做一件"分外事";
            28、不關任何方面,每天必須至少做一次"進步一點點",并且有意識的提高;
            29、每天提前15分上班,推遲30分下班;
            30、每天下班前5分鐘做一下今天的整理工作;
            31、定期存錢;
            32、節儉;
            33、時常運用"頭腦風暴", 利用腦力激蕩提升自己創新能力;
            34、恪守誠信;
            35、學會原諒。


            posted @ 2010-08-12 14:00 eircQ 閱讀(200) | 評論 (0)編輯 收藏

            僅列出標題
            共4頁: 1 2 3 4 
            久久久久99精品成人片试看| 久久综合亚洲鲁鲁五月天| 国产精品美女久久久久AV福利| 中文字幕乱码久久午夜| 亚洲伊人久久精品影院| 午夜精品久久久久9999高清| 久久婷婷是五月综合色狠狠| 久久99久久99精品免视看动漫| 久久精品人人做人人爽97| 久久无码中文字幕东京热| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 2021久久精品免费观看| 天堂无码久久综合东京热| 久久91精品国产91| 97精品伊人久久久大香线蕉| AV无码久久久久不卡蜜桃| 亚洲AV无码久久精品蜜桃| 国产精品亚洲美女久久久| 99久久国产综合精品网成人影院| 国产99久久久国产精品小说| 精品国产乱码久久久久久人妻| 久久久久亚洲精品无码蜜桃| 久久婷婷五月综合97色一本一本 | AV无码久久久久不卡蜜桃| 久久精品国产只有精品66| 2021最新久久久视精品爱| 色欲av伊人久久大香线蕉影院| 精品国产一区二区三区久久久狼 | 久久国产色av免费看| 日韩乱码人妻无码中文字幕久久| 久久精品成人免费网站| 久久久无码精品亚洲日韩京东传媒| 久久精品中文无码资源站| 亚洲天堂久久精品| 久久天天躁夜夜躁狠狠| 久久综合久久综合久久| 久久香蕉超碰97国产精品 | 久久综合九色综合欧美狠狠| 色综合久久天天综线观看| 久久久精品人妻一区二区三区四| 久久福利片|