Linux 系统编程技术 & 概念
价格: $19.99
Internet/Udemy 上已经有无数的课程/教程,它们几乎教授 C 编程语言的各个方面. 所有这些课程听起来都一样, 说同样的话并提供或多或少相同的知识. 本课程与其他课程有何不同 ?
本课程的目的是让您为系统编程技术面试做好准备, 面试水平 – 从初级到中级. 本课程为 (未来) 开发商, 不适用于测试人员或系统管理员.
我选择创建这门课程 填补新手/初学者和中级/高级程序员之间的空白. 本课程假设您在编程方面至少高于平均水平 (任何编程语言, 但在 C/C++ 中更可取) – 知道内存分配, 各种循环, 函数调用, 指针等. 在这个过程中, 我不会教 C/C++ (网上已经有很多课程了), 但会教授编程技术和有关 C 程序如何在幕后工作的低级细节 – 从面试的角度来看,所有主题都非常重要. 我的目标是把这门课程发展成 Linux/C 圣经.
然而, 我总觉得, 在这个竞争激烈的时代,你需要比你的同事更聪明, 因此, 我试图向你展示对程序员来说至关重要的智慧和知识. 我见过虽然学生可以写出好的 C/C++ 程序, 然而,他们缺乏关于如何更好地组织写作的明确性, 可管理, 库形式的可扩展和可编程代码. 例如, 学生在竞争性编程方面表现出色, 但不知道如何编写一个简单的 Makefile, 原因是, 学者不教,学生不爱学习.
在这个过程中, 我将介绍与创建 Linux 系统库相关的主题 (发布 1) 具有高级语言无关的编程概念 (发布 2) 如果你明天碰巧成为其他语言的程序员,这可以很好地应用.
像这样的概念 多线程, 线程同步, 套接字编程, 工控机等 要求对每个主题进行单独的课程. 目前, 我有 IPC 课程, 请检查一下. 这些主题超出了本课程的范围.
该课程应分为两个版本 :
发布 1 建立和管理图书馆: 这涵盖了有关如何创建和组织代码作为库的基础知识.
发布 2 内存管理概念: 这涵盖了 Linux 内存管理的高级概念. 请查看目录以获取更多信息.
为什么你应该*不*参加这门课程?
1. 如果您是 C 编程的终极初学者,请原谅本课程 !!
2. 如果你不喜欢敲击键盘,那么做这门课就没有意义, 懒得只看讲座 VDO
3. 如果你想把所有东西都煮熟并放在盘子里.
课程先决条件 :
-
高于 C/C++ 编程的初学者水平
-
有基本的操作系统知识很好
-
热衷于卓越和编码
没有第三方库
无论你实现什么逻辑, 你需要从头开始实现它. 像我所有的其他课程一样, 本课程不建议借助任何第三方图书馆来完成工作. 使用外部库完全违背了课程的目的.
警告: 本课程有自动系统生成的字幕,可能并不完美. 请根据您的方便禁用字幕.
课程 :
**********************************************
发布 1 建立和管理图书馆
**********************************************
部分 1 : 图书馆简介
-
什么是图书馆
-
库与应用程序的关系
-
前任 : 双向链表作为库
-
快速编译步骤
-
摘要
部分 2 : 头文件
-
源文件和头文件的关系
-
文本替换方法
-
文本替换方法 – 示例和演示
部分 3 : 预处理指令
-
重复包含 Hdr 文件的问题
-
预处理指令
-
Hdr文件重复包含的解决方案
部分 4 : 正确使用结构和函数的方法
-
结构 – 定义和使用拇指规则
-
功能 – 声明和使用拇指规则
-
递归依赖问题
-
递归依赖的解决方案
部分 5 : 创建静态和动态库
-
使用双向链表库恢复
-
快速创建静态和动态库
-
与静态库链接
-
与动态库链接
部分 7: 了解编译的四个阶段
-
C/C++编译的四个阶段
-
动态库的工作原理 ?
-
动态链接 : 与动态库链接
-
对照 – 静态与动态链接
部分 8 : 使用 Makefile 构建
-
什么是 Makefile,我们为什么需要它
-
Makefile的功能
-
Makefile 依赖树
-
编写 Makefile 的步骤
-
Makefile 上的赋值
部分 9 : 运行时可编程库
-
什么是可编程库?
-
对库进行编程的步骤
-
向库注册回调
-
key_match 回调
-
比较_fn 回调
-
-
将特定于应用程序的操作委托给库
部分 10 : 使用宏编写迭代器
-
什么是迭代宏 ?
-
为什么我们需要迭代宏 ?
-
如何编写迭代宏 – 对于树和链表
-
练习
部分 11 : 基于胶水的库和数据结构
-
什么是基于胶水的库?
-
介绍 Glthreads – 粘合的链表
-
Glthreads 与传统链表
-
结构字段偏移
-
GLThread 操作
-
代码步行
-
GLThread 的好处
************************************************
发布 2 内存管理概念
************************************************
部分 12 : Linux进程的内存布局
-
虚拟内存基础
-
Linux进程的内存布局
-
例: Linux进程的内存布局
-
练习 size 命令
部分 13 : 堆栈内存管理
-
堆栈内存基础知识和内容
-
堆栈溢出和预防
-
堆栈内存损坏
-
通用 CPU 寄存器
-
过程调用机制 – 一步步
-
基指针寄存器的用途 (ebp)
-
程序返回机制 – 一步步
-
实验课
部分 14 : 堆内存管理
-
简介和目标
-
Malloc 的工作原理
-
堆顶内存区域 – 休息 指针
-
堆内存管理系统调用 – 刹车 和 sbrk
-
元和数据块
-
多么自由() 作品
-
块拆分
-
块合并
-
记忆障碍 – 碎片化问题
部分 15 : 分页的概念
-
分页简介
-
字节可寻址存储器
-
32 位和 64 位机架构
-
地址总线和数据总线
-
物理地址与虚拟地址
-
物理内存帧
-
虚拟地址组成
-
页表
-
分页在行动
-
共享物理内存
部分 16 : 多级分页
部分 17 : 请求分页
部分 18 : 多线程进程的内存管理
本课程的目的是让您为系统编程从初学者到最高级别的技术面试做好准备 8-9 年经验.
问. 简历上写C/C++/系统编程语言,技术轮面试官经常问的问题有哪些?
回答 : 如果我是面试官, 我会问什么问题取决于他在 C 领域的多年经验.
1–3 年的经验——我会问:
-
双指针
-
设计一个宏来返回结构的大小
-
二维数组, 从 fn 传递和返回数组
-
C程序编译的不同阶段
-
如何分叉() 作品
-
调试内存损坏的各种方法是什么.
-
各种IPC
-
基于堆和堆栈内存的问题
4–6年经验 – 我会问:
-
操作系统如何分配内存
-
内部和外部碎片, 可以做些什么来避免它
-
系统调用, 跟踪()
-
一种 IPC 与其他 IPC 的交换
-
与内核通信的各种方式和比较
-
数据 (从)C中的序列化
-
C语言中的RPC
-
回调高级应用
-
typedef 与 #define
-
使用宏在 C 中进行泛型编程
-
线程同步
-
基于堆和堆栈内存的问题
7+ 年经验 – 我会问
-
您是否设计了任何系统模块来解决任何问题
-
设计线程库 0 您将加入哪些功能以及如何加入 ?
-
编写健壮灵活的库的注意事项和注意事项是什么
-
如何用 C 编写通用代码
-
在 C 中实现定时器的各种方法, 和方法比较
-
中断如何工作 ?
-
IPC 和比较
-
您如何将 C 代码转换为 C++,反之亦然
-
如何编写一个检测内存泄漏的工具, 或者垃圾收集
-
设计自己的内存分配工具. 设计自己的内存分配工具 ?
-
设计自己的内存分配工具
-
设计自己的内存分配工具
-
设计自己的内存分配工具, 设计自己的内存分配工具, 设计自己的内存分配工具, 为什么 ?
设计自己的内存分配工具,
设计自己的内存分配工具, 设计自己的内存分配工具.
设计自己的内存分配工具, 设计自己的内存分配工具
设计自己的内存分配工具 7+ 年经验, 设计自己的内存分配工具.
注意, 设计自己的内存分配工具, 设计自己的内存分配工具.
发表评论
你必须 登录 要么 寄存器 添加新评论 .