自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TransmittableThreadLocal详解,源码分析,一文带你掌握核心逻辑

到这里分析就结束了整体我认为这个设计的还是很巧妙的,解决了InheritableThreadLocal在线程复用(线程池的情况无法使用的问题)首先使用了holder这样一个ThreadLocal,记录了每一个线程使用了哪些threadLocal,到时候可以直接将这个线程所有的thread以及value遍历出来只用TtlRunnable把Runnable包装了一层,在调用.get时就把父线程打了个快照把Runnable的run方法包装了一层,让线程开始执行之前。

2024-01-05 17:52:26 778

原创 分析查询语句 Explain

分析查询语句 Explain

2022-07-25 22:21:40 327

原创 SpringMVC的流程

SpringMVC的流程

2022-07-25 19:12:12 152

原创 对策略模式的理解

对策略模式的理解

2022-07-22 23:15:42 153

原创 Spring底层的理解

Spring底层的理解

2022-07-21 22:19:49 226

原创 @Conditional的各种注解

@Conditional的各种注解

2022-07-20 23:07:07 171

原创 注册bean有多少种方式

注册bean有多少种方式

2022-07-20 16:13:27 340

原创 @Import注解

@Import注解

2022-07-20 14:21:03 134

原创 @Lazy注解

@Lazy注解

2022-07-20 14:11:20 19181 1

原创 Spring提供的各种工具

Spring提供的各种工具

2022-07-20 12:42:35 191

原创 Springboot 解决跨域问题

Springboot 解决跨域问题

2022-06-26 01:02:32 992

原创 Spring事务失效的案例详解,以及解决方案,一篇带你了解Spring事物失效

对Spring事务的实践

2022-06-24 13:12:12 338

原创 springboot各种组件

springboot各种组件

2022-06-22 23:52:06 447

原创 Springmvc 请求映射原理

Springmvc 请求映射原理RequestHandlerMapping

2022-06-22 14:30:08 105

原创 springboot Auto Configuration自动配置

springboot Auto Configuration自动配置

2022-06-21 21:50:22 414

原创 mybatis动态sql

mybatis动态sql

2022-06-19 15:48:34 54

原创 mybatis resultMap的写法 多对一 一对多

mybatis resultMap的写法 多对一 一对多

2022-06-19 00:16:23 428

原创 mybatis的特殊sql语句

mybatis的特殊sql语句

2022-06-18 22:15:19 93

原创 mybatis 获取参数及返回参数的接收

mybatis 获取参数及返回参数的接收

2022-06-18 19:31:18 808

原创 Springboot 异常处理

Springboot 异常处理

2022-06-18 11:40:25 47

原创 SpringMVC 获取请求参数的几种方式

SpringMVC 获取请求参数的几种方式

2022-06-18 11:20:22 462

原创 为什么要延迟双删,来保证缓存一致性

为什么要延迟双删,来保证缓存一致性

2022-06-06 18:52:06 3542 7

原创 Java语句初始化执行顺序

