<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Very_a的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Very_a</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Very_a]]></copyright><item><title><![CDATA[Git--]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/152667889</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/152667889</guid><author>Very_a</author><pubDate>Tue, 07 Oct 2025 22:08:46 +0800</pubDate><description><![CDATA[undo commit:回滚提交（工作区不会回滚、本地仓库回滚、且分支没有记录）revert commit：回滚提交（工作区回滚、本地仓库回滚、分支有记录）stash changes：保存修改，且会回滚工作区、不会回滚本地仓库cherry pick：复制某个版本并粘贴到此，且会提交本地仓库的状态（全局）compare with branch：把另一分支的代码有选择性的拷过来（局部或全局、且不会提交到本地仓库，只修改工作区）]]></description><category></category></item><item><title><![CDATA[状态码··]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148194781</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148194781</guid><author>Very_a</author><pubDate>Sat, 24 May 2025 19:12:07 +0800</pubDate><description><![CDATA[HTTP状态码是服务器响应请求的三位数字代码，分为五类：1xx（信息性）表示请求接收中，2xx（成功）表示请求完成，3xx（重定向）需要客户端进一步操作，4xx（客户端错误）如404（资源不存在），5xx（服务器错误）如500（内部错误）。常见状态码包括200（成功）、301/302（重定向）、403（无权限）。处理技巧包括：前端根据状态码显示对应提示，后端应合理返回状态码并记录5xx错误日志以便排查。记忆口诀：2xx成功、3xx跳转、4xx客户端问题、5xx服务端故障。]]></description><category></category></item><item><title><![CDATA[ThreadLocal]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148184868</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148184868</guid><author>Very_a</author><pubDate>Sat, 24 May 2025 09:52:40 +0800</pubDate><description><![CDATA[ThreadLocal是多线程中实现线程隔离的资源共享工具，通过为每个线程维护独立的变量副本来解决并发冲突。核心方法包括set()、get()和remove()，其底层通过ThreadLocalMap存储数据，key为弱引用的ThreadLocal实例。使用时需注意内存泄漏风险，建议手动调用remove()释放资源，避免因弱引用导致key被回收而value仍存在的内存问题。主要应用于线程封闭场景（如数据库连接管理）和线程内资源共享。]]></description><category></category></item><item><title><![CDATA[http和https]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148176338</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148176338</guid><author>Very_a</author><pubDate>Fri, 23 May 2025 21:19:05 +0800</pubDate><description><![CDATA[HTTP和HTTPS是互联网数据传输的两种协议，主要区别在于安全性。HTTP是无状态的应用层协议，适用于公开信息传输，如普通资讯网站，但数据以明文传输，易被截获。HTTPS在HTTP基础上增加了SSL/TLS加密层，确保数据传输的机密性和完整性，适用于敏感信息交互，如网上银行和电商支付。HTTPS使用443端口，需要SSL/TLS证书，并在浏览器中显示安全锁图标，而HTTP使用80端口，无需证书。尽管HTTPS因加密解密过程可能增加性能开销，但其安全性优势使其成为保护敏感数据的首选。]]></description><category></category></item><item><title><![CDATA[Cookie、Session、JWT]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148175869</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148175869</guid><author>Very_a</author><pubDate>Fri, 23 May 2025 20:44:20 +0800</pubDate><description><![CDATA[Cookie、Session和JWT是Web开发中用于用户身份验证和会话管理的三种主要技术。Cookie是由服务器发送到客户端并存储在浏览器中的小型文本文件，适用于存储用户偏好和简单会话管理，但安全性较低。Session则是服务器端存储用户会话信息的机制，安全性较高，适合传统Web应用，但存在SessionID泄露的风险。JWT是一种以JSON对象形式在客户端和服务器间安全传输信息的开放标准，适用于分布式系统和前后端分离架构，通过签名机制保证数据安全，但密钥泄露会威胁其安全性。每种技术都有其特定的应用场景和]]></description><category></category></item><item><title><![CDATA[AOF持久化]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148125261</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148125261</guid><author>Very_a</author><pubDate>Wed, 21 May 2025 22:07:45 +0800</pubDate><description><![CDATA[RDB持久化是Redis的一种数据备份机制，通过将内存中的数据快照保存到磁盘中，以便在Redis实例故障重启后恢复数据。RDB文件默认保存在当前运行目录。RDB持久化在四种情况下执行：执行save命令、执行bgsave命令、Redis停机时以及触发RDB条件时。save命令会阻塞主进程，而bgsave命令则通过创建子进程异步执行，不影响主进程处理请求。RDB的触发条件可以在redis.conf文件中配置，如“save 60 10000”表示60秒内至少10000次修改时触发RDB。RDB的缺点包括执行间隔时]]></description><category></category></item><item><title><![CDATA[spring的注入方式都有什么区别]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148124735</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148124735</guid><author>Very_a</author><pubDate>Wed, 21 May 2025 21:35:45 +0800</pubDate><description><![CDATA[文章主要介绍了Spring框架中四种依赖注入方式：构造器注入、Setter注入、字段注入和接口注入。构造器注入通过构造方法完成，适用于强制依赖和不可变对象，具有依赖不可变、强制注入和循环依赖检测的特点。Setter注入通过公共的Setter方法完成，适用于可选依赖和动态修改依赖的场景，具有灵活性和可选依赖的特点。字段注入通过反射直接注入私有字段，代码简洁但依赖关系不明确，适用于简单组件和快速开发。接口注入通过实现特定接口来声明依赖，但侵入性强且已过时。文章建议优先使用构造器注入，使用Setter注入处理可选]]></description><category></category></item><item><title><![CDATA[ThreadLocal]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148075723</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148075723</guid><author>Very_a</author><pubDate>Mon, 19 May 2025 22:08:56 +0800</pubDate><description><![CDATA[ThreadLocal是Java中用于解决多线程环境下变量并发冲突的类，它为每个线程提供独立的变量副本，确保线程安全。常见的应用场景包括JDBC连接管理，通过将每个线程的Connection对象存储在各自的ThreadLocal中，避免线程间的连接冲突。ThreadLocal的核心方法包括set(value)、get()和remove()，分别用于设置、获取和清除线程局部变量。在实现上，ThreadLocal依赖于内部的ThreadLocalMap类，类似于HashMap，存储线程局部变量。需要注意的是，T]]></description><category></category></item><item><title><![CDATA[并行和并发]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148073754</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148073754</guid><author>Very_a</author><pubDate>Mon, 19 May 2025 20:25:43 +0800</pubDate><description><![CDATA[在单核CPU系统中，线程通过任务调度器轮流使用CPU时间片，实现微观串行、宏观并行的并发执行。多核CPU则允许多个线程真正并行运行。并发指同一时间应对多任务，而并行指同一时间执行多任务。例如，家庭主妇独自处理多项家务是并发，雇佣多个保姆分工合作则是并行。现代多核CPU支持并发和并行，如4核CPU可同时执行4个线程，提高效率。]]></description><category></category></item><item><title><![CDATA[volatile]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148049826</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148049826</guid><author>Very_a</author><pubDate>Sun, 18 May 2025 20:55:37 +0800</pubDate><description><![CDATA[第一：保证了不同线程对这个变量进行操作时的可见性，即一个线程修改了某个变量的值，这新值对其他线程来说是立即可见的。volatile 是一个关键字，可以修饰类的成员变量、类的静态成员变量，主要有两个功能。第二： 禁止进行指令重排序，可以保证代码执行有序性。底层实现原理是，添加了一个。，通过插入内存屏障禁止在内存屏障。的指令执行重排序优化。]]></description><category></category></item><item><title><![CDATA[`CAS`]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148048802</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148048802</guid><author>Very_a</author><pubDate>Sun, 18 May 2025 20:53:52 +0800</pubDate><description><![CDATA[CAS（CompareAndSwap）是一种乐观锁机制，用于在无锁情况下保证线程操作共享数据的原子性。它广泛应用于AQS框架和AtomicXXX类中，通过自旋锁提高效率。CAS底层调用操作系统提供的Unsafe类方法，避免了线程阻塞，效率较高。然而，在竞争激烈时，频繁重试会影响效率。CAS基于乐观锁思想，允许其他线程修改共享变量，失败后重试；而synchronized基于悲观锁思想，通过加锁防止其他线程修改共享变量。]]></description><category></category></item><item><title><![CDATA[HashMap的扩容机制]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148048765</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148048765</guid><author>Very_a</author><pubDate>Sun, 18 May 2025 19:39:09 +0800</pubDate><description><![CDATA[在数组初始化或添加元素时，需调用resize方法进行扩容。初始数组长度为16，当元素数量达到当前容量的75%时触发扩容，每次扩容为原容量的2倍。扩容后，会创建新数组并将旧数组数据迁移至新数组。对于无哈希冲突的节点，直接通过e.hash &amp; (newCap-1)计算新索引。若节点为红黑树，则按红黑树规则处理；若为链表，则遍历链表并根据e.hash &amp; oldCap判断元素位置，可能保留原位置或移动至原位置加新增容量的位置。]]></description><category></category></item><item><title><![CDATA[HashMap的实现原理]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148048751</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148048751</guid><author>Very_a</author><pubDate>Sun, 18 May 2025 19:38:20 +0800</pubDate><description><![CDATA[HashMap是一种基于哈希表的数据结构，底层由数组和链表或红黑树组成。当插入元素时，通过key的hashCode计算数组下标。若发生哈希冲突，若key相同则覆盖原值，若不同则将键值对存入链表或红黑树。JDK1.8之前使用拉链法处理冲突，即将冲突值加入链表。JDK1.8后，当链表长度超过8且数组长度达到64时，链表会转换为红黑树以提高搜索效率。在扩容时，若红黑树的节点数小于等于6，则退化为链表。]]></description><category></category></item><item><title><![CDATA[ArrayList和LinkedList的区别是什么？]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148032943</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148032943</guid><author>Very_a</author><pubDate>Sat, 17 May 2025 20:07:39 +0800</pubDate><description><![CDATA[ArrayList按照下标查询的时间复杂度O(1)【内存是连续的，根据寻址公式】， LinkedList不支持下标查询。ArrayList尾部插入和删除，时间复杂度是O(1)；LinkedList头尾节点增删时间复杂度是O(1)，其他都需要遍历链表，时间复杂度是O(n)查找（未知索引）： ArrayList需要遍历，链表也需要遍历，时间复杂度都是O(n)LinkedList 是双向链表需要存储数据，和两个指针，更占用内存。ArrayList底层是数组，内存连续，节省内存。]]></description><category></category></item><item><title><![CDATA[数组集合互转问题]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148029084</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148029084</guid><author>Very_a</author><pubDate>Sat, 17 May 2025 15:26:01 +0800</pubDate><description><![CDATA[Arrays.asList转换list之后，如果修改了数组的内容，list会受影响，因为它的底层使用的Arrays类中的一个内部类ArrayList来构造的集合，在这个集合的构造器中，把我们传入的这个集合进行了包装而已，最终指向的都是同一个内存地址。list用了toArray转数组后，如果修改了list内容，数组不会影响，当调用了toArray以后，在底层是它是进行了数组的拷贝，跟原来的元素就没啥关系了，所以即使list修改了以后，数组也不受影响。List转数组不受影响。数组转List受影响。]]></description><category></category></item><item><title><![CDATA[MYSQL创建索引的原则]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148016850</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148016850</guid><author>Very_a</author><pubDate>Fri, 16 May 2025 20:43:43 +0800</pubDate><description><![CDATA[控制索引数量，因为索引虽然可以提高查询速度，但也会影响插入、更新的速度。选择查询频繁的字段作为索引，如查询条件、排序字段或分组字段。如果字段区分度不高，可以将其放在组合索引的后面。表中的数据量超过10万以上时考虑创建索引。尽量使用复合索引，覆盖SQL的返回值。对于内容较长的字段，考虑使用前缀索引。]]></description><category></category></item><item><title><![CDATA[BASE理论]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/148004355</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/148004355</guid><author>Very_a</author><pubDate>Fri, 16 May 2025 12:52:08 +0800</pubDate><description><![CDATA[BASE 理论通过放宽对一致性的严格要求，来换取分布式系统的高可用性和良好性能，与 CAP 理论中的 AP 模型紧密相关。许多分布式系统如分布式缓存（Redis、Memcached ）、消息队列（RabbitMQ、Kafka ）常遵循该理论。BASE 理论是对 CAP 理论的扩展与补充 ，用于解决分布式系统中一致性、可用性和平衡性问题，适用于需高可用性和可扩展性，且能容忍一定程度数据不一致的分布式系统。]]></description><category></category></item><item><title><![CDATA[AP CP]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/147985765</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/147985765</guid><author>Very_a</author><pubDate>Thu, 15 May 2025 16:13:27 +0800</pubDate><description><![CDATA[在中，和是其支持的两种不同的，用于适应不同的业务场景需求。Nacos 作为微服务架构中的核心组件，主要解决和因此，Nacos 通过来平衡不同场景下的一致性与可用性需求，其底层基于和实现。]]></description><category></category></item><item><title><![CDATA[Spring中的循环引用]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/147964779</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/147964779</guid><author>Very_a</author><pubDate>Wed, 14 May 2025 22:40:53 +0800</pubDate><description><![CDATA[循环依赖发生在两个或两个以上的bean互相持有对方，形成闭环。一级缓存：单例池，缓存已完成初始化的bean对象。二级缓存：缓存尚未完成生命周期的早期bean对象。，用于创建bean对象。]]></description><category></category></item><item><title><![CDATA[Spring的bean的生命周期？]]></title><link>https://blog.youkuaiyun.com/Very_a/article/details/147964771</link><guid>https://blog.youkuaiyun.com/Very_a/article/details/147964771</guid><author>Very_a</author><pubDate>Wed, 14 May 2025 22:40:21 +0800</pubDate><description><![CDATA[进行bean的依赖注入，例如通过setter方法或。的后置处理器，可能在这里产生代理对象。调用构造函数实例化bean。获取bean的定义信息。调用初始化方法，如实现了。最后是销毁bean。]]></description><category></category></item></channel></rss>