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