自定义博客皮肤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)
  • 收藏
  • 关注

原创 JVM学习笔记六:字节码指令

一、前言Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需的参数(称为操作数,Operand)构成。由于Java虚拟机采用面向操作数栈而不是面向寄存器的架构,所以大多数指令都不包含操作数,只有一个操作码,指令参数都存放在操作数栈中。Java虚拟机操作码的长度为一个字节(0~255),又class文件格式放弃了编译后代码的操作数长度对齐,所以虚拟机在处理超过256条的字节数的数据时,不得不在运行时从字节中重建出具体数据的结

2020-12-15 15:48:34 235

原创 JVM学习笔记五:Class类文件结构

一、前言在Java技术发展之初,Java虚拟机就被设定为不仅限于java语言运行,也可以支持其他语言(如:Kotlin、Clojure、Groovy、JRuby、JPython、Scala等)在其上运行。JVM发展至今,尤其是在2018年,基于HotSpot扩展而来的GraalVM公开之后,当年的虚拟机设计者们已经基本兑现了这个承诺。实现语言无关性的基础在于虚拟机和字节码存储格式。Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与“Class文件”这种特定的二进制文件格..

2020-12-14 10:46:16 194

原创 JVM学习笔记四:垃圾回收算法

一、前言从如何判定对象消亡的角度出发,垃圾收集算法可以划分为“引用计数式垃圾收集”(Reference Counting GC)和“追踪式垃圾收集”(Tracing GC)两大类,这两类也常被称作“直接垃圾收集”和“间接 垃圾收集”。在主流Java虚拟机中未涉及引用计数式垃圾收集算法,所以只讨论追踪式垃圾收集。二、分代收集理论分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,它建立在两个分代假说之上:弱分代假说:绝大多数都是朝生夕灭的。 强分代假说:熬过越多次垃..

2020-11-14 20:08:06 204

原创 JVM学习笔记三:对象死亡算法与过程概述

一、前言在Java内存运行时区域中,程序计数器、虚拟机栈和本地方法栈这三个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基 本上是在类结构确定下来时就已知的。因此这几个区域的内存分配和回收都具备确定性,当方法结束或者线程结束时,内存就自然跟随着回收了。而Java堆和方法区这两个区域,只有处于运行期间,我们才能知道程序究竟会创建哪些对象,创建多少个对象,这部分内存的分配和回收是动态的。因此垃圾收集器所关注的正是这部分的内存改如何管理

2020-11-04 14:49:18 437 2

原创 JVM学习笔记二:HotSpot虚拟机对象

一、对象的创建当遇到new指令时,java虚拟机会去检查这个指令的参数能在常量池中定位到一个类的符号引用,同时检查是否已被加载、解析、和初始化过。若没有,则先执行相应的类加载过程。再通过类加载的检查后,虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可完全确定。为对象分配空间等同于从Java堆中划分确定大小的内存块出来。有两种分配方式,选择哪种方式由Java堆内存是否规整决定:指针碰撞:当Java堆中内存绝对规整时,所有被使用过的内存都被放在一 边,空闲的内存被放在另一边,中间

2020-10-22 10:48:45 367 2

原创 JVM学习笔记一:JVM运行时数据区域

一、架构Java虚拟机所管理的内存包括以下几个运行时数据区域,如下图所示1.程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一套需要执行的字节码指令,他是程序控制流的指示器。...

2020-10-17 16:21:01 249 1

原创 java.util.ConcurrentModificationException异常原因和解决方法

public static List<TreeModel> formatDataStructure(List<House> houseList){ Map<String,Set> checkDuplicates = new HashMap<>(); List<TreeModel> resultTree = new ArrayList<>(); houseList.forEach(hous.

2020-10-09 15:37:45 2950

原创 Redis缓存问题及解决方法

一、概念缓存穿透: 缓存击穿: 缓存雪崩:

2020-10-08 23:20:28 419

原创 Redis哨兵模式

一、概念哨兵模式本质上为主从复制模式的升级版本。在主从模式中,当master主服务器宕机后,slave从服务器无法自动切换成主服务器,因此引入哨兵(Sentinel)。使用一个或者多个哨兵(Sentinel)实例,对redis节点进行监控,在主节点出现故障后,能够将一个从节点升级为主节点,进行故障转移,保证系统可用性。Redis的Sentinel系统用于管理多个Redis服务器,该系统具有以下功能:监控(Monitoring): 不断地检查主从节点实例是否按照预期正常运行工作。 通知(Noti

2020-10-05 19:11:51 205

原创 Redis主从复制

一、复制概念说起Redis的数据备份,持久化主要用来解决Redis的单机备份,一旦该服务器挂了,数据就会全部丢失。为了避免这种情况,于是就有了集群概念,将数据备份到多个不同服务器上。这样做的好处有两个:保证数据保证,当主节点数据宕机时,自动连接到其他服务器 通过复制功能,可能实现数据库的读写分离,主数据库主要做写操作,从数据库负责读操作。从而提高服务气的负载能力 数据的复制是单向的,只能从主节点复制到从节点。...

2020-09-23 23:12:12 490

原创 Redis发布订阅模式(publish/subscribe)

目录一、概念二、原理三、推送的消息格式四、发布订阅命令1.发送消息2.订阅频道3.模式匹配4.取消订阅五、使用Jedis发布订阅命令六、缺点七、参考文档一、概念Redis发布/订阅(Pub/Sub)是一种通信机制,将数据推到某个信息管道中,其他客户端可通过订阅这些管道来获取推送信息,以此用于消息的传输。由三部分组成:发布者(Publisher)、频道(Channel)、订阅者(Subscriber)。发布者发布的消息分...

2020-09-17 10:51:42 8407

原创 Redis持久化(RDB/AOF)

一、持久化目的Redis是内存数据库,所有数据都是存储在内存中的,如果不定期将Redis中的数据库状态保存到磁盘,那么一旦服务器进程退出,就会导致数据的永久丢失。当下次Redis重启时,利用持久化文件实现数据恢复。除此之外,为了进行灾难备份,可以将持久化文件拷贝到一个远程位置。二、持久化分类Redis的持久化分为两种:RDB持久化 AOF持久化1.RDB持久化1.1.概念又称快照持久化,是将当前进程汇总的数据生成快照保存到硬盘,保存的文件后缀名为rdb。1....

2020-09-13 16:51:56 812

空空如也

空空如也

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

TA关注的人

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