因为线程的创建比较昂贵,所以 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 人划过
*精彩内容为该课程各文章中划线次数最多的内容
编辑推荐
包含这门课的学习路径
Java工程师
29门课程 154.7w人学习
看过的人还看了