Springboot
文章平均质量分 96
原来是笑傲菌殿下
这个作者很懒,什么都没留下…
展开
-
【编程二三事】SQL是如何执行的?
Mysql是我们日常接触最多的一个开发组件了。但是,一个SQL是如何从我们的应用程序里传递到数据库里去的呢?数据库又是如何解析并处理这些SQL语句的呢?别急,让我给你一一道来。那么最后回顾总结下来,执行一句SQL语句大致要经过如下的步骤: 第一层需经过客户层,建立客户端与Mysql数据库之间的连接。其中,Mysql会通过连接池、数据缓存等方式,减少连接的耗时、查询的耗时。 第二层会经过服务层,该层主要针对用户输入的语句信息进行翻译、解析、校验等逻辑。依次对应于解析器、优化器、执行器。原创 2023-08-06 23:10:36 · 252 阅读 · 0 评论 -
还苦于写接口文档?快试试javaDoc和Swagger
上文内容中主要介绍了两种编写接口文档的方式:javaDoc和Swagger。其中javaDoc由于其提示方式,更适用于后端间的接口编写。通过合适的javaDoc标记,可以很简单的标记出相关的枚举类、额外的文档信息等。 Swagger与javaDoc不同,其主要提供了一个在线的接口文档提供方式。在针对后端对前端提供文档的情况下,有较好的表现。通过简单的编写,就可以在项目启动后,提供一个完整的接口文档。 通过Swagger和javaDoc结合,我们就可以通过极少的代码,搭建出清晰易懂的接口文档。原创 2023-03-26 19:02:10 · 645 阅读 · 0 评论 -
哦,原来事务传播是这样
在事务嵌套的情况下,事务如何从调用者往被调用者传播的机制。 首先,需要清楚的是,根据场景的不同,所需要使用的事务传播机制往往是不同的。比如对于数据强一致性的情况,我们希望这两个嵌套事务保持一致。但是对一些数据不需要保持强一致性的场景,我们可能希望两个事务间互不干扰。事务传播级别代码中的传播级别级别描述REQUIREDREQUIRED级别是Spring的默认事务级别,在Spring注释中对于该等级的描述是:会自动加入当前的事务,如果不存在则新建事务。SUPPORTS。原创 2022-12-25 17:12:06 · 344 阅读 · 0 评论 -
我悟了!Mysql事务隔离级别其实是这样!
介绍了这么多有关事务隔离的内容,我们终于可以回归到我们的问题上来了。那么其实对于开头提到的问题,原因就是在异步线程中,会新开一个事务,这两个事务是并行的。由于mysql默认的事务隔离级别是可重复读,会导致事务A异步的情况下,数据可能未提交,事务B执行较快而获取到了旧数据,造成了同步数据错误的问题。 知道了问题,那么解决方案就比较简单了,可以不通过异步的方式发送,而是采用kafka消息的机制。这样就给事务A留足了事务提交的时间,从而确保数据的准确同步。原创 2022-11-22 20:53:57 · 330 阅读 · 0 评论 -
浅析Spring事务实现原理
首先我们来了解下,最简单的事务是怎么实现的呢?以JDBC为例,当一个数据库Connection对象创建后,其会默认自动提交事务;每次执行SQL语句时,如果成功,就会向数据库自动提交,不能回滚。 通过调用setAutoCommit(false)方法可以取消自动提交事务。等到所有的SQL语句都执行成功后,调用commit()方法提交事务。如果其中某个操作失败或出现异常时,则调用rollback()方法回滚事务。原创 2022-11-08 18:24:31 · 647 阅读 · 0 评论 -
如何用IDEA提高你的开发效率
作为一名java开发工程师,IDEA无疑是我日常接触最多的工具。因此,能否高效使用IDEA软件,一定程度上决定了我们的开发效率。本文将主要介绍IDEA中的四个便于提高开发效率的功能,常用快捷键、实时模版、后缀补全、文件和代码模版。相信一定会对你提升开发效率有所帮助。 期望通过对IDEA上述进阶功能的学习,我们未来可以更好的驾驭IDEA的功能,让IDEA不仅仅是完成开发的工具,更应该成为我们提高生产效率的真正利器。毕竟打工路漫漫,能早开发完成就代表我们能多努(mo)力(yu)一点。祝各位永不加班~原创 2022-10-30 17:07:02 · 1166 阅读 · 0 评论 -
一个Springboot配置顺序问题,让我直接回滚代码了
为了找到问题发生的原因,首先需要了解配置是如何在SpringBoot项目中生效的。查阅资料后,我知道了在SpringBoot中,存在一个名为的变量,其中保存着Spring中启动的所有信息。在这所有的变量中,配置信息主要同变量相关,诸如JVM参数、环境变量、Apollo配置等配置用封装后,存放在里的。 除了存储配置以外,SpringBoot还设计了用于管控当前的配置信息,并负责对配置进行填充。 至于和的关系,形象点来说,就是一位翻译官,他会根据现有的词典。原创 2022-10-23 20:24:35 · 989 阅读 · 0 评论 -
从一个主从延迟问题,学习Mysql主从复制原理
主从架构作为最常见的集群搭建模式,通过将读写分离,来避免所有的请求都请求到同一个数据库上,从而减少单个数据库的压力。其次,通过对从库进行水平的扩展,也会使得系统的伸缩性及负载能力得到提升。 一主一从为最常见的主从架构模式,由一个主节点+一个从节点组合而成,当主节点宕机时,从节点可以快速接替主节点的工作。 该架构有一个主节点+多个从节点组成,适合读较多的场景,可以将读命令分摊到多个从节点。 在一主多从的基础上,为了减轻主库向从库同步数据的压力,还出现了树状主从/级连复制。原创 2022-09-25 07:19:38 · 425 阅读 · 0 评论 -
关于我加了一行日志搞崩了服务这件小事
周三的时候,组内出现了一个线上问题,影响到了若干个用户的下单、支付等操作。然而实际查询到问题的原因时,发现只是由于一行小小的日志打印导致的错误。以下的文章内容分为主要分为三部分:1、对案件的发生进行回顾;2、分析案件发生的原因;3、对案件总结与反思以三章内容来回顾出现的问题,以及提供未来的预防策略。 在经历了这次惨痛的教训之后,有哪些是值得我们深入关注去思考和反思的呢?1、在编写方法的时候尽量避免才用getXXX、isXXX的方法进行书写,这会导致部分框架的解析出现问题。原创 2022-08-22 09:51:00 · 237 阅读 · 0 评论 -
从0-1了解Spring是如何运行起来的(四):BeanFactory后处理初分析,了解如何加载BeanDefinition
最深刻了解一个框架的思想的方式,莫过于看源码,本系列旨在于从Springboot底层源码(Version - 2.6.6)出发,一步步了解springboot是如何运行起来的。在前述的文章中,我们主要了解了SpringBoot是如何实现配置文件的加载、context的预处理.........原创 2022-07-03 17:15:28 · 239 阅读 · 0 评论 -
每天都在写Getter、Setter方法,我不耐烦了,于是用了神器MapperStruct,crud效率一下子提高了~
前言 相信绝大多数的业务开发同学,日常的工作都离不开写getter、setter方法。要么是将下游的RPC结果通过getter、setter方法进行获取组装。要么就是将自己系统内部的处理结果通过getter、setter方法处理成前端所需要的VO对象。public UserInfoVO originalCopyItem(UserDTO userDTO){ UserInfoVO userInfoVO = new UserInfoVO(); userInfoVO.setUserName(u原创 2022-05-29 20:33:30 · 683 阅读 · 0 评论 -
从0-1了解Spring是如何运行起来的(三):Context预处理,为加载容器做准备
前言最深刻了解一个框架的思想的方式,莫过于看源码,本系列旨在于从Springboot底层源码(Version - 2.6.6)出发,一步步了解springboot是如何运行起来的。从0-1了解SpringBoot如何运行(一):Environment环境装配从0-1了解SpringBoot是如何运行起来的(二):定制你的banner在前述的文章中,我们主要了解了SpringBoot是如何实现环境装配和banner打印的,这一期我们主要来了解SpringBoot是如何创建Context,并对conte原创 2022-05-24 16:11:21 · 351 阅读 · 0 评论 -
从0-1了解SpringBoot是如何运行起来的(二):定制你的banner
最深刻了解一个框架的思想的方式,莫过于看源码,本系列旨在于从Springboot底层源码(Version - 2.6.6)出发,一步步了解springboot是如何运行起来的。前言 上期我们聊了Spring是如何装配环境的。这期我们来接着往下看,一同来了解springBoot是如何加载出banner图片信息的。public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = ne原创 2022-04-10 17:20:26 · 575 阅读 · 0 评论 -
从0-1了解SpringBoot如何运行(一):Environment环境装配
前言最深刻了解一个框架的思想的方式,莫过于看源码,本系列旨在于从Springboot底层源码(Version - 2.6.6)出发,一步步了解springboot是如何运行起来的。public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args);}首先我们从run方法开始逐步深入其中。public ConfigurableApplicationContext run(St原创 2022-04-06 10:08:24 · 1226 阅读 · 0 评论