自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

接需求(Java),各个平台都同名,欢迎搜索关注

发布开发中积累的知识和Spring,SpringBoot,Mybatis源代码解读分析。

  • 博客(29)
  • 收藏
  • 关注

原创 Spring Boot自动配置原理懂后轻松写一个自己的starter(SpringBoot Starter教程)

因为Spring原生开发需要加太多的配置,而使用Spring Boot开发很容易上手,只需遵循Spring Boot开发的约定就行了,也就是约定大于配置,无需觉得它神奇,它的底层都是使用的Spring。是因为我感觉这段去重复代码用的太好了,自从看了这段代码,后面博主自己写去重逻辑的时候也就参照Spring大佬这一行代码写去重逻辑(PS:如果自己业务去重逻辑没有其他逻辑的时候参考使用),简单,效率应该也不低毕竟大佬们这样用了。由于很多地方遇到了这个Import注解,所以先简单说一下这个注解的作用。

2023-02-22 12:10:40 157 3

原创 Spring中Bean的生命周期

Spring中Bean的生命周期面试题运用与讲解

2023-02-03 21:00:00 71 3

原创 Mybatis开发积累的一些好用知识,mapper接口传参详解,源码解析

总结:当mapper接口只有一个参数的时候,xml文件中你可以在#{}中使用任何合法的字符传参,当mapper中使用map作为参数的时候,xml文件中你可以在#{}中使用map的key传参,当mapper中使用java对象作为参数的时候,xml文件中你可以在#{}中使用java对象的属性传参。或者使用的时候不理解,使用的时候总犹豫感觉用的迷迷糊糊的。2:传递一个map参数,如果我们需要传递的参数比较多,参数个数是动态的,那么我们可以将这些参数放在一个map中,key为参数名称,value为参数的值。

2023-08-13 23:00:00 1013

原创 SpringMvc,全面讲解@RequestParam注解的用法和原理

4:@RequestParam 未指定 name,参数类型为 MultiValueMap时,用来接收 request 中所有参数的值,key 为请求中的参数名称,value 为值的集合 List。3:@RequestParam 未指定 name,参数类型为:Map时,用来接收 request 中所有参数的值,Map 中 key 为参数名称,value 为参数的值。1:@RequestParam 指定 name,获取对应参数的值。

2023-08-13 18:26:59 2204

原创 Spring扫描类的原理

注意,我图片中的描述文字也是很重要的。获取的符合条件的类了,就把这些类封装成BeanDefination。【当然里面还有很多细节我没讲,因为我感觉了解到这些开发中遇到的相关的问题应该就很容易解决了。好了读完这三篇文章,我感觉你应该清楚的知道了我们写的一个类Spring是怎样给我们实例化成一个Bean的了。这个注解Spring boot项目已经自动给我们配置了,有了这个注解项目启动的时候就会找到这个注解然后进行类的加载。如下我们没有配置扫描的包,默认取的包名,后面也就会扫描这个包下及其子包下符合条件的类。

2023-07-03 12:05:31 522

原创 Mybatis一对多查询,分页显示问题解决方案

也欢迎转发给你感觉可能会使用这个功能的朋友,分享给朋友手留余香【因为赠人玫瑰,手留余香】。分页查询在我们的开发中也许是遇到最多的功能,一张表的分页,多张表一对一功能的分页相信大家写来都是得心应手,但是在一对多分页查询的时候大家写法不对的时候,可能会遇到查询的总条数和实际总条数对不上的问题。查询第一页,每页显示2条数据,查出来的结果也是完全满足我们的要求,也和我们数据库初始化的总条数一样,一共3条数据【PS上面的Mapper中SQL的写法对ORACLE同样可以使用,因为这次它两个的语法规则是一样的】。

2023-06-23 17:02:24 4196 1

原创 Valid相关校验-全面解决开发中遇到的各种校验问题

