自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 十大排序算法总结

数据结构中的排序算法总结

2024-09-27 16:43:30 170

原创 16. C++ TinyWebServer项目总结(16. 服务器调制、调试和测试)

主要包括:使用 tcpdump 抓包;使用 gdb 调试器;使用压力测试工具,模拟现实世界中的高并发请求,测试服务器在高压状态下的稳定性。

2024-09-25 15:15:48 814

原创 四足机器人控制算法——建模、控制与实践(unitree_guide配置)

宇树科技 unitree_guide 配置

2024-09-01 18:08:46 1490 5

原创 C++ TinyWebServer项目总结(14. 多线程编程)

进程:进程是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。它是系统进行资源分配和调度的一个独立单位。每个进程都有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。线程:线程是进程中的实际运行单位,是进程中的一个单一顺序控制流,也被称为轻量级进程(LWP)。一个进程可以包含多个线程,所有线程共享进程的资源,如内存和文件描述符。线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。根据运行环境和调度者的身份,线程可分为内核线程和用户线程。

2024-08-28 22:53:53 853

原创 C++ TinyWebServer项目总结(13. 多进程编程)

本章讨论Linux多进程编程的以下内容:复制进程映像的fork系统调用和替换进程映像的exec系列系统调用。僵尸进程以及如何避免僵尸进程。进程间通信(Inter Process Communication,IPC)最简单的方式:管道。三种System V进程间通信方式:信号量、消息队列、共享内存。它们是由AT&T System V2版本的UNIX引入的,所以统称为System V IPC。在进程间传递文件描述符的通用方法:通过UNIX本地域socket传递特殊的辅助数据。(关于辅助数据

2024-08-28 19:32:42 1165

原创 C++ TinyWebServer项目总结(12. 高性能I/O框架库Libevent)

I/O框架库以库函数的形式,封装了较为底层的系统调用,给应用程序提供了一组更便于使用的接口。各种I/O框架库的实现基本原理相似,要么以Reactor模式实现,要么以Proactor模式实现,要么同时以这两种模式实现。例如,基于Reactor模式的I/O框架库包含以下组件:句柄(Handle)、事件多路分发器(EventDemultiplexer)、事件处理器(EventHandler)、具体的事件处理器(ConcreteEventHandler)、Reactor。

2024-08-27 20:39:31 976 1

原创 C++ TinyWebServer项目总结(11. 定时器)

网络程序需要处理定时事件,如定期检测一个客户连接的活动状态。服务器程序通常管理着众多定时事件,有效地组织这些定时事件,使其在预期的时间被触发且不影响服务器的主要逻辑,对于服务器的性能有至关重要的影响。为此,我们要将每个定时事件分别封装成定时器,并使用某种容器类数据结构,如链表、排序链表、时间轮,将所有定时器串联起来,以实现对定时事件的统一管理。本章主要讨论两种高效的管理定时器的容器:时间轮和时间堆。

2024-08-27 14:23:04 777

原创 C++ TinyWebServer项目总结(10. 信号)

信号是由用户、系统、进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由以下条件产生:对于前台进程,用户可通过输入特殊终端字符来给它发送信号,如输入Ctrl+C通常会给进程发送一个中断信号。系统异常。如浮点异常或非法内存段访问。系统状态变化。如alarm定时器到期将引起SIGALRM信号。运行kill命令或调用kill函数。服务器程序必须处理(或至少忽略)一些常见信号,以免异常终止。

2024-08-24 18:31:51 1063

原创 C++ TinyWebServer项目总结(9. I/O 复用)

I/O 复用使得程序能够同时监听多个文件描述符,从而提高程序的性能。I/O 复用本身是阻塞的。Linux 下实现 I/O 复用的系统调用主要有selectpoll和epoll。

2024-08-23 21:10:48 1154

原创 C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分!TCP 三次握手、四次挥手,流量控制、拥塞控制等。socket 的创建、绑定、监听、连接等。文件描述符、管道、readvwritev函数等。进程 PID,用户 UID,组 GID,会话 ID 等。

2024-08-21 17:22:30 1257

原创 C++ TinyWebServer项目总结(7. Linux服务器程序规范)

UID:标识用户身份,决定用户本身的所有权限。EUID:用于实际判断用户的权限,可能与 UID 不同。GID:标识用户所属的组,决定用户组的权限。EGID:用于实际判断用户的组权限,可能与 GID 不同。在权限管理中,UID 和 GID 决定了用户和组的基本身份和权限,而 EUID 和 EGID 决定了用户在特定情境下(如执行带有setuid或setgid标志的程序时)所拥有的实际权限。这些标识符是 UNIX 权限模型的重要组成部分,用于确保系统资源的安全访问和管理。

2024-08-20 16:47:45 1074

原创 C++ TinyWebServer项目总结(6. 高级 I/O 函数)

char a[3];是一个存储字符的数组。char* a[3];是一个存储字符指针的数组,通常用于存储字符串的指针。

2024-08-19 22:55:45 1020

原创 C++ TinyWebServer项目总结(5. Linux网络编程基础API)

还是给我的语雀文档打个广告:我的文章都是先在语雀里记录的,然后再同步发送到CSDN上,有些格式问题实在是懒得改了,可能会导致大家看的不舒服,建议有需要的大家可以看看我的原文:语雀。

2024-08-16 20:31:03 997

原创 C++ 设计模式(8. 装饰模式)

基本概念 通常情况下,扩展类的功能可以通过继承实现,但是扩展越多,子类越多,装饰模式(Decorator Pattern,结构型设计模式)可以在不定义子类的情况下动态的给对象添加一些额外的功能。具体的做法是将原始对象放入包含行为的特殊封装类(装饰类),从而为原始对象动态添加新的行为,而无需修改其代码。 举个简单的例子,假设你有一个基础的图形类,你想要为图形类添加颜色、边框、阴影等功能,如果每个功能都实现一个子类,就会导致产生大量的类,这时就可以考虑使用装饰模式来动态地添加,而不需要修改图形类本身的代码,

2024-08-16 13:44:21 267

原创 C++ 设计模式(7. 代理模式)

基本概念 代理模式Proxy Pattern是一种结构型设计模式,用于控制对其他对象的访问。 在代理模式中,允许一个对象(代理)充当另一个对象(真实对象)的接口,以控制对这个对象的访问。通常用于在访问某个对象时引入一些间接层(中介的作用),这样可以在访问对象时添加额外的控制逻辑,比如限制访问权限,延迟加载。 比如说有一个文件加载的场景,为了避免直接访问“文件”对象,我们可以新增一个代理对象,代理对象中有一个对“文件对象”的引用,在代理对象的load 方法中,可以在访问真实的文件对象之前进行一些操作,比

2024-08-16 13:42:48 163

原创 C++ 设计模式(6. 适配器模式)

适配器模式Adapter Pattern是一种结构型设计模式,它可以将一个类的接口转换成客户希望的另一个接口,主要目的是充当两个不同接口之间的桥梁,使得原本接口不兼容的类能够一起工作。 基本结构 Target 是目标接口,Adaptee 是需要适配的类,Adapter 类将 Adaptee 的接口适配成 Target 接口,使得客户端可以通过 Target 接口来调用Adaptee 的功能。这样,客户端就可以使用目标接口,而不需要对原来的Adaptee进行修改,Adapter起到一个转接扩展的作用。

2024-08-16 13:41:50 468

原创 C++ 设计模式(5. 原型模式)

原型模式一种创建型设计模式,该模式的核心思想是基于现有的对象创建新的对象,而不是从头开始创建。 原型模式的基本结构 实现原型模式需要给原型对象声明一个克隆方法,执行该方法会创建一个当前类的新对象,并将原始对象中的成员变量复制到新生成的对象中,而不必实例化。并且在这个过程中只需要调用原型对象的克隆方法,而无需知道原型对象的具体类型。 原型模式包含两个重点模块: 抽象原型接口prototype: 声明一个克隆自身的方法clone 具体原型类ConcretePrototype: 实现clone方法,

2024-08-16 13:40:26 515

原创 C++ 设计模式(4. 建造者模式)

建造者模式(也被成为生成器模式),是一种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,而建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义一个抽象的接口。具体的构建过程由实现了这些接口的具体建造者类来完成。同时有一个指导者类负责协调建造者的工作,按照一定的顺序或逻辑来执行构建步骤,最终生成产品。 基本结构 建造者模式有下面几个关键角色: 产品Product:被构建的复杂对象, 包含多个组成部分。 抽象建造者Builder: 定义构建产品各个部分的抽象接口和一个返回复杂

2024-08-16 13:39:16 367

原创 C++ 设计模式(3. 抽象工厂模式)

抽象工厂模式也是一种创建型设计模式,提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类【引用自大话设计模式第15章】 基本结构 抽象工厂模式包含多个抽象产品接口,多个具体产品类,一个抽象工厂接口和多个具体工厂,每个具体工厂负责创建一组相关的产品。 通俗解释: 抽象产品接口AbstractProduct: 定义产品的接口,可以定义多个抽象产品接口,比如说沙发、椅子、茶几都是抽象产品。 具体产品类ConcreteProduct: 实现抽象产品接口,产品的具体实现,古典风格和沙发

2024-08-16 13:37:34 387

原创 C++ 设计模式(2. 工厂方法模式)

工厂方法模式也是一种创建型设计模式,简单工厂模式只有一个工厂类,负责创建所有产品,如果要添加新的产品,通常需要修改工厂类的代码。 工厂方法模式分为以下几个角色: 抽象工厂:一个接口,包含一个抽象的工厂方法(用于创建产品对象)。 具体工厂:实现抽象工厂接口,创建具体的产品。 抽象产品:定义产品的接口。 具体产品:实现抽象产品接口,是工厂创建的对象。 应用场景 工厂方法模式使得每个工厂类的职责单一,每个工厂只负责创建一种产品,当创建对象涉及一系列复杂的初始化逻辑,而这些逻辑

2024-08-16 13:35:25 208

原创 C++ 设计模式(1. 单例模式)

单例模式是一种创建型设计模式, 它的核心思想是保证一个类只有一个实例,并提供一个全局访问点来访问这个实例。 特点 全局访问点的意思是,为了让其他类能够获取到这个唯一实例,该类提供了一个全局访问点(通常是一个静态方法),通过这个方法就能获得实例。 只有一个实例的意思是,在整个应用程序中,只存在该类的一个实例对象,而不是创建多个相同类型的对象。 优点 全局控制:保证只有一个实例,这样就可以严格的控制客户怎样访问它以及何时访问它,简单的说就是对唯一实例的受控访问(引用自《大话设计模式》第21

2024-08-16 13:33:53 418

原创 C++ TinyWebServer项目总结(4. 访问一个网页的全过程)

整个访问过程中的交互细节是什么?浏览器首先检查本地缓存是否已经存储了这个 URL 对应的 IP 地址。如果没有缓存或缓存过期,浏览器将发起一个 DNS(域名系统)查询,以将域名()转换为服务器的 IP 地址。这通常涉及向本地 DNS 服务器或更高级别的 DNS 服务器查询。(本地域名服务器、根域名服务器、顶级域名服务器、权限域名服务器),查询方式主要是递归和迭代相结合的方式。客户端浏览器收到解析结果后,会将其域名以及对应的IP地址缓存到DNS缓存和hosts文件中。

2024-08-16 13:24:17 836

原创 C++ TinyWebServer项目总结(3. TCP协议)

TCP协议介绍。

2024-08-16 13:12:10 1371

原创 C++ TinyWebServer项目总结(2. IP协议)

IP协议介绍

2024-08-16 13:08:22 846

原创 C++ TinyWebServer项目总结(1. 配置安装)

项目TinyWebserver个人学习总结。

2024-08-16 12:58:50 603

原创 北森 图形测评 类题目总结

最近秋招,除了笔试外,还做了很多人才测评的题目,里面的图形推理题有时候看了真是毫无头绪,根本看不出什么规律,于是去某鱼上专门淘了个题库,整理出如下文档,分享同样有需要的大家。

2024-08-14 13:03:35 669

翻译 论文阅读: Research on a full envelop controller for an unmanned ducted-fan helicopter based on ...

切换系统,鲁棒控制,无人直升机,飞行控制。

2024-03-20 14:35:39 63 1

翻译 论文粗读:BiConMP: A Nonlinear Model Predictive Control Framework for Whole Body Motion Planning

这篇文章介绍了一个名为BiConMP的非线性模型预测控制(MPC)框架,旨在为腿式机器人提供在线的全身运动规划。腿式机器人的动态特性因其非线性而变得难以预测,尤其是在考虑到整个机体运动时。BiConMP利用了机器人动态中的双凸性(biconvexity),通过有效利用机器人动态的结构,在线生成全身运动轨迹。

2024-03-20 13:36:05 108

翻译 论文阅读:Whole-body control of humanoid robots

机器人全身控制(Whole-body Control)综述的翻译及个人理解。

2024-03-19 20:44:06 869

原创 PX4自定义机架

PX4自定义一个新的机架文件

2023-03-15 16:29:44 992 1

翻译 PX4二次开发(一:PX4架构)

我个人一些PX4开发的学习记录

2023-03-15 11:33:22 763

十大排序算法C++代码

十大排序算法C++代码

2024-09-27

空空如也

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

TA关注的人

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