<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_32057039的博客]]></title><description><![CDATA[只为有一个大房子，面朝大海，春暖花开。]]></description><link>https://blog.youkuaiyun.com/qq_32057039</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_32057039]]></copyright><item><title><![CDATA[【SpringBoot 005】 整合log4j2.xml 配置详解]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/132907339</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/132907339</guid><author>qq_32057039</author><pubDate>Fri, 15 Sep 2023 16:41:46 +0800</pubDate><description><![CDATA[如果启动时出现  Class path contains multiple SLF4J bindings ，说明还有多个jar 里面包含，需要排查移除。1、需要将 spring-boot-starter-web 中的默认日志系统排除。如果引入的jar 很多，可能其它包里面的也要排除。每一行都添加的注释。]]></description><category></category></item><item><title><![CDATA[【SpringBoot 004】 整合consul]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/132907310</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/132907310</guid><author>qq_32057039</author><pubDate>Fri, 15 Sep 2023 16:40:44 +0800</pubDate><description><![CDATA[consul 使用流程]]></description><category></category></item><item><title><![CDATA[【SpringBoot 003】 启动后执行方法的八种方式]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/132534892</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/132534892</guid><author>qq_32057039</author><pubDate>Mon, 28 Aug 2023 11:11:44 +0800</pubDate><description><![CDATA[【代码】【SpringBoot 003】 启动后执行方法的八种方式。]]></description><category></category></item><item><title><![CDATA[【SpringBoot 002】自定义Spring Boot Starter]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/132534492</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/132534492</guid><author>qq_32057039</author><pubDate>Mon, 28 Aug 2023 10:57:19 +0800</pubDate><description><![CDATA[自定义说starter]]></description><category></category></item><item><title><![CDATA[【springboot 001】搭建 springboot 源码分析环境]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/132448560</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/132448560</guid><author>qq_32057039</author><pubDate>Wed, 23 Aug 2023 11:24:19 +0800</pubDate><description><![CDATA[本文以SpringBoot2.2.5版本为案例，介绍编译过程。2.3.0版本之前：使用Maven构建项目的。2.3.0版本之后：使用。1、修改pom 中的文件。]]></description><category></category></item><item><title><![CDATA[004_Mysql 之索引使用以及优化]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/129691325</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/129691325</guid><author>qq_32057039</author><pubDate>Tue, 21 Mar 2023 16:20:54 +0800</pubDate><description><![CDATA[也出现 Using index， 但是此时Extra中出现了 Backward index scan，这个代表反向扫描索引，因为在MySQL中我们创建的索引，默认索引的叶子节点是从小到大排序的，而此时我们查询排序时，是从大到小，所以，在扫描时，就是反向扫描，就会出现 Backward index scan。当字段类型为字符串（varchar，text，longtext等）时，有时候需要索引很长的字符串，这会让 索引变得很大，查询时，浪费大量的磁盘IO， 影响查询效率。所以需要针对于age也要建立索引。]]></description><category></category></item><item><title><![CDATA[003_Mysql之事务详解redo log、undolog 和 MVCC]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/129634490</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/129634490</guid><author>qq_32057039</author><pubDate>Sat, 18 Mar 2023 11:38:01 +0800</pubDate><description><![CDATA[1、不管是redo log 还是 undo log ，都需要在事务提交时写入磁盘文件。不同的加了Log buffer 缓存区，可以将随机读写变为顺序读写。]]></description><category></category></item><item><title><![CDATA[002_InnoDB引擎索引高度计算方法详解]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/129578576</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/129578576</guid><author>qq_32057039</author><pubDate>Thu, 16 Mar 2023 08:52:55 +0800</pubDate><description><![CDATA[如果B+树高度为3的话，那么这棵B+树的存放总记录数为：根节点指针数*单个叶子节点记录行数 = 16kb/14 * 16kb/14 * 16 大约2kw+数据。如果B+树高度为2的话，那么这棵B+树的存放总记录数为：根节点指针数*单个叶子节点记录行数 = 16kb/14 * 16 大约 1.8w+ 数据。假设主键ID为bigint类型，长度为8字节，而指针大小在InnoDB源码中设置为6字节，这样一共14字节，InnoDB 存储引擎默认一个数据页大小为16kb，非叶子节点存放（key，pointer），]]></description><category></category></item><item><title><![CDATA[001_InnoDB引擎详解]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/129528170</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/129528170</guid><author>qq_32057039</author><pubDate>Tue, 14 Mar 2023 14:59:49 +0800</pubDate><description><![CDATA[因为前面我们讲到过，hash索引在 进行等值匹配时，一般性能是要高于B+树的，因为hash索引一般只需要一次IO即可，而B+树，可能需 要几次匹配，所以hash索引的效率要高，但是hash索引又不适合做范围查询、模糊匹配等。InnoDB 存储引擎基于磁盘文件存储的，访问物理硬盘和内存，速度相差很大，所以，为了减少磁盘的访问，需要将经常访问的数据加载到缓存池，避免每次都访问磁盘，减少磁盘IO。为了保证页的连续性，• dirty page：脏页，被使用page，数据被修改过，也中数据与磁盘的数据产生了不一致。]]></description><category></category></item><item><title><![CDATA[Linux 是否部署Mysql + Mysql 重启]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/129386961</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/129386961</guid><author>qq_32057039</author><pubDate>Tue, 07 Mar 2023 17:25:31 +0800</pubDate><description><![CDATA[Linux 是否部署Mysql + Mysql 重启]]></description><category></category></item><item><title><![CDATA[012|JVM之G1垃圾回收器原理]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108219482</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108219482</guid><author>qq_32057039</author><pubDate>Tue, 25 Aug 2020 13:39:10 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[011|JVM 老年代垃圾回收器CMS 的工作原理]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195861</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195861</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 11:20:43 +0800</pubDate><description><![CDATA[CMS 垃圾回收的基本原理

