自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【POI】Excel的xlsx格式的sheet页复制(到新的Excel)

某个xlsx格式的excel,sheet页很多,每个sheet页中都有图片、图形、绘图、图表等各种东西,现在需要将各个sheet页分离出来,每个sheet页单独保存为一个Excel。

2024-04-19 10:20:23 2092

原创 【OB4.2.0-CE从单机到3节点最小化集群全总结】

从单机部署到在线扩展到3节点最小集群方案、实施步骤、注意事项

2023-11-30 16:18:49 174

原创 【OBD 白屏部署单机 OceanBase-CE 4.2.0】

单机环境通过OBD白屏部署OB-CE4.2.0,部分安装参数解析

2023-11-14 12:32:44 276 3

原创 【利用hutool简单演示前后端加解密流程】

利用hutool,简单演示前后端加解密过程,代码可直接复制运行

2023-11-10 09:31:37 1198

原创 求KMP算法的next[j]

数据结构——求KMP算法的next[j]一、next[j] 函数定义如下二、模式串为:abababb,设模式串第一个字符的下标为0三、求next[j]的第一种方法——前缀后缀最大公共元素长度法1、j = 0,p = a,前缀后缀最大公共元素长度 = 0● 无前后缀2、j = 1,p = ab,前缀后缀最大公共元素长度 = 0● 前缀:a● 后缀:b● a != b3、j = 2,p = aba,前缀后缀最大公共元素长度 = 1● 前缀:a,ab● 后缀:a,ba●

2021-03-27 14:11:13 2947

原创 数据库的三级封锁协议

2021-03-20 10:28:03 157

原创 JVM(笔记)—— Class 类文件结构的说明(二)

Class文件的头4个字节,是魔数(Magic Number),表示该文件是可以被Java虚拟机接受的文件,内容是 0xCAFEBABE第5和第6个字节是次版本号(Minor Version),第7和第8个字节是主版本号(Major Version) ,Java的版本号是从45开始的,高版本的JDK能向下兼容,但是低版本的JDK不能运行高版本的Class文件第7、第8个字节表示主版本号, 如 十六进制的 0034, 表示 16 * 3 + 4 = 52, 表示Java8, 50 是 Ja...

2021-01-04 18:24:08 180

原创 JVM(笔记)—— Class 类文件结构的说明(一)

任何一个Class文件都对应着唯一的一个类或接口的定义信息但也有的Class文件中只存放描述性信息,package-info.class、module-info.class类或接口并不一定都得定义在文件里(譬如类或接口也可以动态生成,直接送入类加载器中)Class文件是一组以8个字节为基础单位的二进制流当遇到需要占用8个字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8个字节进行存储Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构中只有两..

2021-01-04 18:12:24 108

原创 JVM(笔记)—— 对象存活判定

对象存活判定的方法● 引用计数法● 可达性分析法引用计数法,现在主流的Java垃圾回收都不使用,原因是它很难解决循环引用的问题可达性分析法,涉及到一个GC Roots,如果一个对象和GC Roots 没有任何引用链(不可达),则证明是可以被垃圾回收的无论是引用计数法还是可达性分析法,都涉及到对象的引用问题对象的引用可分为4类,强引用、软引用、弱引用、虚引用可以被垃圾回收的对象,并不一定会被立即回收(死亡)垃圾回收器会将不可达的对象进行标记,同时进行一次筛选,..

2021-01-04 18:07:34 87

原创 JVM(笔记)—— 关于 String::intern() 和 常量池

String::intern()是一个本地方法,它的作用是如果字符串常量池中已经包含一个等于此String对象的字符串,则返回代表池中这个字符串的String对象的引用;否则,会将此String对象包含的字符串添加到常量池中,并且返回此String对象的引用由上面的分析可知,如果创建了一个形如 “4” + new String(“56”) 的对象,若之后使用 intern,那么之后所有创建的、最终结果为 “456” 的字符串对象【非new】,都将使用上面的对象...

2021-01-04 18:03:25 79

原创 JVM(笔记)—— 对象的访问定位

对象的访问方式分为两种,一是通过句柄访问,而是通过指针访问句柄访问● 句柄访问需要在堆内存中额外开辟一块空间作为句柄池,栈中存放的就是对应对象的句柄地址● 如果使用句柄访问,则句柄中需要保存对象类型数据的指针和对象实例数据的指针● 栈中保存句柄的引用,通过句柄找到对象在堆中的实例数据和方法区的类型数据直接指针访问● 栈中存放对象在堆中的地址● 通过该地址,可以找到对象,根据对象头部信息中的类型数据指针,找到方法区的类型数据优缺点● 使用句柄访问,需要在堆中额外开辟空间;而指..

2021-01-04 17:58:00 101

原创 JVM(笔记)—— 对象的内存布局

