国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

為什么要自己寫底層涵式

2024-07-21 02:14:13
字體:
供稿:網(wǎng)友
,歡迎訪問網(wǎng)頁設(shè)計(jì)愛好者web開發(fā)。


有很多人在問我,既然sun或第三方已經(jīng)為我們提供足夠多的api,我們?yōu)槭裁催€要自己寫底層涵式?
其實(shí)這個問題對于初學(xué)者和普通的程序員是不會理解的,但當(dāng)你對一門語言,不然不僅是說java,精通到一定的程序時(shí),你就自然地理解了-----你不再想用別人為你設(shè)計(jì)的涵式,因?yàn)槟阆嘈拍阕约簩懙暮降膶?shí)現(xiàn)過程比別人提供給你的更strong.
這個strong的標(biāo)準(zhǔn)應(yīng)該上效率更高,功能更好(不是更多).

我們先把sun和第三方軟件商提供的api叫標(biāo)準(zhǔn)api,我們自己的就叫快捷api,
標(biāo)準(zhǔn)api的特點(diǎn)是通用,為了這個通用,就要付出一定的資源,就象java本身為了通用就要先實(shí)現(xiàn)jvm,一個普通的bean,它的業(yè)務(wù)邏輯可能只有一行代碼,但為了照顧那些菜鳥級的客戶程序員,bean的設(shè)計(jì)者們(服務(wù)程序員)不得不花更多的時(shí)候來寫bean的接口.就是所謂的規(guī)范:以80%的資源來完成業(yè)務(wù)邏輯以外的功能.

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

對于我們來說,如果你對java技術(shù)的實(shí)現(xiàn)非常了解,自己寫涵式解決問題是一個最有效的手段.比如我們明知道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);
不到一秒.為什么不這么做呢?當(dāng)然string和stringbuffer是普通程序員都知道的,但是對于更多的數(shù)據(jù)結(jié)構(gòu)的效率,有幾個程序員都明明白白清清楚楚?

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

另外一方面,你要相信,標(biāo)準(zhǔn)api的開發(fā)人員并不是每個人都比你更聰明,同樣的功能他們也許實(shí)現(xiàn)得比你更差勁,或者說你能做得比他們更好.當(dāng)然絕大多數(shù)的功能他們實(shí)現(xiàn)得很好,這就是我,我們都還在用java語言而沒有去自己重寫java語言的原因,但在實(shí)際應(yīng)用中,很多很多的時(shí)候,應(yīng)該自己動手動手去寫出更有效率,更加實(shí)用的快捷api來.

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

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

接下來,你要學(xué)習(xí)的是java語言的調(diào)試技術(shù),不要用任何工具,就用命令行.
熟悉以后學(xué)習(xí)java虛擬機(jī)規(guī)范,這是你成為高手的關(guān)鍵.

經(jīng)過以上學(xué)習(xí),當(dāng)然在學(xué)習(xí)中為了解決一些問題你已經(jīng)無意地學(xué)了更多地東西.
你自己試試看,自己寫一個string類,把jdk中的那個給replace了看看,如果一切沒問題你應(yīng)該可以是真正的高手了.這時(shí)你一定會感覺到自己寫api的效率和樂趣了.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德庆县| 洛南县| 景泰县| 大足县| 志丹县| 黎川县| 巫山县| 武强县| 朝阳县| 兴安盟| 巴彦县| 乌审旗| 卫辉市| 河池市| 朔州市| 五家渠市| 贡嘎县| 德保县| 广宗县| 连云港市| 荃湾区| 轮台县| 白城市| 台州市| 公安县| 江华| 高陵县| 安塞县| 安康市| 嘉祥县| 西峡县| 太仆寺旗| 新野县| 芜湖县| 娱乐| 龙南县| 古浪县| 隆尧县| 清流县| 白玉县| 启东市|