ARM Linux 开发基础技能实战演练
主要介绍 Linux 应用开发基础技能,包括以下五方面的内容:
1、Git 的使用
2、面向对象 C
3、文件读写
4、进程与线程
5、TCP、UDP 通信基础
1 关于版本管理系统
记录文件内容变化,以便将来查阅特定版本情况
2 Git与其他版本管理系统的异同
3 Git的历史
基于Ubuntu
1 安装以及配置
2 获取仓库
3 记录每次变更
4 远程仓库操作
命令示例如下
1 基于文件快照的记录方式
2 Git的分支
3 分布式的Git
司令官与副官工作流适用于更加大型的组织
blessed repository = 项目仓库 lieutenant = 副职官员
1 使用git本地仓库管理 Hello world程序开发
演示新建helloworld文件,运行成功,提交;
演示复制写文件的代码文件,运行成功,提交;
演示使用git checkout回退到helloworld,运行成功;再使用git checkout master恢复到最新版本;使用git reset彻底回到某个历史版本,丢弃之后的更改
2 在自己电脑搭建Git服务器
新建用户、配置git仓库
3 使用git进行多人的分工协作开发
在同一台电脑使用两个不同用户开发 Hello world
1 类与对象
2 封装、继承与多态
1 类的实现
2 封装的实现
3 继承的实现
派生类定义中必须把基类放在最前面,这样方便将派生类强制类型转换为基类
4 多态的实现
并不是真的要画图,只是用来展示程序框架
黑色箭头为继承,蓝色箭头为使用【Canvas只能管理Shape,不认识Circle,后续代码需要强制转换】
画图程序流程图如下
源代码如下
main.c
canvas.h
canvas.c
shape.h
shape.c
circle.h
circle.c
运行效果
1 文件的概念
2 Linux系统中文件的类别
3 文件描述符
4 文件指针
1 系统调用常用函数
原子读写主要用于多线程
函数原型如下
2 标准IO库常用函数
函数原型如下
3 文件描述符与文件指针的关系
1 系统调用文件读写实例
将一个文件逐个字符读出并写入另外一个文件
O_TRUNC若文件已存在,则截断为0byte
O_CREAT若文件不存在,则新建文件
运行效果如下
2 标准IO库文件读写实例
3 系统调用与标准IO库的比较
使用time命令对比执行时间
视频提到POSIX,找到一篇文章,存在这里
posix是什么都不知道,还好意思说你懂Linux?
1 什么是进程
中括号的内容是内核自动启动的
2 进程与程序的关系
3 父进程与子进程的关系
1 什么是线程
linux将线程称之为【轻量级进程LWP】
下图中同一个进程PID23044有多个线程LWP
2 进程与线程的关系
3 线程的同步
1 查看系统中的进程和线程
-e列出系统所有进程、-o列出属性值、pid进程ID、comm进程名称、cmd进程启动方式
ppid parent process父进程ID
RTPRIO优先级、NI nice优先级的权重 -20~19、pcpu占用CPU的百分比、
2 进程的创建
3 线程的创建和同步
线程同步
全局变量sum加锁
1 TCP/IP背景和介绍
2 基本概念介绍
端口号用于区分同一台PC机内运行的不同软件【即服务】
1 传输层协议
2 UDP概述
3 UDP报文
1 TCP概述
2 TCP报文
3 连接的建立和断开
4 TCP可靠传输的实现
1 IP数据报
2 IP地址分类
3 子网划分
4 路由选择
1 UDP echo实例
在同一台电脑先运行server,随后运行client端,client发信息,收到server回复。
2 TCP echo实例