Java对象的大小,包括 对象头部信息、实例数据、对齐填充对象头部信息● HotSpot虚拟机的对象头包括两部分信息:markword和class 。● 虚拟机类型可通过 System.getProperty(“java.vm.name”) 获取● markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等。● 另外一部分是class类型指针,即对象指向它的类元数据(在方法区)的指针,虚拟机通过这个指针来..

2021-01-04 17:54:18 126

原创 JVM(笔记)—— Java普通对象的创建

⚠️注意:下面所说的对象创建,不包括复制、反序列化;对象,也仅限于Java普通对象,不包括数组、Class对象等Java虚拟机遇到new指令检查new指令的参数,是否能在常量池中定位到一个类的符号引用检查这个符号引用所代表的类是否已被加载、解析和初始化过;如果没有,则执行类的初始化过程● 这个检查过程,涉及到类加载相关的知识,如双亲委派等虚拟机为新生对象分配内存(对象所需内存的大小在类加载完成后便可完全确定)● 对象内存的分配方式,与Java虚拟机的垃圾回收器有关● 如果垃圾回

2020-12-30 14:46:10 94 1

原创 JVM(笔记)—— 直接内存

直接内存并不是运行时数据区的一部分,但是会和运行时数据区打交道在JDK 1.4中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区 (Buffer)的I/O方式,它可以使用Native函数(本地函数)库直接分配堆外内存,然后通过一个存储在Java堆里面的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Java堆和Native堆中来回复制数据。...

2020-12-30 14:25:21 72

原创 JVM(笔记)——【运行时数据区】运行时常量池

常量池存在堆中,之前(JDK7及之前)常量池存在于方法区编译期生成的字面量和符号引用,放在类的常量池表,在类加载后,常量池表放在运行时常量池类编译期间生成的符号引用,会放在类的常量池,类加载后又放在运行时常量池;同时,这些符号引用翻译出来的直接引用,也会被放在运行时常量池类的常量池和方法区的运行时常量池不一样● 类的常量池,不具备动态性,类的常量池中的值,只在类编译期间产生● 运行时常量池,具备动态性,程序运行期间生成的常量(如通过String.intern()生成的字符串)会存放..

2020-12-30 14:22:06 124

原创 JVM(笔记)——【运行时数据区】方法区

各线程共享它用于存储已被虚拟机加载的对象类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据● 在虚拟机加载类的第一个阶段“加载”中,将类变成的二进制流中的“对象类型信息”、“常量”、“静态变量”放入方法区● 注意,JDK8以后,静态变量(类变量),已经随着Class对象一起放在了堆中;静态变量放在方法区是逻辑上的概念现在的方法区,已经存储在本地内存中,不与堆的“永久代”概念混淆方法区也可能存在垃圾回收如果方法区无法满足新的内存分配需求时,将抛出 OutOfMemo..

2020-12-30 14:16:42 64

原创 JVM(笔记)——【运行时数据区】Java堆(待完善)

虚拟机启动时创建,是运行时数据区域中最大的一块绝大部分对象都在堆中,也有不在堆中的对象对Java堆细分的目的,只是为了更好的回收内存,或更快的分配内存Java堆可以处于不连续的内存空间中,但逻辑上应该连续;同时,对于大对象,如数组,更多的虚拟机是为数组分配连续的内存空间,从而达到实现简单、存储高效的目的...

2020-12-30 13:55:50 77

原创 JVM(笔记)——【运行时数据区】本地方法栈

和Java虚拟机栈类似,只是本地方法栈是为了执行本地方法而使用(如intern())Java虚拟机规范中,并没有强制规定本地方法栈该如何实现,因此各个虚拟机可自行实现HotSpot虚拟机则将本地方法栈和Java虚拟机栈合二为一,因此,本地方法栈也会出现如 StackOverFlowError 和 OutOfMemoryError...

2020-12-30 13:52:56 45

原创 JVM(笔记)——【运行时数据区】Java虚拟机栈

【运行时数据区】Java虚拟机栈1、线程私有2、即通常所说的“栈空间”3、线程中的每个方法被执行时,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口(方法返回地址)等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。● 一个栈帧需要分配多少内存,并不会受到程序运行期变量数据的影响,而仅仅取决于程序源码和具体的虚拟机实现的栈内存布局形式 ● 即,需要分配多少内存,编译期间就已经知道了,不能动态更改4、局部变量表:● 局

2020-12-29 16:47:42 84

原创 JVM(笔记)——【运行时数据区】程序计数器

1、线程私有2、不存在 OutOfMemoryError3、字节码解释器的工作,是改变程序计数器的值,来选取下一条需要执行的字节码指令4、是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复 等基础功能,都需要依赖程序计数器来完成5、如果执行的是Java方法,则程序计数器记录的是正在执行的虚拟机字节码指令的地址;如果是本地方法,程序计数器的值为空...

2020-12-29 16:38:44 165 1

空空如也

空空如也

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

TA关注的人

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