第8章 异常
建议110: 提倡异常封装
建议111: 采用异常链传递异常
建议112: 受检异常尽可能转化为非受检异常
建议113: 不要在finally块中处理返回值
建议114: 不要在构造函数中抛出异常
建议115: 使用throwable获得栈信息
建议116: 异常只为异常服务
建议117: 多使用异常,把性能问题放一边
第9章 多线程和并发
建议118: 不推荐覆写start方法
建议119: 启动线程前stop方法是不可靠的
建议120: 不使用stop方法停止线程
建议121: 线程优先级只使用三个等级
建议122: 使用线程异常处理器提升系统可靠性
建议123: volatile不能保证数据同步
建议124: 异步运算考虑使用callable接口
建议125: 优先选择线程池
建议126: 适时选择不同的线程池来实现
建议127: lock与synchronized是不一样的
建议128: 预防线程死锁
建议129: 适当设置阻塞队列长度
建议130: 使用countdownlatch协调子线程
建议131: cyclicbarrier让多线程齐步走
第10章 性能和效率
建议132: 提升java性能的基本方法
建议133: 若非必要,不要克隆对象
建议134: 推荐使用“望闻问切”的方式诊断性能
建议135: 必须定义性能衡量标准
建议136: 枪打出头鸟-解决首要系统性能问题
建议137: 调整jvm参数以提升性能
建议138: 性能是个大“咕咚”
第11章 开源世界
建议139: 大胆采用开源工具
建议140: 推荐使用guava扩展工具包
建议141: apache扩展包
建议142: 推荐使用joda日期时间扩展包
建议143: 可以选择多种collections扩展
第12章 思想为源
建议144: 提倡良好的代码风格
建议145: 不要完全依靠单元测试来发现问题
建议146: 让注释正确、清晰、简洁
建议147: 让接口的职责保持单一
建议148: 增强类的可替换性
建议149: 依赖抽象而不是实现
建议150: 抛弃7条不良的编码习惯
建议151: 以技术员自律而不是工人
文摘
版权页:
插图:
从决定撰写本书到完稿历时9个月,期间曾经遇到过种种困难和挫折,但这个过程让我明白了坚持的意义,明白了“行百里者半九十”的寓意—坚持下去,终于到了写前言的时刻。
为什么写这本书
从第一次敲出“hello world”到现在已经有15年时间了,在这15年里,我当过程序员和架构师,也担任过项目经理和技术顾问—基本上与技术沾边的事情都做过。从第一次接触java到现在,已经有11年4个月了,在这些年里,我对java可谓是情有独钟,对其编程思想、开源产品、商业产品、趣闻轶事、风流人物等都有所了解和研究。对于java,我非常感激,从物质上来说,它给了我工作,帮助我养家糊口;从精神上来说,它带给我无数的喜悦、困惑、痛苦和无奈— 一如我们的生活。
我不是技术高手,只是技术领域的一个拓荒者,我希望能把自己的知识和经验贡献出来,以飨读者。在写作的过程中,我也反复地思考:我为谁而写这本书?为什么要写?
希望本书能帮您少走弯路
您是否曾经为了提供一个“one line”的解决方案而彻夜地查看源代码?现在您不用了。
您是否曾经为了理解某个算法而冥思苦想、阅览群书?现在您不用了。
您是否曾经为了提升0.1秒的性能而对n种实现方案进行严格测试和对比?现在您不用了。
您是否曾经为了避免多线程死锁问题而遍寻高手共同诊治?现在您不用了。
……
在学习和使用java的过程中您是否在原本可以很快掌握或解决的问题上耗费了大量的时间和精力?也许您现在不用了,本书的很多内容都是我用曾经付出的代价换来的,希望它能帮助您少走弯路!
希望本书能帮您打牢基础
那些所谓的架构师、设计师、项目经理、分析师们,已经有多长时间没有写过代码了?代码是一切的基石,我不太信任连“hello world”都没有写过的架构师。看看我们软件界的先辈们吧,dennis m. ritchie决定创造一门“看上去很好”的语言时,如果只是站在高处呐喊,这门语言是划时代的,它有多么优秀,但不去实现,又有何用呢?没有dennis m. ritchie的亲自编码实现,c语言不可能诞生,unix操作系统也不可能诞生。linux在聚拢成千上万的开源狂热者对它进行开发和扩展之前,如果没有linus的编码实现,仅凭他高声呐喊“我要创造一个划时代的操作系统”,有用吗?一切的一切都是以编码实现为前提的,代码是我们前进的基石。
相关阅读:
更多图书资讯可访问读书人图书频道:http://www.reader8.net/book/
