海贼班
9 应用层协议
概述 网络应用程序的体系结构主要分为CS 结构和P2P 结构。
前者是客户端(Client)/ 服务端(Server)结构,如微信、QQ、游戏。
后者是端(Peer)到端结构,又叫对等体系结构,如迅雷、百度网盘。
进程通信时,没有明确的 C/S,发起者即为客户端…
8 计算机网络概论
OSI 7 层模型 注意每层对应的数据单元。
数据的封装
发送前,不断地加头部:报文👉报文段👉数据报👉帧
到达交换机,从帧头中找到路由器的地址
到达路由器,拆头部,加头部
当匹配到具体主机时,再不断地拆头部,得到数据
分组交换 VS. 电路交换
分组交换网络
通…
《C++程序设计》小作业
默认基于 C++11 标准 在 C++ 中实现复数类
要求:
(1)保证数据的安全性
(2)通过构造函数直接给实部和虚部赋值
(3)完成复数的加减乘除运算
分析需求
(1):需将所有数据定义为 private 类型
(2):可使用初始化列表
(3):注意除法细节
代码实…
1 类和对象
类型和变量 可理解为类和对象的别名
C++ 中只规定了类型的最小位数,所以有的编译器可以实现更多位数的
参考 cppreference——基础类型
类型
= 类型数据 + 类型操作
例如:int=4 字节大小的数据 + 基本操作(+-*/%),可…
《C++程序设计》笔记汇总
掌舵:光哥 传送门
从 C 到 C++
类和对象
重载
【附加】
Effective C++ 阅读分享
小作业
有问题多多指点!
Effective C++阅读分享
除了过程、对象、模板、函数四种编程范式,还有元编程形式,其可包括在泛型编程里,即模板;STL 就是元编程的一个典范 可体会学习 C++ 的方法
能不用 #define 就不用,为了方便调试;而用 define 容易掩盖错误,因为所有宏对编译器不可见
对于单纯常量,最好用…
0 从C到C++
C++ 比 C 难学,究竟难在哪里? 感性认识一下 C++ 的美?
问:为什么以C++ 11标准作为学习重点?
答:C++ 03 到 11 变化很大,而 11 到 14、17 变化很小,20 标准很新,还不普遍,所以从 C++ 11 标准入手是非常好的选择。
C…
7 Socket编程基础
套接字是什么?网络编程是做什么的? 了解 TCP/IP 五层模型、OSI 七层模型
类比
套接字 —— 快递员
运输层 —— 快递公司:TCP—— 某丰快递公司,UDP—— 某通快递公司
交通运输道路 —— 因特网
通讯地址 ——IP
—— 运输层协议 ——
类…
《胡船长专属课堂》笔记汇总
掌舵:还用说? 传送门
高级数据结构
二叉排序树、AVL 树
红黑树
哈夫曼树与哈夫曼编码
字符串匹配算法(上):BF、KMP、SUNDAY、SHIFT-AND、Hash
字符串匹配算法(下):Trie、AC、DAT
面试笔试算法下
从递推到动态规划(上)
从递推到动态规…
5 字符串匹配算法(下):Trie、AC、DAT
多模匹配问题,与字符串匹配相关的数据结构 多模匹配问题
有多个模式串的匹配问题,常规思路如下:
Step1:多个模式串,建立成一棵字典树
Step2:和文本串的每一位对齐匹配,模拟暴力匹配的过程
Trie
又名字典树、单词查找树,顾名思作用
看图理解
思考树…
《面试笔试算法下》笔记汇总
掌舵:光哥 传送门
从递推到动态规划(上)
从递推到动态规划(下)
单调队列与单调栈
线段树
树状数组
树状数组、线段树练习题
有问题多多指点!
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…
4 字符串匹配算法(上):BF、KMP、SUNDAY、SHIFT-AND、Hash
一些经典、绝伦的单模匹配相关算法 相关定义
单模匹配问题:在文本串 $s$ 中查找某个模式串 $t$ 是否出现过
多模匹配问题:查找多个模式串 $t$
文本串 / 母串:被查找串 $s$
模式串:待查找串 $t$
文本串长度为 $m$,模式串长度为 $n$
暴力匹配法
所…