<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_73473352的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_73473352</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_73473352]]></copyright><item><title><![CDATA[MySQL架构]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/141127000</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/141127000</guid><author>m0_73473352</author><pubDate>Mon, 12 Aug 2024 11:26:41 +0800</pubDate><description><![CDATA[MySQL属于关系型数据库，而关系型数据库的存储是以表的形式进行的，对于表的创建，数据的存储，检索，更新等都是由MySQL存储引擎完成的。研究过SQL Server和Oracle的读者可能很清楚，这两种数据库的存储引擎只有一个，而MySQL的存储引擎种类比较多，如MyIsam存储引擎，InnoDB存储引擎和Memory存储引擎。●当向某个表写入数据的时候，必须将和这个表相关的所有缓存设置为失效，如果缓存内容很多，则消耗也会很大，可能使系统僵死，因为这个操作是靠全局锁操作来保护的。]]></description><category></category></item><item><title><![CDATA[Collection 类关系图]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/140868488</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/140868488</guid><author>m0_73473352</author><pubDate>Fri, 02 Aug 2024 11:37:55 +0800</pubDate><description><![CDATA[Java容器里只能放对象，对于基本类型(int, long, float, double等)，需要将其包装成对象类型后(Integer, Long, Float, Double等)才能放到容器里。基于红黑树实现，支持有序性操作，例如根据一个范围查找元素的操作。并且失去了元素的插入顺序信息，也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。容器主要包括 Collection 和 Map 两种，Collection 存储着对象的集合，而 Map 存储着键值对(两个对象)的映射表。]]></description><category></category></item><item><title><![CDATA[MySQL 中的几种锁]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/140415142</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/140415142</guid><author>m0_73473352</author><pubDate>Sun, 14 Jul 2024 12:23:17 +0800</pubDate><description><![CDATA[MySQL 中的锁。]]></description><category></category></item><item><title><![CDATA[Redis五种基本数据类型的底层实现]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139611425</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139611425</guid><author>m0_73473352</author><pubDate>Tue, 11 Jun 2024 23:52:14 +0800</pubDate><description><![CDATA[redis五种基本类型可以涵盖项目中大多数的使用场景，而它们的底层实现在面试的过程中也是提问的提问的比较多的，今天就花时间来深入理解一下这五种基本数据类型的底层实现吧！]]></description><category></category></item><item><title><![CDATA[静态代理、jdk动态代理、cglib动态代理傻傻分不清？]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139426897</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139426897</guid><author>m0_73473352</author><pubDate>Mon, 03 Jun 2024 23:28:48 +0800</pubDate><description><![CDATA[那当然是有的，这种方式就是动态代理了，和静态代理不同的是，静态代理的代理类在代码运行前已经被我们手动创建好了，并且已经生成了class文件，而动态代理则是在程序运行时才创建的代理类，也就是说动态代理中的代理类不是我们手动在java代码中定义的，而是在运行的时候“动态”生成的。其实很简单，就和上边那张图一样，开始的时候客户端会来调用代理类的方法，由于在代理类内部持有目标对象的引用，此时代理类会直接调用目标对象的方法来完成这个功能，同时呢，代理类还可以自己添加一些增强逻辑，做一些额外的功能。]]></description><category></category></item><item><title><![CDATA[假如Redis⾥面有1亿个key，其中有10w个key是以某个固定的已知的前缀开头的，如何将它们全部找出来？]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139223345</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139223345</guid><author>m0_73473352</author><pubDate>Sun, 26 May 2024 23:35:35 +0800</pubDate><description><![CDATA[使⽤用 keys 指令可以扫出指定模式的 key 列列表。但是要注意 keys 指令会导致线程阻塞⼀一段时间，线上服务会停 顿，直到指令执⾏行行完毕，服务才能恢复。这个时候可以使⽤用 scan 指令， scan 指令可以⽆无阻塞的提取出指定模式 的 key 列列表，但是会有⼀一定的重复概率，在客户端做⼀一次去重就可以了了，但是整体所花费的时间会⽐比直接⽤用 keys 指令⻓。]]></description><category></category></item><item><title><![CDATA[深入PriorityQueue底层原理与源码解析]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139186780</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139186780</guid><author>m0_73473352</author><pubDate>Fri, 24 May 2024 23:42:39 +0800</pubDate><description><![CDATA[优先级队列：一般使用堆数据结构实现，堆一般使用数组存储集合中的每个元素都有一个权重值，每次出队都弹出优先级最大或最小的元素。]]></description><category></category></item><item><title><![CDATA[什么是回表，如何解决回表问题]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139160296</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139160296</guid><author>m0_73473352</author><pubDate>Thu, 23 May 2024 23:56:22 +0800</pubDate><description><![CDATA[执行这样一条SQL: select name from A where name="s;name字段是有索引，所以MYSQL在通过name进行査询的时候，是需要扫描两颗B+tree树的。下面表中:主键id是聚簇索引，name是辅助索引。]]></description><category></category></item><item><title><![CDATA[环形链表（双指针）]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139132353</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139132353</guid><author>m0_73473352</author><pubDate>Wed, 22 May 2024 23:44:38 +0800</pubDate><description><![CDATA[设置两个快慢指针，循环若能相遇则是环形链表，否则不是。]]></description><category></category></item><item><title><![CDATA[为什么说change Buffer写缓冲区，仅适用于辅助索引页]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139132322</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139132322</guid><author>m0_73473352</author><pubDate>Wed, 22 May 2024 23:40:57 +0800</pubDate><description><![CDATA[应用的场景:对于写多读少的场景，页面在写完以后马上被访问到的概率是比较小的，这时使用change Buffer效果最好什么情况下进行merge?如果索引设置了唯一性，在进行修改时，InnoDB就必须要做唯一性校验，因此必须查询磁盘，做一次10操作。change Bufer作用:在进行DML操作的时候，如果请求的是辅助索引(非唯一索引)并且没有在缓冲池中，并不会立刻将磁盘页加载到缓冲池，而是在CB记录缓冲变。change buffer: 写缓冲区，是针对于二级索引页的更新优化措施。改，不会在CB中操作。]]></description><category></category></item><item><title><![CDATA[LRU缓存机制]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139046188</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139046188</guid><author>m0_73473352</author><pubDate>Sun, 19 May 2024 18:03:54 +0800</pubDate><description><![CDATA[也就是说，在每次插入结点/访问结点的时候，都会将相应结点移动到双向链表的尾部，从而达到按访问顺序进行排序的目的。loadFactor的默认值为0.75f，是官方给出的一个比较好的临界值。LinkedHashMap的底层数据结构和HashMap一样，采用数组+单向链表（JDK1.8之前）的形式，只是在节点Entry中增加了before和after变量，用于维护一个双向链表来保存LinkedHashMap的存储顺序。总结：这就是LRU的底层实现了，get和put方法的时间复杂度都是O(1)，执行效率非常高。]]></description><category></category></item><item><title><![CDATA[Buffer Pool中是如何管理Page页]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139038168</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139038168</guid><author>m0_73473352</author><pubDate>Sun, 19 May 2024 09:59:47 +0800</pubDate><description><![CDATA[3)lru ist :表示正在使用的缓冲区，管理cean page和dity pae，该缓冲区以 midpoint 为基点，前面的链表称为new 列表区，存放经常被访问的数据，占63%，后面。注意:脏页在fush链表和LRU链表中都存在，但是两者互不影响，LRU链表负责管理page的可用性和释放，而fush list负责管理脏页的刷盘操作。2)flush list:表示的是需要刷新到磁盘的缓冲区，管理dirty page，内部page是按照修改时间排序。Page根据状态可以分为3中类型。]]></description><category></category></item><item><title><![CDATA[什么是Buffer Pool，介绍一下Buffer Pool]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139028623</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139028623</guid><author>m0_73473352</author><pubDate>Sat, 18 May 2024 17:19:46 +0800</pubDate><description><![CDATA[Buffer Pool：缓冲池，用来缓存表数据和索引数据的，减少磁盘IO。Buffer Pool有缓冲数据页（Page）和对缓存数据页进行描述的控制块组成。]]></description><category></category></item><item><title><![CDATA[InnoDB存储引擎的内存结构，都有哪几部分组成，各自的作用是什么]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/139028090</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/139028090</guid><author>m0_73473352</author><pubDate>Sat, 18 May 2024 16:53:34 +0800</pubDate><description><![CDATA[从MySQL5.5版本开始，默认使用的就是InnoDB存储引擎，它擅长处理事务，具有自动崩溃恢复的特性，使用非常广泛.。InnoDB存储引擎架构主要由两部分组成，内存结构和磁盘结构。]]></description><category></category></item><item><title><![CDATA[滑动窗口总结]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138978566</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138978566</guid><author>m0_73473352</author><pubDate>Thu, 16 May 2024 23:19:44 +0800</pubDate><description><![CDATA[---核心：左右双指针（L，R）在起始点，R向右逐位滑动循环。---核心：左右双指针（L，R）在起始点，R向右逐渐滑动循环。如果窗内元素满足条件，L向右缩小窗口，并更新最优结果，如果窗内元素满足条件，R向右扩大窗口，并更新最优结果。满足XXX条件（计算结果，出现次数，同时包含）如果窗内元素不满足条件，L向右缩小窗口。如果窗内元素不满足条件，R向右扩大窗口。例如：长度最小的子数组。----每次滑动过程中。----每次滑动过程中。子串/子数组/子序列。-----R达到结尾。使用思路（寻找最短）]]></description><category></category></item><item><title><![CDATA[有序数组的平方]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138924987</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138924987</guid><author>m0_73473352</author><pubDate>Wed, 15 May 2024 21:55:28 +0800</pubDate><description><![CDATA[双指针变种，两头向中间遍历，既然找不到最小值在哪，那就判断最大值，逆序插入。]]></description><category></category></item><item><title><![CDATA[有多少小于当前数字的数字]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138920538</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138920538</guid><author>m0_73473352</author><pubDate>Wed, 15 May 2024 21:54:40 +0800</pubDate><description><![CDATA[用一个哈希表hash（本题可以就用一个数组）来做数值和下标的映射。最后在遍历原数组nums，用hash快速找到每一个数值 对应的 小于这个数值的个数。例如，数组：1 2 3 4 4 4 ，第一个数值4的下标是3，第二个数值4的下标是4了。首先要找小于当前数字的数字，那么从小到大排序之后，该数字之前的数字就都是比它小的了。思想，哈希到数组之后，递推加起前面的所有数字，最后减去本身。最简单的思路来说，就是双重for循环进行遍历，来判断个数，所以可以定义一个新数组，将数组排个序。优化思路，其中一个思路就是。]]></description><category></category></item><item><title><![CDATA[独一无二的出现次数]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138869649</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138869649</guid><author>m0_73473352</author><pubDate>Tue, 14 May 2024 20:49:35 +0800</pubDate><description><![CDATA[题目中要求的是是否有相同的频率出现，那么需要再定义一个哈希表（数组）用来记录频率是否重复出现过，boolean flag [1002];定义布尔类型的就可以了，因为题目中强调1 ]]></description><category></category></item><item><title><![CDATA[找到出现了K次的数]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138868192</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138868192</guid><author>m0_73473352</author><pubDate>Tue, 14 May 2024 20:07:23 +0800</pubDate><description><![CDATA[然后看这个数组的每个位置，假设0位，这个位置如果是7的整数倍，那么数字A一定没在这个位置出现过。就是说给一个数组arr[]  给两个数字3， 7     其中3和7 就是K和M。这个数组中 有一种数出现了3次，其他数字都出现了7次 ，怎么找到出现了3次的数。我们用这个数组每个位置1的和表示多个数字，虽然这样数字就区分不开了，先不管。一个数组中有一种数出现了K次，其他数都出现了M次，M>1 ,K<M。假设其他所有数字出现了7次，只有一种数字(A)出现了2次。每个数字都累加到这个数组中。]]></description><category></category></item><item><title><![CDATA[找数字]]></title><link>https://blog.youkuaiyun.com/m0_73473352/article/details/138868020</link><guid>https://blog.youkuaiyun.com/m0_73473352/article/details/138868020</guid><author>m0_73473352</author><pubDate>Tue, 14 May 2024 20:02:36 +0800</pubDate><description><![CDATA[在定义一个变量result1  让result1 去异或数组全部，但是只是异或第i位是1的，这样就会得到a。但是没完，因为只是知道了result 的值是a和b异或出来的。result ^ result1 等价于 a ^ a ^ b 得到b。因为result1 = a ，result = a^b。我们找到result中最靠右的1，比如是i。假设a的第i位是1  b的第i位是0。一类是 第i位置上 0的   A组。说明这个位置上a和b的值是不同的。a和b一定是在这两个不同的数组中。一类是第i位置上是1 B组。]]></description><category></category></item></channel></rss>