堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象) 1...
堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象) 1...
背景 生产环境偶尔会有一些慢请求导致系统性能下降,吞吐量下降,下面介绍几种优化建议。 方案 1、undertow替换tomcat 电子商务类型网站大多都是短请求,一般响应时间...
哪些代码破坏了LSP? 实际上,里式替换原则还有另外一个更加能落地、更有指导意义的描述,那就是 Design By Contract,中文翻译就是 按照协议来设计。 子类在设...
redis是什么? 简单来说redis是一个开源的使用ANSI C语言编写的内存数据库,使用key-value的数据结构。支持数据持久化到硬盘,支持多种api语言的连接。通常...
在项目中,经常有一些业务需要抛出异常,但是如果后台直接抛出throw new Exception的话,前端就很难看,对用户提示也不够友好,今天我们就来解决这个问题。 先建立一...
在之前的章节中我们讲过yml配置文件,小伙伴们还记得吗?很好用,但是实际生产中会有很多问题。 测试是一套配置,生产是一套配置;不同人开发不同的模块,共用一个yml文件容易发生...
常用的定时任务有两种: 基于注解 基于接口 基于注解@Scheduled 注:不会写corn表达式的小伙伴,可以使用这个哦:https://cron.qqe2.com 会帮你...
前言 看了前一篇重构之后的代码,你可能还会有疑问: 在添加新的告警逻辑时,改动二(添加新的 handler 类)是基于扩展而非修改的方式来完成的,但改动一、三、四貌似不是基于...
前言 我们学习了 SOLID 原则中的单一职责原则和开闭原则。今天,我们再来学习 SOLID 中的 “L” 对应的原则:里式替换原则。 整体上来讲,这个设计原则是比较简单、容...
实际项目开发过程中,肯定有这样的需求: 记录每个rest请求耗费的时间,入参,出参 某些请求需要判断是否有权限,某些请求是不需要权限也可以运行的 这个需求太普遍了。今天我们就...
继承(Inheritance) 学习完了Java封装和抽象两个特性,我们再来看继承特性。如果你熟悉的是类似 Java 、C++这样的面向对象的编程语言,那你对继承这一特性,应...
前言 上一篇开闭原则最有用的代码改动是基于 “修改” 的方式来实现新功能的。如果我们遵循开闭原则,也就是 “对扩展开放、对修改关闭”。那如何通过 “扩展” 的方式,来实现同样...
实际项目中免不了要跟其他系统交互,那就会涉及到接口调用,如果是自己本系统的还好,可以通过打jar包引用的方式放到本项目中直接调用。 如果是其他系统的,那就需要通过远程接口调用...
文件上传 新建一个项目,添加UploadController 然后在postman上模拟发送请求,如下图: 点击上传。失败!怎么回事,我们看下后台的报错信息 原来是找不到文件...
我们在实际的项目过程中,如何理解Java设计模式的单一职责原则(SRP)? 我们今天要学习的是 SOLID 原则中的第一个原则:单一职责原则。 单一职责原则的英文是 Sing...
我们已经开始springboot几期了,大伙有没发现在启动工程的时候控制台会输出一段这样的东西: 那这个可以改吗,可以改的B格高一点吗,答案是肯定的,下面跟这个我来改下。 S...
@SpringBootApplication 包含@Configuration、@EnableAutoConfiguration、@ComponentScan,通常放在主类上...
Transaction事务 上期我们讲到了jpa的常用操作,查询、更新、删除等,但是如果在操作数据库事务时发生异常,数据会回滚吗?下面我们来看个例子 UserControll...
接着上期说,上期没写一条sql就把数据查询出来了,那如果要保存或者更新数据怎么办呢?能不能自己写sql呢? 保存数据 在UserController里面添加上面的方法。使用@...