自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 方法引用的序列化小秘密被我发现了...

1、当函数式接口实现了接口时,实现了函数式接口的lambda表达式就会在运行时生成一个方法。这个方法会返回一个对象,而该对象中就包含了lambda表达式需要序列化的全部信息。尤其是implMethodName属性,可以让我们获取到方法引用的方法名称,进而实现像MP一样通过方法引用转换为数据库字段的功能。2、针对lambda表达式中方法代码的序列化并不是真的把每行代码都序列化,【有多种方式,其中一种方式就是把方法中的代码抽取成一个静态方法,然后只需要序列化这个方法的全限定名即可。

2023-12-09 00:34:13 184

原创 探索匿名内部类与<init>方法鲜为人知的关系

编译器收集的方法由相同的代码块内容 + 每个构造函数组成(也就是我们有几个构造函数,就有几个方法,同时它们都有相同的代码块内容)方法的入参,由构造函数的入参和匿名内部类的代码块中传入的外部变量决定方法中,代码块的代码始终在构造函数前面执行方法是由代码块和构造方法共同组成的(以前我认为方法就是一比一对应构造函数的,而代码块就是由编译器收集成另一个方法,在方法之前执行的,哈哈哈)。路还很长,我们一起继续向前进!!

2023-06-16 16:09:51 200

原创 Spring如何解决循环依赖问题?让我们来一探究竟!!!

Spring的设计总是让我惊叹,简直是编程界的艺术品,之后也计划对Spring进行深入的学习,期待有更多的内容分享给大家!!!加油加油!!!

2023-05-27 22:38:32 193

原创 MySQL事务中MVCC和锁机制共同作用的分析

