自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 注解和aop的简记

注解和aop概念简记

2023-03-08 20:04:07 315

原创 spring 增强顺序改变的原因

spring 5.2.7版本正式改变增强的顺序。网上的大部分文章主要从spring的代码层面的变动,来解释增强顺序的变动,而我想要了解的是这个变动,是因为导致了某些bug的出现吗?所以自己在github和spring官网进行了查阅,寻找了其中的缘由(好吧,也是闲的)。

2023-02-24 00:46:55 182

原创 注解和AOP结合使用案例的简记

注解和AOP结合使用案例的简记,注解和AOP的结合让注解使用起来很方便,方便的获取注解的额外信息。

2023-02-07 11:16:59 250

原创 spring 的五种 增强 结合 责任链 设计模式浅析

五种增强 @Before @After @Around @AfterReturning @AfterThrowing 的顺序整合,源码分析,及spring实用的责任链

2023-01-16 22:51:48 364

原创 nginx导致vue设置history模式下的请求丢失参数

在一次生产环境中,vue使用history模式在访问地址的参数会丢失,地址栏也会变成没有参数的地址,并且请求会发生301重定向。最后,发现vue从history模式改成hash模式可以解决参数丢失。但是产生301是nginx的问题,发现nginx配置的try_files有问题,所以会导致丢参数,try_files的配置是为了适配history模式。而nginx默认支持hash模式,不需要额外的配置,所以nginx默认hash是没有问题。最终,发现更改nginx的try_files也能让history模式的访

2022-07-26 00:22:39 2416

原创 nginx中location里面的try_files配置导致Vue设置history模式下的请求丢失参数

vue使用history模式在访问地址的参数会丢失,地址栏也会变成没有参数的地址,并且请求会发生301重定向。最后,发现vue从history模式改成hash模式可以解决参数丢失。但是产生301是nginx的问题,发现nginx配置的try_files有问题,所以会导致丢参数,try_files的配置是为了适配history模式。而nginx默认支持hash模式,不需要额外的配置,所以nginx默认hash是没有问题。最终,发现更改nginx的try_files也能让history模式的访问地址不丢参数。.

2022-07-21 00:03:10 5236

原创 nginx响应码301及访问路径参数丢失之间的关系

nginx响应码301及访问路径参数丢失之间的关系,探究301情况,301会不会导致请求丢参数。

2022-07-20 14:30:10 13050 5

原创 mysql 中在内连接、外连接和右连接中使用on接and和使用where的区别

