白鸽呀
这个作者很懒,什么都没留下…
展开
-
面试历程(5)
说白了就是堆外内存数据不会拷贝到堆内存当中,直接通过bytebuffer指向堆外内存地址,避免了数据拷贝带来的时间消耗客户端数据发送给服务端,通过socket缓冲区接受数据,在将socket缓冲区拷贝到堆外内存,引用直接指向堆外内存,不进行堆内存拷贝。原创 2023-03-22 20:09:09 · 692 阅读 · 0 评论 -
面试历程(4)
1、string(字符串)c有自己的String实现,但是redis还是自己实现了SDS用来作为底层字符串的存储结构,通过数据长度及底层数组空闲长度解除了字符串长度和底层数组之间的关联,降低了内存分配及数据获取的复杂度,SDS作为redis最终用来存储数据的最底层实现,这些设计给redis带来了可观的性能提升2、list(列表)原创 2023-03-09 22:51:45 · 440 阅读 · 0 评论 -
面试历程(3)
*红黑树是一个二叉平衡树(非严格的)。平衡树在插入和删除的时候,会通过旋转操作将树的左右节点达到平衡。红黑树的特性导致从根节点到叶子节点的最长路径不会超过最短路径的2倍。,这样树的深度变低了,查询效率会高。**在实际场景应用当中,MySQL表数据,一般情况下都是比较庞大、海量的。如果使用红黑树,树的高度会特别高,红黑树虽说查询效率很高。**但是在海量数据的情况下,树的高度并不可控,而且红黑树也需要不断的调整平衡性,也需要消耗性能。**如果我们要查询的数据,正好在树的叶子节点。那查询会非常慢。原创 2023-02-23 23:28:22 · 1010 阅读 · 0 评论 -
SCG调优方案
spring.redis.lettuce.pool.max-active = 大于cpu。具体参数等测试,目的减少gc。原创 2023-02-20 09:23:25 · 507 阅读 · 0 评论 -
面试历程(2)
A对象的创建需要引用到B对象,而B对象的创建也需要A对象,而此时当B对象创建的时候直接从缓存里(一二三级缓存依次获取)引用A对象(虽然不是完全体A对象,毕竟没有赋值处理),当B对象完成创建以后再被A对象引用进去,则A对象也完成了创建。在网络出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这时 TCP 就会重传数据,但是一重传就会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这个情况就会进入恶性循环被不断地放大…会导致每一页当中,键值过少,那必须需要更多的page也进行存储。原创 2023-02-20 09:20:45 · 290 阅读 · 0 评论 -
面试历程(1)
1、首先执行tryAcquire抢锁,tryAcquire的逻辑代码由锁工具自己实现,AQS对应的方法是抛出异常,如果不实现执行AQS的方法抛异常。如果抢锁成功,就直接执行同步区代码,抢锁不成功,转到2。2、执行addWaiter(),会将thread对象包装问一个Node,waitStatus=0,Mode = EXCLUSIVE,然后通过CAS将其插入到锁queue中,如果锁queue为空,会先将queue插入一个空Node,然后在执行插入Node。原创 2023-02-20 09:20:49 · 342 阅读 · 0 评论 -
HashMap底层实现原理概述
HashMap什么时候开辟bucket数组占用内存?答案是在HashMap第一次put的时候,无论Java 8还是Java 7都是这样实现的。为什么hashMap大小必须是2的次幂?那得从她的结构说起,当put,get的时候,内部会通过对key进行hash运算,运算结果是二进制低位有效,然后对 (数组大小-1 )(低位有效)进行& 运算(相乘)实际上得到的结果就会映射到 数组大小之内,因此数组大小定义为2的次幂,能够快速的定位寻址,除此之外,其中的位运算也是为了加快处理速度。好处2。原创 2023-02-14 22:21:25 · 2470 阅读 · 0 评论 -
DeferredResult的使用场景及用法
只不过发起的请求会在服务端挂起,直到请求超时或服务端有数据推送时才会做出响应,响应的时机完全由服务端控制。若想缩短数据延迟周期,则应使S尽量小,而S越小,浏览器向服务端发起请求的频率越高,又造成网络握手次数越多,影响了效率。一种可能的实现是:(短轮询)浏览器频繁(例如定时1秒)向服务端发起请求以获得服务端数据。但定时请求并不能“实时”反应服务端的数据变化情况。2、请求到达服务端被挂起(使用浏览器查看请求状态,此时为pending)4、浏览得到响应,再次重复1,处理此次响应结果。1、浏览器发起异步请求。原创 2023-02-14 20:52:36 · 700 阅读 · 0 评论 -
分布式一致性算法Raft原理图释
分布式一致性算法Raft:指在分布式场景下实现集群数据同步的解决方案掌握了这个算法,就可以较容易地处理绝大部分场景的容错和数据一致性需求1、分布式节点存储:分布式一致性算法解决方案1、中心化存储:但是要保证中心节点的 高可用(本质上还是要一致性算法解决方案)定义不同角色??1、如果想要实现集群数据同步,必然要实现节点数据传送,如果各个节点都是平等地位,那么对于写操作而言,是对于每个节点都生效的,处理起来变得很复杂2、拿到数据,要统一给每一个集群节点发送,可能会存在并发问题,写覆盖导致数据不一致)原创 2023-02-14 20:50:59 · 436 阅读 · 0 评论 -
源码项目中常见设计模式及实现
策略模式责任链模式代理模式建造者模式工厂模式适配器模式模版方法模式观察者模式。原创 2023-02-14 20:50:22 · 456 阅读 · 0 评论