Java开发中避免踩坑的建议
一、遇到自己不熟悉的新类,在不了解之前不要随意使用。
如CopyOnWriteArrayList,在不知晓原理之前用它大量写操作的场景解决ArrayList的线程安全,那么很可能遇到性能问题。
二、尽量使用更高层次的框架。
三、关注各种框架和组建的安全补丁和版本更新。
四、尽量少自己造轮子,使用流行的框架。
比如,直接使用 JDK NIO 来开发网络程序或网络框架的话,我们可能会遇到 epoll 的 selector 空轮询 Bug,最终导致 CPU 100%。而 Netty 规避了这些问题,因此使用 Netty 开发 NIO 网络程序,不但简单而且可以少踩很多坑。
五、开发的时候遇到错误,除了搜索解决方案外,更重要的是理解原理。
只有知其所以然,才能从根本上避免踩坑。
六、网络资料很多,但不一定可靠,最可靠的还是官方文档。
网上的各种资料,大家自己学习分享的经验和心得,不一定都是对的。不一定会面面俱到地考虑到资源释放、并发等问题。
七、做好单元测试和性能分析。
许多坑都涉及线程安全、资源使用,这些问题只有在高并发的情况下才会产生。没有经过性能测试的代码,只能认为是完成了功能,还不能确保健壮性、可扩展性和可靠性。
八、做好设计评审和代码审查工作。
比如,对于熟悉 IO 的开发者来说,他肯定知道文件的读写需要基于缓冲区。如果他看到另一个同事提交的代码,是以单字节的方式来读写文件,就可以提前发现代码的性能问题。
又比如,一些比较老的资料仍然提倡使用MD5 摘要来保存密码。但是,现在 MD5 已经不安全了。
九、借助工具帮我们避坑。
比如,使用 YYYY 进行日期格式化的坑、使用 == 进行判等的坑、List.subList原 List 和子 List 相互影响的坑等,都可以通过阿里 P3C 代码规约扫描插件发现。
还建议在 CI 流程中集成Sonarqube代码静态扫描平台,对需要构建发布的代码进行全面的代码质量扫描。
十、做好完善的监控报警。
诸如内存泄露、文件句柄不释放、线程泄露等消耗型问题,往往都是量变积累成为质变,最后才会造成进程崩溃。如果一开始我们就可以对应用程序的内存使用、文件句柄使用、IO 使用量、网络带宽、TCP 连接、线程数等各种指标进行监控,并且基于合理阈值设置报警,那么可能就能在事故的婴儿阶段及时发现问题、解决问题。
原文链接:https://time.geekbang.org/column/article/209108
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-08-09 1009 Product of Polynomials (25 分)
2021-08-09 1008 Elevator (20 分)
2021-08-09 1007 Maximum Subsequence Sum (25 分)
2019-08-09 vue-2.5-vue-resource的使用-get、post、jsonp发送请求
2019-08-09 vue-2.4-生命周期函数
2019-08-09 vue-2.3自定义全局与私有指令
2019-08-09 vue-2.2过滤器的使用与时间格式化