Ryan Blog

「离开世界之前 一切都是过程」

Linux Socket网络编程

"learning……"

我来到,我看见,我记录…… 网络通信 网络通信是指两台计算机中的程序进行传输数据的过程。 客户程序:指主动发起通讯的程序。 服务程序端:被动等待,然后为向他发起通讯的客户端提供服务。 第一个socket网络通信程序 客户端 使用g++对demo1进行编译,然后使用bash命令查看服务端的ip和端口,利用./demo1 IP 端口号 运行程序 1 2 3 4 5...

操作系统

"learning……"

风花雪月本闲,而扰攘者自冗….. 纯理论八股复习 操作系统绪论 操作系统分类 分时操作系统 实时操作系统 硬实时:导弹、通信 软实时:订票 操作系统运行机制 CPU上运行两种程序:区分内核程序(操作系统kernel开发)和应用程序(应用开发) 刚开机时,CPU为内核态,操作系统内核程序先上CPU运行 ...

Linux 生产消费者模型实现

"learning……"

太年轻的人他总是不满足。 生产消费者模型 PV原语 模型用循环队列+信号量(semaphore)实现。两个信号量,一个是互斥锁Mutex(用来锁共享内存),一个是条件变量condition(用来提示共享内存内有多少个数据资源)。 生产者-消费者问题是一种常见的多线程/多进程问题,通常用于解决生产和消费两者之间的协作关系。生产者负责生成数据(产品),消费者负责消费数据。它们通过共享一...

Linux 信号与进程基础

"learning……"

天地本宽,而鄙者自隘…… Linux的信号(Signal)基础 在Linux中,信号(Signal)是一种用于进程间通信的机制(软件中断),允许操作系统通知进程发生了某些事件。信号可以被用于通知进程需要处理的异步事件,比如终止、暂停、继续运行等。信号在Linux和类Unix系统中广泛用于进程控制、系统管理和进程间通信。 信号的基本概念 信号是由内核或其他进程发送的通知,指示...

Linux 基础操作

"learning……"

岁月本长,而忙者自促…… Linux的时间操作 time_t别名 time_t是long的别名,time_t类型和long是一样的,在中定义,表示1970.01.01 00:00:00(linux纪元)开始到现在的秒数 time库函数 time函数获得的是从linux纪元到现在所经历的秒数,要通过localtime库函数转化 1 2 3 4 5 6 7 #include<...

gdb 调试工具

"learning……"

简单和规律确实能带来放松 安装gdb ubuntu环境下用apt下载,centos只需要把apt替换成yum即可 1 2 sudo apt update sudo apt install gdb 编译准备 正常编译,不带有gdb调试信息 1 g++ test.cpp -o test 加入gdb调试信息 1 g++ -g test.cpp -o test gdb常用命令 ...

g++ 编译细节、库制作和Makefile

"learning……"

Hey,亲爱的工作狂先生,新的一年不要对自己太苛刻了~ VScode和g++11下载 用以下命令下载VScode,下载完之后安装chinese拓展、C++拓展、makefile拓展 1 sudo snap install code --classic //下载code 用以下命令下载g++编译工具 1 sudu apt install g++ 编译过程 C++ 编译过程可以...

C++ 堆与优先级队列

"learning……"

魔非魔,道非导,善恶在人心。欲非欲,情非情,因缘由天定。 堆 堆是一个完全二叉树结构,但是它却存储在一个数组里面。所谓完全二叉树,即这棵树的元素是从左到右从上到下填充的,每一层都是连续存在的。 将这颗完全二叉树从左到右从上到下填入数组,我们可以发现:一个结点为i的父节点,其子节点下标为2i+1和2i+2;对于一个下标为i的子结点,其父节点为(i-1)/2,由于整形会自动向下取整,所...

C++ 并查集

"learning……"

你有一千个名字念在嘴边,却只是为了掩盖心中的那一个…… 并查集 并查集(Union-Find)是一种数据结构,主要用于处理一些不交集(Disjoint Sets)的合并及查询问题。并查集通常用于图论中的连通性问题,如判断两个元素是否属于同一集合、合并两个集合等。并查集通常使用路径压缩和按秩合并(按大小合并) 两种优化技术,使得查询和合并操作的时间复杂度接近常数时间,通常为 O(α(...

C++ Trie前缀树

"learning……"

只要耐心等待,裂缝总会出现。 Trie前缀树 Trie(前缀树)是一种用于高效存储和搜索字符串的树形数据结构,适用于字典、自动补全、IP路由表、拼写检查等应用。 Trie基本结构 每个节点:代表字符串的一个前缀。 根节点:为空,代表空前缀 ““。 边:代表字符,从根到某个节点的路径代表一个字符串。 终止标志:标记某个字符串是否完整存在于 Trie 中。 1 ...