- 博客(25)
- 收藏
- 关注
原创 CompletableFuture
类架构说明接口CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段。一个阶段的执行可能是被单个阶段的完成触发,也可能是由多个阶段一起触发类CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合CompletableFuture的方法。
2024-08-30 15:57:45
483
原创 三.缓存双写一致性策略
如果业务层要求必须读取一致性的数据,那么我们就需要在更新数据库时,先在Redis缓存客户端暂停并发读请求,等数据库更新完、缓存值删除后,再读取数据,从而保证数据一致性,这是理论可以达到的效果,但实际,不推荐,因为真实生产环境中,分布式下很难做到实时一致性,一般都是最终一致性,请大家参考。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存,达到一致性,切记,要以mysql的数据库写入库为准。//4 查询mysql拿数据(mysql默认有数据)
2024-08-26 23:00:59
645
原创 Sentinel
Sentinel的特征丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。
2024-08-22 22:08:54
710
原创 字数组最大累加和问题
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,- 窃取下标 0 和 2 处的房屋,窃取能力为 max(nums[0], nums[2]) = 5。- 窃取下标 0 和 3 处的房屋,窃取能力为 max(nums[0], nums[3]) = 9。- 窃取下标 1 和 3 处的房屋,窃取能力为 max(nums[1], nums[3]) = 9。解释:子数组 [1, 2], [2, 6], [7, 5] 对应的起始下标为 [0, 3, 5]。
2024-07-26 10:08:57
474
原创 JVM垃圾回收
垃圾回收器的组合关系虽然很多,但是针对几个特定的版本,比较好的组合选择如下:JDK8及之前:ParNew + CMS(关注暂停时间)、Parallel Scavenge + Parallel Old (关注吞吐量)、 G1(JDK8之前不建议,较大堆并且关注暂停时间)JDK9之后:G1(默认)从JDK9之后,由于G1日趋成熟,JDK默认的垃圾回收器已经修改为G1,所以强烈建议在生产环境上使用G1。G1的实现原理将在《原理篇》中介绍,更多前沿技术ZGC、GraalVM将在《高级篇》中介绍。
2024-07-01 20:23:47
774
原创 JVM基础 类加载器(重点:双亲委派机制,JVM组成)
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术,类加载器只参与加载过程中的字节码获取并加载到内存这一部分。类加载器会通过二进制流的方式获取到字节码文件的内容,接下来将获取到的数据交给Java虚拟机,虚拟机会在方法区和堆上生成对应的对象保存字节码信息。一个Tomcat程序中是可以运行多个Web应用的,如果这两个应用中出现了相同限定名的类,比如Servlet类,Tomcat要保证这两个类都能加载并且它们应该是不同的类。
2024-06-30 01:30:20
432
原创 自己总结的Spring源码解析(1)后续还会更新
/ System.out.println("是否加了 @Component 派生:" + annotationMetadata.hasMetaAnnotation(Component.class.getName()));// System.out.println("是否加了 @Component:" + annotationMetadata.hasAnnotation(Component.class.getName()));// ${} 的解析器。// 执行依赖注入 @Autowired @Value。
2024-06-25 01:24:35
383
原创 redis为什么这么快?redis是单线程还这么快?redis多线程
I/O 的读和写本身是堵塞的,比如当 socket 中有数据时,Redis 会通过调用先将数据从内核态空间拷贝到用户态空间,再交给 Redis 调用,而这个拷贝的过程就是阻塞的,当数据量越大时拷贝所需要的时间就越多,而这些操作都是基于单线程完成的。
2024-05-28 23:23:23
598
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人