<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      為什么要自己寫底層涵式?

      [摘要]有很多人在問我,既然SUN或第三方已經為我們提供足夠多的API,我們為什么還要自己寫底層涵式? 其實這個問題對于初學者和普通的程序員是不會理解的,但當你對一門語言,不然不僅是說JAVA,精通到一定的...
      有很多人在問我,既然SUN或第三方已經為我們提供足夠多的API,我們為什么還要自己寫底層涵式?
      其實這個問題對于初學者和普通的程序員是不會理解的,但當你對一門語言,不然不僅是說JAVA,精通到一定的程序時,你就自然地理解了-----你不再想用別人為你設計的涵式,因為你相信你自己寫的涵式的實現過程比別人提供給你的更strong.
      這個strong的標準應該上效率更高,功能更好(不是更多).

      我們先把SUN和第三方軟件商提供的API叫標準API,我們自己的就叫快捷API,
      標準API的特點是通用,為了這個通用,就要付出一定的資源,就象JAVA本身為了通用就要先實現JVM,一個普通的BEAN,它的業務邏輯可能只有一行代碼,但為了照顧那些菜鳥級的客戶程序員,BEAN的設計者們(服務程序員)不得不花更多的時候來寫BEAN的接口.就是所謂的規范:以80%的資源來完成業務邏輯以外的功能.

      就比如JAVAMAIL,在一個MAIL系統中,真正實現非常完整的MAIL功能的API大約有30個左右,但JAVAMAIL為了基于"消息機制"這一規范,無論從效率還是從易用性方面都成了郵件系統中的垃圾,我自己雖然學過好多種語言,但我對JAVA語言有一種狂熱.我這樣評價JAVAMAIL并不影響我對JAVA語言和JAVA技術的熱愛.
      可以說,JAVA開發小組的人員已經不是原來的那些精英了,他們最初的思想并沒有被一直發揚,就JAVAMAIL本身來說,他們已經從思想退化到程式的水平------為了通用而故意通用,結果陷入了難用的泥坑.

      對于我們來說,如果你對JAVA技術的實現非常了解,自己寫涵式解決問題是一個最有效的手段.比如我們明知道String的+操作在底層是StringBuffer的append()操作,為什么不在程式中直接這樣做呢?如果你這樣你會獲得驚人的效率:
      String s = "";
      for(int =0;i<1024*1024*4;i++)
      s += 1;
      這樣得到4M的字符串在我的P2上要30分鐘以上,

      StringBuffer sb = new StringBuffer();
      for(int =0;i<1024*1024*4;i++)
      sb.append("1");
      String s = new String(sb);
      不到一秒.為什么不這么做呢?當然String和StringBuffer是普通程序員都知道的,但是對于更多的數據結構的效率,有幾個程序員都明明白白清清楚楚?

      我多次說過,所有的語言,哪怕是匯編,所有日期涵式都是從UNIX時間戳轉換來的,
      那么從這個值轉換過去是最快的方法,你別看SUN為你提供了DateFormat,Calendar等類以及一些什么after(),before()方法,它們也都是從UNIX時間戳來比較再轉換的,為了實現通用,它們還要考慮不同國家的格式規范,
      (local),所以根本不如你自己寫來得更有效.

      另外一方面,你要相信,標準API的開發人員并不是每個人都比你更聰明,同樣的功能他們也許實現得比你更差勁,或者說你能做得比他們更好.當然絕大多數的功能他們實現得很好,這就是我,我們都還在用JAVA語言而沒有去自己重寫JAVA語言的原因,但在實際應用中,很多很多的時候,應該自己動手動手去寫出更有效率,更加實用的快捷API來.

      最后說說,如何能寫出更好的API.
      首先你要對現有的API非常熟悉,那些連什么隨機數API都不知道還要問人的人不要再看了,你們應該好好地下一些真功夫在JAVA語言本身上,而不要急于做一些項目,你們現在要做的不是項目,而是作業.

      對JAVA語言有了相當的了解后,提高一個檔次,深入地理解一個JAVA技術.
      然后回過頭來,再深入JAVA語言,就是說在功夫到了七層左右,先要對十層的境界有一個概覽再回頭練八層.這時你把JDK的幾個jar文件都展開了,然后把目錄結構打印出來,對每個包下的每個類這樣的整體結構的目錄樹先熟悉,然后每天對其中的幾個jad出來,看看SUN的實現過程,吹毛求疵!!!不是為了和他們過不去,是為了加深記憶和理解.
      如果沒有足夠的時候,至少對常用的類要做到以上的要求.

      接下來,你要學習的是JAVA語言的調試技術,不要用任何工具,就用命令行.
      熟悉以后學習JAVA虛擬機規范,這是你成為高手的關鍵.

      經過以上學習,當然在學習中為了解決一些問題你已經無意地學了更多地東西.
      你自己試試看,自己寫一個String類,把jdk中的那個給replace了看看,如果一切沒問題你應該可以是真正的高手了.這時你一定會感覺到自己寫API的效率和樂趣了.


      日韩精品一区二区三区高清