自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 应用层自定义协议与序列化

/ 协议分隔符(用于分割长度字段和JSON数据)// 最大缓冲区大小// 计算请求结构体(客户端→服务器)int x;// 操作数1int y;// 操作数2char oper;// 运算符(+、-、*、/)// 序列化:Request对象 → JSON字符串// 反序列化:JSON字符串 → Request对象// 解析JSON失败(格式错误)→ 数据不完整/非法if (!// 校验必填字段(避免字段缺失导致数据异常)if (!

2025-12-16 20:22:08 664

原创 Python期末复习

本文摘要:Python基础语法与字符串操作指南 基础语法 命名规则与动态类型 生成式表达式:惰性计算的内存高效循环语法 分支结构:单分支、双分支、多分支及三元表达式 循环语句:for遍历循环、while条件循环及控制语句(break/continue/pass) 流程嵌套:条件与循环的多层嵌套 字符串操作 定义方式:单引号、双引号及三引号的区别 基本运算:拼接、复制和子串判断 索引切片:正向/反向索引及步长切片技巧 常用方法:长度获取、类型转换和字符编码转换 涵盖Python基础编程核心概念,重点讲解字符串

2025-11-28 18:38:11 528 1

原创 Linux 网络基础

独立模式:计算机直接相互独立网络互联:多台计算机连接在一起,完成数据共享局域网LAN:私网广域网WAN:公网所谓局域网和广域网只是一个相对的概念,局域网可以是广域网里面的子网。

2025-11-11 10:10:43 1034

原创 Linux 线程同步与互斥

本文介绍了线程同步与互斥的基本概念和实现方法。主要内容包括: 临界资源与临界区概念,以及互斥的作用 未加保护的临界区会导致数据竞争问题,如票数减为负数 pthread_mutex锁的使用方法及其原子性实现原理 线程同步的必要性,通过条件变量解决饥饿问题 生产者消费者模型的三种关系和两种角色 基于阻塞队列的生产者消费者实现,包括队列满/空时的等待机制 文章重点阐述了如何通过互斥锁和条件变量保证线程安全,并介绍了生产者消费者这一经典同步模型。

2025-09-25 10:35:47 999

原创 Linux 线程

1.进程是一个执行起来的程序。进程=内核数据结构+代码和数据2.线程:执行流,执行粒度比进程更细。是进程的一个执行分支。进程:承担资源的。——>内存线程:线程是OS调度的。——>内存如果Linux要支持线程,那么线程就必须被OS管理!那么就要描述tcb结构——>可不可以使用PCB 代替tcb。

2025-09-22 16:14:30 921

原创 C++细节随记

set/map底层为红黑树,迭代器没有重载+=,Iterator模板在实例化set的迭代器的时候+=出现错误。故set/map迭代只能使用++、–

2025-09-21 16:54:49 435

原创 Linux 信号

信号:一种用户、OS、其他进程,向目标进程发送异步(突然产生的、意料之外的)事件的一种方式1.信号产生 ——>2.信号保存——>3.信号处理。

2025-08-18 19:47:36 840

原创 算法基础 第3章 数据结构

1.什么是单调栈单调栈,即具有单调性的栈。实现2.单调栈解决的问题虽然是四个问题,但是原理是⼀致的。因此,只要解决⼀个,举⼀反三就可以解决剩下的几个。3.寻找当前元素左侧,离它最近,并且比它大的元素在哪从左往右遍历元素,构造⼀个的栈。插入当前位置的元素的时:• 如果栈为空,则左侧不存在比当前元素大的元素;• 如果栈非空,若栈顶元素比当前位置大则栈顶元素为目标元素;若栈顶元素比当前元素小,出栈维护单调递减栈。注意,因为我们要找的是最终结果的位置。因此,栈里面存的是每个元素的下标。

2025-08-14 21:02:44 919

原创 Linux 进程间通信

进程通信可以实现:数据传输、资源共享、通知事件、进程控制进程具有独立性,如何通信?前提:先得让不同进程看到同一份资源本地通信——同一个主机,同一个OS,不同进程之间的通信——1.syetem V 2.管道 3.POSIX标准网络通信——不同主机之间通信。

2025-08-10 18:14:02 652

