自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱我所爱0505

Java后台

  • 博客(149)
  • 资源 (2)
  • 收藏
  • 关注

原创 HotSpot虚拟机之内存模型与线程安全

共享变量如:实例字段、静态字段、数组元素等线程共享变量(不包含线程私有变量)。内存模型中有:主内存、工作内存,如下图所示是两者交互关系,看出。

2023-08-20 14:45:23 311

原创 HotSpot虚拟机之后端编译与优化

输出代码优化质量的高低决定编译器是否优秀的关键,编译器分为:前端编译器(将Java源码转变成字节码的过程,只完成源码到抽象语法树或字节码的生成,如:javac命令)、后端编译器(完成代码优化及字节码生成本地机器码的过程,如:即时编译、提前编译都是后端编译器)。:虽然以整个方法作为编译对象,但是执行入口(从方法第几条字节码指令)不同,编译时会传入执行入口点字节码序号。,为了提高效率,则提前编译器编译后提前保存(即时编译缓存),运行时则直接加载使用。a.运行时,即时编译的目标是“热点代码”,有更好的优化;

2023-08-16 09:55:04 238

原创 HotSpot虚拟机之字节码执行引擎

2.局部变量表容量以变量槽(slot)为最小单位;3.方法Code属性。

2023-08-15 22:39:08 260

原创 HotSpot虚拟机之类加载过程及类加载器

step5:否则,查找失败,则抛出java.lang.NoSuchMethodError;step6:查找成功后,是否对该方法有访问权限,否则抛出:java.lang.IllegalAccessError。接口方法当前代码处在D类,根据未解析的符号引用N去解析方法(方法所属的接口C),步骤如下:step1:首先解析D方法表class_index的索引CONSTANT_Class_info类进行解析(字段所在的类解析),

2023-08-13 14:46:57 194

原创 HotSpot虚拟机之Class文件及字节码指令

Class文件格式如下表所示,主要有:常量池、字段表、方法表、属性表等。Class文件、字段、方法都有自己的属性,这些属性存储到属性表(attribute_info),《Java虚拟机规范》允许属性只要不重名,任何编译器都可以添加自己的属性信息。javac编译过程:一个准备(初始化插入式注解处理器);a.i代表int、l代表long、s代表short、b代表byte、c代表char、f代表float、d代表double、(byte、short、char、boolean、int型返回使用ireturn)

2023-08-04 20:33:45 196

原创 HotSpot虚拟机参数配置及优化

2.user:进程执行用户态(User Mode)所耗费的处理器时间(此进程实际CPU时间、其他进程和此进程阻塞时间不包括);2.代码根所引用的存活对象,从一个Region迁移到了另外的Region,更新迁移对象的引用。2.Region增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长。1.回收线程的启动时间,该值 = JVM进程启动时间点 - 当前时间点;下图是VisualVM的Visual GC插件的监控图。回收线程的结束时间,该值 = JVM进程启动时间点 - 当前时间点;

2023-06-15 20:23:44 756

原创 HotSpot虚拟机垃圾回收算法及收集器

