<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Ye_GuoLin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Ye_GuoLin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Ye_GuoLin]]></copyright><item><title><![CDATA[Spring三级缓存是如何作用的]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140589418</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140589418</guid><author>Ye_GuoLin</author><pubDate>Sun, 28 Jul 2024 15:34:21 +0800</pubDate><description><![CDATA[一个或者多个对象之间存在直接或者间接的依赖关系，形成一个环状依赖。存在：自己依赖自己；两者互相依赖（如下图）；多个对象间接依赖。]]></description><category></category></item><item><title><![CDATA[HashMap的key，value都可以为null，ConcurrentHashMap的key，value都不能为null]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140667896</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140667896</guid><author>Ye_GuoLin</author><pubDate>Wed, 24 Jul 2024 19:32:59 +0800</pubDate><description><![CDATA[探讨这个问题，我们先要知道HashMap和ConcurrentHashMap的使用场景，我们都知道。]]></description><category></category></item><item><title><![CDATA[Synchronized原理]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140224403</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/140224403</guid><author>Ye_GuoLin</author><pubDate>Sun, 07 Jul 2024 16:54:41 +0800</pubDate><description><![CDATA[synchronized也叫做同步锁，解决的是多个线程之间对同一资源抢占导致的一致性问题，既同一时刻，被synchronized修饰的方法或者代码块只有一个线程在执行，其他线程必须等待，解决并发安全问题。]]></description><category></category></item><item><title><![CDATA[Git常用操作整理]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/126564172</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/126564172</guid><author>Ye_GuoLin</author><pubDate>Sun, 28 Aug 2022 01:01:41 +0800</pubDate><description><![CDATA[Git常用操作集合：查看分支；创建本地分支；切换分支；回退分支等]]></description><category></category></item><item><title><![CDATA[Seata1.4.2+Nacos搭建使用（Linux）]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/125300041</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/125300041</guid><author>Ye_GuoLin</author><pubDate>Wed, 15 Jun 2022 17:06:09 +0800</pubDate><description><![CDATA[nacos-config.sh脚本中会去找config.txt的位置，如果你的config.conf的位置和nacos-config.sh中的位置不一致，要么改nacos-config.sh文件，要么更换config.conf的位置。这里省略上传Linux，解压等过程，本人seata安装目录为 /usr/local/seata/seata-server-1.4.2。该文件是配置 注册中心和配置中心的，本人用的都是Nacos。该文件是事务日志的相关配置，本人是记录在数据库的。]]></description><category></category></item><item><title><![CDATA[Git常见操作_02：将远程分支拉取到本地]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/122411637</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/122411637</guid><author>Ye_GuoLin</author><pubDate>Mon, 10 Jan 2022 15:24:44 +0800</pubDate><description><![CDATA[Git将远程分支取到本地]]></description><category></category></item><item><title><![CDATA[Git常见操作_01：新建本地分支，并推送到远程仓库]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/122410808</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/122410808</guid><author>Ye_GuoLin</author><pubDate>Mon, 10 Jan 2022 15:15:01 +0800</pubDate><description><![CDATA[Git新建本地分支，并推送远程仓库各种情况分析]]></description><category></category></item><item><title><![CDATA[MindManager2021合理使用]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/120148983</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/120148983</guid><author>Ye_GuoLin</author><pubDate>Tue, 07 Sep 2021 08:16:38 +0800</pubDate><description><![CDATA[ManageMind21版合理使用，实测可用，没有垃圾广告]]></description><category></category></item><item><title><![CDATA[Linux安装MySQL5.7]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118274564</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118274564</guid><author>Ye_GuoLin</author><pubDate>Sun, 27 Jun 2021 15:46:13 +0800</pubDate><description><![CDATA[本次安装的是mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz！简洁教程，防忘笔记！！！]]></description><category></category></item><item><title><![CDATA[Linux安装maven-3.6.3]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118273699</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118273699</guid><author>Ye_GuoLin</author><pubDate>Sun, 27 Jun 2021 14:07:47 +0800</pubDate><description><![CDATA[本次安装的是apache-maven-3.6.3-bin.tar.gz！简洁教程，防忘笔记！！！]]></description><category></category></item><item><title><![CDATA[Linux安装Redis5.0.10]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118271109</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118271109</guid><author>Ye_GuoLin</author><pubDate>Sun, 27 Jun 2021 12:48:56 +0800</pubDate><description><![CDATA[本次安装的是redis-5.0.10.tar.gz！简洁教程，防忘笔记！！！]]></description><category></category></item><item><title><![CDATA[Linux安装部署JDK8]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118270243</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/118270243</guid><author>Ye_GuoLin</author><pubDate>Sun, 27 Jun 2021 11:57:51 +0800</pubDate><description><![CDATA[本次安装的是jdk-8u161-linux-x64.tar.gz！简洁教程，防忘笔记！！！
1、下载jdk8
（1）、官网下载：http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
（2）、本人百度网盘：链接：https://pan.baidu.com/s/1Wp1Q1ZVcjPUcJDME5qlJCQ        提取码：795k
2、开始部署
（1）、解压jdk包，并将解压后的包移至想要存]]></description><category></category></item><item><title><![CDATA[Redis主从搭建（哨兵模式），springboot整合redis主从]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/116153197</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/116153197</guid><author>Ye_GuoLin</author><pubDate>Mon, 26 Apr 2021 16:56:00 +0800</pubDate><description><![CDATA[通过一系列验证，你或许会发现Redis哨兵重新选举主节点后会将这个被选中的节点的redis.conf修改掉，具体的为删掉replicaof 配置项，而原来的主节点则添加replicaof 配置项，并指向新的主节点。虽然redis主从已经搭建完毕，但是当主节点宕机时，从节点并不会接手主节点的工作，只会傻傻得在那里不停地尝试连接主节点。然而这并不是我们想要的，我们希望主节点挂了后，从节点可以顶上去，让服务继续使用。还可以通过sentinel.log日志文件的日志信息查看哨兵的相关配置情况！]]></description><category></category></item><item><title><![CDATA[Redis持久化过程中，有新写入操作会怎样？----Redis写时复制（copy-on-write）策略]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115951006</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115951006</guid><author>Ye_GuoLin</author><pubDate>Wed, 21 Apr 2021 14:42:01 +0800</pubDate><description><![CDATA[RDB持久化：bgsave触发，Redis调用fork()函数，创建一个子进程（子进程与父进程共内存），子进程执行持久化操作，将内存中的缓存持久化到一个rdb临时文件，待到持久化完成，临时文件替换旧的dump.rdb文件。自此一次RDB持久化操作就完成了。
AOF持久化：AOF 持久化时，会将新写入的命令放入aof_buff中，然后检测时间（这个时间就是redis.conf中配置的aof执行频率），再决定是否持久化。当发生aof日志重写时，Redis同样会调用fork()函数，创建一个子进程，对当前内存中.]]></description><category></category></item><item><title><![CDATA[Redis缓存过期机制，内存淘汰机制]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115907642</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115907642</guid><author>Ye_GuoLin</author><pubDate>Wed, 21 Apr 2021 10:33:27 +0800</pubDate><description><![CDATA[在Redis中有设置过期时间的键值对是如何实现过期删除的呢？
在使用redis的时候有没有想过Redis内存不够用的临界点是什么呢？
Redis内存不够用时会发生什么呢？
Redis缓存过期机制
Redis中缓存过期机制包括惰性删除和定期删除：Redis使用的策略是惰性删除+定时删除并用。


惰性删除
很好理解，所谓的惰性删除其实就是Redis不主动删除过期的键值对，而是在客户端访问的时候去检查该键值对是否过期，若过期，Redis则会删除该键值对并返回null给客户端。
惰性删除的情况下，Redis在清除]]></description><category></category></item><item><title><![CDATA[Redis的数据类型及使用场景]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115670181</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115670181</guid><author>Ye_GuoLin</author><pubDate>Mon, 19 Apr 2021 17:40:53 +0800</pubDate><description><![CDATA[redis

]]></description><category></category></item><item><title><![CDATA[MVCC原理及Mysql隔离级别]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115860981</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115860981</guid><author>Ye_GuoLin</author><pubDate>Mon, 19 Apr 2021 11:28:13 +0800</pubDate><description><![CDATA[MVCC（Multi-Version Concurrency Control），即多版本并发控制。这里的多版本是指一条数据可能会有多个版本。MVCC的主要目的是为了提高数据库并发性能，用更好的方式去处理读写冲突，即做到读写冲突时，也可以不加锁。MVCC的多版本并发控制是通过undo log和Read View来实现的。]]></description><category></category></item><item><title><![CDATA[springboot项目中redis客户端（Jedis、Lettuce、Redisson）]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115208061</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/115208061</guid><author>Ye_GuoLin</author><pubDate>Thu, 25 Mar 2021 16:33:14 +0800</pubDate><description><![CDATA[一、redis客户端的对比
1）、Jedis
Jedis作为Redis官方推荐的一款客户端，也算是简单好用，基础功能齐全，在中小型项目中还是很好用的，但是Jedis是直连模式，在多个线程间共享一个Jedis实例时是线程不安全的。
– 为啥不安全呢？不是说Redis是单线程，是世界上最安全的吗？
看官不要激动，这里说的不安全不是说Redis处理数据不安全，而是Jedis向Redis服务器提交数据和从Redis上拿数据不安全，简单阅读Jedis的源码就不难发现，在单个Jedis实例中，向Redis推数据的写流（]]></description><category></category></item><item><title><![CDATA[spring源码构建-IDEA2020.1构建Spring5.2.x源码]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/114246815</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/114246815</guid><author>Ye_GuoLin</author><pubDate>Mon, 01 Mar 2021 08:26:09 +0800</pubDate><description><![CDATA[spring源码的版本可能会与gradle有不兼容的情况，为了一次成功，不浪费时间在这个小事情上，咋们下spring源码中推荐的版本。
1、下载spring源码
github下载地址：https://github.com/spring-projects/spring-framework
gitee下载地址：https://gitee.com/mirrors/Spring-Framework
我用的是gitee下载，因为github下载得太慢了！
2、查看spring源码推荐版本
其实就算我们不配置gradl]]></description><category></category></item><item><title><![CDATA[Redis双写一致性问题]]></title><link>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/113881238</link><guid>https://blog.youkuaiyun.com/Ye_GuoLin/article/details/113881238</guid><author>Ye_GuoLin</author><pubDate>Sat, 20 Feb 2021 14:26:46 +0800</pubDate><description><![CDATA[1、缓存的最终一致性
从理论上来说，给缓存设置过期时间，是保证最终一致性的解决方案。这种方案下，我们可以对存入缓存的数据设置过期时间，所有的写操作以数据库为准，对缓存操作只是尽最大努力即可。也就是说如果数据库写成功，缓存更新失败，那么只要到达过期时间，则后面的读请求自然会从数据库中读取新值然后回填缓存。因此，接下来讨论的思路不依赖于给缓存设置过期时间这个方案。
2、数据更新策略
（1）先更新数据库，再更新缓存（不可行）

存在问题：1）当写操作是否频繁的情况下（多于读操作），可能用户根本就没有去读缓存数据就]]></description><category></category></item></channel></rss>