- 博客(19)
- 收藏
- 关注
原创 vmware安装centos 8
注意:这里为什么无法创建root用户,而是创建普通用户,是因为如图标红所示,用户账户和根账户均使用此密码,说明我们的虚拟机默认是有root用户的,无需创建,只需要创建普通用,然后新创建的用户和root用户使用的密码是一样的,否则就会出现上述图片中的报错信息,故创建如下用户:guaiyu。默认情况下网络已经是能够正常访问外网的,但此时的ip为动态ip,我们在平常使用时,一般都是通过ssh远程连接虚拟机的,所以需要固定服务器ip,否则,无法登录服务器,需要去机房查看服务器ip。
2025-12-27 16:41:14
644
原创 垃圾回收器-ZGC
前面我们讲了serial,parallel,CMS,G1垃圾回收器,今天讲另一个具有革命性的垃圾回收器——ZGC,ZGC(Z Garbage Collector)是Oracle为Java虚拟机(JVM)打造的一款以低延迟为首要目标的垃圾回收器。它自JDK 11作为实验性功能引入,并从JDK 15开始成为生产可用的特性,在JDK21中引入了分代的概念。
2025-10-30 11:45:52
1023
原创 垃圾收集器-G1
上一节内容我们讲了垃圾收拾算法和常规的垃圾收集器——垃圾回收器和常规垃圾回收算法,这节我们讲一下G1收集器。G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征。核心革新在于其区域化(Region)的内存管理和面向回收价值的收集策略。G1的垃圾收集过程主要包括年轻代收集和混合收集,背后则由全局并发标记周期支撑。一个高效的城市垃圾回收系统,这个城市就是我们的Java应用,城市产生的垃圾就是
2025-10-13 22:58:28
1015
原创 jvm垃圾回收算法和垃圾收集器(Serial、Parallel、Parnew、CMS)
当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。
2025-10-05 18:03:00
623
原创 jvm垃圾回收之垃圾确认
前面的章节中,我们已经讲了以及,相信对jvm的结构已经有了深入的理解,今天我们讲另一个比较重要的知识点,垃圾回收相关知识点学完之后,对jvm的体系的框架就基本完整了,不管是面试还是日常工作中,我相信对你有一定的帮助,都有信心和勇气去面对这些问题了。学习是一个痛苦的过程,贵在坚持,希望各位能够坚持下来,与君共勉!
2025-09-30 16:27:36
641
原创 对象在堆中的分配
上一节内容我们主要讲了对象从加载到运行在JVM各内存模块是如何协同工作的(),主要是帮助我们更好的理解自己的代码是如何从磁盘到内存运行的,也是面试中经常被问到的一个点,今天,我们讲面试的另外一个高频问题,对象在堆中是如何分配的呢,对我们jvm内存优化有很大的帮助,也有便于我们后续对堆内存的垃圾回收有一定的帮助。我们在学习对手回收之前,就不得不了解堆的构造了,理解了堆的构造,才能更好的学习后续知识。
2025-09-29 10:11:12
1038
原创 JVM内存分配详解
这节内容会详细讲源码怎么编译成字节码文件,类如何加载到jvm以及类在调用时如何在JVM中进行内存分配的。通常情况下,我们使用的编码工具idea会进行实时编译,不需要我们手动进行编译,当然,你也可以进行测试,使用javac自行进行编译,如下:javac [options] [sourcefiles] [classes] [@argfiles]-d:将所有生成的 .class 文件(包括包结构)输出到 D:\myproject\classes。-cp:指定了依赖的第三方库的路径。lib/* 表示 lib
2025-09-27 15:06:59
1151
2
原创 java跨平台特性及JVM内存模型
JRE包含Java虚拟机(JVM)、类库及运行环境,是Java程序运行的基础环境。作为Java“一次编写,到处运行”的核心,负责将字节码转换为目标平台的机器码,实现跨平台特性。JDK提供javac(编译器)、jar(打包工具)、jdb(调试工具)、javadoc(文档生成工具)等开发工具。JDK包含Java标准类库,涵盖I/O、网络、线程管理等基础功能,供开发者直接调用。。
2025-09-27 15:05:38
614
原创 JVM类加载机制
我这里有个Math类,代码如下:该类运行main方法,到方法结束,jvm是底层是如下图所示执行的:其中jvm加载类的过程会经历以下几个步骤:类被加载到方法区之后主要包含运行时常量池、类型信息、字段信息、方法信息、类加载的引用、对应class实例的引用等信息。上述代码中调用了A,但是没调用B,所以只会加载Class A 而不会加载Class B上述代码中调用了A,调用了B,所以逐步加载Class A和Class B上述类加载过程,主要是通过类加载器实现的,类加载器有以下几种类型:以下代码是对加载器
2025-08-29 23:36:21
965
原创 Mysql全局优化
如果innodb_buffer_pool_size是40GB,给操作系统分配4G,给连接使用的最大内存不到20G,如果连接过多,使用的内存超过20G,将会产生磁盘SWAP,此时将会影响性能。sort_buffer_size是一个connection级的参数,在每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存。连接的创建和销毁都需要系统资源,比如内存、文件句柄,业务说的支持多少并发,指的是每秒请求数,也就是QPS。每个需要排序的线程分配该大小的一个缓冲区。
2025-08-14 09:48:55
623
原创 Mysql之MVCC底层原理剖析
MVCC机制的实现就是通过read-view机制与undo版本链比对机制,使得不同的事务会根据数据版本链对比规则读取同一条数据在版本链上的不同版本数据。
2025-08-10 23:26:27
789
原创 MySql锁机制
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(CPU,RAM,I/O等)的争用以外,数据也是一种用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
2025-08-09 17:29:32
752
原创 mysql事务
我们的数据库一半都会并发执行多个事务,多个事务可能会并发的对想通的一批数据进行增删改查等操作,这样就会存在脏写、脏读、不可重复读、幻读等问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制解决事务并发问题,接下来,我们深入探讨一下这些机制,理解数据库内部的执行原理。
2025-08-05 17:15:42
1406
原创 MySql优化之索引最佳实践
假设index(a,b,c)where语句是否使用索引where a=3使用到a使用到a,bwhere b = 3 或者where b=3 and c=4或者where c=4未使用,不符合最佳最前缀法则使用到a,未使用到c,b中间断了,无法排序使用到a和b,未使用到c,因为c数据范围查询右边的使用到a,b和c;b属于like开头的,使用了索引使用到a,未使用到b和c,b属于like结尾的,中断了使用到a,道理同上使用到a,b和c。
2025-06-27 15:04:40
997
原创 MySql优化之Explain详解
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。
2025-06-26 15:38:00
599
原创 mysql优化之存储引擎
这个其实涉及到前几天讲的数据结构的问题,B+Tree是平衡二叉树,如果不自增,无序插入的话,会涉及到节点的分裂与合并,新增数据的时候会消耗性能。
2025-06-25 10:06:18
1131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