Java避坑宝典《Java业务开发常见错误100例》上线了

Wesley13
• 阅读 1017

写这个专栏的缘起

之前我写过一篇博客:《朱晔的互联网架构实践心得S2E2:写业务代码最容易掉的10种坑》,引起的关注还是挺多的。后来和极客时间的编辑一拍即合决定以这个为题写一个专栏。其实所谓坑就是容易忽略但是不容易发现的问题,大部分生产事故都是发布、运维相关的配置引起,真正代码中的问题上线后产生问题的坑并不多,虽然我接触过很多生产事故,但是能提炼出写代码的坑的点不多。所以在内容整理方面我花了很多时间,最终我总结出100+的点,形成了这样一个30+文章的专栏。

专栏名字叫《Java业务开发常见错误100例》,点击这里可以进入专栏。不仅仅涉及代码,还涉及设计方面的思考以及安全方面的误区。在这个课程中,每节课都是Java业务开发的一个核心关注点,每个知识点对应2~5个案例,并按照“知识介绍->还原业务场景->错误实现->正确实现->原理分析->小总结”来讲解每个案例,不仅帮你避开这个知识点的常见坑,更让你能知道产生坑的根本原因,提升自己的技术能力。这些内容不仅可以帮助你写出更好的代码,同时也有助于你进一步补全你的知识网增加面试的信心。你甚至可以把这些案例当作代码审核的Checklist,帮助别的项目一起避坑,帮助团队一起成长。

专栏的内容

目录

开篇词 开篇词 | 业务代码真的会有这么多坑? 代码篇 01 | 使用了并发工具类库,线程安全就高枕无忧了吗? 02 | 代码加锁:不要让“锁”事成为烦心事 03 | 线程池:业务代码最常用也最容易犯错的组件 04 | 连接池:别让连接池帮了倒忙 05 | HTTP调用:你考虑到超时、重试、并发了吗? 06 | 20%的业务代码的Spring声明式事务,可能都没处理正确 07 | 数据库索引:索引不是万能药 08 | 判等问题:程序里如何确定你就是你? 09 | 数值计算:注意精度、舍入和溢出问题 10 | 集合类:坑满地的List列表操作 11 | 空值处理:分不清楚的null和恼人的空指针 12 | 异常处理:别让自己在出问题的时候变为瞎子 13 | 日志:日志记录真没你想象的那么简单 14 | 文件IO:实现高效正确的文件读写并非易事 15 | 序列化:一来一回,你还是原来的你吗? 16 | 用好Java 8的日期时间类,少踩一些“老三样”的坑 17 | 别以为“自动挡”就不可能出现OOM 18 | 当反射、注解和泛型遇到OOP时,会有哪些坑? 19 | Spring框架:IoC和AOP是扩展的核心 20 | Spring框架:帮我们做了很多工作也带来了复杂度 设计篇 21 | 代码重复:搞定代码重复的三个绝招 22 | 接口设计:系统间对话的语言,一定要统一 23 | 缓存设计:缓存可以锦上添花也可以落井下石 24 | 业务代码写完,就意味着生产就绪了? 25 | 异步处理好用,但非常容易用错 26 | 数据存储:NoSQL与RDBMS如何取长补短、相辅相成? 安全篇 27 | 数据源头:任何客户端的东西都不可信任 28 | 安全兜底:涉及钱时,必须考虑防刷、限量和防重 29 | 数据和代码:数据就是数据,代码就是代码 30 | 敏感数据:如何正确保存和传输敏感数据? 不定期加餐 加餐1:带你吃透课程中Java 8的那些重要知识点 加餐2:定位应用问题,排错套路很重要 加餐3:分析定位Java问题,一定要用好这些工具(一) 加餐4:分析定位Java问题,一定要用好这些工具(二) 加餐5:这15年来,我是如何在工作中学习技术和英语的? 结束语 结束语 | 写代码时,如何才能尽量避免踩坑?

知识点脑图

Java避坑宝典《Java业务开发常见错误100例》上线了

你将获得

  • 130 个代码坑点及其解决方案
  • 100 个场景化案例解读
  • 25 次源码深度解析
  • 使用 10 个工具定位问题根因

专栏有下面的六个特点

  • 全面性:我们经常可以在一些公众号中看到有关Java代码踩坑的一些文章,这些内容比较零散,看过之后不会留下深刻印象,本专栏中的100个案例可谓是Java代码避坑的大全,内容完整且连续,并且有因有果,这些内容不仅仅可以帮助你写出更好的代码,同时也有助于你进一步补全你的知识网增加面试的信心。你甚至还可以把二级目录当作代码审核的Checklist,帮助别的项目一起成长和避坑。
  • 不仅仅是代码层面的坑:《Effective Java》和《码出高效:Java 开发手册》是两本非常不错的主要介绍Java代码坑的书。但前者注重Java语言、后者更注重规范,而本课程覆盖使用Java进行业务开发涉及的各种常用框架和技术,不会局限于Java或者JDK本身,且设计篇、安全篇会从更高的视角去看开发时遇到的各种误区。因此,这个课程的讲授思路和内容,和这两本书有较大区别。
  • 深入浅出:专栏中有一部分案例涉及到一些比较复杂的场景,或是一些高级Java特性,对于这些案例,我会尝试使用通俗的语言配合一些示意图帮助你理解。
  • 知所以然也知其所以然:对于代码中的坑,我不仅仅会给出一个甚至多个解决方案,并且我还会分析其根本原因,只要篇幅允许大部分案例我都会进行相关源码剖析,让你不仅仅知道怎么避坑,更知道其中的原理。
  • 授人以鱼也授人以渔:有许多坑来自实际生产案例的总结,在遇到问题的时候,我们一定是先通过经验加上使用工具来定位分析问题,然后才定位到坑,并不是一开始就知道为什么的。在专栏中,我会尽可能把分析问题的过程完整呈现给你,而不是直接告诉你为什么,这样以后遇到问题你也有解决问题的思路。专栏中,我们会涉及到jclasslib、jvisuamlvm、jconsole、MAT、阿里Arthas、wireshark等工具。
  • 贴近实际有场景:不同于一般教科书式的编程书籍,只是在讲述语法。专栏的大多数案例来自实际真实的案例,并且在专栏中我还会经常分享一些最佳实践,体现的是我多年工作经验的总结和思考。