原创 Linux 磁盘中的文件

Linux中的文件加载到内存上之前是放到哪的?放在磁盘上的文件——>访问文件,打开它——>找到这个文件——>路径但文件是怎样存储在磁盘上的。

2025-08-07 18:42:59 735

原创 Linux 内存中的文件

本文摘要:文件操作是进程与文件的关系研究。在Linux系统中,文件被打开后加载到内存,通过文件描述符(fd)访问。进程默认打开三个标准流(stdin/stdout/stderr)。C语言库函数封装系统调用,提供更便捷的文件操作接口。重定向通过修改fd实现文件输出目标切换。缓冲区机制分为语言级和内核级,分别优化系统调用和I/O效率。文件操作的底层实现展现了"一切皆文件"的设计理念,外设也通过文件结构体管理。理解文件描述符、重定向和缓冲区机制对深入掌握系统编程至关重要。

2025-08-03 16:01:33 605

原创 Python 爬虫学习

爬虫需要使用HTTP请求,需要借用requests这个库。requests.get用于请求一个url的资源,可在参数中附加请求头。head中可以使用虚假的User-Agent可避免被服务器拒绝。

2025-07-31 15:20:00 755

原创 计算机组成原理 Cache实验

参考指导书中直接映射的实现,实现此次实验大概分为以下几个步骤。

2025-07-31 15:19:20 758

原创 软件工程导论复习

等一系列软件开发的实现活动,而每一项活动,都会产生相应的中间制品,需要如。

2025-07-31 15:17:57 1113

原创 Pyhton MCP项目

代码基于 FastMCP 框架搭建了一个简单服务,注册了一个实现加法运算的工具和一个生成个性化问候的动态资源,后续应该还会有启动服务器等相关逻辑(代码中未体现 ),这样客户端等就可以通过框架约定的方式调用这些工具和资源。若要让服务真正运行,一般还需要添加启动服务器实例的代码(比如 mcp.start() 之类的,具体需看 FastMCP 类的实现 )。

2025-07-31 15:16:03 515

原创 计算机组成与结构 复习

响应时间:也叫执行时间,指的是完成某任务的总时间吞吐率:也叫带宽,是单位时间内完成事件的总数cache : SRAM(双稳态触发器)主存:DRAM(电容保存电荷)

2025-06-16 12:34:31 1006

原创 操作系统考试精华

英文全称:Interrupt Request(也称为 Interrupt Request Line)CPU调度牵涉到进程状态转移中的 运行到结束、运行到就绪、运行到等待、等待到就绪;、IBM VM/370 系统 虚拟机 、Mach 操作系统 微内核。工作集(Working-set)是对 局部性(Locality) 的近似。计算机系统保护包括:双模式、特权指令、内存保护、cpu保护。优先级翻转指的是高优先级进程需要的资源被低优先级占用。个从等待状态切换到就绪状态。从运行状态切换到就绪状态。

2025-06-16 10:58:35 380

原创 操作系统复习

flag[2]:布尔数组,flag[i] = true 表示进程 Pi临界区。turn:整数变量,表示临界区的进程编号(0 或 1)。

2025-06-09 17:41:00 1048

原创 计算机网络 第5章 链路层

结点链路LANs链路层的数据分组帧 frame封装网络层的数据报链路层负责将数据报从链路的一个结点传输到相邻的另一个结点链路层的背景在不同的链路当中使用不同的协议来传输数据报:e.g.,第一个链路以太网Ethernet第二个链路是帧中继网络第三个网络是802.11不同的链路提供的服务也不同链路层的服务成帧, 链路接入将数据报封装成帧,加上首部和尾部字段多路访问(接入)“MAC” 地址用于标识发送结点和接收节点-MAC地址不同于IP地址!

2025-06-02 12:11:25 665

原创 计算机网络 第4章 网络层

网络层服务和协议提供主机之间的逻辑通信在端系统中发送方:将报文段封装成数据报提交给数据链路层接收方:将数据报解析成报文段提交给运输层在网络核心节点中路由器转发数据报交付到目的主机IPv6 的动机初始动机:32-bits的IPv4地址空间很快就会耗尽其他动机:首部字段:提高处理和转发速度提高服务质量IPv6数据报格式40 bytes的固定长度分片:在该版本中不允许分片RFC 2460IPv6数据报格式版本:6流量类型:同IPv4的服务类型。

