自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot自动配置

自动配置

2023-02-13 17:37:14 416

原创 RocketMQ

rocketmq

2023-02-13 14:58:48 561

原创 kafka

kafka简介

2023-02-13 10:37:18 196

原创 Redis缓存设计与性能优化

Redis缓存设计

2023-02-09 17:27:33 213

原创 Redis数据结构与集群

数据结构,持久化,主从,哨兵,集群介绍。

2023-02-02 14:36:59 112

原创 SpringBoot启动过程

默认情况下SpringBoot提供了一个EventPublishingRunListener,它实现了SpringApplicationRunListener接口,默认情况下会利用EventPublishingRunListener发布一个ApplicationContextInitializedEvent事件,程序员可以通过定义ApplicationListener来消费这个事件。ApplicationListener是Spring中的监听器,并不是SpringBoot中的新概念,不多解释了。

2023-01-07 17:28:26 352

原创 InnoDB引擎底层事务的原理

阶段一:将记录的delete_mask标识位设置为1,这个阶段称之为。正常记录链表中的最后一条记录的delete_mask值被设置为1,但是并没有被加入到垃圾链表。也就是此时记录处于一个中间状态。在删除语句所在的事务提交之前,被删除的记录一直都处于这种所谓的中间状态。主要是为了实现MVCC的功能。版本链阶段二:当该删除语句所在的事务提交之后,会有专门的线程后来真正的把记录删除掉。所谓真正的删除就是把该记录从正常记录链表中移除,并且加入到垃圾链表的头节点。

2022-12-30 14:46:15 196

原创 Mysql索引及优化

索引文件和数据文件是分离的(非聚集),frm表结构,MYD表数据,MYI索引。

2022-12-29 11:51:58 53

原创 InnoDB引擎底层原理

以记录为单位来向表中插入数据,这些记录在磁盘上的存放方式也被称为行格式或者记录格式。分别是和Compressed行格式。指定行格式:表名 (列的信息)行格式名称COMPACT变长字段长度列表:变长字段占用的字节数(比如VARCHAR(M)、VARBINARY(M)、各种TEXT类型,各种BLOB类型),超过255字节并且真实存储的字节数超过127字节,则使用2个字节,否则使用1个字节8byte 2的8次方NULL值列表:存储NULL值的列的列表,二进制位的值为1时。

2022-12-29 10:45:32 82

原创 Map面试题

首先,JDK8中是支持多线程扩容的,JDK8中的ConcurrentHashMap不再是分段,或者可以理解为每个桶为一段,在需要扩容时,首先会生成一个双倍大小的数组,生成完数组后,线程就会开始转移元素,在扩容的过程中,如果有其他线程在put,那么这个put线程会帮助去进行元素的转移,虽然叫转移,但是其实是基于原数组上的Node信息去生成一个新的Node的,也就是原数组上的Node不会消失,因为在扩容的过程中,如果有其他线程在get也是可以的。JDK8的HashMap是数组+链表+红黑树实现的。

2022-11-29 11:41:48 67

原创 线程池定义

参数含义核心线程大小,当提交一个任务到线程池时,线程池会创建一个线程来执行任务,即使有其他空闲线程可以处理任务也会创新线程,等到工作的线程数大于核心线程数时就不会再创建了。如果调用了线程池的prestartAllCoreThreads方法,线程池会提前把核心线程都创造好,并启动线程池允许创建的最大线程数。如果队列满了,且已创建的线程数小于最大线程数,则线程池会再创建新的线程执行任务。如果我们使用了无界队列,那么所有的任务会加入队列,这个参数就没有什么效果了线程池的工作线程空闲后,保持存活的时间。

2022-11-19 15:51:21 136

原创 ReentrantLock

Exclusive-独占,只有一个线程能执行,如ReentrantLockShare-共享,多个线程可以同时执行,如Semaphore/CountDownLatch同步等待队列:用于维护获取锁失败时入队的线程条件等待队列:调用await()方法回释放锁,然后线程会加入条件等待队列队尾,调用singal()唤醒的时候会把条件队列的线程节点移动到同步队列队尾,然后等待unlock解锁unpark同步等待队列的线程值为0,初始状态,表示当前节点在同步等待队列中,等待获取锁。

2022-11-13 10:32:59 155

原创 Java线程

进程就是用来加载指令、管理内存、管理 IO 的。

2022-11-12 20:26:16 130

原创 synchronized

一个程序运行多个线程本身是没有问题的,一段代码块内如果存在对共享资源的多线程读写操作,称这段代码块为临界区,其共享资源为临界资源。

2022-11-11 20:53:43 193

原创 CAS&Atomic

基本类型引用类型:AtomicReference、AtomicStampedRerence(stamp是版本,每次修改可以通过+1保证版本唯一性,防止ABA问题)、AtomicMarkableReference(变量mark是boolean类型,仅记录值是否有过修改,防止ABA问题);数组类型对象属性原子修改器原子类型累加器(jdk1.8增加的类)

2022-11-02 20:09:08 92

原创 volatile

Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JMM描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私有数据区域的访问方式,JMM是围绕原子性、有序性、可见性展开的。

2022-10-31 00:24:34 152

原创 JVM常量池

Class常量池可以理解为是Class文件中的资源仓库。Class文件中除了包含类的版本、字段、方法、接口等描述信息外,还有一项信息就是常量池(constant pool table),用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。

2022-10-19 22:40:34 346 2

原创 JVM调优工具及 Arthas,GC日志

GC调优工具

2022-10-18 23:22:37 2355

原创 ParNew&CMS

ParNew&CMS垃圾收集器

2022-10-13 22:26:05 437

原创 jvm类加载以及内存模型

jvm类加载以及内存模型总结

2022-10-03 19:28:40 141

原创 map在list循环里面赋值问题

查询回一个List<Map<String,Object>>集合,for循环里面遍历这个集合给新的list复制判断到特定的条件给这个list添加map结果,List集合中的所有当前map都被处理了,各种new对象,都未解决;问题原因是:指向问题:修改对象指向的是一个对象地址解决办法:循环list时,将对象每次都克隆一次,putAll();List<Map...

2019-01-24 15:25:43 5862

hsdis-amd64.dll 资源下载

hsdis-amd64.dll 资源下载

2022-10-25

空空如也

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

TA关注的人

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