- 博客(63)
- 收藏
- 关注
原创 C++后台开发学习路线(已签腾讯后台开发)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027找完工作后一直想找时间写点东西,由于在忙各种事情,一直拖到现在。作为一个19届的老油条,趁在毕业之前,将我的学习总结分享给大家,希望对正在找实习或者找工作的同学有所帮助。个人介绍首先介绍下自己吧,我是一名非...
2019-03-18 21:32:11 22355 29
原创 Linux内核原理系列总结
主要总结了本人Linux内核原理学习的系列笔记Linux内核原理总结Linux内核原理之进程管理Linux内核原理之进程调度Linux内核原理之系统调用Linux内核原理之网络Linux内核原理之内存管理Linux内核原理之虚拟文件系统(上)Linux内核原理之虚拟文件系统(中)Linux内核原理之虚拟文件系统(下)Linux内核原理之通用块设备层Linux内核原理之进程地址空间Linux内核原理之缓存参考资料Linux内核设计与实现深入Linux内核架构...
2020-09-05 12:02:27 880
原创 Linux内核原理之缓存
文章目录页缓存和块缓存页缓存的结构管理和查找缓存的页回写修改的数据块缓存的结构地址空间数据结构页缓存的实现分配页查找页在页上等待对整页的操作页缓存预读页缓存和块缓存内核为块设备提供了两种通用的缓存方案:页缓存:针对以页为单位的所有操作,例如内存映射技术,负责了块设备的大部分工作块缓存:以块为操作单位,存取的单位是设备的各个块,由于块长度取决于特定的文件系统,块缓存能处理不通长度的块缓冲区曾经是块设备进行I/O操作的传统方法,目前只用于支持很小的读取操作,对于块传输的标准数据结构变为struct
2020-09-05 11:40:26 1080
原创 Linux内核原理之进程地址空间
文章目录进程地址空间简介进程虚拟地址空间进程地址空间的布局内存映射的原理数据结构树和链表虚拟内存区域的表示优先查找树对区域的操作address_space内存映射创建映射删除映射反向映射数据结构建立逆向映射进程地址空间用户层进程的虚拟地址空间是Linux的一个重要抽象:它向每个运行进程提供了同样的系统视图,使得多个进程可以同时运行,而不会干扰其他进程内存中的内容简介本章主要关注用户管理虚拟地址空间的方法每个应用程序都有自身的地址空间,与所有其他应用程序分隔开在巨大的线性结构地址空间中,只有很少
2020-09-05 11:26:32 579
原创 Linux内核原理之通用块设备层
文章目录通用块设备层I/O体系结构访问设备设备文件字符设备、块设备与其它设备使用ioctl进行设备寻址设备数据库与文件系统关联inode中的设备文件成员标准文件操作用于字符设备的标准操作用于块设备的标准操作块设备操作块设备的表示数据结构向系统添加磁盘和分区打开块设备文件请求结构BIO提交请求通用块设备层I/O体系结构与外设的通信通常称为输入输出,缩写为I/O。在实现外设的I/O时,内核需要处理好3个问题:根据具体的设备型号和模型,使用各种方法对硬件寻址内核必须向用户应用程序和系统工具提供访问各种
2020-09-05 11:12:58 2040
原创 Linux内核原理之网络
文章目录网络网络实现的分层模型网络命名空间套接字缓冲区使用套接字缓冲区管理数据管理套接字缓冲区数据网络访问层网络设备的表示接收分组发送分组网络层IPv4接收分组交付到本地传输层分组转发发送分组netfilter传输层UDPTCP应用层socket数据结构套接字和文件socketcall系统调用创建套接字接收数据发送数据网络网络实现的分层模型内核网络子系统的实现与TCP/IP模型很相似,相关的C语言代码划分为不同层次,各层次都有明确定义的任务,各个层次只能通过明确定义的接口与上下紧邻的层次通信(这样设计
2020-09-05 10:39:28 849
原创 Linux内核原理之虚拟文件系统(下)
文章目录处理VFS对象文件系统操作注册文件系统装载和卸载mount系统调用umount系统调用文件操作过程查找inode打开文件读取和写入参考资料处理VFS对象文件系统操作注册文件系统文件系统注册到内核时,是编译为模块,或者持久编译到内核。fs/super.c中的register_filesystem函数用来向内核注册文件系统,该函数扫描文件系统结构组成的单链表,直至到达链表尾部然后添加新的元素或者找到所需的文件系统装载和卸载装载操作开始于超级块的读取,file_system_type中保存的r
2020-06-25 17:24:35 561
原创 Linux内核原理之虚拟文件系统(中)
文章目录VFS对象及数据结构超级块inode对象目录项缓存特定于进程的信息文件文件系统参考资料VFS对象及数据结构VFS的四个对象类型:超级块对象:代表具体的文件系统索引节点对象:代表具体文件目录项对象:代表目录项,是路径的一个组成部分文件对象:代表进程打开的文件注意:VFS将目录作为一个文件来处理,不存在目录对象;目录项不同于目录每个对象中都包含一个操作对象,其中描述了内核针对主要对象可以使用的方法super_operations对象:内核针对特定文件系统调用的方法,如writ
2020-06-25 17:03:25 694
原创 Linux内核原理之系统调用
文章目录第5章 系统调用5.1 与内核通信5.2 API、POSIX和C库5.3 系统调用5.3.1 系统调用号5.3.2 系统调用的性能5.4 系统调用处理程序5.4.1 指定恰当的系统调用5.4.2 参数传递5.5 系统调用的实现5.5.1 实现系统调用5.5.2 参数验证5.6 系统调用上下文5.6.1 绑定一个系统调用的最后步骤5.6.2 从用户空间访问系统调用第5章 系统调用5.1 与内核通信系统调用在用户空间进程和硬件设备之间添加了一个中间层,主要作用是:为用户空间提供了硬件的抽象接口
2020-05-31 22:53:08 695
原创 Linux内核原理之进程调度
文章目录第4章 进程调度4.1 多任务4.2 Linux的进程调度4.3 策略4.3.1 I/O消耗型和CPU消耗型的进程4.3.2 进程优先级4.3.3 时间片4.4 Linux调度算法4.4.1 调度器类4.4.2 Unix系统中的进程调度4.4.3 公平调度4.5 Linux调度的实现4.5.1 时间记账4.5.2 进程选择4.5.3 调度器入口4.5.4 睡眠和唤醒4.6 抢占和上下文切换4.6.1 用户抢占4.6.2 内核抢占4.7 实时调度策略第4章 进程调度进程调度程序:在可运行态进程
2020-05-24 21:01:51 672
原创 Linux内核原理之进程管理
第3章 进程管理3.1 进程进程:处于执行期的程序以及相关资源(打开的文件、挂起的信号、内核内部数据、处理器状态等)的总称线程:是在进程中活动的对象,每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程,不是进程Linux不区分进程和线程,对它来说,线程只不过是一种特殊的进程而已现代操作系统的两种虚拟机制:虚拟处理器:给进程一种假象,让它觉得自己在独享处理器虚拟内存:让进程在分配和管理内存时觉得自己拥有整个系统的内存资源注意:线程之间可以共享虚拟内存,但是
2020-05-24 20:59:51 748
原创 Linux内核原理之内存管理
第12章 内存管理内核不能像用户空间那样奢侈的使用内存,获取内存币用户空间复杂很多12.1 页内核把物理页作为内核管理的基本单元,内存管理单元(MMU)是管理内存并将虚拟内存转换为物理内存的硬件,它以页为单位来管理系统中的页表结构体struct page表示系统中的每个物理页struct page { unsigned long flags, atomi...
2020-02-22 21:05:10 384
原创 Linux内核原理之虚拟文件系统(上)
文章目录第13章 虚拟文件系统13.1 通用文件系统接口13.2 文件系统抽象层13.3 Unix文件系统13.4 VFS对象及数据结构对象类型操作对象13.5 超级块对象13.6 超级块操作13.7 索引节点对象13.8 索引节点操作13.9 目录项对象13.9.1 目录项状态13.9.2 目录项缓存13.10 目录项操作13.11 文件对象13.12 文件操作13.13 和文件系统相关的数据结...
2020-02-22 10:02:58 405
原创 剑指offer总结专题
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027本文针对剑指offer算法题进行总结,内容会一直持续更新剑指Offer题解面试题3:数组中重复的数字面试题4:二维数组的查找面试题5:替换空格面试题6:从尾到头打印链表面试题7:重建二叉树面试题8:二叉...
2019-07-14 11:31:06 494
原创 剑指offer面试题4:二维数组的查找
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027二维数组的查找NowCoder题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否...
2019-07-14 11:29:59 220
原创 剑指offer面试题10:裴波那契数列
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027裴波那契数列NowCoder题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解答方法1:递归会进行很多重复计算,需要优化时间复杂...
2019-07-14 11:22:51 247
原创 剑指offer面试题9:用两个栈实现队列
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027用两个栈实现队列NowCoder题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解答结合栈结构先进后出以及队列结构先进先出的特点:当push操作时,直接将元素加到栈1...
2019-07-14 11:21:09 188
原创 剑指offer面试题8:二叉树的下一个节点
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027二叉树的下一个节点NowCoder题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解答分几种情况考虑:如果节点pNo...
2019-07-14 11:19:36 203
原创 剑指offer面试题7:重建二叉树
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027重建二叉树NowCoder题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4...
2019-07-14 11:16:09 173
原创 LeetCode算法题142:环形链表II(Linked List Cycle II)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027环形链表IILeetCode中文LeetCode英文给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 ...
2019-07-13 09:47:46 211
原创 LeetCode算法题141:环形链表(Linked List Cycle)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027环形链表LeetCode中文LeetCode英文给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表...
2019-07-13 09:44:32 186
原创 LeetCode算法题83:删除排序链表中的重复元素(Remove Duplicates from Sorted List)
删除排序链表中的重复元素LeetCode中文LeetCode英文给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入...
2019-07-07 09:24:13 235
原创 LeetCode算法题21:合并两个有序链表(Merge Two Sorted Lists)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027合并两个有序链表LeetCode中文LeetCode英文将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->...
2019-07-07 09:21:32 212
原创 LeetCode算法题206:反转链表(Reverse Linked List)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027反转链表LeetCode中文LeetCode英文反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->...
2019-07-07 09:18:35 215
原创 剑指offer面试题6:从尾到头打印链表
从尾到头打印链表NowCoder题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解答方法1如果允许原地修改链表,转换为反转链表问题,详见反转链表时间复杂度:O(n)空间复杂度:O(1)方法2如果不允许原地修改链表,那么可以利用栈后进先出的特点,遍历链表,逐个将链表元素放入栈中,然后依次弹出栈顶元素并打印。时间复杂度:O(n)空间复杂度:O(n)...
2019-07-07 09:10:07 173
原创 剑指offer面试题5:替换空格
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027替换空格NowCoder题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解答两个首先统计字符串中...
2019-07-07 08:57:09 144
原创 剑指offer面试题3:数组中重复的数字
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027数组中重复的数字Nowcoder题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如...
2019-07-05 11:20:53 260
原创 计算机网络高频面试问题总结
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027网络常见面试问题网络的几种分层体系结构建立TCP服务器的各个系统调用socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?MTU和MSS对路由协议的了解与介绍内部...
2019-06-06 09:40:36 874
原创 操作系统高频面试问题总结
操作系统常见面试问题进程与线程的区别和联系一个进程可以创建多少线程,和什么有关一个程序从开始运行到结束的完整过程(四个过程)进程通信方法(Linux和windows下),线程通信方法(Linux和windows下)...
2019-06-06 09:37:34 922 1
原创 C++高频面试问题总结
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027C++常见面试问题汇总指针和引用的区别堆和栈的区别new和delete是如何实现的,new 与 malloc的异同处C和C++的区别C++、Java的联系与区别,包括语言特性、垃圾回收、应用场景等(java的垃圾...
2019-06-06 09:35:32 4589
原创 数组总结专题
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027本文针对数组的高频算法题进行分类总结,内容会一直持续更新数组类总结找规律螺旋矩阵 (medium)螺旋矩阵II (medium)旋转图像 (medium)矩阵置零 (medium)除自身以外数组的乘积 (...
2019-06-05 10:01:46 426
原创 LeetCode算法题217:存在重复元素(Contains Duplicate)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027存在重复元素LeetCode中文LeetCode英文给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [...
2019-06-02 12:05:04 172
原创 LeetCode算法题350:两个数组的交集II(Intersection of Two Arrays II)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027两个数组的交集IILeetCode中文LeetCode英文给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 ...
2019-06-02 11:45:10 266
原创 LeetCode算法题349:两个数组的交集(Intersection of Two Arrays)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027两个数组的交集LeetCode中文LeetCode英文给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输...
2019-06-02 11:31:45 346
原创 LeetCode算法题16:最接近的三数之和(3Sum Closest)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027最接近的三数之和LeetCode中文LeetCode英文给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定...
2019-05-30 08:27:38 221
原创 LeetCode算法题:三数之和(3Sum)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027三数之和LeetCode中文LeetCode英文给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:...
2019-05-30 08:25:19 814
原创 二叉树总结专题
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027本文针对二叉树的高频算法题进行分类总结,内容会一直持续更新二叉树算法题总结二叉搜索树将有序数组转换为二叉搜索树 (easy 中序)二叉搜索树的最近公共祖先 (easy)二叉树的最近公共祖先 (medium...
2019-05-29 10:42:09 516
原创 LeetCode算法题11:盛最多水的容器(Container With Most Water)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027盛最多水的容器LeetCode中文LeetCode英文给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 ...
2019-05-29 10:23:46 624
原创 LeetCode算法题392:判断子序列(Is Subsequence)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027判断子序列LeetCode中文LeetCode英文给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s ...
2019-05-29 10:21:54 420
原创 LeetCode算法题283:移动零(Move Zeroes)
技术交流可以加:本人微信:xcg852390212本人qq:852390212学习交流qq群1(已满): 962535112学习交流qq群2: 780902027移动零LeetCode中文LeetCode英文给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]...
2019-05-29 10:19:56 214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人