2025-06-01 21:29:09 756

原创 计算机网络 第3章 运输层

运输层服务和协议提供应用进程之间的逻辑通信运输层协议工作在端系统中发送方:将报文封装成报文段提交给网络层接收方:解析成报文提交给应用层提供了两种协议 (alternative)TCP / UDP端到端协议:一个发送方,一个接收方 (不会广播)可靠传输:无损坏、无冗余、按序交付Checksum重传:解决数据差错、分组丢失、超时等问题累积确认定时器序号,确认号流水线协议提供流控制和拥塞控制TCP是全双工协议在一个TCP连接中,数据流是双向。

2025-05-31 21:03:31 550

原创 计算机网络 第2章 应用层

DNS工作在应用层DNS服务不直接与用户打交道不封装用户的应用数据报文只协助源主机查询出目标主机的IP地址DNS是一个分布式通过层级化的域名服务器进行工作DNS根服务器:用于查询顶级DNS服务器的地址顶级DNS服务器:用于查询下一级或权威DNS服务器的地址.net.edu.org.com组织机构自身的DNS服务器提供了权威的主机名和IP地址映射由组织机构或服务提供商来维护本地DNS服务器(local DNS server)不属于严格意义上层级DNS体系。

2025-05-28 23:25:39 776

原创 算法基础 第5章 图

文章主要介绍了图论中的几个重要概念和算法。首先,定义了连通图、连通分量和生成树的概念,并讨论了图的存储方式(邻接矩阵和vector数组)。接着,详细介绍了最小生成树的两种算法:Prim算法和Kruskal算法,分别通过加点和加边的策略构建最小生成树。随后,文章探讨了拓扑排序及其应用,如判断有向无环图中是否存在环。最后,文章介绍了单源最短路径算法(Dijkstra、Bellman-Ford、SPFA)和多源最短路径算法(Floyd),并提供了相应的代码实现。这些算法在解决图论问题时具有广泛的应用。

2025-05-23 22:19:26 734

原创 计算机网络 第1章

本章介绍了计算机网络的基础知识,重点围绕因特网展开。因特网作为“网络的网络”,为各种应用提供通信服务和编程接口。网络结构分为边缘和核心,边缘包括端系统和应用,核心由路由器组成,涉及电路交换和分组交换两种数据传输方式。分组交换通过存储转发机制实现数据的高效传输,而电路交换则采用分频或分时复用技术。此外,网络中的时延、丢包和吞吐量是影响性能的关键因素,时延包括传播、传输、排队和节点处理时延。最后,协议的分层结构简化了网络通信的复杂性,每层独立处理特定问题,提高了系统的灵活性和可维护性。

2025-05-16 17:28:07 955

原创 算法基础 第4章 动态规划

背包问题是动态规划中的经典问题,核心在于在给定物品体积和价值的情况下,选择物品使总价值最大化。主要变体包括01背包、完全背包、多重背包、分组背包、混合背包和多维费用背包。01背包是基础,每种物品只能选或不选,状态转移方程为dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]] + w[i])。完全背包允许物品无限次选择,状态转移方程为dp[i][j] = max(dp[i-1][j], dp[i][j-v[i]] + w[i])。多重背包则对物品选择次数有限制。掌握01背包是解

2025-05-16 17:22:23 319

原创 算法基础 第2章 搜索

搜索,是⼀种枚举,通过穷举所有的情况来找到最优解,或者统计合法解的个数。因此,搜索有时候 也叫作暴搜。搜索⼀般分为深度优先搜索(DFS)与宽度优先搜索(BFS)2.

2025-03-21 18:59:34 751

原创 算法基础 第1章 基础算法

模拟,顾名思义,就是题⽬让你做什么你就做什么,考察的是将思路转化成代码的代码能⼒。1.2蛇形方阵⽅向向量,⽐如本题⼀共四个⽅向,分别是右、下、左、上,对应:(0, 1)、(1, 0)、(0, −1)、(−1, 0),模块化程序,方便处理细节、调试错误。

2025-03-04 22:23:30 72

原创 进程地址空间

