学习有效期:永久观看
学习时长:1284分钟
学习计划:22天
难度:中
CEO/董事长/总经理
讲师介绍:夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审计项目,比赛鹰眼系统,主编出版过《C++实训教程》,并同时熟悉php,c#,java,安卓项目研发。
C/C++属于系统级别的编程语言,作为开源软件的代表作品Linux操作系统是所有C/C++程序员都应当熟悉和掌握的。本门课程从实战出发,降低了初级C/C++程序员进入Linux程序设计的门槛。本门课程以Centos为实验环境,从核心命令讲解,再到gcc/gdb开发环境,直至覆盖到460多个常用的类Unix/POSIX API。本课可以有效的节约初学者上手Linxu操作系统的时间。同时,课程结合GNU的开源代码,仿真实现Linux常用命令,展现类Unix系统调用的工程级别的实现思路,重点讲解Linux环境下的开发和接口函数,多线程并发,并最终实现了一个带有CGI功能的小型http服务器。本课程结合计算机程序运行原理等内容,增加学员实际编程代码量,提升实战能力。
第1章:Linux系统入门:核心命令实战 |
1.课程介绍 |
2.Linux程序设计概要介绍 |
3.从POST到Init,Linux的引导过程:在BIOS之后,操作系统才正式接管硬件资源 |
4.Linux命令行常用快捷键:加速你与Linux的交互速度 |
5.cd:切换目录命令常用技巧 |
6.mkdir:递归建立目录与批量克隆目录结构的技巧 |
7.touch:mtime,ctime和atime |
8.ls:过滤文件与目录和查找最新更新但不知文件名的技巧 |
9.find:按时间查找 |
10.find-name和-type:按名称、按类型和查找结果取反 |
11.find-maxdepth:控制检索目录的深度 |
12.find-newer:查找比某个文件后创建的文件 |
13.find与exec:在目录中删除所有的文件但保留指定的文件 |
14.xargs:提取命令行参数 |
15.chmod与umask:文件目录权限 |
16.cat /dev/null:创建文件、显示文件以及清空文件内容 |
17.cut:截取文件内容 |
18.vi使用(上):介绍 |
19.vi使用(下):实战操作 |
20.grep命令:过滤文本信息 |
21.ps:查看进程命令 |
22.netstat:查看网络 |
23.gcc:-I解决目录进入,-w压抑警告和O2性能提升演示 |
24.gdb:调试工具介绍 |
25.此节要删除 |
第2章:导论-从编写Linux命令开始学习系统编程 |
1.Linux系统编程学什么:内核的存在性是理解系统编程的重要前提 |
2.从more开始学写Linux命令:main函数argc,argv的意义与gdb使用 |
3.VT100的模拟、应用程序与标准输入直接交换数据 |
4.Linux编程中man的重要地位与段错误排查:学习编写命令who |
5.gtime函数、timeval、time_t信息的由来与Linux中的日期显示:who2的改进实现 |
6.用户与命令交互设计技巧:scanf误用的死循环bug、自己覆盖自己与cp命令的实现 |
7.ls命令模拟实现(上):使用readir获取目录信息 |
8.ls命令模拟实现(中):time_t结构体与unix时间戳-ls显示文件详细信息 |
9.ls命令模拟实现(下) |
第3章:LINUX-I/O篇 示例与实践 |
1.fgets与gets中行I/O的溢出风险:文件描述字、流式编程 |
2.fgetc,fputc抛弃换行符后提取单字符命令示例:字符IO |
3.fseek与文件写入定位:a+与w+写入数据的定位比较 |
4.fflush引发的缓存问题:全缓存\行缓存\无缓存细节详解 |
5.fread、fwrite共享文件偏移:同一个文件描述符的操作必然共享相同的文件偏移 |
6.fwrite API:参数size与nmemb的对应 |
7.ulimit系统最大文件个数与lsof侦测文件资源泄漏:从C库IO到系统调用 |
8.open\create 创建文件中的umask与文件权限问题 |
9.轮询模式:read、O_NONBLOCK阻塞读问题与非阻塞 |
10.O_TRUNC:为什么文件要截断 |
第4章:Linux- 进程篇 示例与实践 |
1.程序与进程区别:main函数是C程序的入口点吗?进程的生命周期 |
2.进程生命周期的消亡atexit函数:非正常终止的进程atexit不会被OS调用 |
3.进程上下文与环境变量putenv、setenv:优先使用set而非put |
4.进程创建:32位系统可以支持的最大进程数32768 |
5.fork与进程创建:父子进程推进顺序详解 |
6.fork炸弹:子进程不是从main而是从fork返回的地方开始运行 |
7.僵尸进程的避免:系统资源没有放在进程的推进 |
8.exec与进程映像替换:exec就是对进程实现了换头手术 |
9.守护进程 |
10.进程编程综合实践:简易shell的模拟实现 |
11.简易shell的模拟实现(一):execvp与命令执行 |
12.简易shell的模拟实现(二):fork,wait与MiniShell实现 |
第5章:Linux文件系统- 文件与目录 |
1.标准C库中的IO函数实际上就是对POSIX IO函数的封装 |
2.fileno获取当前进程的文件描述符:Linux始终返回当前最小的值作为当前进程的文件描述符 |
3.readdir/readdir_r操作目录 |
4.综合应用pwd命令的实现(上):inode与文件对应关系的解读 |
5.综合应用pwd命令的实现(下):文件在目录中的含义 |
6.文件锁的概念 |
7.文件锁:数据独占访问的一种形式 |
8.文件区域锁 |
第6章:Linux文件系统- IO与设备文件编程 |
1.一切设备皆文件:从tty看终端设备同样具有属性、权限 |
2.终端与进程挂钩:Linux有一套维护设备连接的机制 |
3.termios结构应用:设备文件的控制就是设置对应的标志位 |
4.类Unix交互风格的程序的实现:规范模式、raw模式的案例 |
5.IO重定向与Linux概念和内涵 |
6.stdin重定向到文件:close/open策略实现从文件而非键盘读取信息 |
7.dup/dup2重定向详解:open/close/dup/close策略 |
第7章:进程间通信- 信号 |
1.信号本质是软中断 |
2.进程对信号的3种响应:SIG_DFL信号默认处理函数的恢复 |
3.alarm的定时器作用与sleep的可中断式睡眠 |
4.定时器信号案例(上):飘动的字符串 |
5.定时器信号案例(下):飘动的字符串 |
6.传统信号的弊端:信号处理函数的可重入性 |
7.信号阻塞block和未决pending的意义:内核是信号传递的媒介 |
8.信号排队与丢弃现象:信号不可以为进程中的事件计数 |
第8章:线程 |
1.函数是线程的载体 |
2.第一个线程程序:使用lpthread编译多线程程序 |
3.并发编程中的第一类与时间有关的错误 |
4.单条C语句依然存在线程不安全的风险 |
5.使用信号量实现互斥 |
6.缓冲区读写:生产者/消费者模型的实用案例 |
7.负载均衡的线程分配难以建立:工程中的多线程开发经验分享(一) |
8.线程组ID(ttid)、pThread类型的id不能唯一标识线程:工程中的多线程开发经验分享(二) |
9.pthread_Join与资源泄漏:工程中的多线程开发经验分享(三) |
第9章:进程间(IPC)通信 |
1.IPC概念的外延:网络通信也是进程间通信的一种 |
2.mkfifo:第一个管道程序 |
3.管道的建立依赖两个程序的通信 |
4.Pipe与匿名管道 |
5.利用Pipe在父子进程间传递数据 |
6.利用Pipe实现Linux管道命令| |
7.SIGPIPE信号、未正确关闭读写端的管道异常 |
8.ipcs和msgget:消息队列的创建 |
9.msgsnd和msgrcv:消息队列的接受与删除 |
10.shmget和shmmat:共享内存的通信 |
11.信号在IPC中的风险:kill信号发送、多线程不宜与fork混用 |
12.popen与协同进程:从进程中获取数据是进程对文件的抽象 |
第10章:Socket与网络编程 |
1.Socket的内涵:本地socket通信的演示案例 |
2.Socket网络编程案例:初学者的一个常见bug调试 |
3.htons与kill 服务进程:网络字节序引起的端口号bug案例 |
4.提领指向不完全类型的指针bug的解决:socket的封装案例 |
5.mini型http服务器的实现(上):利用rio增强IO流 |
6.mini型http服务器的实现(中):静态http解析的实现 |
7.mini型http服务器的实现(下):CGI的实现 |
技术专家系统讲解传授编程思路与实战。
专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。
超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)
企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。
2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。
满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。
【完善的技术体系】
技术成长循序渐进,帮助用户轻松掌握
掌握C/C++知识,扎实编码能力
【清晰的课程脉络】
浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。
【仿佛在大厂实习般的课程设计】
课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。
Linux使用及开发快速入门
熟悉Linux系统编程的核心系统调用
熟悉linux系统编程的基本调试技巧
介绍Linux系统编程常见的bug解决思路