<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_56066876的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_56066876</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_56066876]]></copyright><item><title><![CDATA[Redis探寻之路 - 服务器策略]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133149011</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133149011</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 21:16:44 +0800</pubDate><description><![CDATA[的 key（这个是最常用的）。当一个sentinel接收到一条信息后，会根据SentinelID检查，如果不是自己的Sentinel发送的，将根据信息的参数对主服务器的实例结构做更新。相反地，如果源节点没能在自己的数据库里面找到指定的键，那么这个键有可能已经被迁移到了目标节点，源节点将向客户端返回一个ASK错误，指引客户端转向正在导人槽的目标节点,并再次发送之前想要执行的命令。主服务器每次向从服务器传播N个字节的数据时，主服务器的复制偏移量加上N,从服务器接收到数据时，从服务器的复制偏移量也加上N。]]></description><category></category></item><item><title><![CDATA[Redis成长之路 - 数据结构]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133148898</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133148898</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 21:13:42 +0800</pubDate><description><![CDATA[SDS以空字符结尾，保存空字符的1字节空间不计算在SDS的len属性中，以空字符结尾好处是可以之IE重用一部分C字符串函数库里的函数链表提供了高效的节点重排能力，以及顺序性的节点访问方式，并且可以通过增删节点来灵活地调整链表的长度。Redis构建了自己的链表实现，当一个列表键包含了数量比较多的元素，或者列表中包含的元素都是比较长的字符串时，Redis就会使用链表作为列表键的底层实现。每个链表节点都是由listNode结构来实现的。]]></description><category></category></item><item><title><![CDATA[并发编程探寻之路 - 共享模型值之内存无锁工具]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133148760</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133148760</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 21:09:12 +0800</pubDate><description><![CDATA[全称是 AbstractQueuedSynchronizer，是阻塞式锁和相关的同步器工具的框架用 state 属性来表示资源的状态（分独占模式和共享模式），子类需要定义如何维护这个状态，控制如何获取 锁和释放锁getState - 获取 state 状态setState - 设置 state 状态compareAndSetState - cas 机制设置 state 状态独占模式是只有一个线程能够访问资源，而共享模式可以允许多个线程访问资源。]]></description><category></category></item><item><title><![CDATA[并发编程探寻之路 - 进程线程管程]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133148574</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133148574</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 21:07:03 +0800</pubDate><description><![CDATA[本次课使用阻塞式的解决方案：synchronized，来解决上述问题，即俗称的【对象锁】，它采用互斥的方式让同一 时刻至多只有一个线程能持有【对象锁】，其它线程再想获取这个【对象锁】时就会阻塞住。比如在项目中，视频文件需要转换格式等操作比较费时，这时开一个新线程处理视频转换，避免阻塞主线程 tomcat 的异步 servlet 也是类似的目的，让用户线程处理耗时较长的操作，避免阻塞 tomcat 的工作线程 ui 程序中，开线程进行其他操作，避免阻塞 ui 线程。方法是Java中的一个线程阻塞工具。]]></description><category></category></item><item><title><![CDATA[java虚拟机成神之路 - 虚拟机字节码执行引擎]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133148306</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133148306</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 20:54:50 +0800</pubDate><description><![CDATA[如果执⾏的是实例⽅法(没有被static修饰的⽅法)，那局 部变量表中第0位索引的变量槽默认是⽤于传递⽅法所属对象实例的引⽤，在⽅法中可以 通过关键字“this”来访问到这个隐含的参数。“虚拟机”是一个相对于“物理机”的概念，这两种机 器都有代码执行能力，其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层 面上的，而虚拟机的执行引擎则是由软件自行实现的，因此可以不受物理条件制约地定制指令集与执 行引擎的结构体系，能够执行那些不被硬件直接支持的指令集格式。]]></description><category></category></item><item><title><![CDATA[java虚拟机成神之路 - 虚拟机类加载机制]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133148198</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133148198</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 20:53:33 +0800</pubDate><description><![CDATA[Java虚拟机把描述类的Class文件加载到内存，并对数据进行校验、转换解析和初始化，形成可以被虚拟机直接使用的Java类型，这个过程是虚拟机的类加载机制一个类型被加载到虚拟机的过程：加载、验证、准备、解析、初始化、使用和卸载。解析阶段是可以变化的。]]></description><category></category></item><item><title><![CDATA[java虚拟机成神之路 - 垃圾收集器与内存分配策略：]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133136207</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133136207</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 15:55:46 +0800</pubDate><description><![CDATA[如何确定对象是否死亡：第一个为引用计数算法，对象被引用一次时计数就+1，引用失效时计数就减一，计数值为0时该对象已经死亡不能被使用。但是当两个不可能再被引用的对象互相引用时，就发生问题。现在主流的虚拟机几乎不适用引用计数算法来管理内存。第二个为可达性分析算法：从根节点GC Roots进行向下搜索，与之关联的都是存活对象，没搜索到的都是不可能再被使用的对象。GCRoots不可达的会被判定为可回收对象，当第二次。]]></description><category></category></item><item><title><![CDATA[java虚拟机成神之路 - JVM内存区域与内存溢出异常]]></title><link>https://blog.youkuaiyun.com/m0_56066876/article/details/133136038</link><guid>https://blog.youkuaiyun.com/m0_56066876/article/details/133136038</guid><author>m0_56066876</author><pubDate>Thu, 21 Sep 2023 15:50:18 +0800</pubDate><description><![CDATA[类检查通过后加载对象的内存，假设内存是按区域划分的，空闲内存在指针的一边，使用过的内存在指针的另一边，挪动指针来分配内存大小，称为指针碰撞的方式。这个算法的基本思路就是通过 一系列称为“GC Roots”的根对象作为起始节点集，从这些节点开始，根据引用关系向下搜索，搜索过 程所走过的路径称为“引用链”（Reference Chain），如果某个对象到GC Roots间没有任何引用链相连， 或者用图论的话来说就是从GC Roots到这个对象不可达时，则证明此对象是不可能再被使用的。**方法区**：线程共享。]]></description><category></category></item></channel></rss>