Java语句初始化执行顺序需要考虑的就是 java 中构造方法、实例初始化、静态初始化执行顺序我们先拿单个的类来讲,执行顺序是  静态初始化块 -> 初始化块 -> 构造器****我们知道,当子类继承父类时,执行顺序是先执行父类,再执行子类。根据上述的顺序,我们可以得到如下的执行顺序:父类静态初始化块子类静态初始化块父类初始化块父类构造器子类初始化块子类构造器证明package com.lxc;public class 顺序 { publ

2021-09-08 10:39:10 135

原创 ssm配置文件框架

2021-08-30 12:38:26 46

原创 ConcurrentHashMap

ConcurrentHashMap1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现,1.8中使用一个volatile类型的变量baseCount记录元素的个数,当插入新数据或则删除数据时,会通过addCount()方法更新baseCount,通过累加baseCount和CounterCell数组中的数量,即可得到元素的总个数;putVal final V putVal(K key, V value, boolean on

2021-08-28 01:03:49 74

原创 TCP 三次握手和四次挥手的最后一步的意义

TCP 三次握手和四次挥手的最后一步的意义为什么TCP的握手需要最后一步/两次握手不行吗因为可能存在这样的一个状态:客户端发送一个连接请求给服务端,但是这个请求在网络中阻塞了,没有到达服务端,客户端超时重传请求连接这个时候发送成功了,建立连接,。。。。。。,通信结束,断开连接。 后来请求连接到达了服务端,服务端认为客户端要和我连接,返回SYN=1的确认报文给客户端,如果只有两次握手,此时连接就建立了,但是客户端并没有这个需求,就会忽略这个确认报文。此时服务端的资源就造成了浪费,因此需要第三次握手确认客户

2021-08-25 15:46:30 679

原创 ReentrantLock 源码流程分析 公平锁和非公平锁的区别

ReentrantLock公平锁尝试加锁 tryAcquire(arg)查看state是否是0 也就是是否是自由状态如果是0 先看是否有队列的存在 hasQueuedPredecessors或队列中是否有线程排队 如果队列是空(无队列的情况)那么就继续compareAndSetState(CAS)如果是此时是state还是0那么就setExclusiveOwnerThread(current); 加锁成功直接 return true如果不是自由状态查看当前拿到锁的线程是否和当前线程相同 相同

2021-08-23 18:09:42 112

原创 Mybatis用法详解

Mybatis基于配置文件mybatis主配置文件<!--环境搭建的注意事项 1、创建IUserDao.xml和IUserDao.java是名称是为了和之前的知识一样 在mybatis中他把持久层的操作接口名称和映射文件也叫做Mapper 所以IUSerDao和IUserMapper是一样的 2、在idea中创建目录的时候他和包是不一样的 包在创建时:com.lxc.dao他是三级结构

2021-08-22 12:22:04 122

原创 Spring 用法详解

Spring 用法详解IOC容器 /** * 获取spring的Ioc核心容器,根据id获取对象 * * ApplicationContext的三个常用实现类: * ClassPathXmlApplicationContext: 他可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话加载不了。(更常用) * FileSystemXmlApplicationContext: 他可以家在磁盘任意路径下的配置文件(必须有访问权限)

2021-08-22 10:00:44 136

转载 Java 静态变量的初始化

静态变量的初始化转载 https://blog.csdn.net/wanghao109/article/details/49591815class Singleton{ public static Singleton singleton = new Singleton(); public static int a; public static int b = 0; private Singleton(){ a++; b++; } public static Singlet

2021-08-21 14:04:33 4324

原创 Java锁学习笔记

Java 的锁我的理解锁的终极奥义就是修改变量值对于ReentrantLock lock 当没有线程冲突的时候是在Java级别实现的,但是一旦拿不到线程,发生了线程冲突就到了操作系统级别了// 底层原理 就是如果加锁成功就直接返回让语句正常执行// 加锁失败 就是lock阻塞(睡眠)(park 调用操作系统函数)// 成功就是改变一个变量的值 statelock.lock()对于Synchronized关键字,他锁的不是我们的代码块也不是一个方法而是你的对象// 本质是修改了对象的一个对

2021-08-18 22:24:04 64

原创 Java HashMap 深入浅出 源码分析,通俗易懂

HashMap在数据结构中我门学习过很多种查找的方式 比如顺序查找,折半查找(二分查找),分块查找以及此topic中提到的散列查找。散列查找也为哈希查找,哈希查找的时间复杂度为O(1),插入的时间复杂度也为O(1),有着比较好的性能,但是始终存在一个难以解决的问题就是哈希冲突。为了解决这个冲突,衍生出很多的解决办法拉链法(将有哈希冲突的字符串成一个链表)开放地址法线性探测法平方探测法为随机序列法以上方法的本质思想都相同,就是如果遇到了冲突就查找currentPostion+di 每种

2021-08-17 23:56:25 119

原创 排序算法详解(持续更新中...)

排序算法插入排序public int[] insertSort(int[] nums) { // 算法思想主要是对数组的每一个数与前面的数对比将他放置在对的位置 // 从第1个数开始因为第0个数的前面是空的 for (int i = 1; i < nums.length; i++) { int temp= nums[i]; int j; // 查看这个数的前面所有数字 for (j = i-1; j >=

2021-08-17 11:10:42 61

原创 深入解析PriorityQueue工作原理,详解优先队列,Java源码

PriorityQueue在算法中我们经常会使用到最大优先队列和最小优先队列(默认是最小优先队列,可以自定义排序规则)在正式了解源码前我们先看一下他的一些类变量(类中带static的变量为类变量)// 表示初始的容量private static final int DEFAULT_INITIAL_CAPACITY = 11;// 表示队列的大小private int size = 0;// 此变量仅可在构造函数的时候初始化 一旦初始化就不可以在改变因为加了final关键字private fi

2021-08-17 01:26:17 165

原创 Java 源码 之 String.CompareTo

Java 源码 之 String.CompareTopublic int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0;

2021-08-14 23:50:24 106

原创 ISCSI 简单介绍

ISCSISCSI,小型计算机系统接口,是基于client-server模型设计的存储接口,SCSI的client(initiator)将命令发送给server(target),server处理命令后回应result给client。由于要传送命令必然要用到相应的传输协议保障,iSCSI就是其中的一种传输协议,除此之外还有FC和SAS等。iSCSI有initiator和target两个部分,分别对应于SCSI的initiator和target,iSCSI的initiator与target使用TCP进行传

2021-08-14 23:04:48 1314

原创 ZFS详解及具体操作代码及流程

ZFS简介ZFS可完全避免使用卷管理。ZFS将设备聚集到存储池中,而不是强制要求创建虚拟卷。不再需要预先确定文件系统的大小,因为文件系统会在分 配给存储池的磁盘空间内自动增长。添加新存储器后,无需执行其他操作,池中的所有文件系统即可立即使用所增加的磁盘空间vdev(virtual device)由一个或多个磁盘组成的阵列的虚拟设备,一个存储池(pool)至少有一个vdev(存储设备)。一个存储池由一个或多个vdev组成,vdev间是以条带式组合,坏一个,所有数据丢失。一个池中的vdev的阵列类型必须相

2021-08-14 22:57:41 7320

原创 ISCSI实现ZFS共享(Server端及Client端)

iSCSIServerCreate Volumezfs create [-ps] [-b blocksize] [-o property=value] … -V size volumeCreates a volume of the given size.The volume is exported as a block device in /dev/zvol/{dsk,rdsk}/path,where path is the name of the volume in the ZFS names

2021-08-14 22:41:26 903

空空如也

空空如也

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

TA关注的人

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