Java面试
文章平均质量分 86
TAIKEMAN
这个作者很懒,什么都没留下…
展开
-
【Java面试丨消息中间件】Kafka
使用kafka在消息的收发过程都有可能会出现消息丢失(1)生产者发送消息到broker丢失(2)消息在broker中存储丢失(3)消费者从broker接收消息丢失问题原因(1)一个topic中的数据可能存储在不同的分区中,每个分区都有一个按照顺序的存储偏移量,如果消费者关联了多个分区,则不能保证消费的顺序性解决方案(1)发送消息时,指定分区号,往同一个分区中存储消息(2)发送消息时,按照相同的业务设置相同的key集群模式分区备份机制kafka文件存储机制数据清理机制。原创 2023-07-30 10:28:27 · 1050 阅读 · 0 评论 -
【Java面试丨企业场景】常见技术场景
单点登录(Single Sign On,SSO):只需要登录一次,就可以访问所有信任的应用系统后台的管理系统更加注重权限控制,最常见的是RBAC模型来实现RBAC(Role-Based Access Control):基于角色的访问控制具体实现(1)5张表(用户表、角色表、权限表、用户-角色中间表、角色-权限中间表)(2)7张表(用户表、角色表、权限表、菜单表、用户-角色中间表、角色-权限中间表、权限-菜单中间表)原创 2023-07-29 20:06:37 · 1092 阅读 · 0 评论 -
【Java面试丨并发编程】线程中并发安全
CAS(Compare And Swap,比较再交换):体现了一种乐观锁的思想,在无锁的情况下,能够保证线程操作共享数据的原子性在JUC(java.util.concurrent)包下实现的很多类都用到了CAS操作(1)AbstractQueuedSynchronizer(AQS框架)(2)AtomicXXX类(原子类)在操作共享变量的时候使用的是自旋锁,效率上更高一些CAS的底层是调用Unsafe类中的方法,都是操作系统提供的,其他语言实现。原创 2023-07-17 21:57:33 · 238 阅读 · 0 评论 -
【Java面试丨并发编程】线程的基础知识
一、进程与线程的区别1. 进程程序是由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存在指令运行过程中还需要用到磁盘、网络等设备进程就是用来加载指令、管理内存、管理IO的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程2. 线程一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给CPU执行一个进程之内可以分为一到多个线程3. 二者区别进程是正在运行程序的实例,进程中包含了线程,每个线程执行不同的任务不同原创 2023-07-13 22:02:35 · 477 阅读 · 0 评论