自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式锁之事务问题

明明加了分布式锁,同步逻辑中竟然查询不到更新的数据?

2023-04-28 14:22:29 229

原创 接口签名的作用

请求时会增加【签名:sign】这样的一个参数或者请求头,其生成规则按照参数排序并加密。后端在接收到请求后,用相同的规则排序并加密,对比与传入的sign是否相同。为了防止接口参数被篡改。

2023-03-02 16:09:05 474

原创 Spring 循环依赖问题(三级缓存)

所有的循环依赖问题都解决了吗?为什么是三级缓存?每级缓存分别存的是什么?

2022-09-16 17:22:56 264

原创 SpringBoot 条件注解的作用是什么?有哪些?

ConditionalOnBean,ConditionalOnMissingBean,ConditionalOnSingleCandidate,ConditionalOnClass,ConditionalOnMissingClass,ConditionalOnExpression,ConditionalOnJava,ConditionalOnWebApplication,ConditionalOnResource,ConditionalOnProperty 等

2022-07-18 19:18:38 358 1

原创 Java 线程的中断机制(interrupt)

Java没有提供一种安全、直接的方法来停止某个线程,而是提供了一种中断机制。中断机制是一种协作机制,不会直接暴力地终止另一个线程,而需要被中断的线程自己来处理中断信息。Thread.interrupt():将某个线程的中断标志位设置成true。Thread.isInterrupted() :判断线程的中断标志位是否是true。Thread.interrupted() 静态方法 :判断当前线程的中断标志位是否是true,并清除中断标志位,设置为false...........................

2022-07-12 21:56:51 902

原创 Java 元注解有哪些?

Java元注解有@Retention,@Target,@Inherited,@Documented,@Repeatable(since jdk1.8),@Native(since jdk1.8)6个

2022-07-06 21:26:27 454

原创 对象拷贝工具类(fastjson)

开发中,都会遇到对象拷贝的需求,本工具类支持嵌套对象的拷贝依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.79</version></dependency>package com.example.demo.utils;import

2022-03-10 14:17:33 860

原创 Java线程生命周期(五个状态还是六个状态?)