在使用C语言设计程序时,有这样一个地址概念如下图。通过如下程序可以取出程序中变量的地址并打印出来执行结果如下,然而打印出来的这些地址并不是物理地址,而是虚拟地址/线性地址。用一个程序通过子进程演示虚拟地址执行结果如下,可以看到子进程在改变全局变量g_val后,地址仍为0x601058与父进程的g_val地址相同,可同一个地址为什么会储存两个不同的值呢?说明这不是物理地址,而是虚拟地址。- 在Linux地址下,这种地址叫做虚拟地址- 我们在⽤C/C++语⾔所看到的地址,全部都是虚拟地址!

2025-03-01 16:51:39 399

原创 进程及从Linux分析进程

1.fork()id返回值,父进程(subpid)、子(0)2.fork有两个返回值3.一个变量怎么会有两个不同的值?--进程需要独立性4.fork之后谁先运行,由OS调度器自主决定。

2025-02-04 16:47:06 1045

原创 git是什么及Linux git操作

git是一种版本控制器,对于开发⼈员来说,git最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件!可以将写好的源代码文件同步到远程仓库管理(add、commit、push),也可以拉取远程仓库的历史版本源代码到本地。

2025-01-19 16:21:37 431

原创 自动化构建工具——make/makefile

make是一个命令工具,是一个解释makefile中指令的命令工具。make是一条命令,makefile是一个文件(makefile或Makefile都行),两个搭配使用,完成项目自动化构建。makefile中写操作,make执行makefile中命令。上述命令为将hello.c编译链接成可执行文件的过程。clean:上述命令为将hello.i 、hello.s 、hello.o 、hello清除。make hello上述命令即为make,会执行 gcc hello.o -o hello。

2025-01-17 17:26:42 415

原创 C++的智能指针

内存泄漏即不再使用的内存不释放。正确使用智能指针,可以尽可能地避免这样的问题。

2024-11-28 17:21:22 1020

原创 C++11的一些实用特性

简单来说,左值:可以取地址(我们可以获取它的地址+可以对非const左值赋值)左值可以出现在赋值对象左边右值:不可以取地址(通常为:常量、临时对象、匿名对象)右值不可以出现在赋值对象左边// 以下的p、b、c、*p都是左值int b = 1;// 以下几个是对上面左值的左值引用// 以下几个都是常见的右值10;x + y;fmin(x, y);// 以下几个都是对右值的右值引用。

2024-11-19 22:52:54 674

原创 哈希与unordered_set、unordered_map(C++)

○搜索元素时对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。然后我们对unordered_set、unordered_map完成封装,unordered_map实现operator[]2.封装unordered_set、unordered_map,解决KeyOfT问题(取出数据类型中的关键码)○插入元素时根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放。该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为。

2024-11-03 11:23:34 1202

原创 C++红黑树插入操作的模拟实现

/节点的颜色RED,BLACK//模版参数Key和Value, _kv(kv), _colour(RED)//默认每个节点颜色为红色{}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲// 该节点储存的数据// 该节点的颜色public:~RBTree()private:return;

2024-10-27 22:27:45 801

原创 AVL树如何维持平衡

整体旋转方法如下图记得。

2024-10-10 20:54:29 1266

原创 C++中set和map的使用

map的主要操作与set类似,insert不允许相同值插入。

2024-09-23 21:08:05 844

原创 Linux中yum命令

a.yum/aptb.rpm安装包安装c.源码安装。

2024-09-12 13:38:53 413

原创 Linux权限概念

Linux下有两种用户:超级用户(root)、普通用户在root权限下使用useradd可以添加用户、设置密码,sudo可以对普通用户执行一条命令提权su 命令可以切换用户su [用户名]

2024-09-12 13:27:53 444

原创 二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:-若它的左子树不为空,则-若它的右子树不为空,则-它的左右子树也分别为二叉搜索树如下图为一棵搜索二叉树利用二叉搜索树可以快速查找到某个数据,将查找数据与根节点做比较,然后确定其在左子树还是右子树,再查找。但若根节点为一组数据中的最大值或最小值,二叉搜索树就会变成一个链表,查找时间复杂度为(O)。

2024-09-01 22:54:38 428

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除