赶紧点击这里进入专栏吧

点赞
收藏
评论区
推荐文章
学python的猫 学python的猫
3年前
这些常见的坑,90%的程序猿都踩过,来看看里面有没有你的脚印?
在学习python的过程中,相信大家都有踩过不少的坑,有些坑可能踩了不止一次,感觉就像是在坑与坑之间反复横跳。那么如何避免这些坑呢?看完这篇文章,你就知道了。我们来谈谈我们学习python的过程中,最常见的七大坑:1.缩进,符号和空格不正确写代码时大家会使用缩进、对齐、空格等,这些是为了提高代码的可读性在python语言中,缩进是十分重要的比如在创建一个新
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
MySQL运维之我踩过的那些坑
!(https://oscimg.oschina.net/oscnet/442ddbbc67354890a6db24a96a442395.gif)!(https://oscimg.oschina.net/oscnet/d23b7a5b0ac6454ab7a4831e6995f774.jpg"知数堂新logo.jpg")
Wesley13 Wesley13
3年前
Java的BigDecimal容易出现的坑
BigDecimal一般是用来做要求比较高的精准计算的。前几天在使用的时候遇到一个大坑,记录下。这个问题产生是使用BigDecimal做除法(divide)运算,这个类的divide方法存在三个常用的构造函数。BigDecimaldivide(BigDecimal divisor)           Returnsa 
Stella981 Stella981
3年前
Inno Setup 自定义界面心得
因为项目需要,需要打windows安装包,要求安装界面完全按照需求来。作为没接触过这块儿的服务端宝宝,在此期间踩了很多坑。坑不提也罢,最终结果圆满,记录下与大部分网上PO出来的做法不太一样的小心得,备忘。网上搜到的自定义界面,都用的botva2.dll,我没用。应该说,用过,但遇到了图片变形的问题,短时间内没解决,所以最后全都用的 Inno
Wesley13 Wesley13
3年前
Java日常开发的21个坑,你踩过几个?
前言最近看了极客时间的《Java业务开发常见错误100例》,再结合平时踩的一些代码坑,写写总结,希望对大家有帮助,感谢阅读~1\.六类典型空指针问题包装类型的空指针问题级联调用的空指针问题Equals方法左边的空指针问题ConcurrentHashMap这样的
Wesley13 Wesley13
3年前
Java面试系列01(Java类加载、双亲委托机制、Java优点)
决定写一系列这样的文章吧,这一类的文章并不会探究到Java的底层知识,这个系列的文章(虽然我之前的坑还没填完。。。不过还是想写一下)可能会和之前写过的文章一些知识重复,编程大神如果想回忆一下也可以看一看。小白的话,不建议看。因为我不会写的通俗易懂,大部分是已经被大多数人认同的定义,如果你对你的理解力很有自信,那本系列文章对你会很有用(其实,小
Wesley13 Wesley13
3年前
AD中常见5种架构
↑关注星标 ~从此不迷路,后台回复【Windows】送你Windows学习资料笔者在IT运维行业多年,刚开始在乙方从事IT系统集成项目,后来一直在甲方从事IT运维至今。在乙方工作时经常遇到客户挖的坑,如AD用户删除怎么恢复?我公司只有一台AD挂了怎么办?笔者发现这些问题其实都是设计不合理造成的,说白了客户IT工
3A网络 3A网络
2年前
明明加了唯一索引,为什么还是产生了重复数据?
明明加了唯一索引,为什么还是产生了重复数据?前言前段时间我踩过一个坑:在mysql8的一张innodb引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。到底怎么回事呢?本文通过一次踩坑经历,聊聊唯一索引,一些有意思的知识点。1.还原问题现场前段时间,为了防止商品组产生重复的数据,我专门加了一张防重表。如果大家对防重表,比较感兴趣,可以看看
记一次SpringBoot服务生产环境内存占用过高的排查
缘起生产环境服务A部署在K8s上,某天运维告诉我这个服务经常会重启,客户没有报告是因为我们是滚动发布更新,先启动这个服务的一个新实例,然后将旧实例Kill掉,这样前端是无感知的,但重启是实实在在存在的,生产问题不可马虎,于是开启了定位问题之旅。过程定位问题