我们在开发的过程中难免会遇到各种用户输入的校验,当然你用【if else】能完成开发。如果你是开发几个月的初级程序员你这样写可以,但是如果你已经是一个三年开发经验的程序员老司机了【你已经是一个成熟的程序猿了,写的程序一定要能自动运行】,你还一直写【if else】那就显得你太low了,老板看到你这样写代码那升职加薪肯定把你排到最后。那怎样才能写出看出比较高级的代码呢?好了下面就带大家完成各种形式的校验,开发中一定用得到。使用Valid校验你首先要了解什么是JSR303。

2023-06-20 11:36:10 679 1

原创 使用Mybatis生成树形菜单-适用于各种树形场景

开发中就是需要这种记录,为什么呢,当你没看到这篇文章你写一个树形结构的代码可能需要一天,而你点一下关注,后面开发中你遇到这种功能的开发一个小时应该就能搞定并且还没有问题,极大的提高了开发效率,领导看到你效率那么高应该也会很高兴,说不定升职加薪就在眼前。比如用户登录系统后菜单的展示,某些大型购物网站商品的分类展示等等,反正开发中会遇到各种树形展示的功能,这些功能大概处理的思路都是一样的,所以本文就总结一下树形结构的代码生成,在开发的时候套用这种结构就可以了。有的小伙伴可能会说,博主我们项目使用的jdk7。

2023-06-14 11:54:58 406

原创 开发中常见的正则表达式

作为Java开发者,在写程序难免会遇到各种字符串的校验。比如:电话号码,邮箱,日期等等。这些校验一般使用正则表达式来进行验证比较简单方便。而大家网上找一些正则总是不全,所以就把工作中常常使用到的正则表达式总结以下供大家开发的时候使用。1:日期相关的正则表达式。1.1:12小时时间制(hh:mm:ss)。/^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/public static String regex = "^(?:1[0-2]|0?[1-9]):[0-5

2023-06-07 11:52:39 104

原创 使用Mybatis-Plus问题解答

我们使用一个新的框架难免会遇到各种问题,当然使用这款国产的优秀的Mybatis-Plus框架也不例外,下面我就给大家列举一下使用Mybatis-Plus可能遇到的一些问题,并做一下一一的解答。

2023-05-30 12:20:46 508

原创 Spring中Bean的实例化详细流程

既然我们的对象交给了Spring管理,那我们的对象怎么生成的呢,就让我们一起看下。这时我的另一个朋友说那请一个保姆把家里好好整理一下就可以了,然后给他介绍了一个保姆大S(PS:本文无意指向任何人,因为Spring的前缀是S)然后就把家里整理得井井有条,就请朋友来家里玩了。看一些源码你的思路会更清晰,写代码也更得心应手,写代码的时候你可能不自己觉的就按照这些大神写代码的思路去完成高质量的代码。上面实现的方法都会在A实例化的时候执行,如果你写的业务逻辑有需要在A实例化时候执行的就可以使用上面的方法完成。

2023-04-29 09:00:00 158

原创 如果你项目使用了MyBatis-Plus你一定要用它

而如果你项目中使用了MyBatis-Plus,那这个脚手架我一定要推荐给你,它就类似给2个基友加上了辅助装备,游戏起飞了。对了你首先也要掌握MyBatis-Plus的用法哦,这是中国人自己写的,很容易理解附上网址,欢迎你去学习很是简单。3:各种代码生成规则的Util是这个GenUtils类,这个类里作者写了很多中文注释,就不带大家看了,自己下载看一下就可以了。希望这篇文章对你开发有利,学会使用这个脚手架能提高你的开发效率,这是开源的项目欢迎你分享,转发,让更多的人知道这个项目。我只听说过,一切都在酒中)。

2023-04-23 12:03:29 115

原创 遍历Map的几种方法,然后比较一下性能,Map用法的最好推荐方式

经过上面的验证(在大批量数据的时候,数据量小的时候没测试,感觉数据量小的化耗时太小更不好比较)最好不要用map.forEach()来遍历Map。在普通的遍历方法中 entrySet() 的方法要比使用 keySet() 的方法好。【PS虽然keySet() 的平均值有时候比较小,但它的波动性比较大,所以还是考虑阿里巴巴Java开发手册的建议使用entrySet()遍历Map】。Map在我们Java程序员高频使用的一种数据结构,Map的遍历方式也有很多种,那那种方式比较高效呢,今天就带大家一起验证下。

