0、开篇词:业务代码真的会有这么多坑

你好,我是朱晔,贝壳金服的资深架构师。 我先和你说说我这15年的工作经历吧,以加深彼此的了解。前7年,我专注于.NET领域,负责业务项目的同时,也做了很多社区工作。在CSDN做版主期间,我因为回答了大量有关.NET的问题,并把很多问题的答案总结成了博...

Java业务开发常见错误100例

1、使用了并发工具类库,线程安全就高枕无忧了吗

你好,我是朱晔。作为课程的第一讲,我今天要和你聊聊使用并发工具类库相关的话题。 在代码审核讨论的时候,我们有时会听到有关线程安全和并发工具的一些片面的观点和结论,比如“把HashMap改为ConcurrentHashMap,就可以解决并发问题了呀”“...

Java业务开发常见错误100例

2、代码加锁:不要让“锁”事成为烦心事

你好,我是朱晔。 在上一讲中,我与你介绍了使用并发容器等工具解决线程安全的误区。今天,我们来看看解决线程安全问题的另一种重要手段——锁,在使用上比较容易犯哪些错。 我先和你分享一个有趣的案例吧。有一天,一位同学在群里说“见鬼了,疑似遇到了一个JVM的...

Java业务开发常见错误100例

3、线程池:业务代码最常用也最容易犯错的组件

你好,我是朱晔。今天,我来讲讲使用线程池需要注意的一些问题。 在程序中,我们会用各种池化技术来缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用,用完归还以便复用,还会通过一定的策略调整池中缓存对象...

Java业务开发常见错误100例

4、连接池:别让连接池帮了倒忙

你好,我是朱晔。今天,我们来聊聊使用连接池需要注意的问题。 在上一讲,我们学习了使用线程池需要注意的问题。今天,我再与你说说另一种很重要的池化技术,即连接池。 我先和你说说连接池的结构。连接池一般对外提供获得连接、归还连接的接口给客户端使用,并暴露最...

Java业务开发常见错误100例

5、HTTP调用:你考虑到超时、重试、并发了吗

你好,我是朱晔。今天,我们一起聊聊进行HTTP调用需要注意的超时、重试、并发等问题。 与执行本地方法不同,进行HTTP调用本质上是通过HTTP协议进行一次网络请求。网络请求必然有超时的可能性,因此我们必须考虑到这三点: 首先,框架设置的默认超时是否...

Java业务开发常见错误100例

6、20%的业务代码的Spring声明式事务,可能都没处理正确

你好,我是朱晔。今天,我来和你聊聊业务代码中与数据库事务相关的坑。 Spring针对Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API (JPA)等事务API,实现了一致的编程...

Java业务开发常见错误100例

7、数据库索引:索引并不是万能药

你好,我是朱晔。今天,我要和你分享的主题是,数据库的索引并不是万能药。 几乎所有的业务项目都会涉及数据存储,虽然当前各种NoSQL和文件系统大行其道,但MySQL等关系型数据库因为满足ACID、可靠性高、对开发友好等特点,仍然最常被用于存储重要数据。...

Java业务开发常见错误100例

8、判等问题:程序里如何确定你就是你

你好,我是朱晔。今天,我来和你聊聊程序里的判等问题。 你可能会说,判等不就是一行代码的事情吗,有什么好说的。但,这一行代码如果处理不当,不仅会出现Bug,还可能会引起内存泄露等问题。涉及判等的Bug,即使是使用==这种错误的判等方...

Java业务开发常见错误100例

9、数值计算:注意精度、舍入和溢出问题

你好,我是朱晔。今天,我要和你说说数值计算的精度、舍入和溢出问题。 之所以要单独分享数值计算,是因为很多时候我们习惯的或者说认为理所当然的计算,在计算器或计算机看来并不是那么回事儿。就比如前段时间爆出的一条新闻,说是手机计算器把10%+10%算成了0...

Java业务开发常见错误100例
1235