Linux
7 Socket编程基础
套接字是什么?网络编程是做什么的? 了解 TCP/IP 五层模型、OSI 七层模型
类比
套接字 —— 快递员
运输层 —— 快递公司:TCP—— 某丰快递公司,UDP—— 某通快递公司
交通运输道路 —— 因特网
通讯地址 ——IP
—— 运输层协议 ——
类…
6 多线程编程基础
进程间通信复杂 [内存空间独立]、切换成本高 [时间局部性],所以发明了线程 线程
一个进程的分支 [pthread],本质上是一个轻量级的进程
通信方便,因为一个进程里的多个线程共享内存
切换成本低,因为内存是共享的,在切换线程时不需要置换缓存
pthread…
基于文件的进程间通信——用100个进程抢算累加和
设置一个并发度INS,表示要开的进程数量 使用这INS个进程,计算从start到end之间的数字累加和
start和end通过getopt解析命令行参数获取
Copy
./a.out -s 12 -e 24
输出一个整型结果:sum
[注意]
主要涉及文件及进程相关操…
5 进程间通信
IPC—— 进程间通信 —— 共享内存 ——
父亲生孩子之前约定好共享的数据位置
相关接口:shm*
shmget
分配 System V 类型的共享内存段 [段式内存]
[PS] System V 的通信方式,还在沿用;其启动方式已经被摈弃
man shmget
原型…
git commit的-m原理实现
[类似 git commit -m "msg" 的功能] 使用 - m 选项时直接打印消息,未使用 - m 选项时自动打开 vim 供输入消息
详细说明
① 当含有选项和选项参数 - m "first commit" 时
直接打印相关消息
② 当没有 - m…
4 高级进程管理
进程调度 进程调度是一个内核子系统,用户管不了
进程调度的主要任务是决定哪一个就绪状态的进程先运行
就绪进程是非阻塞进程,已具备运行条件,不需要阻塞等待了
阻塞进程就是正在睡眠 [不占用 CPU] 的进程,需要内核唤醒的进程
三态模型
阻塞、就绪、运行
阻塞…
Linux中ls -al的手动实现
实现与 Linux 原生命令【ls -al】类似的效果 需要的信息有:文件信息、连接数、用户名、组名、文件大小、修改时间、文件名
附加实现:文件排序、颜色美化、软连接显示
已实现 ls -al 的基本模板
思路流程图
获取命令行参数
捕捉 ls…
3 多进程
什么是进程 进程是程序在内存中的镜像,是正在运行的程序,是程序的实例化,是一个复杂的集合体
包含开辟的内存空间、用户信息、组信息、权限、占用的资源、正在跑的代码、打开的文件等等
与之对应
① 什么是程序
程序是编译好的可执行的二进制文件,放在磁盘上
就是一个普通文…
《网络与系统编程》笔记汇总
掌舵:宿船 传送门
课程介绍及命令行解析函数
文件、目录操作与实现 ls 的思路
阻塞与非阻塞 IO
多进程
高级进程管理
进程间通信
多线程编程基础
Socket 编程基础
计算机网络概论
应用层协议
[Task001] Linux 中 ls -al 的手动实现
[T…
2 阻塞与非阻塞IO
理解两者的真正含义及区别,能回答以上问题 两者的字面意思
上班
阻塞:上班时堵车了,等或者使用其他方法,总之要去上班
非阻塞:上班堵车了,直接不去了
老妈让买酱油
阻塞:没有酱油了,问妈要不换别的,或者换别的买
非阻塞:没有酱油了,不买了
让小明写报告
阻塞…
1 文件、目录操作与实现ls的思路
文件操作 【引入】之前学过的 cp、mv、cat 命令,都涉及到文件的读写
cp:读→写
mv:读→写→删
cat:读→写
上面这些步骤是如何实现的呢?
【底层操作,基于文件描述符】
open
打开或创建一个文件 [别名:openat、create]
man 2…
0 课程介绍及命令行解析函数
[如何实现命令选项?可以想到主函数中的输入参数 argc、argv] getopt 函数
【命令行解析函数】
<unistd.h> → Unix Standard
⭐函数原型
int getopt(int argc, char * const argv…
文件特殊权限的常用场景
实验环境:Ubuntu18.04 远程服务器 + WSL 2 本机 [版本一]
[版本二]
⭐考察对文件权限【尤其是文件特殊权限】的理解
文件权限:参考《Linux 入门及使用》笔记汇总 ——3 Linux 基础知识 ——用户和组以及文件权限的修改
文件特…
SSH免密登录的实现和本质思考
实验环境:Ubuntu18.04 远程服务器 + WSL 2 本机 在测过程中,你需要用到的数据在这里:测评服务的公钥
附加:免密登录的本质到底是什么?
【在本地测试】
ssh 主机名,已可免密登录
又是绿 :)
两步走⭐
【生成密钥对…
《Linux入门及使用》笔记汇总
掌舵:宿船 传送门
揭开 Linux 操作的神秘面纱
开启 vim 下的编程之旅
Linux 基础知识
命令系统
基本系统
系统信息的获取
Shell 编程基础
文件与目录、AWK
数据提取、软硬连接、线性筛、SED
复习总结🔚
[Task001] SSH 连接…
10 《Linux入门及使用》复习总结
vim 基本使用 快速跳转
行首:0 [^ 有效行首]
行末:$
文件开始:gg
文件末尾:G
任意行:12G—— 跳转到 12 行
复制
拷贝
剪切
多行操作
删除
x:删除一个字符
d
2dd:从当前行删除 2 行
d2G:删除第 2 行到当前行…
9 数据提取、软硬连接、线性筛、SED
数据提取操作 | 命令 | 功能 | 命令 | 功能 |
|:----:|:----|:----:|:----|:----:|:----|:----:|:----|
|cut | 切分 | grep | 检索 |
|sort | 排序 | wc | 统计字符、字数、行数 |
|…
回”家“问候 -- SSH连接Linux后的友好显示
实验环境:Ubuntu18.04 远程服务器 + WSL2 本机 在实现上述功能的基础上,还添加了【实时股票数据、上次登录时间、本月共使用时间】,有一定的容错性【Shell 判断、API 调用失败返回默认值】,还有一些可尝试功能,见文末【历史上的今天、拒绝的拜访者…