操作系统层面线程的生命周期可以用五态模型来描述。Java定义了6种线程状态,把操作系统层面的五种状态做了合并与细分Java层面线程明确定义了六种状态,分别是NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,源码如下 public enum State { /** * Thread state for a thread which has not yet started. .....

2021-11-11 17:35:16 574

原创 Spring 事务传播机制

Spring事务有REQUIRED、REQUIRES_NEW、SUPPORT、NOT_SUPPORTED、MANDATORY、NEVER、NESTED七种传播机制

2021-10-15 14:38:07 126

原创 从零搭建 idea + spring boot + mybatis + 父子多层级 + 零配置项目

搭建spring boot + 父子多级层项目创建父项目File >> New >> ProjectSpring Initializr >> Next修改Java版本 >> Next不用添加任何依赖 >> NextFinish删除多余文件和文件夹(.gitignore,HELP.md,mvnw,mvnw.cmd,.mvn,src),只留下pom.xml文件。创建子项目右击父项目 >&g.

2021-10-12 09:17:16 174

原创 Spring Bean销毁过程 5.3.10

Bean的销毁是发生成Spring容器关闭过程中的。比如AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);//容器关闭context.close();单列Bean的销毁过程中执行了哪些方法?如果Bean实现了DisposableBean接口,则执行其destory方法。@Componentpublic class Destroy

2021-09-18 14:44:18 200 1

原创 Spring AOP实现原理--动态代理

Spring AOP底层是通过动态代理来实现的,其中包括JDK动态代理和cglib动态代理。JDK动态代理手写JDK动态代理public interface UserInterface { Integer test();}被代理类public class User implements UserInterface { public String getName() { return name; } public void se

2021-09-07 16:36:27 210

原创 Spring推断构造方法(创建Bean多个构造方法时,到底用哪一个)

Spring在基于某个类生成Bean的过程中,需要通过构造方法来实例化对象,但是如果一个类存在多个构造方法时,Spring会使用哪一个?在回答这个问题之前,先看几个例子:例子一配置类package mytest.spring;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org

2021-09-02 18:17:28 1182

原创 Spring三种依赖注入方式

一、属性(成员变量)注入@Componentpublic class OrderService { @Autowired private UserService userService;}二、构造方法注入@Componentpublic class OrderService { private UserService userService; @Autowired public OrderService(UserService u

2021-09-02 17:15:10 64

原创 Spring核心概念之BeanDefinitionReader

上篇博文提到的通常定义Bean三种方式 <bean />、@Bean、@Component(@Service,@Controller)就是通过BeanDefinitionReader解析成BeanDefinition的。BeanDefinitionReader分为:AnnotededBeanDefinitionReader可以直接将某个类转换为BeanDefinition,并且会解析该类上的注解。包括:@Conditional,@Scope、@L...

2021-08-31 20:53:06 589

原创 Spring核心概念之BeanDefinition

什么是BeanDefinition?在回答这个问题之前,先想一下我们通常是如何去定义一个Bean?1、通过xml文件配置Bean,2、通过配置类配置Bean,@Bean3、通过注解自动扫描成Bean,@Component(@Service,@Controller等)以上三种方法是我们通常定义一个Bean的方式,其实我们还可以通过BeanDefinition定义一个Bean,例如://定义一个BeanDefinitionAbstractBeanDefinition beanDefi

2021-08-31 20:04:35 465

原创 RSA公私钥加密工具类

import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import java.nio.charset.StandardCharsets;import java.security.*;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import java.security..

2021-08-26 17:03:29 478

原创 类加载器及双亲委派机制

自图灵学院学习总结类的加载器引导类加载器(BootstrapClassLoader,由C++实现),负责加载支撑JVM运行的位于JRE的lib目录中核心类库,比如rt.jar等 扩展类加载器(ExtClassLoader),负责加载支撑JVM运行的位于JRE的lib目录下ext目录中的JAR包 应用程序类加载器(AppClassLoader),负责加载ClassPath下的类包,主要就是加载我们自己写的那些类 自定义加载器,负责加载用户自定义路径下的类包类加载器初始化过程实例化引导类

2021-08-24 17:02:07 169

原创 fastjson @JSONField format 不生效的原因

在一次接手项目中发现,http接口返回json数据,Date类型的变量用@JSONField format注解格式化不起作用。排查原因:1)查http接口序列化是不是用的fastjson。如果用的是jackson序列化应该使用@JsonFormat注解。2)找到fastjson配置入口,查看有没有设置统一的DateFormat配置如果配置类设置了统一的DateFormat,则@JSONField format注解会失效,以统一配置为准。如果没有配置统一的DateFormat,@JSONFie

2021-08-22 16:41:03 8841 1

原创 Java类加载过程

Java类加载过程主要有下面几个步骤:加载 >> 验证 >> 准备 >> 解析 >> 初始化加载:在硬盘上查找并读入字节码文件(Class文件),同时在内存中生成相应的Class对象作为该类在方法区(元空间)各种数据的访问入口。类只有在使用的时候才会加载,比如new对象等 验证:效验字节码文件的正确性 准备:给类的静态变量分配内存并赋予默认值(int = 0 ,对象 = null...) 解析:将符号引用替换为直接引用,该阶段会把静态方法符号引用(如

2021-08-16 21:09:28 93

原创 MySql update语句或者delete语句 where条件没走索引会锁表

原因对于innoDB引擎的行锁是通过给索引上的索引项枷锁来实现的, 而不是针对记录来加锁的.假如在操作数据的时候, 没有索引, 是无法使用行级锁的, 此时使用的是表锁。导致问题如果是个长事务,极有可以会导致被锁表的其他操作等待超时,Lock wait timeout。...

2021-08-04 20:32:37 2386

原创 Linux系统Redis安装

官网下载地址 :http://redis.io/download安装步骤1、安装gccyum install gcc2、进入/usr/local文件夹下,下载redis-5.0.3.tar.gz,并解压。wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar xzf redis‐5.0.3.tar.gz3、进入redis-5.0.3目录下,进行编译与安装 cd redis-5.0.3 make 4、

2021-07-15 16:31:27 53

原创 JAVA 日期工具类

import java.time.DayOfWeek;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.format.DateTimeFormatter;import java.time.temporal.TemporalAdjuster;import java.time.temporal.TemporalAdjusters;import jav.

2021-07-05 15:22:17 133

原创 JAVA 二维码生成(com.google.zxing)

依赖 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.4.0</version> </dependency> <dependency>

2021-07-02 16:28:12 529 1

原创 Mysql表关联算法

Mysql表关联常见算法嵌套循环链接算法Nested-Loop Join(NLJ)当两张表关联时,如果被驱动表关联字段上有索引,会选择NLJ算法。NLJ算法:先从驱动表扫描出相应行(N行),再循环所有行根据关联字段通过索引在被驱动表中检索出相应行,最后汇总返回结果。此时被驱动表扫描次数(与磁盘的I/O次数,索引非叶子节点都存放在内存中)= 2N。效率高。注意:inner join 时,explain最上面记录的那张表是驱动表。可以简单判断条件过滤后,返回结果较小作为驱动表。并不是小表就是驱动表也

2021-02-19 16:18:44 324

原创 Explain详解(mysql 5.7)

Explain详解(mysql 5.7 innodb)Explain的列sql语句每一个select对应explain的每一行记录。id列id列是每个select的序列号。id越大执行的优先级超高,id相等时由上而下执行。select_type列select_type表示一条sql语句的类型。simple:简单查询。sql语句中不包含子查询和union。primary:最外层的查询语句。当包含子查询或union时。subquery:select语句中的子查询。derived:from

2021-02-18 14:22:42 243 1

空空如也

空空如也

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

TA关注的人

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