秋招-操作系统篇
Unix什么叫一切皆文件这个是 Unix 的一个核心哲学,我给你拆开讲:
“一切皆文件”是什么意思
在 Unix 系统里,几乎所有东西都用“文件”这种统一接口来访问:
普通文件:磁盘上的文本、二进制文件
目录:其实是存储文件名到 inode 的映射表
设备:键盘、显示器、硬盘、网卡都被抽象成“特殊文件”,放在 /dev 下
管道、FIFO、Socket:进程间通信对象,也以文件描述符的方式访问
甚至内核接口:比如 /proc、/sys 里的伪文件,用来读取系统信息
所以用户态只需要 open() / read() / write() / close() 这一套 API,就能操作各种资源,而不用关心底层差异。
为什么要这样设计
核心是抽象统一性:
简化接口:程序员不需要学习 N 套 API,读写磁盘和读写串口本质上没区别。
提高可移植性:应用只依赖标准文件 API,不管硬件怎么变,内核保证兼容。
增强组合性:因为统一成“文件”,就能用管道把命令组合起来(ls | grep txt | wc -l),这就是 Unix 强大的“工具拼装哲学”。
一个例子 🌰
打开一个磁盘 ...
Java的线程池
讲解了java中常见的线程池区别和使用方法
JAVA的三种IO模型
本文介绍了JAVA中的三种IO模型原理,以及优缺点
事务隔离级别及实现方式
前置知识按锁的粒度分类
记录锁(Record Lock):属于单个行记录上的锁。
间隙锁(Gap Lock):锁定一个范围,不包括记录本身,间隙锁之间不冲突,不分排他和共享。
临键锁(Next-Key Lock):Record Lock+Gap Lock,锁定一个范围,包含记录本身,主要目的是为了解决幻读问题(MySQL 事务部分提到过)。记录锁只能锁住已经存在的记录,为了避免插入新记录,需要依赖间隙锁,左开右闭。
在 InnoDB 默认的隔离级别 REPEATABLE-READ 下,行锁默认使用的是 Next-Key Lock。但是,如果操作的索引是唯一索引或主键,InnoDB 会对 Next-Key Lock 进行优化,将其降级为 Record Lock,即仅锁住索引本身,而不是范围。
表级锁:锁定整张表。
这里只提一点,行级锁锁住的是索引字段,而表级锁才是在物理存储上锁住了表,没有命中唯一索引或者索引失效的话,就会导致扫描全表对表中的所有行记录进行加锁。不过,很多时候即使用了索引也有可能会走全表扫描,这是因为 MySQL 优化器的原因,一些情况下全表扫描更快,比如索引碎 ...
类的加载
讲解了Class的文件结构、OOP-KLASS模型、类的生命周期、类的加载器、双亲委派模型
sql语法
记录了与sql相关的语法
动态代理:灵活控制方法调用的艺术
动态代理相较于静态代理不需要创建代理类,代码更加灵活
Cookie技术介绍
记录Cookie的学习
初探强化学习
本文介绍了强化学习的思想和适应性从弱到强的几种强化学习算法,包括Sarsa、QLearning、DQN、DDPG。并利用这些算法在OpenAI的gym实验室中解决了实际的问题,可以帮助小白入门强化学习。