自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis集群方案-主从复制,哨兵模式,分片集群

sentinel因为网络原因与主节点断联,此时选举了新的master,而客户端与老master依旧可以连接而且进行写入操作,与当前选举出来的新master出现了数据不一致。在后面进行同步时,此slave清空了自己的数据。主节点判断是否第一次同步,如果时第一次,向slave返回master的数据版本信息。master记录在生成rdb期间的所有命令完成后发送给slave。主节点执行bgsave,生成rdb文件并发送给slave。slave清空本地的所有数据,加载rdb文件。从节点会向主节点发送同步数据的请求。

2023-12-05 23:50:48 795

原创 Redis-分布式锁,redisson相关实现

基于redis的setnx命令实现,加锁成功后会创建一个watch dog,每1/3的releaseTime(30s)给锁续期一次。释放锁时,通知watch dog停止监听线程。在同一线程中重新调用分布式锁是可以的,当获取锁时,会判断当前获取锁的线程和持有锁的线程是否为同一个,如果是同一线程则获取锁成功。所以下面代码中的调用add2获取锁是可以获取到的。redis实现分布式锁主要利用redis的setnx命令。setnx是set if not exist(不存在就set)的简写。

2023-12-05 23:01:10 368

原创 redis双写一致性,数据持久化及过期淘汰策略

当redis内存不够的时候继续往redis中添加数据,redis会按照一定规则对数据进行删除,此为redis的淘汰策略。redis设置数据过期时间后,就需要把key从内存中清理掉,可以按照不同的规则进行删除,这种规则叫做数据过期策略。每隔一段时间就对一些key进行检查,删除里面过期的key(每次筛选一定量的key),可以具体分为两种模式。Redis每次执行的写命令都会记录在aof中,可以看做是日志文件。设置该key过期时间后暂时不管,当需要该key时,检查是否过期,如果过期则删除。缓存要和数据库保持一致。

2023-12-04 20:25:03 841

原创 redis缓存三兄贵-缓存穿透,击穿,雪崩

查询一个不存在的数据,在缓存中查不到数据,也不会写入缓存,导致每次都查询数据库给一个key设置了过期时间,当key过期的时候恰巧这个时间点对这个key有大量的并发请求,这些请求可能会瞬间把DB压垮。同一时间大量缓存 key同事失效过着redis服务宕机,导致大量请求到达数据库,带来巨大压力。

2023-12-01 14:01:03 401

原创 进程与线程的区别

进程与线程的区别多线程原理多线程原理进程与线程的区别1、线程是“进程代码段”的一次顺序执行流程。一个进程由一个或者多个线程组成。一个进程至少有一个线程。2、线程是CPU调度的最小单位,进程是操作系统分配资源的最小单位,线程的划分赤毒小于进程,使得多线程程序的并发性高。3、线程是出于高并发的调度诉求从进程内部演进而来的,线程的出现既充分发挥了CPU的计算性能,又弥补了进程过于笨重的问题。4、进程之间是相互独立的。单进程内部的各个线程之间并不完全独立。各个线程之间共享进程方法区内存、堆内存、系

2022-01-01 20:13:53 208

原创 java类文件结构-字段、方法、属性表集合

这里写目录标题一、 字段表一、 字段表字段表(field_info) 用于描述接口或者类中声明的变量。 Java语言中的“字段”(Field) 包括类级变量以及实例级变量, 但不包括在方法内部声明的局部变量。 读者可以回忆一下在Java语言中描述一个字段可以包含哪些信息。 字段可以包括的修饰符有字段的作用域(public、 private、 protected修饰符) 、 是实例变量还是类变量(static修饰符) 、 可变性(final) 、 并发可见性(volatile修饰符, 是否强制从主内存读写

2021-07-28 11:10:40 625

原创 java类文件结构-访问标志,类索引集合

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、访问标志是什么?一、访问标志是什么?在常量池结束之后, 紧接着的2个字节代表访问标志(access_flags) , 这个标志用于识别一些类或者接口层次的访问信息, 包括: 这个Class是类还是接口; 是否定义为public类型; 是否定义为abstract类型; 如果是类的话, 是否被声明为final; 等等。 具体的标志位以及标志的含义见表1-1图1-1access_flags中一共有16个标志位可以使用, 当

2021-07-27 15:24:32 145

原创 类文件结构-常量池(常量池,魔数与Class文件版本)

类文件结构类文件结构目录类文件结构前言一、概述二、无关性基石三、Class类文件的结构1、魔数与Class文件的版本2、常量池3、访问标志4、 类索引、 父类索引与接口索引集合5、字段表集合6、方法表集合7、属性表集合1)2)3)4)5)6)7)8)9)10)11)12)13)14)1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章

2021-07-27 15:00:27 249

原创 虚拟机性能监控、 故障处理工具

虚拟机性能监控、 故障处理工具虚拟机性能监控、 故障处理工具 ,整理自《深入理解java虚拟机 第三版》文章目录虚拟机性能监控、 故障处理工具前言一、概述二、基础故障处理工具1. jps:虚拟机进程状况工具2. jstat:虚拟机统计信息监视工具2. jstat:虚拟机统计信息监视工具3. jinfo: Java配置信息工具4. jmap: Java内存映像工具5. jhat: 虚拟机堆转储快照分析工具6. jstack: Java堆栈跟踪工具总结前言本文整理自《深入理解java虚拟机

2021-07-26 16:53:26 303

原创 GC垃圾收集

垃圾收集算法1. 分代收集理论2. 标记-清除算法3. 标记-复制算法3. 标记-整理算法1. 分代收集理论当前的商业虚拟机收集器大部分都使用了分代收集的理论进行设计。分代收集名为理论,其实是一套大部分程序实际运行情况都符合的经验法则,它建立在两则假说之上。1)弱分代假说:绝大部分对象都是朝生夕灭的。**2)强分代假说:熬过越多次数的垃圾收集过程的对象就越难以消亡。这两个假说共同奠定了多款垃圾回收期的一直设计原则:收集器将java堆划分出不同的区域。然后根据对象的年龄来分配到不同的区域之中储存

2021-07-26 11:34:19 42

原创 虚拟机在Java堆中对象分配、布局和访问的过程

虚拟机在Java堆中对象分配、 布局和访问的过程1. 对象的创建2. 对象的内存布局3. 对象的访问定位1. 对象的创建当虚拟机执行到一条new字节码指令的时候,会先检查这个指令的参数在常量池中是否能定位到一个类的符号引用,并检查这个符号引用代表的类是否已经被加载,解析,初始化过。如果没有,则执行类的加载过程。在类加载检查通过之后,虚拟机开始为新生对象分配内存。所需的内存大小在类加载之后便可确定,为对象分配内存空间就相当于把java堆中的一部分内存划分出来。假如java堆中的内存是规整的,被使用的内存

2021-07-23 15:30:28 122

原创 java内存区域

1.运行时的数据区域jvm在执行java程序的时候会吧内存分为若干个不同的数据区域。每个区域都要自己的用途。创建以及销毁时间。有的区域随虚拟机进程的启动而启动,有些则是依赖用户的线程启动关闭而创建销毁。jvm管理的内存区域将包括一下几个部分。1.1 程序计数器程序计数器是一块很小的内存空间,他可以看做是当前线程所执行字节码的行号指示器。它作用就是改变这个计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳转,线程唤醒等基础操作都需要程序计数器来完成。由于多线程操作是轮流切换的,在一个时刻,一

2021-07-23 10:02:38 43

空空如也

空空如也

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

TA关注的人

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