面试
2022-03-23 01:49:09 0 举报
面试
作者其他创作
大纲/内容
抽象网络传输(网络传输层)
应用层,传输层,网络层 ,数据链路层
RocketMQ
vim 进行修改
注册与发现(注册层)
Protocol
原子性,可见性,有序性
-XX:+PrintGCApplicationStoppedTime 打印应用由于GC而产生的停顿时间
HashMap
cms 针对老年代(1)初始标记,(2)并发标记,(3)重新标记,(4)并发清除(1)(3)过程处于stop the world 阶段 结果:产生碎片化,可以使用-XX:CMSFullGCsBeforeCompaction=n 进行内存y压缩
暴露&服务监听
exchange
比如说,第一次客户端发送建立连接请求,然后网络阻塞,此时客户端重试,然后跟服务端建立好连接,后面第一次建立连接请求抵达服务端,此时需要连接复位
垃圾回收器
cpu 下面的缓存T1时刻 工作内存1 a = 0 T2时刻 工作内存1 a = 1
4. 发送(1,0)
集群选举
proxyFactory
服务端
SocketChannel
-XX:SurvivorRatio:eden from 比例
2.发起提议
消息堆积
线程 ,内存 ,gc信息一览无余dashboard
url
分层
消息顺序
第2步
线程2
loadbalace
spi
对leader发起请求
查看方法内部耗时
thread 线程id 限制线程的堆栈
封装RPC调用,负责管理invoker(远程调用层)
exporterMap
联想Dubbo Filter 实现
策略模式
幸存区设置的太小,导致对象没有经过15次young GC 就跑到老年代
查看仪表盘
zk11.将事务日志写到本地,发起提议 并且自己先ack4.收到过半的ack(加上自己的ack)5.自己commit.
重写messageSelector
查找注册中心
ref
找到变化,封装变化
zk2myid = 2zxid = 0
zk3将提议写到本地事务日志(zxid)
setter方法,基于反射反射实现
Transport
垃圾回收机制
Semaphore
客户端
生成代理
CAS
第3步
单例模式
RegisterProtocol
垃圾回收算法
数据同步
register
事务消息
retransform 将类重新加载
注册感兴趣的事件
查看耗时线程堆栈
selector
复制算法 将空间一份为二,内存使用率不高,适合于年轻代,对象生命周期较短标记-清除 先标记,在清除未被标记的对象,空间碎片化标记-整理 针对于标记-清除,标记完成之后进行了压缩步骤
-xmx:堆最大内存
分区思想
leader 会跟所有的follower建立连接,发送心跳,follower会去读那个心跳的保文;如果leader挂了,socket连接断开,follower 能够感知,进入looking状态;进行上面的动作
PROPAGATION_REQUIRES_NEW
网络分层
3. ack
serialization
服务引入&服务调用
monitor class method -c 5
-XX:+PrintHeapAtGC 每次GC前后打印堆信息。
mq怎么选型
自动注入 ioc
Config
创建通信双通道
负责筛选合适的invoker(路由与集群容错层)
封装请求响应的模型,同步转异步(信息交换层)
Reactor 模式三步走
线上代码追加日志
subscribe
volatile 关键字 解决可见性,有序性问题
定位故障,重新建立topic 扩容
(1)一个 state 变量 用volatile 修饰的 (2)一个记录当前获取锁的线程(3)一个双向链表(等待队列的概念)
将数据转成二进制流(序列化层)
zk2将提议写到本地事务日志(zxid)
Dubbo
自动激活
加载,验证,准备,解析,初始化,使用,卸载
Spring
1. 启动zk1,处于looking 状态
数据结构,如何扩容等
CountDownLatch
扫描感兴趣的事情有没有发生
自动适应
TCP 三次握手
transports
构造参数类型,基于反射反射实现
工作原理
IOC&AOP
主内存共享变量 a = 0
第2 步
nettyServer
第1步 读取 a = 0
clusterrouter
-XX:+PrintGCDetails 打印GC详情
这里的DubboInvoker 具有通信客户端
如何实现远程调用
Exchange
类加载机制
JVM 线上问题
分布式锁
CurrentHashMap
公有:堆 ,方法区(类信息),常量池私有:栈,pc寄存器(方法执行到位置),本地方法栈
线程池
同步发送,本地消息表+加上重试机制
动态代理
GC Root Tracing算法,首先找到GC Root ,(1)已经加载的类(2)类中static 修饰的引用类型(3)Java类的运行时常量池里的引用类型常量...
通过SocketChannel 发送信息
内存空间分成相同的区域大小,-XX:MaxGCPauseMillis 控制GC停顿时间,span style=\"font-size: inherit;\
-xms:堆初始内存
bean的生命周期以及拓展点
分代思想
动态调整线程池
-verbose:class 追踪类的加载卸载
arthas
mc 内存编译
workEventGroup
Register
注册元数据
年轻代 eden :from :to = 8 :1 :1 老年代,新生代对象经过15次young gc 晋升到老年代元空间 存储类信息
服务代理
什么是垃圾
基于url来实现动态查找实现类
HA场景
JDK1.8
初始化做监听
Proxy
mq源码&架构
线程1
AQS
⭐️
生成代理,(代理层)
消息丢失
2. 启动zk1,也处于looking状态
责任链模式
-xmn:年轻代内存
zab协议
PROPAGATION_NESTED
https
自动包装 aop
崩溃恢复
Service
注册中心
一、发送seq = x
分布式协调
zk1myid = 1zxid = 0
3. 启动zk1,也处于looking状态
为什么是三次,两次会怎么样?
线程有哪些状态
生成invoke
redis/数据库唯一索引
删除对用的entry 消除新增代码的影响,重置回原来
7.因为有leader了直接进行数据同步
引入mq带来的好处
-XX:MaxMetaspaceSize 元空间最大内存
缓存
如何设计rpc
bossEventLoopGroup
-XX:+HeapDumpOnOutOfMemoryError,使用jprofile分析
doLocalExport
Propagation.REQUIRED
ReentantLock
采用什么协议,如何进行序列话,底层如何通信
proxy
4.发送(2,0)
设计模式
JVM 常用参数
内存屏障,jvm 给cpu 发送lock 指令,以及嗅探机制
3. ack
服务暴露
5.发起commit
适配器模式
Invoker
CMS+ParNew
频繁full GC
都在zk上面注册临时顺序节点,序号小的作为获取到锁
服务的注册发现
-XX:+TraceClassLoading 追踪类的加载
订阅配置元数据
DubboInvoker
订阅
引入mq需要解决哪些问题
Dubbo中提供者,消费者分别注册元信息到zk
内存结构
Spring事务传播机制
TCP 四次挥手
Synchronzied
trace class method -n 2
thread -b 阻塞其他线程的堆栈
代理模式
G1
核心参数
OOM
重写TransactionListene
Serialize
JVM
JDK1.7
Monitor
1.过半机制是为了提高性能,不需要等待所有的返回ack;2.数据同步过程类似于两阶段提交。 3.follower只会处理读请求,写请求转发给leader
Java内存模型
任务来了先创建到核心线程数>然后进入队列>队列满了就开始继续创建线程直到最大>触发拒绝策略:临时线程空闲时间大于livetime回收线程
网络
zk3myid = 3zxid = 0
3. 开始投票,zk 服务先给自己投一票,然后互相交流
protocol
事务传播机制
第4步a = 1 写回
jad class 反编译
Java 内存模型
监听端口
注册
模版方法设计模式
并发编程
事件发生后做相应的处理
ServerSocketChannel
seata
Cluster
数组+链表分段锁(将大数组分成多个小数组)
retransform --deleteAll
Java基础面试题
负责监控统计调用时间与次数(监控层)
thread -n 3 显示最忙的几个线程
服务集群容错,负载均衡
zookeeper
DubboProtocol
消息重复消费
0 条评论
下一页