- 博客(38)
- 收藏
- 关注
原创 Java面试34-Kafka的零拷贝原理
技术把文件内容复制到内核空间中的Read Buffer,接着把包含数据位置和长度信息的文件描述符加载到Socket Buffer中,DMA引擎直接可以把数据从内核空间中传递给网卡设备。在这个流程中,数据只经历了两次拷贝就发送到了网卡中,并且减少了两次CPU的上下文切换,对于效率有非常大的提高。所谓零拷贝,并不是完全没有数据复制,只是相对于用户空间来说,不再需要进行数据拷贝。除此之外,由于用户空间和内核空间的切换会带来CPU的上下文切换,对于CPU性能也会造成性能影响。,就是把这两次多余的拷贝省略掉,
2025-04-03 15:55:31
246
原创 Java面试33-fail-safe机制与fail-fast机制分别有什么作用
fail-safe基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容,即:迭代器遍历的是开始遍历那一刻拿到的集合拷贝,在遍历期间原集合发生的修改迭代器是不知道的。包下的容器都是安全失败的,比如ConcurrentHashMap和CopyOnWriteArrayList等,可以在多线程下并发使用,并发修改。
2025-04-03 15:30:49
63
原创 Java面试32-对Spring Cloud的理解
它提供了快速构建分布式系统的常用的一些组件,比如说配置管理、服务的注册与发现、服务调用的负载均衡、资源隔离、熔断降级等等。不过Spring Cloud只是Spring官方提供的一套微服务标准定义,而真正的实现目前有两套体系用的比较多,一个是Spring Cloud Netflix,一个是Spring Cloud Alibaba。有了Spring Cloud这样的技术生态,使得我们在落地微服务架构时,不用去考虑第三方技术集成带来额外成本,只要通过配置组件来完成架构下的技术问题,从而让我们更加侧重性能方面。
2025-04-03 08:52:07
76
原创 Java面试31-MySQL如何解决幻读问题?
并且在MVCC里面规定了高版本能够看到低版本的事务变更,低版本看不到高版本的事务变更,从而实现了不同事务之间的事务隔离,解决了幻读的问题。但是在当前读的情况下,是直接读取内存的数据,跳过了快照读,所以还是会出现幻读问题。在RR(可重复读)的事务隔离级别下,InnoDB采用了。机制来解决幻读问题。
2025-04-02 17:16:02
164
原创 Java面试3-能谈下CAS机制吗?
CompareAndSwap是一个native方法,实际上它最终还是会面临同样的问题,就是先从内存地址中读取state的值,然后去比较,最后再修改。,这个方法的逻辑是,判断state是否为0,如果为0,就修改成1。这个逻辑看起来没有任何问题,但是在多线程环境下,会存在原子性的问题,因为这里是典型的。方法来达到同样的目的,这个方法有四个参数,分别是:当前对象实例、成员变量state在内存地址中的偏移量、预期值0、期望更改之后的值1。有这样一个场景,有一个成员变量state,默认值是0,定义了一个方法。
2024-03-30 10:33:02
372
原创 Java面试2-Lock和Synchronized的区别
Synchronized是Java中的同步关键字,Lock是J.U.C包中提供的接口,这个接口有很多实现类,其中就包括ReentrantLock重入锁。Synchronized可以通过两种方式来控制锁的粒度:一种是把synchronized关键字修饰在方法层面上。另一种是修饰在代码块上,并且我们可以通过Synchronized加锁对象的声明周期来控制锁的作用范围:比如锁对象是静态对象或者类对象,那么这个锁就是全局锁;如果锁对象是普通实例对象,那这个锁的范围取决于这个实例的声明周期。Lock锁的粒度是通
2024-03-30 09:06:54
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人