mysql 中on和where在内连接、外连接和内连接中接and的区别on一般是连接的时候使用,会生成一张临时表。where一般作为筛选条件都可以使用。具体的区别就不讲了。本次的重点是on后面跟and和使用where作为筛选条件的区别。建表语句CREATE TABLE `t_join_test1` ( `id` int NOT NULL AUTO_INCREMENT, `name1` varchar(255) DEFAULT NULL, `name2` varchar(255) DEFAU

2022-05-31 18:08:22 2463

原创 mysql中业务主键和非业务主键浅析

mysql中业务主键和非业务主键浅析之前就听别人说要mysql表中要有非业务主键,这样会提升mysql的效率。当时只是那么一听,没有详细的了解。最近,接触两个项目的数据库结构发现一个使用业务主键,另一个则没有使用。再加上也在阅读《Java开发手册》,也阅读到了类似的规范,所以决定进一步了解一下。java开发手册(黄山版):(官方地址:https://github.com/alibaba/p3c)【强制】:表必备三字段:id,create_time,update_time。说明:其中 id 必为主键

2022-05-30 20:45:56 1391

原创 Java中String.intern()方法浅记

Java中String.intern()方法浅记String在Java中是一个比较特殊的存在。String既可以使用字面量进行赋值,也可以使用new进行赋值。使用字面量进行赋值,会直接放进字符串常量池如果使用new进行创建对象,会在堆中生辰给一个对象,也会在常量池中存放一份,两者并不相同。注意:字符串常量池从jdk7开始,从方法区移到了堆中。静态变量也从方法区中移到了堆中。概念使用intern()方法,会先判断字符串常量池中是否已经包含当前的字符串,如果没有的话,则会在字符串常量池中存放一

2022-04-17 23:04:06 518 2

原创 批量处理数据对比(<foreach>标签和sqlsession)

批量处理数据对比(标签和sqlsession)本文主要对一下情况进行对比Java代码中使用for循环,mysql中一条一条的插入mysql的批量插入,借用mybatis的标签使用sqlsession进行批量处理,到达一定的条数再进行提交使用环境Java版本:Java8Mysql:8.0.27idea版本:Idea2021操作系统:MacOS(12.1)处理器:M1Pro(8核)内存:16G框架:Spring Boot(2.6.2)表结构id表示自增主键,剩下的20列采用的

2022-04-17 22:59:20 1561 1

原创 Java 线程创建的四种方式

Java 线程创建的四种方式所有测试用例使用的是 jdk8 ,版本不同可能会有所不同,建议自己亲手试试。Thread 方式通过继承Thread类来创建新的线程(不推荐)。示例如下:创建类public class ThreadDemo extends Thread { private Logger logger = LoggerFactory.getLogger(ThreadDemo.class); @Override public void run() {

2022-03-04 16:30:28 2434

原创 CAS自旋锁浅析

CAS自旋锁浅析前提:了解 JMM(Java内存模型),链接:JMM(Java内存模型)浅记了解volatile和synchronized关键字volatile关键字:保证了可见性不保证原子性保证了有序性(通过屏障来防止指令重排,来实现 JMM 规范的有序性)synchronized关键字:保证了可见性保证了原子性保证了有序性(通过限制每次只能一个线程执行操作,来实现 JMM 规范的有序性)注意:虽然 volatile 和 synchronized 都实现了 JMM 规范的

2022-02-24 15:15:16 1167

原创 JMM(Java内存模型)浅记

JMM(Java内存模型)概念:JMM是抽象的概念,是一种规范。JMM规定内存分为主内存和工作内存,其中主内存用来存储所有变量,工作内存需要对变量进行操作时,需要将主内存中变量拷贝到线程自己的工作内存中,完成所需操作之后,再将数据写回主内存。目的:解决各线程的工作内存数据不一致、编译器优化和指令重排的问题。有如下三个特性:可见性原子性有序性可见性:当一个线程将数据写回主内存时,其他线程也更新自己工作内存中的数据,保证和主内存中的数据一致。即一个线程修改了数据,其他线程也看的见,这就是

2022-02-16 19:04:44 332

原创 Junit4、Junit5、Spring Boot和Idea版本之间对应关系

测试单元使用@Autowire注解失效,无法注入对应的数据,查找网上信息花费了很久的时间,在修复问题是也遇到各种问题,但是最终都归结到 Junit、Spring Boot 和 Idea版本不对应 。在此总结一下对应关系。JunitSpring BootIdea42.2.2版本之前2017.3.5之前版本52.2.2版本之后2017.3.5之后版本...

2022-02-15 18:29:43 1901 3

原创 使用format优雅的动态替换请求参数

使用format优雅的动态替换请求参数在实际开发中,请求的参数常常要进行动态的拼接,使用format可以优雅的进行拼接。/** * 测试动态字符串替换 */@Testpublic void testStrFormatDemo(){ String testUrl = "http://localhost:8080/test?name=%s"; String name = "cay"; String url = String.format(testUrl, name);

2022-01-29 10:03:37 1090

原创 JVM总结

JVM总结类的生命周期加载(loading)链接(linking)验证(verify)准备(prepare)解析(resolve)初始化(initialization)使用(using)卸载加载(Loading)通过一个类的全限定名称获取此类的二进制字节流。(类的加载过程是序列化还是反序列化?)将二进制字节流所代表的静态存储结构转化为方法区中运行的数据结构在内存中生成一个代表这个类Class对象,作为方法区中各种数据访问的入口验证验证类的正确性,防止危害虚拟机安

2021-12-23 17:33:40 524

原创 Spring Boot 测试单元Junit5的引用

Spring Boot 测试单元Junit5的引用在pom.xml文件中引入依赖<!--添加测试单元依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId></dependency>在类和方法上添加对应的注解,共三个@Ext

2021-12-08 11:12:12 498

原创 自定义注解使用@Import执行操作

注解,@Import

2021-12-07 16:14:56 928

原创 关于==和equals的深入了解

关于==和equals的深入了解“==”比较的是地址,未被重写的equals比较也是地址,因为调用的是Object的equals方法,Object类中equals源码如下:public boolean equals(Object obj) { //直接调用的==,所以没有重写的方法和==相同 return (this == obj);}既然==比较的是地址,那么我们在用到equals时,就需要让其比较对象的值是否相等。String的底层已经覆盖了equals,源码如下:publ

2021-10-14 10:46:14 135

原创 注解@Autowire失效的两种情况

注解@Autowire失效的两种情况一、在静态变量上使用失效第一种情况是在静态变量上无法使用注解,@Autowire注解自然失效。虽然注入时不会报错,但是当运行时期使用注入的对象时会报空指针异常。public class demoUtils { //此时虽然不报错,运行时汇报空指针异常 @Autowired private static User user; public static void test(){ user.setName("zql");

2021-09-15 15:44:53 2870 3

原创 拦截器中注入(@Autowire)对象报空指针异常

拦截器中注入(@Autowire)对象报空指针异常正常的拦截类,注入了User。@Componentpublic class LoggerInterceptor implements HandlerInterceptor { //注入user类,注入正常,但是运行时会报空指针异常 @Autowired private User user; @Override public boolean preHandle(HttpServletRequest reques

2021-09-15 09:31:23 1501 1

原创 Spring Boot的AOP增强

Spring Boot的AOP增强在pom文件中添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>在@Component @Aspect添加两个注解具体编写的类如下@Component//交给sp

2021-09-01 16:43:37 309

原创 git的安装初始化、常用命令和执行步骤

git的安装初始化、常用命令和执行步骤git的初始化1、下载并安装git,直接点击下一步即可,一般会帮助创建环境变量,如果环境变量没有勾选,记得勾选上。2、在桌面鼠标右键,选择“git bash here”,如果没有可以进入cmd窗口输入命令 git --version,查看git是否成功安装,如果显示git的版本,则安装成功而且自动配置环境变量,否则要配置环境变量。3、ssh-keygen -t rsa 生成公钥和私钥4、将本机的公钥内容设置到共用GitHub上5、执行下面两句,进行身份验证

2021-09-01 16:08:35 701

原创 关于mapper在service层注入报错

关于mapper在service层注入报错有如下三种解决的方案1、 在主类Application.class上添加@MapperScan(basePackages = {“自己的mapper包”})2、 在mapper接口上添加@Mapper,和第一种方法相同,第一种包含所有的包,方便,第二种添加在单个mapper接口上。以上两种方法都会显示错误,但是可以正常运行,这是spring官方逻辑的错误,没什么问题。如果是强迫症的话,可以在添加@MapperScan(basePackages = {“

2021-08-31 14:38:43 3613 1

原创 一张图快速了解三次握手和四次握手

一张图带你快速了解三次握手和四次握手建立连接时三次握手,断开连接时四次握手。三次握手:客户端向服务端发送请求连接(SYN)服务端向客户端发送确认连接和请求连接(ACK+SYN)客户端向服务端发送确认连接(ACK)四次握手:客户端向服务端请求断开连接(SYN)服务端向客户端发送确认连接(ACK)(因为可能还未接受完数据,所以不能向客户端发送断开连接的请求)(当接收完数据之后)服务端向客户端发送请求断开连接(SYN)客户端向服务端发送确认断开连接(ACK)为什么连接的时候是三次

2021-07-19 14:14:41 150

原创 Chrome和Edge浏览器越用越卡的解决方案

Chrome和Edge浏览器越用越卡的解决方案由于个人喜欢在浏览器中安装各种插件,在某些插件要代理权限之后,便给了它,导致Chrome浏览越来越卡。因此,本方案只适合这一种。主要解决方法:Chrome和Edge浏览器中,搜索DNS,此时便可看到有关于DNS的选项。Chrome浏览器界面如下:图1在安全的选项中,进去便可以看见,如下图:图2把使用安全DNS选项关掉即可。如果本来是关闭的,说明你的浏览器卡顿不是此原因造成的。Edge浏览器界面如下:图...

2020-12-28 10:21:37 2989

原创 VMware中Kali一键安装中用户名和密码输入报错问题(7z格式)

VMware中Kali一键安装中用户名和密码输入报错问题(7z格式)将用户名和密码都改为kali,官网上有说明,当然这只适用于下的安装时包是7Z格式的在官方有对这种格式的说明

2020-05-19 18:09:20 844

原创 VMware中安装Kali一步解决(7z格式)

VMware中安装Kali一步解决(7z格式)首先搜索Kali,进入官网找到VMware版本,选择第一个就好了。进去之后,根据自己的电脑选择就好,有64位和32位点击torrent会生成种子,下载好种子之后,使用迅雷下载就好了。当然,你也可以科学上网。下载完成之后,将带7z的压缩包解压就好了,如下图然后我们打开VMware,选择文件,打开,找到刚刚解压后的文件。直接就配置好Kali了,进入Kali之后,默认的用户名和密码都是kali,不是虚拟机中写的,用户名:root,密码:toor,疯

2020-05-19 18:04:27 7536 1

原创 SSM框架的依赖包总结

SSM框架的依赖包总结1. 持久层--mybatis2. 业务层--Spring53.控制层--springMVC1. 持久层–mybatismybatis的依赖:MySQL 驱动包:mysql-connector-java-5.1.*.jar核心包:mybatis-3.4.5.jar其他依赖:lib 目录中所有的 jar(有需要,再拷贝)。比如:log4j(日志文件,可以和prop...

2020-04-28 10:19:45 683

空空如也

空空如也

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

TA关注的人

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