- 博客(50)
- 收藏
- 关注
原创 跟着deepseek浅学分布式事务(1) - 概述
本文简要介绍分布式事务的核心概念与解决方案。主要内容包括:分布式事务的定义及典型场景(如电商下单),核心挑战(CAP原理、网络问题、性能权衡),以及主流解决方案(2PC/3PC、TCC、SAGA、本地消息表、Seata框架)。文章还探讨了实际场景中的选型建议和常见问题,如超时处理、幂等性设计等。声明资料来源于DeepSeek,仅供学习参考。
2025-05-30 10:28:00
228
原创 CallerRunsPolicy 线程池拒绝策略适用场景分析
CallerRunsPolicy是Java线程池的一种拒绝策略,适用于对任务完成可靠性要求高、可以接受性能下降、任务执行时间可控、需要平滑降级以及批处理系统等场景。它通过让提交任务的调用者线程直接执行任务,确保任务不丢失,但可能影响整体性能和调用者线程的响应。不适用于高吞吐量、低延迟、调用者线程不能被阻塞或任务执行时间不可预测的场景。实现上,该策略在rejectedExecution方法中直接调用任务的run方法,提供了一种自然的反馈机制,减缓新任务提交速度。
2025-05-20 14:55:58
263
原创 近几年字节测开部分面试题整理
面经收集于牛客网上,部分面试题时间可能有些久了,此处只是做个学习整理。大多数题目的回答来自于deepseek。面试算法leetcode是王道,多练习总归会是有用的吧。。。
2025-04-22 10:31:26
706
原创 Java面试43-常见的限流算法有哪些?
限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方面考虑限流维度和场景的需求。,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。
2025-04-08 17:16:57
299
1
原创 Java面试42-什么是幂等?如何解决幂等性问题?
1. 用户的重复提交或者用户的恶意攻击,导致这个请求被多次重复执行;2. 在分布式架构中,为了避免网络通信导致的数据丢失,在服务之间进行通信的时候都会设计超时重试的机制,而这种机制有可能导致服务端接口被重复调用。所以在程序设计中,对于数据变更类操作的接口,需要保证接口的幂等性。之所以要考虑到幂等性问题,是因为在网络通信中,存在两种行为可能会导致。所谓幂等,其实它是一个数学书的概念,在计算机编程领域中,幂等性的核心思想,其实就是。使用状态机来实现幂等。
2025-04-08 15:28:28
340
原创 Java面试41-IO和NIO有什么区别?
I/O,指的是IO流,它可以实现数据从磁盘中的读取以及写入。当程序是面向网络进行数据的IO操作的时候,Java里面提供了。NIO,是JDK1.4里面新增的一种NEW IO机制,相比于传统的IO,NIO在效率上做了很大的优化,并且新增了几个核心组件:Channel、Buffer、Selectors。另外,还提供了非阻塞的特性,所以对于网络IO来说,NIO通常也称为。,也就是说,在连接以及IO事件未就绪的情况下,当前的连接会处于阻塞等待的状态。因此,总的来说,IO和NIO的区别,站在网络IO的视角来说,
2025-04-08 10:55:49
129
原创 Java面试40-Redis存在线程安全问题吗?
虽然Redis Server中的指令执行是原子的,但是如果有多个Redis客户端同时执行多个指令的时候,就无法保证原子性。假设两个Redis Client同时获取Redis Server上的key,同时进行修改和写入,因为多线程环境中的原子性无法被保障,以及多进程情况下的共享资源访问的竞争问题,使得数据的安全性无法得到保障。虽然Redis 6.0里面,增加了多线程的模型,但是增加的多线程只是用来处理网络IO事件,对于指令的执行过程,仍然是由主线程来处理,所以不会存在多个线程通知执行操作指令的情况。
2025-04-08 09:09:40
192
原创 Java面试39-Zookeeper中的Watch机制的原理
Zookeeper提供了一个Watch机制,可以让客户端感知到Zookeeper Server上存储的数据变化,这一机制可以让Zookeeper实现很多的场景,比如配置中心、注册中心等。Watch机制采用了。的方式来实现,也就是说客户端和Zookeeper Server会建立一个长连接,一旦监听的指定节点发生了变化,就会通过这个长连接把变化的事件推送给客户端。,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的。,以节点的方式来管理存储在Zookeeper上的数据。
2025-04-07 17:27:03
308
原创 Java面试38-Dubbo是如何动态感知服务下线的?
当Dubbo服务提供方出现故障导致Zookeeper剔除了这个服务的地址,那么Dubbo服务消费端需要感知到地址的变化,从而避免后续的请求发送到故障节点,导致请求失败,也就是说Dubbo要提供服务下线的动态感知能力。Dubbo Client端收到事件以后,就会把本地缓存的这个服务地址删除,这样后续就不会把请求发送到失败的节点上,完成服务下线感知。的方式来维护Dubbo服务提供端的协议地址,Dubbo服务消费端会从Zookeeper Server上去查找目标服务的地址列表,从而完成服务的注册和消费的功能。
2025-04-07 14:47:44
273
原创 Java面试37-Dubbo的服务请求失败怎么处理?
Dubbo是一个RPC框架,它为我们的应用提供了远程通信能力的封装,并且在RPC通信的基础上,逐步在向一个生态在演进,它涵盖了服务注册、动态路由、容错、服务降级、负载均衡等能力,基本上在微服务架构下面临的问题,Dubbo都可以解决。,也就是说,如果基于Dubbo进行服务间通信出现异常,服务消费者会对服务提供者集群其他的节点发起重试,确保这次请求成功,要注意的是,默认基于重试策略的容错机制中,需要注意幂等性的处理,否则在事务型的操作中,容易出现多次数据变更的问题。而对于Dubbo服务请求失败的场景,
2025-04-07 14:30:13
198
原创 Java面试36-什么叫阻塞队列的有界和无界
其中,阻塞队列中能够容纳的元素个数,通常情况下是有界的,比如实例化一个ArrayBlockingList,可以在构造方法中传入一个整型的数字,表示这个。,像LinkedBlockingQueue,它的默认队列长度是Integer.MAX_VALUE,所以我们感知不到它的长度限制。无界队列存在比较大的潜在风险,如果在并发量较大的情况下,线程池中可以几乎无限制的添加任务,容易导致内存溢出的问题。,不过它并不是像我们理解的那种元素没有任何限制,而是它的。,这种就是有界队列。
2025-04-07 13:57:17
240
原创 Java面试35-CPU飙高系统反应慢怎么排查?
CPU是整个电脑的核心计算资源,对于一个应用进程来说,CPU的最小执行单元是线程。CPU利用率过高之后,导致应用中的线程无法获得CPU的调度,从而影响程序的执行效率。最后有可能定位的结果是程序正常,只是在CPU飙高的那一刻,用户访问量较大,导致系统资源不够。命令,找到CPU利用率较高的进程,再通过。CPU上下文切换过多。
2025-04-07 11:25:14
219
原创 Java面试34-Kafka的零拷贝原理
技术把文件内容复制到内核空间中的Read Buffer,接着把包含数据位置和长度信息的文件描述符加载到Socket Buffer中,DMA引擎直接可以把数据从内核空间中传递给网卡设备。在这个流程中,数据只经历了两次拷贝就发送到了网卡中,并且减少了两次CPU的上下文切换,对于效率有非常大的提高。所谓零拷贝,并不是完全没有数据复制,只是相对于用户空间来说,不再需要进行数据拷贝。除此之外,由于用户空间和内核空间的切换会带来CPU的上下文切换,对于CPU性能也会造成性能影响。,就是把这两次多余的拷贝省略掉,
2025-04-03 15:55:31
410
原创 Java面试33-fail-safe机制与fail-fast机制分别有什么作用
fail-safe基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。包下的容器都是安全失败的,比如ConcurrentHashMap和CopyOnWriteArrayList等,可以在多线程下并发使用,并发修改。
2025-04-03 15:30:49
133
原创 Java面试32-对Spring Cloud的理解
它提供了快速构建分布式系统的常用的一些组件,比如说配置管理、服务的注册与发现、服务调用的负载均衡、资源隔离、熔断降级等等。不过Spring Cloud只是Spring官方提供的一套微服务标准定义,而真正的实现目前有两套体系用的比较多,一个是Spring Cloud Netflix,一个是Spring Cloud Alibaba。有了Spring Cloud这样的技术生态,使得我们在落地微服务架构时,不用去考虑第三方技术集成带来额外成本,只要通过配置组件来完成架构下的技术问题,从而让我们更加侧重性能方面。
2025-04-03 08:52:07
151
原创 Java面试31-MySQL如何解决幻读问题?
并且在MVCC里面规定了高版本能够看到低版本的事务变更,低版本看不到高版本的事务变更,从而实现了不同事务之间的事务隔离,解决了幻读的问题。但是在当前读的情况下,是直接读取内存的数据,跳过了快照读,所以还是会出现幻读问题。在RR(可重复读)的事务隔离级别下,InnoDB采用了。机制来解决幻读问题。
2025-04-02 17:16:02
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人