如下表所示,垃圾回收算法总结。算法特点标记-清除1.标记存活的对象,统一回收所有未被标记的对象;2.最基础的收集算法;内存碎片化,大对象分配时没有足够连续空间,则提前触发GC;对象数量增加时,标记和清除两个过程执行效率低4.适用:老年代;5.采用该算法收集器:CMS。标记-复制1.“半区复制”:内存按大小相等分两块(使用一块;存活对象复制到另一块);2.“Appel式回收”:新生代分为一个Eden区、两个Survivor区(每次可用一个Eden区、一个Survivor区;

2023-06-07 19:39:30 688

原创 HotSpot虚拟机OutOfMemoryError异常

HotSpot虚拟机把内存分为不同的数据区域,有的区域随JVM启动而一直存在(线程共享区域),有的区域随用户线程启动和结束而建立和销毁(线程私有区域),如下图所示。JVM:-XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=128M,如下代码所示。JVM配置:-Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError,如下代码所示。下图所示是堆外内存,由参数-XX:MaxDirectMemorySize决定大小,没有配置该参数时,

2023-05-29 20:31:19 603

原创 同一热卖商品的高并发写难题 - Lua脚本扣减库存方案

org.springframework.data.redis.core.script.DefaultRedisScript#getSha1获取Lua脚本的校验码,是对Lua脚本的预加载,首次执行生成SHA的校验码,第二次执行无需生成校验码。通常来说,秒杀场景的爆款商品库存数量相对较少,当发生库存扣减操作时,实际上落到数据库中的写流量很小,只要系统上游能够配合交易系统做好限流保护,数据库基本上不会有太大的负载压力,但大库存的限时抢购场景就恰恰相反了。若采用分布式锁,该方案太重,并发量上不去。

2023-04-19 22:01:11 1251 1

原创 全链路压测时动态路由数据源MySQL、MongoDB、Redis

目录一、全链路压测二、动态路由Mysql1. 参数配置application-localDynamic.yml2. 加载配置参数DynamicDataSourceProperties.java3. 动态数据源DynamicDataSource.java4. 动态数据源供应DynamicDataSourceProvider.java5. 动态数据源bean6. 动态数据源上下文DynamicDataSourceContextHolder.java7. 动态数据源过滤器DynamicDataSourceFilt

2023-04-13 21:31:08 973

原创 RocketMQ5.0.0顺序消息

本章介绍RocketMQ支持顺序消息的实现机制,有加锁完成。消费端负载均衡后,向Broker端发送给分配到的消费队列加锁请求,加锁成功后才能拉取消息。拉取的消息不是直接消费,而是放入消费队列中再消费。消费时,消费队列加锁,使得多个消费者同一时间,只能是一个消费者再消费。

2023-03-24 21:57:55 909

原创 RocketMQ5.0.0定时消息

本章节介绍延迟消息的概览,及实现机制。根据延迟级别来创建不同的定时任务,延迟到延迟级别对应的延迟时间,进行还原原始主题和消费队列,再次存储到commitlog文件中,供消费者消费。

2023-03-18 13:30:41 1723

原创 RocketMQ5.0.0消息消费<三> _ 消息消费

本章节介绍PUSH模式下的消息拉取及负载均衡后的消息消费。消费线程池消费消息失败后,进行消息ACK确认,进入重新消息队列。消息成功后,根据广播/集群模式更新消费进度。

2023-03-14 19:24:58 467

原创 RocketMQ5.0.0消息消费<二> _ 消息队列负载均衡机制

本章介绍了消费者负载均衡,给消费者分配消费队列。消费者启动后,会启动MQClientInstance实例,从而启动负载均衡线程,每20s周期执行重新分配,进而对分配的消费队列是否变化进行消费进度修改,重新拉取消息。同时也介绍了不同的负载均衡策略。

2023-03-09 20:09:06 847

原创 RocketMQ5.0.0消息消费<一> _ PUSH模式的消息拉取

本章节介绍消费者订阅主题及消费者启动后,PUSH模式下的消息拉取机制。PUSH模式是基于拉模式的,消费者周期执行拉取消息任务。同时介绍了消息拉取长轮询机制,Broker的两种处理方式。

2023-03-05 21:57:23 1254

原创 RocketMQ5.0.0事务消息

介绍事务消息利用两阶段提交和Broker定时回查来实现事务消息机制,事务监听器保存本地事务及事务状态回查的两个方法,生产者触发结束事务及Broker定时回查状态来结束事务等机制。

2023-03-02 19:26:28 681 2

原创 RocketMQ5.0.0的Broker主从同步机制

本章节介绍RocketMQ的主从同步机制实现,其主/从Broker启动流程相同,根据配置角色来决定是否执行HA同步。

2023-02-23 22:01:02 1831

原创 RocketMQ5.0.0消息存储<五>_文件过期删除机制

介绍了RocketMQ为什么采用文件过期机制,文件过期机制实现就是利用定时任务执行删除文件,或磁盘不足进行强制删除等。删除过期文件的三个触发条件:指定定时时间删除文件、磁盘不足、人工执行删除命令。

2023-02-18 22:22:39 1182

原创 RocketMQ5.0.0消息存储<四>_刷盘机制

本章节介绍RocketMQ的刷盘机制,分为同步刷盘和异步刷盘两种,默认异步刷盘方式。异步刷盘根据是否开启堆外内存池进行不同的刷盘策略。

2023-02-15 21:55:33 703

原创 RocketMQ5.0.0消息存储<三>_消息转发与恢复机制

本章介绍Broker提交消息后,进行消息转发的介绍。消息异步转发来构建ConsumeQueue、IndexFile文件,供消费者消息。Broker根据abort文件来判定是否正常退出,来采取不同的恢复策略来修复ConsumeQueue、IndexFile文件,到达消息数据一致性的目的。

2023-02-12 19:24:15 650

原创 RocketMQ5.0.0消息存储<二>_消息存储流程

介绍消息生产者发送消息后,Broker接收消息时处理流程,主要讲解同步或异步的区别,消息commit操作(追加消息到文件内存映射中),如何刷盘与HA同步将后续介绍。

2023-02-09 20:01:46 732

原创 RocketMQ5.0.0消息存储<一>_存储文件及内存映射

介绍RocketMQ的Brokder存储文件,不同存储文件的作用,及加载文件到内存映射。同时介绍了commit与flush操作的区别

2023-02-07 19:44:43 1290

原创 RocketMQ5.0.0消息发送

介绍消息发送流程,消息的关键属性和消息生产者的UML图,消息发送的三种方式:同步、异步、单向。

2023-01-30 21:28:58 1053

原创 RocketMQ5.0.0路由中心NameServer

介绍NameServer的注册中心作用,Broker定时任务发送心跳包给NameServer,NameServer是消息存储Broker、生产者、消费者、从Broker的连接桥梁。

2023-01-15 19:58:50 1276

原创 RocketMQ5.0.0部署与实例

介绍本地RocketMQ的本地调试启动并打包部署到linux系统,及测试事务消息

2023-01-07 21:57:56 2563

原创 《MySQL技术内幕-InnoDB存储引擎》总结

MySQL技术内幕 InnoDB存储引擎 第2版,内容总结

2022-11-07 20:53:41 257

原创 InnoDB存储引擎状态详解

理解show engine innodb status的查询结果

2022-11-02 19:33:15 2098

原创 MySQL备份与恢复

介绍MySQL备份分类及相应恢复,使用xtrabackup进行在线完整备份

2022-10-22 21:05:45 352

原创 MySQL事务

介绍的事务的特性及分类,InnoDB存储引擎实现事务的方法redo log、undo log等,其次介绍了事务隔离性的实现。

2022-10-19 20:10:08 254

原创 MySQL锁

介绍了MySQL的锁类型及锁的实现,事务隔离性由锁实现,多本版并发控制技术等内容

2022-09-24 20:54:41 570

原创 B+树结构与索引<二> _ 索引页示例

通过结构示例介绍聚集索引的B+树和辅助索引的B+树的区别与联系

2022-09-05 19:59:38 497

原创 B+树结构与索引<一> _ 结构与索引

介绍了MySQL的B+树索引算法及B+的插入/删除操作,B+索引类型及对比,MySQL对索引的管理和使用

2022-08-30 21:14:36 1366

原创 MySQL表分区

介绍MySQL的表分区类型,以及非分区表与分区表相互转换等

2022-08-22 20:42:13 1152

原创 InnoDB数据页结构示例

使用py_innodb_page_info.py分析表空间,介绍了数据页的机构以及记录行的查找过程

2022-08-15 22:14:27 410

原创 InnoDB逻辑存储结构

介绍了InnoDB存储引擎逻辑结构的组成部分,页的行格式及页数据页结构

2022-08-06 20:48:08 1525 1

原创 py_innodb_page_info.py工具使用

py_innodb_page_info.py工具是《MySQL技术内幕 InnoDB存储引擎》作者姜承尧写的用来分析表空间中的各页的类型和信息

2022-07-31 21:25:02 715

原创 MySQL中各类型文件详解

介绍MySQL的文件,如慢查询日志文件、二进制日志文件、表空间文件、重做日志文件等

2022-07-27 21:15:10 1795

原创 MySQL5.7 参数详解

MySQL数据库参数配置

2022-07-15 22:44:31 893

原创 《Java并发编程的艺术》总结

目录一、总结第一章 并发编程的挑战第二章 Java并发机制的底层实现原理第三章 Java内存模型第四章 Java并发编程基础第五章 锁Lock第六章 Java并发容器和框架第七章 原子操作类第八章 并发工具类第九/十章 线程池及Executor框架二、参考资料一、总结第一章 并发编程的挑战第二章 Java并发机制的底层实现原理第三章 Java内存模型第四章 Java并发编程基础第五章 锁Lock第六章 Java.

2022-06-26 19:39:30 173

原创 Java的原子操作类和并发工具类

一、原子操作类java.util.concurrent.atomic包下提供了一系列的原子操作类,主要包含:原子更新基本类型、原子更新数组、原子更新引用、原子更新类的属性。这些类都具有线程安全性,其底层实现基本上使用Unsafe实现的包装类,完成自旋和CAS操作。1. 类型总结作用 实现类 特点 原子更新 基本类型 AtomicBoolean AtomicInteger AtomicLong 1. 只能...

2022-04-29 20:48:37 752 2

redis6.0基本数据结构源码.h

总结《Redis深度历险:核心原理和应用实践》的基本数据结构源码 —— 对象结构

2021-08-04

Redis深度历险:核心原理和应用实践.png

总结《Redis深度历险:核心原理和应用实践》的xmind图

2021-08-04

空空如也

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

TA关注的人

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