Java 业务开发常见错误 100 例
全面避坑 + 最佳实践 = 健壮代码
朱晔  贝壳金服资深架构师
飙升榜 第8名
专栏
已完结·共 48 讲
|
5.3w 人已学
|
收藏
因为线程的创建比较昂贵,所以 Web 服务器往往会使用线程池来处理请求,这就意味着线程会被重用。
来自:01 | 使用了并发工具类库,线程安全就高枕无忧了吗?
15 人划过
使用 BigDecimal 表示和计算浮点数,且务必使用字符串的构造方法来初始化 BigDecimal
来自:09 | 数值计算:注意精度、舍入和溢出问题
10 人划过
第四,确保正确处理了线程池中任务的异常,如果任务通过 execute 提交,那么出现异常会导致线程退出,大量的异常会导致线程重复创建引起性能问题,我们应该尽可能确保任务不出异常,同时设置默认的未捕获异常处理程序来兜底;如果任务通过 submit 提交意味着我们关心任务的执行结果,应该通过拿到的 Future 调用其 get 方法来获得任务运行结果和可能出现的异常,否则异常可能就被生吞了。
来自:12 | 异常处理:别让自己在出问题的时候变为瞎子
8 人划过
反射给予了我们在不知晓类结构的时候,按照固定的逻辑处理类的成员;而注解给了我们为这些成员补充元数据的能力,使得我们利用反射实现通用逻辑的时候,可以从外部获得更多我们关心的数据
来自:21 | 代码重复:搞定代码重复的三个绝招
6 人划过
第二,反射获取类成员,需要注意 getXXX 和 getDeclaredXXX 方法的区别,其中 XXX 包括 Methods、Fields、Constructors、Annotations。这两类方法,针对不同的成员类型 XXX 和对象,在实现上都有一些细节差异,详情请查看官方文档。今天提到的 getDeclaredMethods 方法无法获得父类定义的方法,而 getMethods 方法可以,只是差异之一,不能适用于所有的 XXX。
来自:18 | 当反射、注解和泛型遇到OOP时,会有哪些坑?
5 人划过
对于使用姿势其实就是两点,一是确保连接池是复用的,二是尽可能在程序退出之前显式关闭连接池释放资源。
来自:04 | 连接池:别让连接池帮了倒忙
4 人划过
putIfAbsent 方法就会白白浪费时间在获取这个昂贵的 Value 上(这个点特别注意)
来自:答疑篇:代码篇思考题集锦(一)
3 人划过
客户端传给服务端的数据只是信息收集,数据需要经过有效性验证、权限验证等后才能使用,并且这些数据只能认为是用户操作的意图,不能直接代表数据当前的状态。
来自:27 | 数据源头:任何客户端的东西都不可信任
3 人划过
因为大多数公司在乎的都是你的输出,输出你的能力和经验
来自:37 | 加餐7:程序员成长28计
3 人划过
使用占位符方式记录 slowString 的方式,同样需要耗时 1 秒,是因为这种方式虽然允许我们传入 Object,不用拼接字符串,但也只是延迟(如果日志不记录那么就是省去)了日志参数对象.toString() 和字符串拼接的耗时。
来自:13 | 日志:日志记录真没你想象的那么简单
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

朱晔

贝壳金服资深架构师

朱晔,贝壳金服资深架构师,获得三次微软 MVP,曾任职于育碧软件、英孚教育、空中网、饿了么等公司,两次创业公司 CTO 经历。工作十五年来,他一直没有脱离编码工作,参与过在线教育、电商、游戏、O2O、互金、物流等领域 400+ 应用的架构设计和开发工作,熟悉微服务架构,擅长高并发、...查看更多
编辑推荐
包含这门课的学习路径

Java工程师

29门课程 154.7w人学习
看过的人还看了
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224934 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283800 人已学习

¥68¥199
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123465 人已学习

¥98¥299
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180997 人已学习

¥98¥399
Java 核心技术面试精讲
杨晓峰
前 Oracle 首席工程师

44讲 | 125964 人已学习

¥59¥129
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 152618 人已学习

¥68¥199