- 博客(89)
- 收藏
- 关注
原创 【计网】自定义序列化反序列化(二) —— 实现网络版计算器【上】
所以序列化与反序列化问题显得尤为重要,就上一篇所谈论的计算问题进行序列化与反序列化处理。处理两个模块,一个是客户端发来的请求,一个是服务器端处理请求后返回的响应。所以在这里设计两个类 Request 和 Response。我们目的是实现网络版计算器,客户端发送Request,其中包含左操作数,右操作数,以及运算符。服务器端需要对Request进行处理,但是不排除客户端发送的数据是非法运算,所以Response类不仅记录结果,还需要记录运算错误方式。
2024-11-28 16:10:14 812
原创 【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
文章目录:Tcp协议Socket编程 应用层简介 序列化和反序列化 重新理解read/write/recv/send及tcp的全双工 Socket封装 服务器端改写 我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序, 都是在应用层。 不论是Udp Socket编程还是Tcp Socket编程,所传的数据都是字符串类型的的数据,但是如果我们想要传输结构化的数据呢?什么是结构化的数据?其实在我们第一次说计算机网络时就已经提到过,结构化的数据就是
2024-11-26 16:55:24 1181 1
原创 Tcp协议Socket编程
本次socket编程需要使用到 日志文件,此为具体日志编写过程。以及 线程池,线程池原理比较简单,看注释即可。文章目录:Tcp协议Socket编程 TCP Socket API简介 构建Tcp_echo_server TcpServer服务器端 服务器循环控制 Service服务 Tcp客户端 Version 0:单进程服务 Version 1: 多进程服务 Version 2: 多线程服务 Ve
2024-11-21 17:42:55 922 1
原创 特殊类设计与设计模式
文章目录:特殊类设计与设计模式 特殊类设计 设计一个只能在堆上创建对象的类 设计一个只能在栈上创建对象的类 请设计一个不能被拷贝的类 请设计一个不能被继承的类 设计模式 饿汉模式 懒汉模式 如果只能在堆上创建对象,也就意味着在创建对象的时候必须使用new来创建对象,那么我们就需要: 除了将构造函数私有以外,我们知道,如果没有实现拷贝构造与赋值重载,类会默认生成,并且都是以值拷贝的方式对另一个变量初始化、赋值,所以为了避
2024-10-22 10:17:54 1180
原创 C++智能指针
如果这两条语句只有任何一条语句执行,都不会报错,就如上图,当n1指向n2时,n2的引用计数++, 假设n2生命周期先到,那么n2 先析构,引用计数-1,然后n1的生命周期结束,n1调用自己的析构函数,引用计数减为零,清理n1资源,而n1的_next指向n2, 所以同时会调用n2的析构函数,那么n2引用计数也减为零,n2清理资源。如果是上图中的代码,那么都会有一次赋值操作,又因为赋值时自己的引用计数本身就是1,所以不会被减去,而对方的引用计数又会增加,所以他们的引用计数都是2。
2024-10-17 21:00:13 956
原创 C++异常
文章目录:生产与消费者模型 C++异常 异常概念 C语言传统的错误处理方式 C++异常 异常的使用与安全 异常使用 异常规范与开发常用异常体系 异常安全 C++标准库的异常体系 异常的优缺点 异常优点 异常缺点 异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。 如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catc
2024-10-14 20:12:14 921 1
原创 Linux线程同步与互斥
上图中,线程1因为某些原因需要线程切换,进入等待队列。那么此时线程1需要把自己的上下文数据带走,其实就是把寄存器当中保存的值带走,并且没有对内存交换的0进行写回,也就是说此时内存中的mutex是0,那么线程2在交换mutex到寄存器当中,就会进行状态检测,此时检测到状态为0,说明当前已经有人占用锁了,则线程2进入到挂起状态,后来的线程依旧会如此,直到第一个线程执行完毕将锁释放。大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。
2024-09-22 17:52:28 699 4
原创 Linux线程基础
🌎 Linux线程文章目录:Linux线程 线程概念 线程的理解 再谈地址空间 线程控制 线程等待 线程资源共享 线程退出 线程异常 线程分离 理解线程tid 线程切换 线程优缺点 Linux线程 vs 进程 资源共享 线程私有 线程传参及返回 C++11多线程🚀线程概念在一个程序里的 一个执行路线就叫做线程(thread)。
2024-09-19 20:28:22 1154 1
原创 Linux进程信号详解【下】
文章目录:Linux信号详解 核心转储 信号保存 信号的三种状态 信号集操作函数 sigset_t类型接口 sigprocmask接口 sigpending接口 使用场景及理解 信号处理 信号处理时间 信号处理流程 捕捉信号的其他方式 可重入函数 volatile关键字 SIGCHLD信号 在进程等待这一章节,有一张图我没有详细解释: 当时在
2024-07-26 15:27:17 1360 87
原创 Linux之进程信号详解【上】
所以产生信号不论是系统调用还是软件条件,亦或者是键盘、异常产生的信号,都是由操作系统同一发送的,因为OS作为软硬件资源的管理者,当进程出现异常时,需要对进程做相应的处理,这也就是为什么我们在windows下运行一些带有错误的程序时,进程会直接终止。
2024-06-09 12:09:59 2333 105
原创 【MySQL】库的基础操作
本文简单说明了数据库的增删查改基本SQL语句及其选项。数据库编码集和校验集要一一对应,不同的编码集对一些特定的文字或符号有不同的识别方式,不同的校验集对一些数据操作的结果可能不同。为了保证数据安全问题,保证容灾性,所以有必要对重要的数据库进行备份,备份与恢复的语句也在本文介绍。数据库安全是要放在首位的,保证数据安全就要定期检测数据库连接的情况。本文到此结束,如果本文能帮到您的话还望三连支持啊~~
2024-05-26 22:56:46 3144 87
原创 深入浅出动静态库
当你在Linux系统上编写和运行程序时,动态库和静态库是两个非常重要的概念。它们不仅影响着程序的编译和执行效率,还直接关系到程序的可移植性和灵活性。
2024-05-18 23:23:30 977 93
原创 Linux文件系统详解
文件系统作为Linux重要组成部分,本文我们就针对Ext2文件系统进行详细解读,了解该系统如何将文件管理的井井有条。
2024-05-16 06:30:00 1124 22
原创 Linux-基础IO
在刚开始学习Linux的时候,我们记住了Linux下一切皆文件,我们通过这篇文章来深入了解Linux下文件的构成及应用。
2024-05-14 10:15:41 1966 78
原创 极简shell制作
通过我们之前所学Linux知识以及C语言的知识,到目前为止,我们完全可以独立完成简易shell的制作,那么话不多说,开始今天的话题!
2024-04-28 11:17:27 2081 112
原创 Linux-程序替换
在Linux系统中,进程程序替换是一种重要的操作,通过进程程序替换,程序可以更新自己的代码和数据,让进程富有动态性和灵活性,话不多说,开始今天的话题。
2024-04-26 12:27:36 815 1
原创 进程地址空间
进程地址空间是操作系统提供给每个应用程序或进程的一块独立的内存空间,它决定了进程能够访问的内存范围以及内存布局。话不多说,开启我们今天的话题!
2024-03-22 23:49:16 1144 91
原创 Linux下进程的调度与切换
在Linux操作系统中,进程的调度与切换是操作系统核心功能之一,它直接影响着系统的性能和响应速度。那么话不多说,开启我们今天的话题!
2024-03-17 22:53:52 2373 89
原创 【Linux】进程优先级
并发与并行不同,我们大部分人的电脑其实只有一个CPU,而进程通常会有多个,为了考虑资源分配等问题,每个进程都有自己的时间片,时间片用完就切换下一个进程,自己则重新排队,等待再次调度。在日常生活中,我们有很多排队的场景,公路上等红灯,在医院挂号,或者是在食堂吃饭等等,但是我们在公路上救护车可以无视红灯,医院里急诊病人可以优先挂号,以及食堂里老师肆意的插队…如果我们食堂的窗口远大于人数,如果我们自习室里的座位非常多,人却非常少,我们是不需要排队的,也就是说,当资源充足的时候,我们并不需要排队。
2024-03-16 18:01:42 2055 72
原创 【Linux】进程状态
在Linux操作系统中,进程状态是一个重要而又复杂的话题。了解进程状态可以帮助我们更好地理解操作系统的运行机制。那么话不多说,开启我们今天的话题。
2024-03-14 17:45:33 2193 53
原创 初识Linux下进程
上回我们简单介绍了一下进程的概念以及让大家见到了运行中的进程,今天我们来了解更多进程相关知识,话不多说,开启我们今天的话题!
2024-03-11 00:40:34 1615 100
原创 LeetCode-1004. 最大连续1的个数 III
这题是一个很经典的滑动窗口的问题,结合我们之前做的滑动窗口的问题来看,滑动窗口出现的场景通常需要枚举数组所有情况,也就是暴力,然后我们在暴力的基础上进行优化。
2024-03-10 00:01:03 1241 6
原创 合并有序链&&反转链表(递归版)
递归逻辑三步走,首先看时候能拆分成重复子问题,再看如何执行递归,最后别忘记结束递归的边界条件!虽然题目很简单,但是以递归的方式解决还是可以很好的锻炼我们的递归逻辑思维的,总得要一步一个脚印,慢慢的啃下这块硬骨头。
2024-03-06 12:33:08 1029 10
原创 每日一题:LeetCode-LCR 007. 三数之和
💪💪当然切记不可😈走火入魔😈,每日打怪,拾取经验,终能成圣🙏🙏!我们还可以在暴力的基础上使用双指针解法,我们首先定住一个值,然后使用双指针来标记另外两个值,定住的值不动,双指针遍历剩下的数组元素,找出所有正确的三元组,尾插进二维数组里,数组遍历完,定值再向右遍历,双指针重置。【1】当固定值不变的时候,左指针的的下一个位置的值和上一个位置的值相等,再次进行比较,就是一个新的三元组,但是这个三元组的值和上一个三元组的值就重复了,不仅左指针如此,右指针也是如此,所以需要将左右指针指向和上一个值不同的值。
2024-01-12 12:51:40 2069 26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人