20、Spring框架:框架帮我们做了很多工作也带来了复杂度

你好,我是朱晔。今天,我们聊聊Spring框架给业务代码带来的复杂度,以及与之相关的坑。 在上一讲,通过AOP实现统一的监控组件的案例,我们看到了IoC和AOP配合使用的威力:当对象由Spring容器管理成为Bean之后,我们不但可以通过容器管理配置...

Java业务开发常见错误100例

21、 代码重复:搞定代码重复的三个绝招

你好,我是朱晔。今天,我来和你聊聊搞定代码重复的三个绝招。 业务同学抱怨业务开发没有技术含量,用不到设计模式、Java高级特性、OOP,平时写代码都在堆CRUD,个人成长无从谈起。每次面试官问到“请说说平时常用的设计模式”,都只能答单例模式,因为其他...

Java业务开发常见错误100例

22、接口设计:系统间对话的语言,一定要统一

你好,我是朱晔。今天,我要和你分享的主题是,在做接口设计时一定要确保系统之间对话的语言是统一的。 我们知道,开发一个服务的第一步就是设计接口。接口的设计需要考虑的点非常多,比如接口的命名、参数列表、包装结构体、接口粒度、版本策略、幂等性实现、同步异步...

Java业务开发常见错误100例

23、缓存设计:缓存可以锦上添花也可以落井下石

你好,我是朱晔。今天,我从设计的角度,与你聊聊缓存。 通常我们会使用更快的介质(比如内存)作为缓存,来解决较慢介质(比如磁盘)读取数据慢的问题,缓存是用空间换时间,来解决性能问题的一种架构设计模式。更重要的是,磁盘上存储的往往是原始数据,而缓存中保存...

Java业务开发常见错误100例

24、业务代码写完,就意味着生产就绪了

你好,我是朱晔。今天,我们来聊聊业务代码写完,是不是就意味着生产就绪,可以直接投产了。 所谓生产就绪(Production-ready),是指应用开发完成要投入生产环境,开发层面需要额外做的一些工作。在我看来,如果应用只是开发完成了功能代码,然后就直...

Java业务开发常见错误100例

25、异步处理好用,但非常容易用错

你好,我是朱晔。今天,我来和你聊聊好用但容易出错的异步处理。 异步处理是互联网应用不可或缺的一种架构模式,大多数业务项目都是由同步处理、异步处理和定时任务处理三种模式相辅相成实现的。 区别于同步处理,异步处理无需同步等待流程处理完毕,因此适用场景主要...

Java业务开发常见错误100例

26、数据存储:NoSQL与RDBMS如何取长补短、相辅相成

你好,我是朱晔。今天,我来和你聊聊数据存储的常见错误。 近几年,各种非关系型数据库,也就是NoSQL发展迅猛,在项目中也非常常见。其中不乏一些使用上的极端情况,比如直接把关系型数据库(RDBMS)全部替换为NoSQL,或是在不合适的场景下错误地使用N...

Java业务开发常见错误100例

27、数据源头:任何客户端的东西都不可信任

你好,我是朱晔。 从今天开始,我要和你讨论几个有关安全的话题。首先声明,我不是安全专家,但我发现有这么一个问题,那就是许多做业务开发的同学往往一点点安全意识都没有。如果有些公司没有安全部门或专家的话,安全问题就会非常严重。 如果只是用一些所谓的渗透服...

Java业务开发常见错误100例

28、安全兜底:涉及钱时,必须考虑防刷、限量和防重

你好,我是朱晔。今天,我要和你分享的主题是,任何涉及钱的代码必须要考虑防刷、限量和防重,要做好安全兜底。 涉及钱的代码,主要有以下三类。 第一,代码本身涉及有偿使用的三方服务。如果因为代码本身缺少授权、用量控制而被利用导致大量调用,势必会消耗大量的钱...

Java业务开发常见错误100例

29、数据和代码:数据就是数据,代码就是代码

你好,我是朱晔。今天,我来和你聊聊数据和代码的问题。 正如这一讲标题“数据就是数据,代码就是代码”所说,Web安全方面的很多漏洞,都是源自把数据当成了代码来执行,也就是注入类问题,比如: 客户端提供给服务端的查询值,是一个数据,会成为SQL查询的一...

Java业务开发常见错误100例