分享
 
 
 

为什么要自己写底层涵式?

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

有很多人在问我,既然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的效率和乐趣了.

相关网址:http://forum.cnjsp.com/showthread.PHP?s=&threadid=2895

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有