自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis主从与哨兵架构-学习

1. Redis主从工作原理如果你为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master收到PSYNC命令后,会在后台进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会继续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。当持久化进行完毕以后,master会把这份rdb文件数据集发送给slave,slave会把接收到的数据进行持久化生成rdb,然后再加载到内存中

2022-02-08 18:04:34 1244

原创 Redis持久化-学习

1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。1. 可以手动在 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。2. 还可以手动执行命令生成RDB快照,进入redis客户端执行命令save或bgsave可以生成dump.rdb文件,每次命令执行都会将所有redis内存快照到一个新的rdb文件里,并覆盖原有rdb快照文件。1.1 bgsav...

2022-02-08 14:00:27 60

原创 垃圾收集底层算法-三色标记-学习

三色标记在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。这里我们引入“三色标记”。即把Gc roots可达性分析遍历对象过程中遇到的对象, 按照“是否访问过”这个条件标记成以下三种颜色:黑色: 表示对象已经被垃圾收集器访问过, 且这个对象的所有引用都已经扫描过。 黑色的对象代表已经扫描过, 它是安全存活的, 如果有其他对象引用指向了黑色对象, 无须重新扫描一遍。 黑色对象不可能直接(不经过灰色对象) 指向某个白色对象。灰色: 表示对象已经被

2022-02-08 11:34:55 193

原创 JVM对象头-学习

2022-02-08 11:33:04 180

原创 JVM垃圾回收器-学习

1.JVM垃圾回收器有哪些?Serial收集器、Parallel Scavenge收集器、 ParNew收集器、parallel Old收集器、CMS收集器、G1、ZGC1.1 Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了。大家看名字就知道这个收集器是一个单线程收集器了。它的 “单线程” 的意义不仅仅意味着它只会使用一条垃圾收集线程去完成垃圾收集工作,更重要的是它在进行垃圾收集工作的时候必

2022-02-07 17:01:15 139

原创 jvm垃圾回收算法-学习

分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。注意,“标记-清除”或“标记-整

2022-02-05 23:48:57 479

原创 JVM对象创建与内存分配机制-学习

1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。...

2022-02-05 23:48:12 482

原创 JVM内存模型-学习

2022-02-04 17:14:50 192

原创 JVM类加载机制-学习

1

2022-02-03 17:10:56 123

原创 Semaphoer&CountDownLatch-学习

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入1欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用M

2022-02-03 17:09:51 177

原创 ReentrantLock-学习

1.ReentrantLock是什么?干啥用?ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。2.ReentrantLock代码实现代码不急着看,咱们先了解,ReentrantLock的功能模型。下图应该算是java中锁的通用模型了。mesa管程模型。ReentrantLock整体上就是按这个模型实现。了解上图,ReentrantLock就很好理解。2.1 代码实现我们直

2022-01-25 15:48:26 202

转载 synchronized-关键字学习

1.synchronized的使用synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内置锁,也叫作监视器锁。2.synchronized加锁方式区别3.synchronized底层原理synchronized是JVM内置锁,基于Monitor机制实现,依赖底层操作系统的互斥原语Mutex(互斥量),它是一个重量级锁,性能较低。当然,JVM内置锁在1.5之后版本做了重大的优化,如锁

2022-01-17 18:23:54 224 1

原创 JAVA线程基础版-学习

1.线程是什么?线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务2.线程的生命周期java中线程生命周期,直接找到jdk源码中的定义。源码定义的JAVA线程生命周期。初始化运行阻塞无限时等待限时等待销毁怎么理解呢?或者说什么情况下出现这些生命周期状态?我觉得还是画张图比较好。3.怎么new一个线程public static void main

2022-01-13 11:22:34 69

转载 Volatile-学习

volatile的特性可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量的最后写入。原子性:对任意单个volatile变量的读/写具有原子性。 但类似于volatile++这种复合操作不具有原子性有序性:对volatile修饰的变量的读写操作前后加上各种特定的内存屏障来禁止指令重排序来保障有序性。volatile写-读的内存语义当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。当读一个volatile变量时,JM

2022-01-12 13:49:32 38

转载 JAVA中JMM内存模型-学习

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

2022-01-11 17:18:48 78

原创 ArrayList和LindekList-学习

1.ArrayList存储结构数组(数组是采用一段连续的存储单元来存储数据)特点,查询快O(1)。删除插入慢(O(N))数组查找遵循下面公式数组 a[n] = 起始位置+(n*字节数);2.ArrayList代码实现2.1 首先看类的继承,实现关系。继承了AbstractList,实现了List,RandomAccess, Cloneable,java.io.Serializable。1. List ???(比较奇怪,AbstractList里面也实现了这个接口,这里又继承了,很奇怪

2022-01-10 15:03:23 352

原创 CAS学习

1. 什么是CAS? 只对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。原子操作。2. JAVA中CAS实现 JAVA中CAS是由UnSafe类提供。有3种见下图 一看native方法就很明显,这是由虚拟机提供的实现。虚拟机源码就算了(能力有限),但是看方法入参: 对象实例、内存偏移量、字段期望值、字段新值。很明显该方法是获取指定对象实例,根据相应偏移量找到字段,执行 CAS 操作。3.CAS有什么缺陷自旋 CAS 长时间地不成功,则

2022-01-10 14:19:35 358

空空如也

空空如也

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

TA关注的人

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