<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chang765721的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chang765721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chang765721]]></copyright><item><title><![CDATA[redis - 集群知识]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144777422</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144777422</guid><author>chang765721</author><pubDate>Sat, 28 Dec 2024 15:43:25 +0800</pubDate><description><![CDATA[client连接集群时，会得到集群的槽位配置信息，保存在本地，下次请求的时候就可以明确节点（对key进行hash运算，然后16384进行取模运算）。原因是，在迁移完成之前，目标节点不会管理新的槽位，如果此时正常请求目标节点，会返回MOVED，然后客户端又要重新请求旧的节点。集群中的每个节点可以设置多个从节点，当主节点发生故障后，集群会自动升级某个从节点为主节点，如果没有从节点，集群将是不可以用的状态。buffer是一个定长的环形数组，如果从节点的同步速度小于主节点的写入速度，buffer会覆盖前面的内容。]]></description><category></category></item><item><title><![CDATA[IO模型学习]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144747335</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144747335</guid><author>chang765721</author><pubDate>Thu, 26 Dec 2024 17:44:40 +0800</pubDate><description><![CDATA[也就是socket缓冲区，此时处理逻辑的程序是无法操作这部分数据，所以内核空间封装read和write函数 供用户空间使用。服务端在和其中一个客户端建立连接、接收数据、处理逻辑阶段都是非阻塞的。服务端在和其中一个客户端建立连接、接收数据、处理逻辑阶段都是阻塞的，别的客户端连接不进来。Socket 同样也是一种资源，也会对应一个FD。，这样客户端才能链接上socket。其次，服务器通过网卡接收数据，接收到的数据会放在。客户端和服务端通信时，客户端需要数据。首先，socket的操作都是在内核空间去做的。]]></description><category></category></item><item><title><![CDATA[分布式事务的解决方案-Seata 简介]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144557458</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144557458</guid><author>chang765721</author><pubDate>Wed, 18 Dec 2024 12:19:05 +0800</pubDate><description><![CDATA[备注：TC 为单独部署的Serve端（类似于注册中心啥的） TM 和RM为嵌入到应用中的client端。即：子事务可以直接提交，并记录undolog（并非mysql的undolog）释放资源锁。XA的缺点：性能较差，需要等全部的结果；TC服务存在单点故障问题。实际上就是为了解决XA模式性能较差的问题。TCC的核心是预占。]]></description><category></category></item><item><title><![CDATA[从根上理解 mysql -数据在表中是怎么存储的]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144366859</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144366859</guid><author>chang765721</author><pubDate>Tue, 10 Dec 2024 14:39:51 +0800</pubDate><description><![CDATA[同理，代表段的INODE Entry结构占用192个字节，一页能存储85个这样的结构，但是如果表中的数据超过85个段，就需要用别的INODE类型的页面来存储。所以一个页面能放的XDES Entry是有限的，所以，才有了组的概念（不分组 放不下啊）。ok,引入区的概念是为了转随机IO为顺序IO，但是B+树中真正存储数据的是叶子结点，如果把所有节点都放在一起，那么在进行范围查询的时候，也是随机IO。一个区默认1M, 一个索引两个段，哪怕一个段中只有一个区，一个索引也是至少2M空间，这未免有点浪费吧。]]></description><category></category></item><item><title><![CDATA[从根上理解 mysql -数据在页中是怎么存储的]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144355391</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144355391</guid><author>chang765721</author><pubDate>Mon, 09 Dec 2024 20:04:24 +0800</pubDate><description><![CDATA[B+树 的检索是按照页去检索的，但是页中的记录怎么检索呢。实际上，页中也是分了组的，而 Page Directory中记录的就是每组中最大记录的偏移量。每组中的最大的记录行中的。最小记录和最大记录，两个虚拟的行记录  5 记录头+ 8 固定  表示单词。前4个字节：页的校验和   和 Page Header相对应。占用固定的56个字节，专门存储各种状态信息  数据页专用。后4个字节：页面被最后修改时对应的日志序列位置（LSN）所有类型的页都适用  记录页的通用信息。属性即记录这个组中有几条记录。]]></description><category></category></item><item><title><![CDATA[从根上理解 mysql -一行数据是怎么存储的]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/144342324</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/144342324</guid><author>chang765721</author><pubDate>Mon, 09 Dec 2024 14:16:03 +0800</pubDate><description><![CDATA[如果某一列中的数据非常多的话，在本记录的真实数据处只会存储该列的前768个字节的数据和一个指向其他页的地址，然后把剩下的数据存放到其他页中，这个过程也叫做行溢出。：char类型，虽说是固定长度类型，但如果字符集为gkb 或者utf8的时候，实际存储的字节也是无法确定的，因此也会在。so  若字符集选择ascii,那最大长度为65532，如果设置了not null 那最大长度为65533。：CHAR(M)类型的列要求至少占用M个字节（哪怕存一个字符a），而VARCHAR(M)却没有这个要求。]]></description><category></category></item><item><title><![CDATA[redission 分布式锁的原理]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/139006605</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/139006605</guid><author>chang765721</author><pubDate>Fri, 17 May 2024 17:13:52 +0800</pubDate><description><![CDATA[有些东西看别人的博客是领会不到的]]></description><category></category></item><item><title><![CDATA[git 操作]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/138960436</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/138960436</guid><author>chang765721</author><pubDate>Thu, 16 May 2024 15:47:57 +0800</pubDate><description><![CDATA[举例: 如果从 master（A-B） 拉个feature分支出来,然后提交了几个 commit(A-B-C-D),这个时候刚好有人把他开发的东西合并到 master（A-B-E） ,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话，就会把你当前的几个 commit，放到那个人 commit 的后面（A-B-E-C2-D2）。撤销某次提交，撤销也是一种提交。merge 会把a分支最新的提交和b分支最新的提交合并成一个新的提交。]]></description><category></category></item><item><title><![CDATA[Spring解决循环依赖为什么需要三级缓存]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/137798284</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/137798284</guid><author>chang765721</author><pubDate>Mon, 15 Apr 2024 22:55:40 +0800</pubDate><description><![CDATA[如果ServiceA中有@Async  或者@Transactional等 项目启动会报错。为什么呢？因为B依赖A时，执行了A的lambda表达式会创建A的代理对象前，把对象放在earlyProxyReferences中，代表已经进行了aop操作，在执行A的初始化后续操作（BeanPostProcess.postProcessAfterInitialization），会校验earlyProxyReferences中是否执行过aop，如果执行过则不在执行。]]></description><category></category></item><item><title><![CDATA[SpringBean的生命周期]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/137796231</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/137796231</guid><author>chang765721</author><pubDate>Mon, 15 Apr 2024 22:17:58 +0800</pubDate><description><![CDATA[https://gitcode.youkuaiyun.com/65e6e4a31a836825ed78701b.html?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTI3Mzc3OSwiZXhwIjoxNzEzMjgyMTg5LCJpYXQiOjE3MTI2NzczODksInVzZXJuYW1lIjoiY2hhbmc3NjU3MjEifQ.203_YZH4P2flL6H-FD3tcTbi4G-2ERZfAcwPPVKHDys]]></description><category></category></item><item><title><![CDATA[jvm-高效并发]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/137374372</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/137374372</guid><author>chang765721</author><pubDate>Thu, 04 Apr 2024 15:11:17 +0800</pubDate><description><![CDATA[java高效并发]]></description><category></category></item><item><title><![CDATA[java中的常量池]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/134897464</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/134897464</guid><author>chang765721</author><pubDate>Sat, 09 Dec 2023 17:21:16 +0800</pubDate><description><![CDATA[java源文件被编译成class文件会，每个class文件都会有一个class文件常量池，也叫静态常量池。]]></description><category></category></item><item><title><![CDATA[深入理解java虚拟机-三色标记]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/134484518</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/134484518</guid><author>chang765721</author><pubDate>Sat, 18 Nov 2023 22:53:30 +0800</pubDate><description><![CDATA[本文不是为了介绍三色标记，而是为了说明三色标记的bug，以及CMS垃圾收集器为什么要进行重新标记。]]></description><category></category></item><item><title><![CDATA[你真的了解意向锁吗]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/131462693</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/131462693</guid><author>chang765721</author><pubDate>Thu, 29 Jun 2023 19:16:29 +0800</pubDate><description><![CDATA[搬运工：https://juejin.cn/post/6844903666332368909。]]></description><category></category></item><item><title><![CDATA[【jvm垃圾收集之跨代引用】]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/126548853</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/126548853</guid><author>chang765721</author><pubDate>Mon, 29 Aug 2022 09:23:54 +0800</pubDate><description><![CDATA[目前的垃圾收集器多数都是基于分代收集理论进行的。以Parnew+cms垃圾收集器为例，假设要进行一次新生代的垃圾收集，但新生代的对象是完全有可能被老年代中的对象引用的，为了判断新生代中某个对象是否存活，需要额外遍历整个老年代来确保可达性分析的正确性，反过来也是一样。这种方案固然可行，但同时给垃圾收集带来很大的性能负担。注：不仅新生代、老年代存在跨代引用，G1的rigen之间也存在跨代引用，即所有涉及到部分区域收集的收集器都面临这样的问题。...]]></description><category></category></item><item><title><![CDATA[基于LinkHashMap实现LRU]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/126251385</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/126251385</guid><author>chang765721</author><pubDate>Tue, 09 Aug 2022 17:02:03 +0800</pubDate><description><![CDATA[基于LinkHashMap实现LRU]]></description><category></category></item><item><title><![CDATA[hyperloglog的原理]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/126051977</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/126051977</guid><author>chang765721</author><pubDate>Fri, 29 Jul 2022 11:20:36 +0800</pubDate><description><![CDATA[hyperloglog]]></description><category></category></item><item><title><![CDATA[es的写入过程]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/126039274</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/126039274</guid><author>chang765721</author><pubDate>Thu, 28 Jul 2022 17:06:15 +0800</pubDate><description><![CDATA[es的写入过程]]></description><category></category></item><item><title><![CDATA[记一次spingbean生命周期源码追踪]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/126017196</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/126017196</guid><author>chang765721</author><pubDate>Wed, 27 Jul 2022 16:14:44 +0800</pubDate><description><![CDATA[记一次springbean生命周期源码追踪]]></description><category></category></item><item><title><![CDATA[mysql的innodb RR隔离级别能解决幻读吗]]></title><link>https://blog.youkuaiyun.com/chang765721/article/details/125891721</link><guid>https://blog.youkuaiyun.com/chang765721/article/details/125891721</guid><author>chang765721</author><pubDate>Wed, 20 Jul 2022 15:12:20 +0800</pubDate><description><![CDATA[解决脏读、不可重复读以及幻读问题]]></description><category></category></item></channel></rss>