2023-04-14 12:00:20 1929

原创 Java从List中删除元素的正确用法

Java从List中删除元素的正确用法.

2023-04-06 12:04:52 4302 6

原创 阿里巴巴为什么建议使用BigDecimal进行浮点数运算

女朋友想喝奶茶了,你就去买了杯奶茶,然后你问了一下价格。但是你没有犹豫女朋友说的怎么会错呢,女朋友说的一定是对的。正确的创建方法:优先推荐入参为String的构造方法,或者使用BigDecimal的valueOf方法,此方法内部其实执行了Double的toString。如下用差不多相同的代码结果就是对的【PS一定要记住女朋友说的就是对的就是0.1】。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。

2023-03-27 12:02:25 179

原创 mybatis-spring注解MapperScan的原理

很多开发者应该都知道,我们只使用@MapperScan这个注解就可以把我们写的Mybatis的Mapper接口加载到Spring的容器中,不需要对每个Mapper接口加@Mapper这个注解了,加快了我们开发的效率。

2023-03-21 12:03:32 597

原创 Java多线程开发CompletableFuture的应用

做Java编程,难免会遇到多线程的开发,但是JDK8这个CompletableFuture类很多开发者目前还没听说过,但是这个类实在是太好用了,了解它的一些用法后相信你会对它爱不释手(呸渣男,咋对谁都爱不释手呢),好了我先简单举个列子,告诉你用它有多好。这么好用的类,欢迎你分享给其他的人,让更多人知晓一下。当然这个类还有很多的方法,我这里只写了部分介绍了部分场景作为一个引子,如果想了解它的更多的应用可以看它的API的文档。好了讲过它的使用方法了那我们就聊一下它的几个使用的场景,开发中这写场景应该会使用到。

2023-03-20 12:09:08 169

原创 Oracle相关的函数

开发中常见的Oracle相关函数

2023-03-15 12:07:58 54

原创 github相关操作

github里面有很多大神写的代码,但是有不少小伙伴对使用它比较的生疏,下面我就把它的简单和常规的操作说一下,希望对你查看github有一定的帮助。forks数大于500的springboot项目 springboot forks:>=500。xxx in :description 项目描述包含 xxx的。xxx in:readme 项目readme文件中包含 xxx的。follow :关注你感兴趣的作者,会收到他们的动态。xxx in :name 项目名包含 xxx的。

2023-03-09 11:55:49 28

原创 深入理解Spring的Bean定义对象BeanDefinition-面试重点

Spring注解这篇文章中讲到了Spring的组件,组件加载到Spring容器中也就是Spring容器中的Bean对象,想要更深理解Spring中的Bean对象,那对这个BeanDefinition一定要有深入的了解,它是构造出来Bean对象的一切基础,比如Bean的作用域,Bean的注入模型,Bean是否进行加载等等信息,都需要一个BeanDefinition类来定义描述这些Bean的信息。..

2023-02-28 12:00:41 255

原创 Java开发中要避免的坑和一些代码优化技巧

Java开发中要避免的坑和一些代码优化技巧

2023-02-27 11:53:34 119

原创 Spring注解篇,学完注解深入了解SpringBoot更容易

但有的时候我们引入的是其他的jar包我们自己无法直接加@Component注解的,所以需要用到EnableConfigurationProperties这个注解),Spring官方也是非常支持开发者这样做的。这个注解的作用就是使 @ConfigurationProperties生效,如果一个配置类只配置@ConfigurationProperties注解,而没有配置@Component,那么在IOC容器中是获取不到properties配置转换的bean的。@Contional 进行条件判断的注解。

2023-02-25 13:40:58 28

原创 Spring事务(Transaction)管理高级篇一栈式解决开发中遇到的事务问题

