- 博客(49)
- 收藏
- 关注
原创 传输层协议UDP
然而64K在当今的互联网环境下,是⼀个非常小的数字;如果我们需要传输的数据超过64K,就需要在应用层手动的分包,多次发送,并在接收端手动拼装。服务的生命周期就跟随会话,会话关闭,那么服务就关闭;所以我们要让服务自成会话,这就是守护进程化。但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序⼀致。TCP、UDP套接字都会继承它,在它的基础上,新增自己的特性。我们登录Xshell的过程,就是构建会话的过程。如果缓冲区满了,再到达的UDP数据就会被丢弃。发送信号,都是向一个组发送信号。
2026-05-14 10:15:10
474
原创 网络基础概念
TCP / IP协议的本质是⼀种解决⽅案TCP / IP协议能分层,前提是因为问题们本⾝能分层截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了OS源代码⼀般都是用C / C++语言写的📍 问题:主机B能识别data,并且准确提取a=10,b=20,c=30吗?回答:肯定是可以的!因为双方都有同样的结构体类型 struct protocol;也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有“共识”,能够识别对方发来的数据,这就是约定啊。
2026-04-22 12:44:17
435
原创 线程的同步与互斥
保证整个程序里,一个类永远只能创建唯一一个对象,不能 new 第二个出来(2) 单例模式的特点某些类,只应该具有⼀个对象(实例),就称之为单例;例如⼀个男人只能有⼀个媳妇;在很多服务器开发场景中,经常需要让服务器加载很多的数据(上百G)到内存中;此时往往要用⼀个单例的类来管理这些数据.
2026-04-20 22:27:30
371
原创 学习IO基础
pathname: 要打开或创建的⽬标⽂件flags: 打开⽂件时,可以传⼊多个参数选项,⽤下⾯的⼀个或者多个常量进⾏“或”运算,构成flags参数:O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定⼀个且只能指定⼀个问权限 O_CREAT : 若⽂件不存在,则创建它;需要使⽤mode选项,来指明新⽂件的访O_APPEND: 追加写返回值:成功:新打开的⽂件描述符失败:-1。
2026-03-24 14:16:44
393
原创 并查集(原理讲解+例题展示)
在学习树这个数据结构的时,讲到树的存储⽅式有很多种:孩⼦表⽰法,双亲表⽰法、孩⼦双亲表示法以及孩子兄弟表示法等。对⼀棵树⽽⾔,除了根节点外,其余每个结点⼀定有且仅有⼀个双亲,双亲表示法就是根据这个特点存储树的,也就是把每个结点的双亲存下来。并查集:是⼀种⽤于维护元素所属集合的数据结构,实现为⼀个森林,其中每棵树表⽰⼀个集合,树中的节点表示对应集合中的元素,根节点来代表整个集合。这是一道在洛谷上写的题目,所以使用全局的变量更加方便,根据输入要求,我直接把数组设置的足够大,那么就不用考虑越界的问题。
2026-03-05 21:58:06
394
原创 钻石收集者&是7倍数的最长子序列&Zuma
本篇是寒假的第二弹,虽然每天都有练习算法,但是假期的话想要挤出时间写博客还是比较紧张,还有Linux要学;今天就写了一道算法题,剩下的时间拿出来写博客吧!话不多说上成果!!!
2026-02-20 01:22:24
822
原创 动态规划-多重背包
今天是放寒假的重拾算法的第二天,渡过恐怖期末周后,这段期间都没怎么学习编程了,感觉自己又变成新兵蛋子了,趁寒假时间多,就多学学吧,这是寒假第一篇,争取寒假能写个十篇吧,话不多说上干货!!!
2026-01-26 17:00:01
601
原创 bfs解决拓扑排序问题
今天又遇到一个熟悉又陌生的算法,因为才刚学两个多月将近三个月的算法,对于学过的知识还是忘记的太过迅速了;虽然用iPad做了笔记,但是收效甚微,所以用博客复习和巩固学过知识显得尤为重要,话不多说上素材!!!
2025-12-25 01:29:49
172
原创 背包问题Ⅰ与归并排序
今天是开始备考蓝桥杯的第一天,写完算法巩固题发现许多内容还是不扎实像那些常用的算法思路并不是用起来得心应手,所以写下这一系列,方便复习与总结。
2025-12-17 01:48:19
1064
原创 C/C++内存管理与初阶模板
在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会free一定会释放空间,而析构函数不一定会释放空间new的原理1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造delete的原理1. 在空间上执行析构函数,完成对象中资源的清理工作2. 调用operator delete函数释放对象的空间new T[N]的原理。
2025-07-30 16:52:23
827
5
原创 C++中既重要又困难的部分—类和对象
class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前面或者后面加 _ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。
2025-07-28 16:14:14
956
9
原创 初识C++——开启新旅途
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下面的rand不在冲突了C++中域有函数局部域,全局域,命名空间域,类域(四大域,很重要);域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。
2025-07-19 17:29:45
6648
10
原创 数据结构——堆
1、若 i>0 , i 位置结点的双亲序号: (i-1)/2;i=0 , i 为根结点编号,⽆双亲结点。3、 若 2i+2,右孩⼦序号: 2i+2 , 2i+2>=n 否则⽆右孩⼦。2、若 2i+1,左孩⼦序号: 2i+1 , 2i+1>=n 否则⽆左孩⼦。此处已经在下面文章中的详细讲解,各位可以跳转阅读。
2025-07-12 15:01:51
500
3
原创 数据结构—排序
基本思想:希尔排序法又称缩小增量法;先选定一个整数(通常是gap=n/3+1),把待排序数据分成各组,所有距离相等的数据分在同一组内,并对每一组内的数据进行排序,然后gap=gap/3+1得到下一个整数,再将数组分成各组,进行插入排序,当gap=1时,相当于直接插入排序基本思想:每一次从待排序的数据元素中选出最小和最大的一个元素,存放在序列的起始/末尾位置,直到全部待排序元素排完基本思想:是一种二叉树结构的交换排序方法;
2025-07-10 19:50:00
5851
5
原创 数据结构——队列
QueueNode是结点结构,其中包含数据元素和下个结点的指针Queue是队列结构,其中包含头尾两个结点的指针,目的是为了降低算法复杂度。
2025-07-04 21:33:13
271
2
原创 数据结构——双向链表
2>反之,创建一个临时指针tmp保存phead的下一个结点,并且寻找最后一个结点,保存最后一个结点前一个结点,释放最后一个结点,把前后结点连接。<2>反之,保存哨兵位的下一个结点,再连接前后结点。<1>只有哨兵位,创建一个新结点,并且连接前后结点。<1>只有一个哨兵位,则直接返回,不用进行操作。
2025-07-02 02:20:54
389
2
原创 数据结构——单项链表
2> 反之,创建临时指针tmp,循环直到找到pos的上一个结点,创建一个新结点tmp1,并且按照tmp->pos->tmp1的方式连接起来。<2>反之,创建两个指针,prev用来存储被删结点的上一个结点,ptail来寻找最后一个结点,再进行空间释放操作。<2> 反之,创建一个新结点,并且创建一个临时指针指向原来头结点的下一个结点,再接入这个结点。<1>当链表一个结点都没有时,直接创建一个结点,并且把指针*pphead指向这个新结点。<2>反之,创建一个临时结点ptail,找到最后一个结点,接入新的结点。
2025-07-01 01:22:49
399
1
原创 数据结构——顺序表
一开始为0,初始为四个字节;一开始非0,二倍增容。(2)dest处是value的数据,src为不是value的数据。=size,则把pos之后的数据向前移动一位。因为数组是STNode*类型,所以需要将arr置空。(1)若pos=size,则为尾删,直接size减1。先检查空间是否足够,足够则不用扩容,否则扩容。size减1并且把后面的数据全部往前移动一位。assert函数:判断指针是否有效。逻辑结构:线性(连续的一条直线)只用将有效数据个数size减一。(1)dest站岗;把所有的数据往后移动一位。
2025-06-29 00:33:03
212
1
原创 C语言复习(12)——编译、链接和预处理
在预处理内,直接被替换name:名字stuff:内容其中的parament-list是一个由逗号隔开的符号表,它们可能出现在stuff中注意:参数列表的左括号必须与name紧邻,如果两者之间有任何空⽩存在,参数列表就会被解释为stuff的⼀部分提示:所以⽤于对数值表达式进⾏求值的宏定义都应该⽤这种⽅式加上括号,避免在使⽤宏时由于参数中的 操作符或邻近操作符之间不可预料的相互作⽤在编译⼀个程序的时候我们如果要将⼀条语句(⼀组语句)编译或者放弃是很⽅便的。因为我们有条件编译指令常见的条件编译指令。
2025-04-25 15:34:41
1582
原创 C语言复习(11)——动态内存管理与文件操作
若我们想要使数据持久化保存,我们可以使用文件1、 磁盘(硬盘)上的文件是文件2、程序文件3、数据文件4、文件名5、 二进制文件和文本文件。
2025-04-24 13:59:06
1461
原创 C语言复习(9)——内存函数与数据在内存中的储存
特点:1、因为接受参数是void*类型,所以可以接受任意类型的数据;但是,在引用时必须强制类 型转换2、memcpy处理的是两块不重叠的内存数据的拷贝memmove可以同时处理重叠与不重叠两块内存的拷贝3、对于memcpy函数,能否处理重叠部分内存数据取决于编译器本身(vs2022可以)4、内存重叠的定义:是指两个或者多个内存区域有部分或者全部地址空间是相同的情况5、memcpy的模拟实现**防止出现内存重叠,创建两个数组,开辟两块空间区域。
2025-04-22 19:19:59
669
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