一般来说，老年代我们选择的垃圾回收器是 CMS，他采用的是 标记-清理 算法，其实就是，先通过追踪 GC Roots 的方法，看各个对象是否被 GC Roots 给引用了，如果是，那就是存活对象，否则就是垃圾对象。



这种方法最大的问题是，会造成很多内存碎片。



如果 Stop the World 然后垃圾回收会如何？

CMS垃圾回收器采取的是垃圾回收线程和线程系统工作线程尽量同时执行的模式来处理。



CMS 如何实现系统一边工作一边进行垃圾回收

CMS ...]]></description><category></category></item><item><title><![CDATA[010|JVM的 Stop The World 问题]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195847</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195847</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 11:19:00 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[009|分析一次JVM多久会发生GC]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195338</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195338</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:58:58 +0800</pubDate><description><![CDATA[分析的案例背景：

公司研发的一个数据计算系统，日处理数据量在上亿的规模。是一个分布式部署的系统，

每台机器大概每分钟执行100次数据提取和计算
	每次大概需要计算10秒
	每次大概提取1万条左右的数据到内存里面
机器的配置：

4核8G，JVM 内存给4G，其中新生代和老年代分别是 1.5G的内存空间。如下图，上面的图



那么新生代多久会被塞满？

假设，每条数据平均10个字段，可以认为每条数据在1KB 左右的大小，那么每次计算任务的一万条数据就差不多 10M 左右。



按照 8:1:1 的..]]></description><category></category></item><item><title><![CDATA[008|JVM 中回收算法以及每个算法的优劣]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195198</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195198</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:54:57 +0800</pubDate><description><![CDATA[针对新生代的算法：复制算法











针对老生代的算法：CMS

上面分别画了一下回收算法演变过程。
]]></description><category></category></item><item><title><![CDATA[007|什么时候JVM 中一个对象会被回收]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195142</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195142</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:53:03 +0800</pubDate><description><![CDATA[被哪些变量引用的对象是不能被回收的？

JVM 中使用了一种可达性分析算法，来判断哪些对象是可以被回收的，哪些是可以被回收的。



这个算法的意思，就是说对每个对象，都分析一下有谁在引用他，然后一层一层往上去判断，看是否有一个GC Roots。

那么哪些可以作为 GC Roots:

局部变量 -- 只要一个对象被局部变量引用，那么就不能被回收
	静态变量
Java 中对象的不同引用类型

Java 中的不同引用类型分别是：

强引用、软引用、弱引用和虚引用。

1、强引用


public clas.]]></description><category></category></item><item><title><![CDATA[006|感受一下线上系统部署的JVM 设置]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195104</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195104</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:51:26 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[005|JVM的分代模型：年轻代、老年代、永久代]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195064</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195064</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:50:14 +0800</pubDate><description><![CDATA[为什么要分成年轻代和老年代？

因为这跟垃圾回收机制有关，年轻代的对象，他们的特点就是创建之后很快就会被回收，所以需要一种算法



而对于老年代里的对象，他们的特点是需要长期存在，所以需要另外一种垃圾回收算法，所以需要分成两个区域来放不 同的对象。



什么说永久代？

上图中的 方法区，就是永久代，永久代存放一下类的信息。
...]]></description><category></category></item><item><title><![CDATA[004|JVM 垃圾回收机制用来干嘛的，为什么要垃圾回收]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108195019</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108195019</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:48:50 +0800</pubDate><description><![CDATA[前面分析来一个方法的执行的，那么方法执行完之后会怎么样呢？




]]></description><category></category></item><item><title><![CDATA[003|Jvm 有哪些内存区域]]></title><link>https://blog.youkuaiyun.com/qq_32057039/article/details/108194976</link><guid>https://blog.youkuaiyun.com/qq_32057039/article/details/108194976</guid><author>qq_32057039</author><pubDate>Mon, 24 Aug 2020 10:47:06 +0800</pubDate><description><![CDATA[整体流程的分析：

首先，你的JVM 启动，就会先加载你的 Kafka 类到内存中，然后会有一个 main 线程，开始执行的你的Kafka中的 mian() 方法，mian() 方法会关联一个程序计数器，那么它执行到哪一行指令，就会记录在这里。

然后，mian() 方法在执行的时候，会在main线程关联的 Java虚拟机栈里，压入一个 main() 方法的栈帧。

接着，就会发现需要创建一个 ReplicaMabager 类的实例对象，此时会加载 ReplicaMabager 类到内存里...]]></description><category></category></item></channel></rss>