前言
Linux 网络协议栈是根据 TCP/IP 模型来实现的,TCP/IP 模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。
应用程序要发送数据包时,通常是通过 socket 接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的 socket 层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。
而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。
网络的速度往往跟用户体验是挂钩的,那我们又该用什么指标来衡量 Linux 的网络性能呢?以及如何分析网络问题呢?
这次,我们就来说这些。
算法
- ⼏道常⻅的字符串算法题总结
- 最⻓公共前缀
- 回⽂串
- 两数相加
- 翻转链表
- 链表中倒数第k个节点
- 删除链表的倒数第N个节点
- 合并两个排序的链表
- 剑指offer部分编程题
- 跳台阶问题
- 变态跳台阶问题
- ⼆维数组查找
- 替换空格题⽬描述:
- 数值的整数次⽅
- 调整数组顺序使奇数位于偶数前⾯
- 链表中倒数第k个节点
- 反转链表
- 合并两个排序的链表
- ⽤两个栈实现队列
- 栈的压⼊,弹出序列
数据结构
- Java 集合框架中的队列 Queue
- HashSet 和 TreeSet 底层数据结构
- List的常⻅实现类ArrayList 和 LinkedList 源码学习
- Map
- ⼆叉树
- 完全⼆叉树
- 满⼆叉树
- 堆
- ⼆叉查找树(BST)
- 平衡⼆叉树(Self-balancing binary search tree)
- 红⿊树
- B-,B+,B*树
- LSM 树
Redis
- 为什么要⽤ redis/为什么要⽤缓存
- 为什么要⽤ redis ⽽不⽤ map/guava 做缓存?
- redis 的线程模型
- redis 和 memcached 的区别
- redis 常⻅数据结构以及使⽤场景分析
- redis 设置过期时间
- redis 内存淘汰机制(MySQL⾥有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
- redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进⾏恢复)
- redis 事务
- 缓存雪崩和缓存穿透问题解决⽅案
- 如何解决 Redis 的并发竞争 Key 问题
- 如何保证缓存与数据库双写时的数据⼀致性?
MyBatis
- {}和${}的区别是什么?
- Xml 映射⽂件中,除了常⻅的 select|insert|updae|delete 标签之外,还有哪些标签?
- 最佳实践中,通常⼀个 Xml 映射⽂件,都会写⼀个 Dao 接⼝与之对应,请问,这个Dao接⼝的⼯作原理是什么?Dao接⼝⾥的⽅法,参数不同时,⽅法能重载吗?
- Mybatis 是如何进⾏分⻚的?分⻚插件的原理是什么?
- 简述 Mybatis 的插件运⾏原理,以及如何编写⼀个插件。
- Mybatis 执⾏批量插⼊,能返回数据库主键列表吗?
- Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述⼀下动态 sql 的执⾏原理不?
- Mybatis 是如何将 sql 执⾏结果封装为⽬标对象并返回的?都有哪些映射形式?
- Mybatis 能执⾏⼀对⼀、⼀对多的关联查询吗?都有哪些实现⽅式,以及它们之间的区别。
- Mybatis 是否⽀持延迟加载?如果⽀持,它的实现原理是什么?
- Mybatis 的 Xml 映射⽂件中,不同的 Xml 映射⽂件,id 是否可以重复?
- Mybatis 中如何执⾏批处理?
- Mybatis 都有哪些 Executor 执⾏器?它们之间的区别是什么?
- Mybatis 中如何指定使⽤哪⼀种 Executor 执⾏器?
- Mybatis 是否可以映射 Enum 枚举类?
- Mybatis 映射⽂件中,如果 A 标签通过 include 引⽤了 B 标签的内容,请问,B 标签能否定义在 A 标签的后⾯,还是说必须定义在 A 标签的前⾯?
- 简述 Mybatis 的 Xml 映射⽂件和 Mybatis 内部数据结构之间的映射关系?
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新