Being a better Programmer
Being a better programmer means being able to design more effective and trustworthy programs and knowing how to do that efficiently.
做更好的程序员意味着能够设计更高效的、可靠的程序,和知道如何高效的实现这一目标。
看到这句话有点意思,effictive,trustworthy,就是程序所要追求的目标。
Being a better programmer means being able to design more effective and trustworthy programs and knowing how to do that efficiently.
做更好的程序员意味着能够设计更高效的、可靠的程序,和知道如何高效的实现这一目标。
看到这句话有点意思,effictive,trustworthy,就是程序所要追求的目标。
猪通过勤劳致富有5元钱存在老鼠开的钱庄里。猪打算拿这5元钱建一个小窝,大概要花2元卖地,花3元搭窝。
王八是搞工程的,他想在猪身上挣更多的钱,于是找来当投资顾问的狐狸想办法,狐狸说:这好办。于是找来管地盘的狼,开钱庄的老鼠一起来商议,结果王八从老鼠那里借来200元,用100元卖了狼的地,花了3元把猪窝盖好,花了50元给了狐狸咨询服务费,猪没有地,只好求王八把窝卖给它,王八要价500元,老猪说只有5元买不起,这时候狐狸说服猪去向老鼠借钱,老鼠答应借500给猪,前提是要他连本带利还600元,可以分10年还清,并且产权证拿来抵押。
结果成交。猪到最后花了600元买来了猪窝,比他原来的计划高了11倍,猪努力了十年去挣钱还贷。
在这场交易里面,狼,老鼠,狐狸还有王八都挣了钱。以后他们就如法炮制。更多的猪去贷款买房子了,这时候,当商人的驴看到有机可乘,到老鼠那里贷了好多好多的款,把王八盖的房子都买下来,然后以更高的价格卖给了猪。
猪的还贷期就越来越长,吃的越来越差,小猪崽子也不敢生了。由于猪的数目越来越少,狼觉得这样下去自己没有猪肉吃了,非饿死不可,于是开始调控,不让老鼠再借钱了。但是王八还没有停止盖房,把自己挣的钱和贷的钱全投入生产了。驴手上的猪窝囤积的很多,卖不动了被套牢了。
结果,老鼠,王八,还有驴都挣了好多的猪窝。钱到最后集中到狼手上。如今,谁都等着狼把钱拿出来救命。聪明的你,如果你是狼,你会拿钱救哪个?
http://www.theserverside.com/discussions/thread.tss?thread_id=18576
问题:
Recently we found that our production code is running with the code generated with javac debug on. I am curious to know the impact of this on performance.
最近我们的产品打开了javac调试信息,不知道对性能有没有影响。
回复:
The only impact I'm aware of is the larger footprint of your library in terms of the representation of your classes in the JVM. In my expirience the more detailed debug messages are usually worth this extra memory.
唯一的区别就是生成的类库的大小,还有更大的类会占用更多的虚拟机内存。但是起调试信息来比多使用一点内存有用多了。
回复:
If you really need to cut down on the library size you may choose to turn Debug off and just have line numbers support. This way your stack traces are atleast readable. Hopefully the exeception mechanism you use supports some form of Wrapping so you can get wrapped stack traces. This is very usefull if the nesting of the logic is deep.
除非你真的需要减小类库的大小,可以尝试只生成错误行号,或是关闭调试信息。….
结:
看起来并没有太多的性能影响,除非网络传输需要,减少下载时间,或是内存使用实在要求很高等场合,可以考虑关闭生成类调试信息。其他的情况下还是打开为妙。
附录:
javac的-g参数
在使用javac编译java代码的时候,加上-g参数用来控制生成调试信息
javac –g 生成所有的调试信息 javac –g:none 不生成任何调试信息 javac:{lines,vars,source}
选择生成部分的调试信息
Nile Black
测试代码如下
public static void main(String[] args) {
System.out.println("$".replaceAll("\\$", \\\\\\$));
}
输出
\$
解释一下,replaceAll方法两个参数都是正则表达式。根据java的正则表达式语法,把$符号替换成\$的写法是
\$—>\\\$
$是保留字符,所以需要转义一下\$
\也是保留字符,所以也要写成\\
最后把这个字符写进java代码中,就成了
\\\\\\$">\\$—>\\\\\\$
国庆前出差北京,一直到快过完国庆才能返回。今天终于坐在杭州的开发大厅里,倍感亲切。这次出差一个体会,软件质量真的很重要,在售后或是售前拿着一个漏洞百出的软件在客户现场真的没有信息抬起头,真的需要面对很多压力。所以开发的兄弟姐妹,一定要把软件质量做好,为的是能对用户响亮的说出"我能"。
下边要开始忙论文了,做的一个虚拟现实的视觉增强,完成的时候与大家分享分享。