Java面试题

1.从浏览器发送url最后展示页面期间都发生了什么

答:1.首先查找本地缓存、浏览器缓存、系统缓存、路由器缓存,是否有该url页面的内容,如果有直接展示,没用的话
2.浏览器向DNS域名系统发送请求,解析域名对应的IP地址
3.建立TCP连接,三次握手
4.发送http请求
5.服务器处理请求并返回响应
6.浏览器解析渲染页面
7.关闭TCP连接

2.redisson分布式锁

单体架构实现互斥可以加syncthrnize,集群下就不行了,集群下相当于sync是局部变量,得给整个项目加锁。
1.死锁的情况,假如一个线程获得了锁,这个时候服务突然宕机了,没法释放锁了所以给redis设计一个过期时间。
2.使用redisson setnx命令实现分布式锁,基于lua脚本完成的,具有原子性
3.每隔一定时间都给锁续期。其他线程获取锁的时候先自旋。
4.redisson实现的分布式锁具有可重入性,就是一个方法内获取了锁又调了另一个方法也获取了锁,那他们都能获得锁。每个线程都有唯一的线程id标识记录,是同一个线程id+1,不是就-1.
5.redisson通过红锁解决主从一致性,假如redis是集群模式,主节点上了锁突然宕机了,选了一个从节点又上了锁。红锁就是在多个redis节点上枷锁

3.redis集群

1.主从复制,主节点增删改,从节点读。
2.主从全量同步。从节点请求主节点同步数据。主节点判断是不是第一次同步,如果是就同步版本消息。主节点执行bgsave生成rdb文件发送给从节点,在rdb执行的期间主节点会以命令的方式记录到缓冲区,最后把日志文件发送给从节点。
3.增量同步。从节点请求主节点同步数据,主节点判断是不是第一次请求,如果不是第一次就获取从节点的offset值,主节点从命令日志中获取offset之后发送给从节点进行数据同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值