- 博客(16)
- 收藏
- 关注
原创 最新的字节面试题:文件描述符的就绪条件?
在讨论IO多路复用的时候,我们总是会看到这么一句话“当文件描述符准备就绪的时候,干嘛干嘛.....”但是这个文件描述符怎么样才算就绪了呢?相信许多朋友在面试的时候,对这句话也只是轻轻带过,如果面试官突然来一句怎么算就绪了呢?是不是就蒙圈了?鄙人在不久前的面试的时候就碰到了这个问题。所以,这给我们启发,背八股还是得知道每个词的含义,这样才能经得起深挖。废话不多说,我们开始讲。
2024-09-10 18:31:02
541
原创 IO多路复用三种模型的区别(鄙人的理解)
当有一个FD有事件发生的时候,就会将其FD插入到就绪队列中,这个插入动作实际是一个回调,并不是遍历,这是epoll的一个性能提升非常大的一个点,并且内核态会检查阻塞队列的进程,其FD集合中是否存在已经就绪的FD,这一步就是在红黑树里面查找FD,时间复杂度接近o(1)效率非常高,如果存在唤醒该线程。linux特有的,底层采用双向链表+红黑树存储FD集合,查找的时间复杂度是常数时间复杂度,并且将轮询改为了事件通知的方式,维护FD集合的数据结构直接存储在内核态,减少了反复的拷贝,性能开销大幅度减小。
2024-09-10 17:52:22
439
原创 Redis常用命令(个人笔记向)
Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行。HGETALL:获取一个hash类型的key中的所有的field和value。HKEYS:获取一个hash类型的key中的所有的field。
2024-08-07 22:25:53
1708
原创 synchronized介绍
jvm启动时候的,有一段时间是不会启动偏向锁的,因为偏向锁适合的无线程竞争的情况,在明确知道会有多线程竞争的情况的时候,请直接使用轻量级锁,此时轻量级锁的效率可能更高,因为开始就启动偏向锁,还是会升级为轻量级锁,但是中间有一个偏向锁撤销的过程,浪费cpu资源。从低到高是:无锁,偏向锁,轻量级锁,重量级锁,并且是不可降级的。在早期的时候,sync他是重量级的锁,就是操作系统层面的锁,需要从用户态切换到内核态。后面是成员变量占的位置,不足8的整数倍,需要补字节到8的整数倍。偏向锁,轻量级锁,都是在用户态的。
2024-08-03 17:25:59
1298
原创 http常用请求头
示例: `Access-Control-Request-Headers: X-Custom-Header`- 示例: `Content-Type: application/x-www-form-urlencoded`- 示例: `Referer: http://www.example.com/index.html`- 示例: `Access-Control-Request-Method: POST`- 示例: `X-Requested-With: XMLHttpRequest`
2024-08-03 17:03:42
375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人