- 博客(92)
- 收藏
- 关注
原创 计算机网络概述
计算机网络:利用通信线路和交换设备将地理位置分散的、具有独立功能的多台计算机连接起来,按照某种协议进行数据通信、实现资源共享的信息系统。
2025-03-25 15:32:00
665
原创 计算机网络--传输层(2)
例如:窗口大小=64KB,RTT=100ms → 吞吐量≈5.2Mbps。最大吞吐量 = min(rwnd, cwnd) / RTT。
2025-03-25 14:21:50
859
原创 计算机网络--传输层(1)
理解TCP状态转换图是排查网络问题(如连接泄漏、端口占用)的关键。管理连接的建立、维护和释放。状态转换图描述了TCP连接在不同阶段的状态变迁,涵盖了。调用位置)和系统参数调优,确保连接高效释放。
2025-03-25 07:52:28
933
原创 计算机网络--第四章 网络层(2)
聚合以下子网:200.1.16.0/24、200.1.17.0/24、200.1.18.0/24、200.1.19.0/24。:将C类网络192.168.1.0/24划分为7个子网,求子网掩码和每个子网的地址范围。:二进制与十进制转换、按位与运算、子网计算、CIDR聚合。
2025-03-24 17:13:44
642
原创 C++ 内存模型
在 C++11 之前,多线程程序的行为很大程度上依赖于 CPU 架构,程序员很难准确预测变量在多线程间的可见性和顺序问题。C++ 内存模型 (C++ Memory Model, C++MM) 主要用于定义程序如何访问和操作内存,特别是在。它规定了变量如何存储、读取,哪些操作是原子性的,如何同步不同线程之间的数据访问等。一个线程执行的操作,对其他线程来说,观察到的顺序是严格按照代码顺序执行的。对其他线程可见,因为 CPU 可能缓存数据,而不是直接写入主存。的类比来直观理解 C++ 内存模型的核心概念。
2025-03-10 19:11:13
690
原创 *C++ 集合(`set`、`unordered_set`、`map`、`unordered_map`)全面解析
容器有序性唯一性底层结构时间复杂度适用场景set✅ 升序键唯一红黑树O(log n)有序唯一集合❌ 无序键唯一哈希表O(1) 平均, O(n) 最坏快速查找无需排序map✅ 升序键唯一红黑树O(log n)有序键值对❌ 无序键唯一哈希表O(1) 平均, O(n) 最坏快速键值查找multiset✅ 升序允许重复红黑树O(log n)有序可重复集合multimap✅ 升序允许重复键红黑树O(log n)有序键可重复映射❌ 无序允许重复哈希表。
2025-03-10 16:55:58
853
原创 C++ `release-acquire` 与 `release sequence` 深入解析
操作后,若对同一原子变量存在一系列特定操作(属于。:确保跨线程内存操作的可见性和顺序性。存储的值,则线程B能观察到线程A在。后的操作不满足以下任一条件,之前的所有内存操作。
2025-03-07 20:13:53
435
原创 C++ 中前置 `++` 与后置 `++` 运算符重载
需要返回自增前的旧值,但旧值在运算后已被修改。为了保存旧值,必须在函数内部创建一个临时对象(拷贝原对象的状态),并将该临时对象返回。由于需要保存旧值,会触发拷贝构造函数和析构函数的额外开销,尤其对复杂对象(如容器迭代器)性能影响显著。,既能保证代码效率,又能避免逻辑错误,是高质量 C++ 代码的重要实践。,直接修改原对象并返回其引用,效率更高。),与内置类型的语义保持一致。操作的对象是临时值,而非原对象。通过合理选择前置/后置。
2025-03-06 20:26:26
416
原创 C++中`const` 和 `static` 关键字详解
关键字作用域修饰成员变量修饰成员函数const只在对象内部有效,每个对象可以不同变量在对象生命周期内不可变不能修改成员变量,const对象只能调用const函数static作用于整个类,所有对象共享变量归类所有,必须在类外初始化不能访问非static成员,没有this指针:指向的值不能变,指针本身可以变。:指针本身不能变,指向的值可以变。static变量是全局的,所有对象共享一份。static成员函数没有this指针,只能访问static变量。const和static。
2025-03-06 19:54:18
423
原创 C++中`const int*` 与 `int* const` 的区别及记忆技巧
类型指针能否修改?指向内容能否修改?✅❌❌✅❌❌记住这张表格,随时回顾,快速掌握知识。
2025-03-06 19:41:13
258
原创 SecureCRT 文件上传下载操作指南
列出本地目录内容示例:切换本地目录示例:服务器目录操作查看服务器当前路径列出服务器目录内容示例:切换服务器目录注意:若目录含空格或特殊字符,需用引号包裹,如 。三、文件传输命令上传文件(本地 → 服务器)上传单个/多个文件常用选项:示例:下载文件(服务器 → 本地)下载单个/多个文件示例:四、高级功能与技巧传输模式设置ASCII模式:用于文本文件,自动转换换行符断点续传使用 或 继续中断的传输:文件校验传输后
2025-03-05 23:30:23
1172
原创 TCP 缓冲区核心机制
例如,在视频播放应用中,视频数据可能快速从网络接收,但用户观看速度较慢,接收缓冲区可以存储多余数据,确保播放流畅。例如,在文本编辑应用中,用户可能频繁输入少量字符,如果每次输入都立即发送一个小报文,会浪费大量网络资源,Nagle 算法可在缓冲区积累数据后再发送。例如,对于实时性要求高的应用,如在线游戏,不宜过度增大缓冲区,以免影响实时响应。例如,客户端在循环中不断向服务端发送大量数据,而服务端由于其他任务处理较慢,读取数据的速度跟不上,此时客户端的发送缓冲区很快被填满,),而服务端处理较慢时,客户端的。
2025-02-27 09:08:28
925
原创 TCP 三次握手与四次挥手
理解三次握手和四次挥手是掌握 TCP 协议的基础,通过结合编程实践与网络状态分析工具(如netstat),可以有效排查连接问题并优化高并发场景下的服务端性能。对常见网络攻击(如 SYN 泛洪攻击)和连接状态(如TIME_WAITCLOSE_WAIT)的理解和处理是网络编程和系统运维中不可或缺的技能。
2025-02-27 08:49:26
1179
原创 多进程网络服务端详细说明文档
本项目实现了一个基于多进程的 TCP 网络服务端,主要用于处理多个客户端的连接请求。为了提高代码的可维护性和可复用性,分成了头文件(.h)和多个源文件(.cpp具体包含和三个文件。
2025-02-26 22:05:39
745
原创 网络传输文件
这两个C++ 程序实现了一个简单的文件传输系统,包括一个客户端程序()和一个服务端程序(客户端负责将文件发送到服务端,服务端接收并保存文件。通过这两个程序,可以实现简单的文件传输功能。在实际应用中,还可进一步优化,如增加错误处理的详细信息、优化数据传输的效率、实现断点续传等功能。
2025-02-26 21:47:37
389
原创 Linux 文件操作与 Socket 编程核心知识详解
本手册完整展示了 Linux 文件系统与网络编程的核心机制,结合示例代码和实用技巧,可帮助开发者深入理解系统级 I/O 操作,编写高性能、高可靠性的应用程序。运行结果:文件描述符将分配为 0。:选择当前最小可用描述符。
2025-02-26 09:13:15
969
原创 在 Ubuntu 20.04 为 Clash Verge AppImage 创建桌面图标教程
确保你已经下载了文件,并且知道它所在的具体路径。同时,你可以准备一个合适的图标文件(.png格式)用于代表该应用程序,如果没有合适的图标也不影响后续操作,后续可使用系统默认图标。
2025-02-14 17:32:36
2391
2
原创 PX4 SITL 彻底清理并修复 Protobuf 问题
由于手动安装的 Protobuf 可能与系统版本冲突,我们需要完全清除所有 Protobuf 相关的库、头文件和编译缓存。由于 ROS 依赖 Protobuf,我们需要重新安装完整的 ROS Noetic 桌面版,以确保所有库文件正确。由于之前的编译可能已经缓存了错误的 Protobuf 版本,我们需要彻底删除 PX4 的。这将从头开始重新构建 PX4 和 Gazebo 插件,确保所有依赖库都是正确的。如果编译成功,现在可以尝试运行 PX4 SITL 了。,然后重新编译 PX4 SITL。
2025-02-13 15:57:51
533
原创 在 Ubuntu 上安装最新版本的 CMake
在 Ubuntu 系统上安装最新版本的 CMake 可以通过官方的二进制文件进行安装,避免使用 PPA 或 Snap,确保获取最新版本。通过这些步骤,你可以顺利地在 Ubuntu 系统上安装并配置最新版本的 CMake,而不依赖于 PPA 或 Snap。命令下载最新版本的 CMake。为了让系统能够找到新的 CMake 命令,我们需要将。接下来,将解压后的 CMake 文件夹移动到。这一步将把 CMake 的文件夹移动到。路径下,你可以根据需要更改路径名。然后,运行下面的命令使修改的。
2025-02-12 13:30:46
626
原创 Linux-性能分析top
toptop是Linux系统中一个常用的性能监控工具,能够动态显示系统的资源使用情况,包括CPU、内存、进程等信息。通过top命令,用户可以实时查看系统的状态,并进行性能分析,找出资源占用较高的进程,帮助优化系统性能。
2025-01-19 19:01:35
615
原创 Linux 管道操作
在Linux中,管道(Pipe)是一个非常强大且常用的功能,它允许将一个命令的输出直接传递给另一个命令作为输入,从而能够高效地处理和分析数据。管道在多个命令之间建立数据流,减少了文件的读写操作,提高了处理效率。本文将详细讲解管道的概念、使用方法以及结合具体例子来帮助理解。管道的作用是将一个命令的输出结果直接传递给另一个命令作为输入。通过使用管道,用户可以将多个简单的命令链接在一起,完成复杂的任务。管道可以与其他常用命令组合使用,形成更复杂的数据处理流程。等命令对数据进行进一步处理。
2025-01-18 13:37:26
625
原创 Linux 文件内容操作
在Linux系统中,有一系列常用的命令可以帮助我们查看、统计和分析文件的内容。以下是关于文件内容操作的详细总结,包括常见命令的使用方法和示例。在指定文件中查找匹配的字符串,并输出包含该字符串的行。统计文件的行数、字数和字节数。文件的行数、字数和字节数。该命令只会显示文件的行数。字符串的行,并输出。
2025-01-18 13:28:27
888
原创 B-spline 控制点生成
A( A )A数学上A( A )A反映了 B-spline 基函数对控制点的权重,建立了控制点与轨迹点、边界条件之间的线性关系。代码中通过位置、速度、加速度约束,构造了包含所有约束的矩阵A( A )A。
2025-01-10 21:22:30
747
原创 Boost.Asio 同步读写及客户端 - 服务器实现详解
Boost.Asio作为一个强大的跨平台网络编程库,为开发者提供了丰富的网络操作接口。在之前的学习中,我们已接触到其同步读写的API函数,本文将在此基础上,深入探讨如何运用这些API构建一个完整且能实际运行的客户端与服务器示例,且双方均采用阻塞式的同步读写方式来实现通信。服务器端的设计相对复杂,主要由两个关键函数协同完成工作。
2025-01-08 21:01:33
912
原创 Boost.Asio 同步读写操作详解
写操作write_some: 低级别,需要循环调用。send和write: 高级别,一次性发送。读操作read_some: 低级别,需要循环调用。receive和read: 高级别,一次性读取。read_until: 按分隔符读取数据流。Boost.Asio 提供了丰富的同步 API,可以根据具体需求灵活选择使用,适用于各种网络应用场景。
2025-01-08 20:43:01
708
原创 Hybrid A*算法-KinodynamicAstar::estimateHeuristic
通过以上严谨的推导过程,我们完整地展示了 Hybrid A算法中关键控制输入公式uαμtβμuαμtβμ的来源。基于构造 Hamilton 函数、运用最优性条件求导、求解协态方程并代入最优控制输入公式等一系列步骤,不仅验证了公式的合理性,更深入揭示了其背后的最优控制理论支撑。这对于深入理解 Hybrid A算法、精准调校算法参数以及在复杂场景下优化轨迹规划具有不可忽视的指导意义,为相关领域的研究与应用提供了坚实的理论基石。
2025-01-08 16:12:34
785
原创 Boost.Asio 缓冲区和 `buffer()` 函数的深入理解与应用
存储要发送的数据(例如客户端向服务器发送消息)。存储接收到的数据(例如服务器接收客户端请求的数据)。:表示可写缓冲区,通常用于接收数据。:表示只读缓冲区,通常用于发送数据。
2025-01-07 22:56:59
871
原创 Boost.Asio 的 TCP 通信教程
本教程展示了一个简单的 Boost.Asio 同步 TCP 通信示例,从服务器端和客户端代码的编写到编译和运行,涵盖了关键的操作步骤。读者可以在此基础上探索更复杂的功能,如并发处理多个客户端连接或使用异步操作,以满足更高级的应用需求。
2025-01-07 22:43:36
1308
原创 自然三次样条插值推导笔记
问题情境假设我们有一组数据点(称为控制点):x0,x1,x2,…,xnx_0, x_1, x_2, \ldots, x_nx0,x1,x2,…,xn这些点是已知的,表示我们要拟合的曲线在等距离参数点(比如参数取为0,1,2,…,n)下的函数值。我们的目标是寻找一条具有足够平滑度的插值曲线,确保曲线在每一个参数节点 (i)( i )(i) 上能够满足 (p(i)=xi)( p(i) = x_i )(p(i)=xi)。为达到光滑且自然的效果,我们希望这条曲线是由每两个相邻数据点间的一条三次
2024-12-08 22:47:30
863
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人