Spring是目前Java开发中最流行的框架了,它的事务管理我们在开发中常常的用到,但是很多人不理解它事务的原理,导致开发中遇到事务方面的问题往往都要用很长的时间才能解决,下面就带着大家去深入了解Spring的事务,然后文章的最后还会给出开发中常常遇到的问题以及解决方案。如果单纯的用Spring框架进行开发(PS使用注解开发,不是XML配置的方式)。那么要使用Spring事物我们首先要加的就是Spring的这个【EnableTransactionManagement】注解(PS如果直接使用了Spingb

2023-02-18 20:36:02 162 1

原创 和ChatGPT聊了一会天它的学习反映能力惊呆了我

ChatGPT:为了使根茎显示为立体的效果,我们可以通过在根茎上绘制一些额外的矩形来实现。运行这段代码可以看到一朵带有层次感的全红色的带有立体的绿色根茎的玫瑰花。运行这段代码可以看到一朵带有绿色根茎的红色玫瑰花,根茎和花瓣连在一起。我:运行起来看着是烟花了,麻烦打印出带根茎的玫瑰花,花颜色是红色的。运行这段代码可以看到一朵带有层次感的全红色的带有绿色根茎的玫瑰花。ChatGPT:对不起,这是我的错误。运行这段代码可以看到一朵全红色的带有绿色根茎的玫瑰花。运行这段代码可以看到一朵带有绿色根茎的红色玫瑰花。

2023-02-11 22:17:39 2828

原创 Java堆外缓存(一个很有意思的应用)

我们在开发过程中会遇到这样的场景:就是一个服务的各项 JVM 的配置都比较合理的情况下,它的 GC 情况还是不容乐观。分析之后发现有 2 个对象特别巨大,占了总存活堆内存的 90%以上。其中第 1 大对象是本地缓存, GC 之后对象一直存活。然后不久应用就会抛出OutOfMemoryError,那怎样避免这种情况呢?这次给大家推荐一个比较好用的技术:堆外缓存。哈哈哈,顾名思义就是在Java堆之外的缓存,也就是把一些大的难以被GC回收的对象放到堆之外。PS堆外内存不受,堆内内存大小的限制,只受服务器物理内

2023-02-11 13:33:17 353

原创 Spring配置类理解(Lite模式和Full模式)

Spring中的注解大家在开发中都常常用到,但是如果我说我们常常用的注解修饰了一个类,表示这个类就是一个配置类很多开发者都会有点迷糊了。具体配置类在开发中有什么样的用途我就不多说了,相信很多人都知道,如果不知道可以私信我,我可以给你说一些关于它的简单点的知识,当然后期也可能会讲一些配置类的高级点的知识。下面我们就说一下那些注解修饰的类可以称之为配置类。1:类上标注有@Component注解。PS 可以看Spring源码@Service,@Controller注解上都有此注解。2:类上标注有@Comp

2023-02-09 21:37:28 393

原创 Mybatis批量操作

1:新增首先,Mysql插入一条记录返回主键对Mybatis版本要求低,而批量插入返回带主键的,需要升级到3.3.1 以及以上的版本。​1.1:Mysql上图需要注意加入useGeneratedKeys="true" keyProperty="主键字段"。1.2:OracleOracle 批量插入不支持返回主键,具体怎样操作才可以批量返回主键,后面章节专门讲(欢迎关注微信公众号:程序员xiaozhang)。本章节主要讲数据库的批量操作。2:更新上面图中的更新方法Ora

2023-02-08 22:33:51 262 1

原创 Spring循环依赖

Spring循环依赖面试中也会被常常问到。但是它的整个过程很多人都不知道,什么叫循环依赖呢。多个Bean之间相互依赖,形成一个闭环。

2023-02-05 21:07:14 60

原创 Spring异步Async和事务Transactional注解

Spring开发中我们我们常常用到@Transaction和@Async,但这2个注解加在一起很多的开发者不敢用,担心事务不生效。下面我们就仔细讲解一下这2个注解同时运用,文章用3个场景讲述它们之间的运用,相信看完本篇文章你就能灵活运用这2个注解了。场景一:@Async + @Transaction放在一个方法中,并且方法有异常发生进行单元测试如下:运行结果:事务回滚了,user没有新增进入数据库。场景二:一个同步的方法,调用异步的方法,同步的方法抛出异常。

2023-02-04 00:34:17 3059 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除