<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SamuelWorking的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SamuelWorking</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SamuelWorking]]></copyright><item><title><![CDATA[2025年3月25日面试总结]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/146543963</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/146543963</guid><author>SamuelWorking</author><pubDate>Thu, 27 Mar 2025 00:26:45 +0800</pubDate><description><![CDATA[在使用联合索引(a, b, c)的情况下，如果你的查询条件只包含a和c（即忽略b），根据最左前缀原则，查询条件中必须包含联合索引的第一个字段（在这个例子中是a）才能利用到该索引。redis也是将数据存储在内存中，但是他也支持将数据持久化保存到磁盘中，可以用于数据恢复或者重启保留数据。redis依靠其高效的设计，依然能提供非常高的读写性能，并且适合跨应用的数据共享。（1）ehcache是存储在Jvm内部运行的，用来存放单个应用的缓存需求；2.使用联合索引，只查询a和c，会走索引吗。]]></description><category></category></item><item><title><![CDATA[2025年3月19日面试总结（二）]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/146408768</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/146408768</guid><author>SamuelWorking</author><pubDate>Fri, 21 Mar 2025 00:17:38 +0800</pubDate><description><![CDATA[延迟双删--》先删除Redis缓存数据再更新Mysql，再次查询的时候在将数据添加到缓存中 , 这种方案可能仍然会有数据 , 这个时候我们可以在删除之后稍微延迟(1-2S)时间 , 再将数据删除 , 再次查询的时候进行缓存 , 这个时候就能保持一致了。删除缓存重新加载--》先删除缓存，在更新Mysql，再次查询时将数据添加到缓存中，仍然可能不一致，多线程环境下，一个线程删除了缓存，还没来得及更新mysql，另一个线程来查询了，会把mysql的老数据查询到缓存中。（1）内存不足时，淘汰最近最少使的数据。]]></description><category></category></item><item><title><![CDATA[2025.03.19面试总结（一）]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/146383211</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/146383211</guid><author>SamuelWorking</author><pubDate>Wed, 19 Mar 2025 23:59:38 +0800</pubDate><description><![CDATA[中软：
1：redis的缓存击穿是怎么回事儿？怎么预防？
缓存击穿就是当某一个热点Key在缓存过期的一瞬间，同时有大量的请求打进来，由于此时缓存过期了，所以请求最终都会走到数据库，造成瞬时数据库请求量大、压力骤增，导致数据库存在被打挂的风险。
        预防手段：
（1）加互斥锁:当大量请求进来之后，只有第一个请求可以获得锁并阻塞其他请求，此时该亲求查询数据并将结果写入到redis里面之后释放锁，后续的请求就都会从redis中获取结果。
（2）给缓存设置永不过期或者通过后台线程去根本更新缓存的过期时间]]></description><category></category></item><item><title><![CDATA[HasMap的知识点]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/146190453</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/146190453</guid><author>SamuelWorking</author><pubDate>Wed, 12 Mar 2025 13:49:40 +0800</pubDate><description><![CDATA[在1.8版本中，则是根据在同一个桶的位置中进行判断(e.hash & oldCap)是否为0，如果为0 则留在当前位置不动 , 如果不为0 则要移动到。2.在JDK1.8中当单个链表的长度超过8的时候，在扩容时会自动转换成红黑树的数据结构；当红黑树的节点小于6个的时候，数据结构会从红黑树变成链表；在1.7 中，扩容之后需要重新去计算其Hash值，根据Hash值对节点位置进行重新分配。大小这个位置上 , 这也是为什么HashMap扩容容量为2的N次幂的一个原因。4.hashmap的扩容机制。]]></description><category></category></item><item><title><![CDATA[ArrayList的扩容机制为什么是1.5倍？]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/146165458</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/146165458</guid><author>SamuelWorking</author><pubDate>Mon, 10 Mar 2025 22:13:04 +0800</pubDate><description><![CDATA[今天看面试题，看到一个问题像记录一下：ArrayList的扩容是按照1.5倍进行扩容的，这是为啥？为啥取1.5倍口扩容呢？ArrayList底层是数组elementData，用于存放插入的数据。初始大小是0，当有数据插入时，默认大小DEFAULT_CAPACITY = 10。]]></description><category></category></item><item><title><![CDATA[RabbitMQ 入门 —— RabbitMQ的五种模式和四种交换机]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/144704006</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/144704006</guid><author>SamuelWorking</author><pubDate>Tue, 24 Dec 2024 22:40:24 +0800</pubDate><description><![CDATA[headers （头部交换机）：根据消息的 headers 转发消息而不是根据 routeKey 来转发消息, 其中 header 是一个 Map，也就意味着不仅可以匹配字符串类型，也可以匹配其他类型数据。topic（主题交换机）：根据一定的规则，根据 routeKey 把消息转发到符合规则的队列中，其中 # 用于匹配符合一个或者多个词（范围更广）， * 用于匹配一个词。direct（直连交换机）：将队列绑定到交换机，消息的 routeKey 需要与队列绑定的 routeKey 相同。]]></description><category></category></item><item><title><![CDATA[03 微服务之间的调用]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/144678013</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/144678013</guid><author>SamuelWorking</author><pubDate>Mon, 23 Dec 2024 21:27:49 +0800</pubDate><description><![CDATA[在微服务架构中需要调用很多服务才能完成一项功能。这时候，如何互相调用就变成微服务架构中的一个关键问题。在这里我介绍三个常用的方法。]]></description><category></category></item><item><title><![CDATA[02 微服务的注册和发现]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/144677811</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/144677811</guid><author>SamuelWorking</author><pubDate>Mon, 23 Dec 2024 21:12:15 +0800</pubDate><description><![CDATA[Eureka是Netflix OSS套件中关于服务注册和发现的解决方案。因为Spring Cloud 在它的微服务解决方案中对Eureka进行了集成，并作为优先推荐方案进行宣传，所以早期有用 Spring Cloud 来建设微服务系统的同学会比较熟悉。目前大量公司的微服务系统中依旧使用Eureka作为注册中心，它的核心设计思想也被后续大量注册中心产品借鉴。但目前Eureka 2.0已经停止维护，所以新的微服务架构设计中，不再建议使用。]]></description><category></category></item><item><title><![CDATA[01-微服务的概念]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/144677659</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/144677659</guid><author>SamuelWorking</author><pubDate>Mon, 23 Dec 2024 20:59:29 +0800</pubDate><description><![CDATA[对于单体架构来讲，我们只需要维护好这一个项目就可以了，但是对于微服务架构来讲，由于项目是由多个微服务构成的，每个模块出现问题都会造成整个项目运行出现异常，想要知道是哪个模块造成的问题往往是不容易的，因为我们无法一步一步通过debug的方式来跟踪，这就对运维人员提出了很高的要求。比如，用户微服务是要被订单微服务和电影微服务所调用的，一旦用户微服务的接口发生大的变动，那么所有依赖它的微服务都要做相应的调整，由于微服务可能非常多，那么调整接口所造成的成本将会明显提高。由于上述的垂直应用架构， 重复代码太多。]]></description><category></category></item><item><title><![CDATA[【JAVA】Graphics2D实现图片的裁剪、旋转、翻转]]></title><link>https://blog.youkuaiyun.com/SamuelWorking/article/details/141710756</link><guid>https://blog.youkuaiyun.com/SamuelWorking/article/details/141710756</guid><author>SamuelWorking</author><pubDate>Fri, 30 Aug 2024 10:13:27 +0800</pubDate><description><![CDATA[指以图片中心点（125,62.5）也就是图片中心，顺时针旋转5度。2、将原图中的点（dataX,dataY）,点（dataX+cropWidth,dataY+cropHeight）形成的矩形， drawImage到区域A中。1、有一块长200宽100的画布，在画布的点(dx1,dy1)，点(dx2,dy2)形成的矩形区域A。]]></description><category></category></item></channel></rss>