,后面的快照读select语句依旧走的是MVCC,导致当前读和加锁读的数据是不一样的,没有把我们前面的当前读缓存下来或者说更新到MVCC中去。大家一定都可以单独理解MVCC和锁机制,但是当在一个事务中在MVCC下使用加锁语句后,MySQL的查询语句是怎么处理的呢?)可以得出,8的update语句不仅修改了记录的值,还修改了记录上的最新修改事务的ID值,所以快照读。:结合6和7的结果,可以看出即使使用了当前读。语句走MVCC得到的数据 和 当前都。语句得到的数据是一样的。:结合8、9、10(

2023-04-25 22:16:43 457

原创 轻松理解MySQL的MVCC机制

MVCC主要依赖于三样东西实现,分别是`记录的隐藏字段`(聚簇索引才有)、`undo log`、`Read View`,接下来让我们一个个来解释一下这三样东西。

2023-03-22 17:35:35 527

原创 一篇文章带你拿下MySQL两阶段提交!

MySQL中两阶段提交的主要指的是`redo log`的两阶段提交,两阶段提交是为了解决在MySQL主从架构下,由`redo log`和`bin log`而导致主从机数据不一致问题。

2023-03-20 19:06:24 1002

原创 静态代码块一定先行?你错了!!!

大部分情况下,一些所谓的”原则“确实可以让我们快速分析出问题,但是我们也要有自己的思考,不能一味的跟着”原则“走!!!加油!!!

2023-02-21 14:37:49 157

原创 这么简单的InheritableThreadLocal,你还不会么?

1、和一样,也存放在Thread类中作为类型的成员属性,不过属性名是2、是父线程在创建子线程时,在子线程的构造方法的执行中,把父线程的深拷贝给子线程的,并可以通过重写的方法,对父线程的值进行处理后再赋值给子线程。3、需要注意的是,复制父线程共享变量的时机是在创建子线程时,如果在创建子线程后父线程再往 InheritableThreadLocal 类型的对象中设置内容,将不再对子线程可见。

2023-02-20 19:09:35 234

原创 JVM四种引用原理

下面的长篇大论先不看,简短的你看明白了下面的就可以不用看了:(软引用)、(弱引用)、(虚引用)2、如何使用这些对象?new SoftReference(目标对象【可选参数:,引用队列】)、new WeakReference(目标对象【可选参数:,引用队列】)、new PhantomReference(目标对象,引用队列)3、目标对象,就是我们想要赋予特殊引用的对象,比如我想给一个Integer对象设置一个软引用,那就new SofeReference(Integer对象)4、那么JVM在垃圾回收时,对。

2023-02-11 18:50:45 189

原创 Spring Security 鉴权的不同配置方式带来的差异

1、Spring Security 配置类方式配置的鉴权,是会在 Spring Security 的过滤链 中进行鉴权的,而注解方式配置的鉴权,则会在过滤链之后,进入Controller之前(最起码已经在Spring Boot的全局异常处理器之后)之间进行的鉴权。,因为我觉得要职责分明,权限不足异常还是应该由 自定义的鉴权失败处理器 进行处理,不应该在 Spring Boot 的全局异常处理器中耦合处理权限不足异常的代码。2、直接在 Spring Boot 的全局异常处理器中对这个权限不足的异常进行处理。

2022-12-29 14:33:39 342

原创 “秒懂”索引下推!原来索引下推这么简单!

在 MySQl5.6 版本中,带来了 index condition pushdown,简称ICP,也就是大名鼎鼎的`索引下推`。 索引下推不像覆盖索引那么好理解,今天就带你“秒懂”索引下推!

2022-11-20 15:41:28 974 5

原创 Redis笔记-高级篇(黑马视频教程)

Redis笔记-实战篇(黑马视频教程)

2022-07-07 10:53:18 2000 1

原创 Redis笔记-实战篇(黑马视频教程)

黑马Redis视频教程实战篇笔记

2022-06-20 15:18:51 2777 3

原创 Redis笔记-基础篇(黑马视频教程)

黑马Redis视频教程基础篇笔记

2022-06-20 14:43:10 966

原创 Spring Data Redis的GenericJackson2JsonRedisSerializer序列化器“失效”/“不起作用”问题

我们在初学Spring Data Redis时,肯定会遇到一个问题,就是他的序列化问题。当我们不指定序列化器时,默认Key、Value、HashKey、HashValue的序列化器都是null,然后会调用JdkSerializationRedisSerializer类来进行序列化。一般情况下,我们都不会使用默认的JDK序列化器,而是指定别的序列化器来使用。指定序列化器:@Configurationpublic class RedisConfig { @Bean ...

2022-05-24 11:18:25 2239 1

原创 重定向URL中文乱码问题

今天在使用重定向的时候,URL中的传参还有中文,导致出现了中文乱码,最后发现,是因为在重定向使用的是response,response 缓冲区的默认编码是 iso8859-1,此码表中没有中文。所以我们需要借助URLEncoder这个工具类的encode()方法,把会乱码的字符串指定目标编码即可。PS:还有很多别的办法,我只用了这一种语法:URLEncoder.encod(需要指定编码的字符串,指定的编码)举例:不做处理的Controller:@Reques...

2022-04-14 13:28:34 2269

原创 <form>表单中<button>自动提交的问题

最近想在<form>表单中,添加一个取消按钮,通过设置他的onclik来返回原来的界面,但是出现了一个很奇怪的现象,我点了这个取消的<button>却提交了,非常奇怪。一番搜索后,才发现原来是我没有指定<button>的type,而<button>的type如果不指定,那么默认就是submit。至此,解决办法就显而易见,指定<button>的type为button即可。举例:未指定type的<button>:...

2022-04-13 15:26:46 649

原创 Mysql中通过cast()函数实现对数值类型使用like关键字

Mysql中的like关键字,大家都不陌生,常用于模糊查询等,但是我们一般都是使用在varchar等字符串类型上,今天我遇到了一个需求,需要使用在数值类型上,那么该怎么解决这个问题呢?答案是使用cast()函数进行对数值类型进行转换。cast()函数作用:CAST()函数将任何类型的值转换为具有指定类型的值。目标类型可以是以下类型之一:BINARY,CHAR,DATE,DATETIME,TIME,DECIMAL,SIGNED,UNSIGNED。cast()函数语法...

2022-04-10 23:49:30 1362

原创 MyBatis-Plus自定义sql语句使用条件构造器的注意事项

在前面的文章提到了自定义sql语句如何使用MP的分页插件,在后续的使用中又出了一点状况。我想在自定义的sql语句中使用MP的条件构造器,一开始正常使用,后面突然发生了Bug,经过一番排查,发现是条件条件构造器不能为null。举例:前置条件:Mapper中的子自定义sql方法: IPage<Map<String,Object>> selectMyPage(Page<Map<String,Object>> page, @Pa...

2022-04-10 23:36:53 1517

原创 MyBatis-Plus分页插件之 对连表查询自定义sql语句来进行分页操作

今天有了一个需求,就是对连表查询的sql语句进行分页操作,我们都知道MP中的BaseMapper自带的方法都是对单表进行的操作,那么selectPage等分页查询方法自然也不例外。这个时候我就在想,要不然自己在sql语句中加入limit来进行分页算了,但是又想到自己页面中的部分其他功能又依赖于MP中的Page对象,那我要为了这个功能手搓一个自己的Page对象?nonono!tootroublesome!于是我就开始了我的搜索引擎大法,然后就发现其实还还是有一种很简单的办...

2022-04-07 18:20:06 2493

原创 mysql中判断字段是否等于null 的问题

在mysql语句中,一般都使用 '字段=xx' 的格式,来判断该字段是否等于某个值,但是今天遇到了问题,我想要判断某个字段是不是为null,使用了 '字段=null',却没有得到想要的结果。sql语句:select * from test where id=null结果: 注意!此时我的表中是由id为null的记录的啥也没有修改后的sql语句:select * from test where id is null结果:正常查询出了数据...

2022-03-30 21:39:17 2753

原创 再遇雪花算法id 之 与js数值类型number之间的问题

前面发过的文章中,提到过 雪花算法id在前后端交互中 会出现精度丢失的问题,使用注解@JsonSerialize(using = ToStringSerializer.class)即可解决,但是今天又遇到了这个问题,在使用了该注解的情况下,依旧发生了精度丢失,我简直是匪夷所思,精度丢失不是这么丢失的啊。然后最后几经解决,终于发现了问题所处。原来是我在向后端传值之前,调用了js函数,而在把 19位长度的数值 赋值给 形参,而这个时候形参的类型是number类型。由于js中 ...

2022-03-29 20:25:35 1422

原创 Spring的 String 与 Date 消息转换器

已知:1、Spring自带 这种格式的 "Wed Mar 02 13:00:51 CST 2022" 字符串 String <---> Date 消息转换器2、但是 Spring不带 这种格式的 "2022-03-10 07:00:55" 字符串 String <---> Date 消息转换器结论:1、所以当我们使用默认的Date格式字符串"Wed Mar 02 13:00:51 CST 2022",在Spring的Co...

2022-03-28 13:47:28 532

原创 Thymeleaf数据渲染延迟导致的问题

最近在写后台管理系统时,遇到了一个很诡异的Bug,时而有时而没有。在修改页面点击修改按钮,按道理应该正常运行,但是却404了,而且这个问题时间歇性的,有时候会出现404,有时候就会正常运行。一切的罪魁祸首都是Thymeleaf的缓存机制。PS:我学的也不深入,目前只会使用,这是我问大神得出来的结论。以下举例:HTML中部分代码:<a th:href="@{/order-list(pageNum=${pageNum})}"> 修改</a>正常...

2022-03-25 22:21:52 1089

原创 前端页面 向 Controller 方法传参为对象 时的问题

后端 Conroller 方法 接收参数为对象的情况非常常见,但是前端传递过来的参数,直接是一个对象类型很少见,当然也有相应的方法实现 前端传递对象类型并且实现接收(比如使用 @RequestBody注解),可以自行百度。这里要讲的问题是,当前端 向 后端传参为 对象类型时,后端接受参数也为对象时,不做一些处理,从而产生的误区。前端代码<!-- Page类是没有重写toString()方法的类,Order类是重写了toString()方法的类 --><a tit...

2022-03-22 20:06:19 2215

原创 雪花算法id 返回前端精度丢失问题

当我们用雪花算法生成id的时候,雪花算法生成的id长度有19位,而json在序列化中会将数字类型转换为16位,这就导致了精度的丢失,而且丢失的那部分数据也并没有四舍五入,这里就不做这方面的研究,主要讲一讲解决方案。解决方案:在实体类中使用雪花算法的属性上加上这个注解,改变这个属性的序列化过程。...

2022-03-17 22:40:57 1233

原创 MyBatis-Plus 表名和关键字重复问题

今天在对数据库进行CRUD的时候,莫名报错,最后弄了半天,发现是 表名order和Mysql中的关键字重复了。我们用MyBatis中自己手写的sql语句中加上 反单引号`` 即可,但是在MyBatis-Plus中为我们自动生成的那些方法该怎么办呢?难道就这么无法使用了么,当然是有解决办法的。@TableName(value ="`order`")public class Order implements Serializable { 使用@TableName,在指定...

2022-03-17 20:33:13 2759

原创 Linux之tar指令

首先,我要在这儿里讲解一下,tar指令确实可以用来压缩和解压,但是我们要知道tar指令本来是用来做打包的,至于可以同时压缩,我猜测是添加选项后,底层多调用了压缩指令而已。 打包,这个概念和 压缩 很像,但是不相同,可以这么理解: PS:以下把文件比喻成海绵 打包:就是把一堆海绵(文件),放在一个袋子里,不做其他任何操作,然后把这个大袋子当成一个海绵(tar格式文件) 压缩:把一堆海绵(文件),放在一个袋子里,并且用力压了压,让海绵的体积变小了,然后把这个...

2022-03-12 22:49:39 1575

原创 SpringAOP配置全局事务(配置类方式)

以下分为一步步来讲解,最后会总结一整段配置类的代码,同时这里讲的不是很详细,我在最后放一个详细讲解的文章链接,看不懂的可以去看一下。1、创建切面类@Aspect // 定义切面类,把当前类标识为一个切面供容器读取@Configuration // 定义配置类,注册到容器中public class SpringConfigTrans {}2、创建@Bean修饰的方法,返回事务拦截器(TransactionInterceptor),声明对应方法的事务属性,并且注册到bean中...

2022-03-02 22:10:35 1250

原创 SpringBoot项目中templates目录的资源访问问题

在SpringBoot项目中,一般都把静态资源放在 static目录 下,而页面放在 templates目录 下SpringBoot默认静态资源映射文件夹是 /static/ 或 /public/ 或 /resources/ 或 /META-INF/resources/,并没有 templates目录,那么为什么我们平时使用起来却没有问题呢原因是我们一般都整合了thymeleaf,Springboot和thymeleaf的整合中,对template...

2022-03-02 13:46:23 9134 3

原创 yaml语法 关于key为中文时的问题

这里主要想讲一下关于key为中文时的情况,关于基础yaml语法就自行百度。先说结论:Yaml语法中的key不要用中文!!!Yaml语法中的key不要用中文!!!Yaml语法中的key不要用中文!!!其实也不是完全不能为中文,当JavaBean的属性的变量名是中文的时候就可以使用,但是yaml对中文key好像有各种各样的的bug,比如当JavaBean有多个中文变量名的时候,一个中文key,就会赋值给全部的中文变量。反正就不要使用中文的key了,感觉中文就是有一些奇怪的问题!!!以下

2022-01-21 10:56:10 3032 5

原创 Maven 项目 src源代码目录下 文件打包过滤问题

在Maven项目中,分为 src源代码目录 和 resources资源目录,在默认情况下,src目录,在打包部署的时候,只会保留 .java文件编译后的.class 的文件,会把除此之外的 xml、properties等文件过滤掉。在某些特定的情况下,我们需要保留 src目录下的其他类型文件,此时就需要设置 Maven项目的 pom.xml 文件。配置如下:<build> <resources> <!-- 下...

2021-12-27 22:30:00 1269 2

原创 Form表单 问号传参的冷门知识

在 <form> 中 想要传参给目标地址 我们可以在 <form> 中 的组件添加name属性,既可以传参,什么请求方式都可以;但是我今天想说的不是这个,如果想要使用 action="url+?xxx=XXX"问号传参的方式,那么请求方式不能是GET请求。因为在 <form> 表单中,使用GET请求,action中的url后面的参数会被忽略,使用POST请求,action中的url后面的参数则不会被忽略,至于PUT、DELETE请求会不会...

2021-12-25 22:02:44 923 1

空空如也

空空如也

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

TA关注的人

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