- 博客(6)
- 收藏
- 关注
原创 基于mykernel2.0编写一个操作系统内核
1.在ubantu配置实验环境: wget https://raw.github.com/mengning/mykernel/master/mykernel-2.0_for_linux-5.4.34.patch(直接从GitHub拿,使用wget有可能失败) sudo apt install axel axel -n 20 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.34.tar.xz xz -d linux-5.4.34.
2020-05-12 18:55:49
289
原创 网络梳理
为什么tcp要四次挥手? 在三次握手的过程中,SYN和ACK是一起发送的但是在四次挥手的时候FIN和ACK却不是一起发送的而是分开发送的,为什么呢???那是因为啊,TCP连接是全双工的也就是说接收到FIN只是说没有数据再发过来但是还是可以发送数据的,也就是接受到一个FIN只是关闭了一个方向的数据传输,另一个方向还可以继续发送数据。在四次挥手的时候也是这样前两次挥手只是确认关闭了一个方向的数据,加上...
2020-04-14 11:37:30
426
原创 分布式锁
直接基于setnx实现分布式锁 setnx高版本已经可以将设置setnx和设置超时时间合并成原子操作了 当然如果不想解除别人的锁,那么你可能需要threadLocal保存随机值 其实还有一个问题,就是你拿到分布式锁后你来执行,但是执行过程中锁超时了,就会造成一些冲突操作,怎么办?因为你得操作可能很耗费时间,比如是一个大事务操作,这个时候就需要一个后台线程每隔10s来看看是否还拥有锁,如果拥有那么就...
2020-04-11 12:16:25
171
原创 Redis回顾2
为什么需要集群这样的功能? 并发量 数据量的问题,如果机器内存只有256G,业务需要500G呢? 网络流量的需求 数据分布-将全量数据进行拆分-拆分成一个个子集(分区) 顺序分区和哈希分区 对比 还是跟你业务需求有关吧,比如你的键值业务相关就用顺序分布法,但是顺序分布有个很严重问题,就是数据倾斜,例如按照用户id进行区分,可能早期用户访问量较高,后期用户访问较低,导致访问不均匀 hash分...
2020-04-10 21:10:58
258
原创 Redis基础回顾
数据结构和编码 为什么要设计这么多的数据结构呢?比如像string就有类似于raw,int,embstr raw就是我们常说的sds了 首先内存的资源是非常昂贵的,假如我们在使用数据结构的时候能够采用空间换时间的话,可以采用一些压缩的结构,又比如字符压缩AAAA我们可以压缩为4A,其实空间换时间你在redis里面真的非常常见,像Slot槽的状态保存通过ClusterNode.slots[]数组+C...
2020-04-09 21:30:59
195
原创 java里比较器的理解
比较器分为内部比较器和外部比较器 内部比较器 内部比较器通过实现Comparable接口,重新接口里的CompareTo() 方法来进行对象之间的比较 //按照商品价格从低到高排序,再按照产品名称从高到底排序 @Override public int compareTo(Object o) { if(o instanceof Goods){ ...
2019-09-30 17:17:45
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人