- 博客(16)
- 收藏
- 关注
原创 Kernel
功能:加载 Winsock 库、创建 TCP 套接字、绑定 IP 端口、监听连接、创建接受连接线程。功能:从客户端套接字接收数据,处理粘包问题,通过中介者转发数据。功能:回收线程资源、关闭所有套接字、卸载 Winsock 库n。功能:循环接受客户端连接,为每个客户端创建独立的数据接收线程。功能:线程入口函数,调用 recvData 处理实际数据接收。功能:向指定客户端发送数据,先发送长度再发送数据,避免粘包。
2025-11-10 17:49:07
150
原创 Linux基础 文件I/O 内存管理
本文系统介绍了Linux系统的文件管理、内存管理及相关操作工具。文件管理部分涵盖基础命令(cd、ls、cp等)、文件描述符机制、系统调用(open/read/write)、文件系统结构(ext2)及文件链接。内存管理部分详细讲解了页式、段式和段页式存储的原理与实现,包括地址转换、碎片处理及典型算法(OPT/FIFO/LRU)。此外还介绍了GCC编译工具链、GDB调试器及make自动化构建工具的使用方法。全文通过大量实例代码和操作演示,完整呈现了Linux系统资源管理的核心机制与实用技巧。
2025-11-10 14:44:46
701
原创 网络 协议 客户端服务端
文章摘要:本文系统介绍了计算机网络的分层模型与核心协议,重点解析了TCP/IP协议栈各层功能:应用层协议(HTTP/HTTPS/FTP/DNS等)、传输层(TCP/UDP特性对比)、网络层(IP/路由/ARP)及数据链路层(交换机/MAC)。详细阐述了TCP可靠性机制(三次握手、滑动窗口、拥塞控制)和UDP高效传输特点,分析了网络设备(路由器/交换机/网关)的工作差异,并对比了C/S与B/S架构。最后通过UDP通信实例展示了Socket编程的核心流程(加载库、创建套接字、绑定端口、收发数据)
2025-10-09 16:43:41
938
原创 非线性结构 图
本文摘要: 文章系统介绍了图论的基本概念与算法,包括无向图/有向图、连通性、度、存储结构(邻接矩阵/链表)、图的创建与遍历(BFS/DFS)。重点讲解了迪杰斯特拉算法求解最短路径的迭代过程,以及拓扑排序在有向无环图中的应用,并通过课程安排例题演示了拓扑排序的实现。核心算法均配有代码示例(C++),涵盖图的邻接矩阵表示、BFS/DFS递归实现和拓扑排序的DFS解法。文章强调图论算法在路径搜索和依赖关系处理中的实际应用价值。
2025-06-09 20:37:50
850
原创 非线性结构 树
本文系统性地整理了树形数据结构及其相关算法,主要内容包括: 树的基本概念与术语 详细定义了结点、度、叶子结点、层次等23个树结构基本概念 介绍了三种节点表示方法 二叉树及其变种 二叉树的定义与性质(5条重要性质) 特殊二叉树:满二叉树、完全二叉树、二叉搜索树(BST) BST的创建、添加、删除算法实现 BST与有序双向链表的转换方法 高级树结构 平衡树(AVL树、红黑树)的平衡条件 多路平衡树(B/B+树)的应用场景 字典树(Trie树)的结构与字符串处理 树的操作算法 四种遍历方式 前序、中序、后序、层序
2025-06-08 19:58:50
894
原创 动态规划:Dynamic Programming
摘要:动态规划是一种解决最优问题的算法,适用于最长公共子序列、回文子串等问题。其核心特性包括无后效性、最优子结构和重叠子问题。解题步骤包括定义状态、建立转移方程和初始化条件。与分治法不同,动态规划利用子问题间的关联性。通过"打家劫舍"和"股票买卖"两个例题,展示了如何定义状态(如dp[i]表示前i间房的最大金额)、建立方程(如dp[i] = max(dp[i-1], dp[i-2]+nums[i]))和优化空间(用变量代替数组)。典型解法时间复杂度为O(n),空间可优
2025-06-03 21:50:08
862
原创 字符串及其相关问题
本文主要探讨了字符串处理中的几个常见问题及其解决方案。首先,区分了字符常量区和栈区的字符串存储方式,指出字符常量区只读不写,而栈区可读可写。接着,讨论了在字符串中查找特定字符或子串的方法,包括朴素匹配算法和KMP算法,后者通过优化匹配过程提高了效率。此外,还介绍了字符串反转的几种实现方式,包括使用向量栈、双栈和直接反转字符串的方法。最后,通过代码示例详细展示了如何实现这些字符串操作,包括字符串的反转、单词的反转以及子串的查找。这些方法在处理字符串时各有优势,可以根据具体需求选择合适的方法。
2025-05-21 20:24:30
755
原创 受限线性表——栈与队列
栈和队列是两种常见的数据结构,分别遵循先进后出(FILO)和先进先出(FIFO)的原则。栈的底层实现通常包括节点类和栈类,节点类包含值和指向下一个节点的指针,栈类则包含栈顶指针和计数器。栈的基本操作包括Push(入栈)、Pop(出栈)、Clear(清空栈)、GetTop(获取栈顶元素)、GetCount(获取元素个数)和IsEmpty(判断栈是否为空)。栈的实际应用包括括号匹配、浏览器的前进与后退、撤销操作、游戏状态管理以及表达式求值与语法解析。队列的底层实现与栈类似,但操作方式不同,包括Push(入队)
2025-05-12 21:20:58
851
原创 线性表链式存储及其相关操作
链表是一种常见的数据结构,分为单向链表和双向链表。单向链表的头增操作会导致倒序,尾增操作则保持正序。与数组不同,链表通过节点指针连接,动态分配内存,适合频繁插入和删除操作。创建链表时,首先确定元素个数和每个元素的值,然后将元素放入节点,并通过尾添加方式将节点连接至表尾。链表的遍历、反转、合并等操作可以通过指针操作实现。此外,跳跃列表(SkipList)是一种基于有序链表的高效数据结构,通过多层“快速通道”加速查找、插入和删除操作,时间复杂度为O(logn)。快慢指针法则用于寻找链表的中间节点。
2025-05-12 16:48:20
807
原创 常见的几种排序方法及其优化 数组的相关操作
本文介绍了多种不使用加号实现加法的代码逻辑,以及几种常见的排序算法及其优化方案。首先,通过位运算实现加法,利用^计算不进位的结果,&计算进位,并通过循环更新计算对象,直到没有进位为止。接着,详细讲解了冒泡排序、选择排序、插入排序、希尔排序、快速排序和归并排序的核心思想及代码实现。每种排序算法都提供了优化方案,如冒泡排序通过标记最后一次交换位置减少遍历范围,快速排序通过优化标准值的查找和交换提高效率。此外,还介绍了递归和分治的思想,以及二分查找的实现。
2025-05-11 14:47:36
633
原创 有关于重复报错及异或位运算的分析
定义n个计数器(长度为n数组,把数值当下标,数组基于下标访问,O(1)即可完成,n个O(1)为O(n)),记忆每个元素出现的次数,如果有一个元素出现两次,直接报错。使用第一个元素与后续所有元素比较,第二个元素与后续所有元素比较......时间消耗O(n^2)空间消耗O(1)。让每个元素回到自己的下标上,如果每个都能塞回去,自然是没有重复的,这种方法源于下标范围与元素范围的高度重合。时间复杂度O(n^2),空间复杂度O(1)(1)整体异或^(用第一个和第二个异或,再用其结果与第三个异或,遍历)
2025-04-20 07:00:00
586
原创 牛客网循环结构题目解析
1)旅行完了的牛牛又胖了,于是他终于下决心要戒掉零食,所以他带着他最爱的土豆回到了牛星,开始了在牛星种土豆和只吃土豆减肥的日子。)经过了辛勤的劳作,牛牛种的土豆奇迹般的收获了,于是他得到了很多很多很多很多的土豆(实在太多,数不过来了,你可以认为是无穷个)。他每次拿的土豆的数目是任意的,选的土豆也是任意的。接下来三行,每行用 2 个正整数描述一种包装的铅笔:其中第 1 个整数表示这种 包装内铅笔的数量,第 2 个整数表示这种包装的价格。牛牛想知道,在所有的选土豆方案里,他可以获得的第k大的“总重量”是多少。
2024-11-29 08:00:00
1497
1
原创 牛客网循环结构题目解析
牛客网循环结构题单(上半部分)1)打印数字三角形,从1开始输出,第i行输出i个数,每个数字按4个位置输出注:c语言中 %4d可以输出一个数,占据四个位置,右对齐。输入描述:输入一行,包含一个整数n输出描述:输出n行,第i行,有i个数, 每个数占据四个位置。2)请打印输出一个字符金字塔,字符金字塔的特征请参考样例。
2024-11-27 20:52:51
1368
原创 回溯法的基本思想
i * i <= a;剪枝:在生成解的过程中,如果发现当前部分解不可能导致一个有效解,就立即停止继续生成这部分解,返回上一步,尝试其他选择。dfs(a / i, i, count):递归调用 dfs,将 a 分解为 a / i,并从 i 开始继续分解,以避免重复计算。在每一步中,如果当前部分解不可能导致一个有效解(例如,某个字母的数量已经用完),就立即停止继续生成这部分解,返回上一步。假设输入为 2 1 1 3,即 A 的数量为 2,B 的数量为 1,C 的数量为 1,目标字符串的长度为 3。
2024-11-26 17:36:30
417
1
原创 选择结构题目解析
1)每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。4)羊村的供水系统搞砸了,隔壁牛村捐赠的的矿泉水刚刚送达,村长让喜羊羊们排队领水,已知有n个羊村村民正在排队取水,懒羊羊不知道他在队伍的具体哪个位置,但他知道有不少于a个人在他前面,有不多于b个人在他后面,你能帮忙计算一下懒羊羊有多少个可能的位置吗。
2024-11-26 17:25:56
1483
原创 顺序结构题目解析及一些常用函数
本文介绍了两个编程问题及其解决方案。第一个问题涉及纸牌游戏,目标是三轮操作后使两张纸牌上的数字之和最小。通过判断输入的正整数n的奇偶性,直接输出n/2或(n+1)/2作为结果。第二个问题关于制作特定质量的番茄炒蛋,给定互素的正整数N和M,求最大的不能表示为aN+bM的总质量K。根据数学公式,直接输出N*M-N-M作为结果。此外,文章还列举了一些常用的数学函数,包括判断素数、计算阶乘、斐波那契数列、最大公约数、素因子分解、所有因数以及生成回文数等。这些函数展示了基本的数学运算和算法实现,适用于多种编程场景。
2024-11-25 21:52:31
424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