<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ChenShan3的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ChenShan3</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ChenShan3]]></copyright><item><title><![CDATA[MySQL的索引下推是什么]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147123964</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147123964</guid><author>ChenShan3</author><pubDate>Thu, 10 Apr 2025 17:38:57 +0800</pubDate><description><![CDATA[而索引下推会让存储引擎层得到符合zipcode=1的数据之后，直接过滤lastname = '%a'的情况，然后再返回server层。如果没有索引下推，那么存储引擎索引只可以应用到到zipcode，不可以应用到firstname和lastname。，where查询中的部分条件可以下推给存储引擎去过滤，而不需要交给sever层，从而减少回表查询的一种机制。索引下推是指自从MySQL5.6以后，]]></description><category></category></item><item><title><![CDATA[MySQL的覆盖索引是什么]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147097697</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147097697</guid><author>ChenShan3</author><pubDate>Wed, 09 Apr 2025 16:57:53 +0800</pubDate><description><![CDATA[覆盖索引是查询时包括了所有查询字段的二级索引，仅通过二级索引，而不需要回表查询的一种优化方式。]]></description><category></category></item><item><title><![CDATA[MySQL 中的聚簇索引和非聚簇索引有什么区别？]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147096823</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147096823</guid><author>ChenShan3</author><pubDate>Wed, 09 Apr 2025 16:29:48 +0800</pubDate><description><![CDATA[DB_ROW_ID。]]></description><category></category></item><item><title><![CDATA[MySQL中使用索引一定有效吗？如何排查索引效果？]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147095595</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147095595</guid><author>ChenShan3</author><pubDate>Wed, 09 Apr 2025 15:50:41 +0800</pubDate><description><![CDATA[一、不一定一定有效，以下是索引失效的几种情况。二、使用explain。]]></description><category></category></item><item><title><![CDATA[快速排序笔记]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147038471</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147038471</guid><author>ChenShan3</author><pubDate>Mon, 07 Apr 2025 10:36:58 +0800</pubDate><description><![CDATA[特性快速排序时间复杂度（平均）时间复杂度（最坏）(O(n^2))（可优化）空间复杂度(O(\log n))（递归栈）稳定性不稳定优化方式随机化基准、三数取中、小数组插入排序、双轴快排适用场景通用内部排序，实际应用中最快适用于大规模数据排序，在大多数情况下比归并排序和堆排序更快。不适合稳定性要求高的场景（如数据库索引排序）。优化后的快速排序（如随机化 + 三数取中 + 小数组优化）在工程实践中几乎不会出现最坏情况，是最高效的排序算法之一。]]></description><category></category></item><item><title><![CDATA[什么是跨域]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/147036060</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/147036060</guid><author>ChenShan3</author><pubDate>Mon, 07 Apr 2025 09:36:34 +0800</pubDate><description><![CDATA[即使 XSS 攻击成功，恶意脚本也只能访问当前源的数据，无法直接读取其他标签页或 iframe 中不同源的内容（除非目标网站配置了错误的 CORS）。虽然同源策略不能完全阻止 CSRF（因为表单提交可以跨域），但配合服务端的 CSRF Token 和浏览器限制跨域 AJAX 请求，能大幅降低风险。恶意网站利用用户已登录的 Cookie 发起伪造请求（如通过隐藏表单提交）。的 Cookie 附加到请求中，恶意网站就能以用户身份完成转账操作。员工的浏览器会直接访问内网系统并返回数据，导致公司内部信息泄露。]]></description><category></category></item><item><title><![CDATA[Java 可变参数（Varargs）使用指南]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146982607</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146982607</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 15:42:36 +0800</pubDate><description><![CDATA[情况 1：可变参数本身为。情况 2：可变参数数组为。]]></description><category></category></item><item><title><![CDATA[选择排序笔记]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146980488</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146980488</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 14:31:57 +0800</pubDate><description><![CDATA[基础版就是每次在未排序的数中选一个最小的放到左边已排序的末尾，而优化版的快速排序就是每次不仅把最小的放到左边，也把最大的放到右边，减少遍历次数，这里的实现要结合双指针。原始数组 [5₁, 2, 5₂, 1]（5₁ 和 5₂ 是值相同的两个元素）。第一轮选择最小元素 1，与 5₁ 交换 → [1, 2, 5₂, 5₁]。每次从未排序部分选择最小（或最大）元素，放到已排序部分的末尾。交换操作可能跨越多个位置，破坏相等元素的原始顺序。此时 5₂ 跑到了 5₁ 前面，相对顺序改变。最好/最坏/平均情况均为。]]></description><category></category></item><item><title><![CDATA[冒泡排序笔记]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146979327</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146979327</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 13:46:58 +0800</pubDate><description><![CDATA[判断的依据就是，当某一轮的尝试“冒泡”的过程中，如果发现数据并没有进行交换，那么这时候就直接结束排序过程。通过相邻元素的比较和交换，使较大的元素逐渐“浮”到数组的末尾。所谓优化，就是数据已经排好序的情况下提前终止冒泡排序。（像气泡从水底冒到水面一样）（即使有序，仍然会完整遍历）（即使有序，仍然会完整遍历）最坏情况（完全逆序）最坏情况（完全逆序）]]></description><category></category></item><item><title><![CDATA[MySQL的索引类型有哪些]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146975234</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146975234</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 10:38:39 +0800</pubDate><description><![CDATA[l. 空间索引（用于空间数据查询，主要用于MyISAM 和 InnoDB 存储引擎中地理信息数据）c. 倒排索引 （全文索引，Full-Text，适用于大文本字段）d. R+树索引（适用于存储和查询地理信息系统中的空间数据）e. 聚簇索引（主键索引，叶子节点存储完整数据）b. 哈希索引（常用于 Memory）j. 唯一索引（保证索引中值是唯一的）f. 非聚簇索引（非主键索引的索引）g. 普通索引(二级索引、辅助索引)h. 主键索引（每行数据唯一的主键）i. 联合索引（多个列构成的索引）]]></description><category></category></item><item><title><![CDATA[MySQL的存储引擎有哪些，它们之间有什么区别？]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146973755</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146973755</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 10:08:09 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[MySQL 的Change Buffer 是什么？它有什么作用？]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146972322</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146972322</guid><author>ChenShan3</author><pubDate>Thu, 03 Apr 2025 09:40:58 +0800</pubDate><description><![CDATA[聚簇索引（主键索引）存储了完整行数据，其他索引（如二级索引）通常指向主键。如果主键未及时更新，可能导致二级索引引用失效。（如并发插入相同值，内存中未合并的 Change Buffer 无法拦截冲突）。（如隔离性、一致性）。]]></description><category></category></item><item><title><![CDATA[常见前端GET请求以及对应的Spring后端接收接口写法]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146948638</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146948638</guid><author>ChenShan3</author><pubDate>Wed, 02 Apr 2025 15:43:45 +0800</pubDate><description><![CDATA[Spring MVC 默认要求显式声明非对象参数的来源。• 浏览器原生 API，适合非 Axios 场景。• 手动拼接 URL，适合参数少且固定的场景。实体类中存在但前端未传递的字段（如实体类有。• 代码更简洁，自动处理 URL 编码。字段，但 JSON 中无此字段）。• 适合动态字段（参数名不固定）。• 参数较少时使用，灵活性较差。• 需自行处理参数编码（如。• 自动处理特殊字符编码。• URL 参数名必须与。时，Spring 会。• 需手动处理类型转换。• 需手动构建实体类。• 参数可动态扩展。]]></description><category></category></item><item><title><![CDATA[SpringBlade 数据库字段的自动填充]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146947240</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146947240</guid><author>ChenShan3</author><pubDate>Wed, 02 Apr 2025 15:01:48 +0800</pubDate><description><![CDATA[如果这些字段需要自动记录操作人信息，无需任何修改，框架会持续自动维护这些字段。方式三：关闭全局自动填充（不推荐）方式二：覆盖框架的自动填充逻辑。方式一：从实体类中移除字段。]]></description><category></category></item><item><title><![CDATA[原型模式学习]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146886244</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146886244</guid><author>ChenShan3</author><pubDate>Mon, 31 Mar 2025 21:46:12 +0800</pubDate><description><![CDATA[用一个已经创建的实例作为原型，通过复制该原型对象来创建一个和原型对象相同的新对象。]]></description><category></category></item><item><title><![CDATA[383. 赎金信]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146885722</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146885722</guid><author>ChenShan3</author><pubDate>Mon, 31 Mar 2025 21:28:34 +0800</pubDate><description><![CDATA[这道题应该有很多解法，这里主要是为了记录一下，类似这种题，来记录字符串字母个数的，我们可以利用一个新建的char数组或者利用哈希来进行记忆，具体利用什么看情况。时间复杂度：O(m+n)，其中 m 是字符串 ransomNote 的长度，n 是字符串 magazine 的长度，我们只需要遍历两个字符一次即可。空间复杂度：O(∣S∣)，S 是字符集，这道题中 S 为全部小写英语字母，因此 ∣S∣=26。以下的解法思路有点臃肿，这里也懒得优化了，主要表明可以用哈希表记忆。]]></description><category></category></item><item><title><![CDATA[Java 中集合转数组的方法]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146773819</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146773819</guid><author>ChenShan3</author><pubDate>Sun, 30 Mar 2025 20:19:33 +0800</pubDate><description><![CDATA[• 转换后的数组是独立的副本，修改不会影响原集合（除非使用。• 如果传入的数组大小不足，会自动创建新数组。• 返回的是 Object[] 数组。• 适用于 Java 8 及以上版本。• 无法直接转换为特定类型的数组。• Java 11+ 推荐使用。）转换为基本类型数组需要额外处理。• 适用于需要特殊处理的场景。只需要 Object[] 时。• 可以指定返回的数组类型。Java 11+ 通用方案。Java 8+ 简洁代码。• 基本类型集合（如。]]></description><category></category></item><item><title><![CDATA[Java 中数组转集合的方法]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146772047</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146772047</guid><author>ChenShan3</author><pubDate>Sun, 30 Mar 2025 19:33:19 +0800</pubDate><description><![CDATA[记住，数组和集合之间的转换可能会影响性能，特别是在处理大量数据时。• 对于基本类型数组：使用 Stream API 的。：返回的 List 是不可变的。基本类型数组需要特殊处理，因为。• 如果不需要修改集合：使用。这种方法创建的 List 是。• 如果需要可变集合：使用。• 返回的 List 是。的，不能添加或删除元素。Java 9 引入了。]]></description><category></category></item><item><title><![CDATA[208. 移动零]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146698489</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146698489</guid><author>ChenShan3</author><pubDate>Sat, 29 Mar 2025 17:04:42 +0800</pubDate><description><![CDATA[给定一个数组nums，编写一个函数将所有0移动到数组的末尾，同时保持非零元素的相对顺序。请注意 ，必须在不复制数组的情况下原地对数组进行操作。进阶：你能尽量减少完成的操作次数吗？]]></description><category></category></item><item><title><![CDATA[128. 最长连续序列]]></title><link>https://blog.youkuaiyun.com/ChenShan3/article/details/146692688</link><guid>https://blog.youkuaiyun.com/ChenShan3/article/details/146692688</guid><author>ChenShan3</author><pubDate>Sat, 29 Mar 2025 16:27:50 +0800</pubDate><description><![CDATA[给定一个未排序的整数数组nums，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。请你设计并实现时间复杂度为O(n)的算法解决此问题。]]></description><category></category></item></channel></rss>