自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 [论文阅读]: HE-Nav: A High-Performance and Efficient Navigation...

在这封信中,我们介绍了 HE-Nav,这是第一个针对杂乱环境中运行的 AGR 量身定制的高性能和高效导航系统。感知模块利用由鸟瞰(BEV)特征融合指导的轻量级语义场景完成网络(LBSCNet),并通过精心设计的SCBFusion模块和注意机制增强。这使得杂乱区域的实时高效的障碍物预测成为可能,生成一个完整的局部地图。基于这个完成的地图,我们的新 AG-Planner 采用节能的运动学 A* 搜索算法来保证规划是节能的。随后的轨迹优化过程产生安全、平滑、动态可行和无ESDF的空中地面混合路径。

2025-01-16 17:15:34 57 1

翻译 [论文阅读]: AGRNav: Efficient and Energy-Saving Autonomous Navigation...

在这项工作中,我们提出了 AGRNav,一个旨在寻找安全和节能的空-地混合路径的新框架。AGRNav包含一个轻量级的语义场景完成网络(SCONet),具有自注意力机制,通过捕获上下文信息和遮挡区域特征来实现准确的障碍物预测。该框架随后采用基于查询的方法将预测结果低延迟地更新到网格图。最后,基于更新后的地图,分层路径规划器高效搜索节能路径进行导航。我们通过模拟和现实环境中的基准测试验证了AGRNav的性能,证明了其优于经典和最先进的方法。

2025-01-15 22:09:19 65 1

原创 三维 A* 搜索算法(Rviz可视化)

三维A*算法开源demo,提供Rviz中可视化。

2024-12-19 15:12:38 516

原创 Fast-Planner 改进与优化:支持ROS Noetic构建与几何A*路径规划

复现后的项目开源在:https://github.com/bhu619/Fast-Planner-Noetic

2024-12-16 18:14:00 1091

原创 12. 做一个自己的网页

Web 服务器 前端页面设计

2024-11-17 21:22:59 738

原创 11. 将webserver部署到公网(使用阿里云服务器)

webserver的云服务器配置;设置开机自启动;使用域名访问服务器;云端和本地端的压力测试。

2024-11-11 23:51:55 1003

原创 《Linux 高性能服务器编程》总结——专栏介绍

专栏介绍

2024-11-08 15:34:43 1329 3

原创 14. 进程池和线程池

之前的章节中,我们通过动态创建子进程或子线程来实现并发服务器,这样做的缺点有:+ 动态创建进程或线程比较耗时,这将导致较慢的客户响应。+ 动态创建的子进程或子线程通常只用来为一个客户服务(除非我们做特殊处理),这将导致系统上产生大量的细微进程或线程,进程或线程间的切换将消耗大量CPU时间。+ 动态创建的子进程是当前

2024-11-08 15:17:50 699

原创 7. 触发模式

触发模式决定了服务器如何接收和处理事件,具体涉及到。在高性能网络编程中,常用的事件通知机制是。的值,设置服务器的监听套接字((在 Linux 系统中)。

2024-11-04 18:19:50 247

原创 8. 定时器 / 信号处理

事件驱动服务器的核心实现,包括定时器管理、文件描述符操作、信号处理、以及错误处理;统一事件源简化事件管理流程;基于双向升序链表的定时器管理系(`sort_timer_lst`类);定时器处理非活动连接

2024-11-04 18:14:09 1028

原创 myWebserver 介绍

linux服务器项目介绍/笔记

2024-11-03 22:34:03 853

原创 6. 线程池实现

线程池:创建、销毁、任务队列、信号量和锁实现线程安全

2024-10-31 22:30:36 1027

原创 使用 Github 进行项目管理

简单使用 Github 管理项目;配置 SSH 访问远程 Git 仓库;使用 github 在本地新建一个仓库,并推送到远程;

2024-10-31 18:21:55 985

原创 5. 数据库连接池实现

数据库连接池的实现;单例模式和RAII机制在数据库连接池中的使用;使用智能指针对源代码改进,不需要手动管理数据库连接,避免资源泄露

2024-10-30 22:43:21 823

原创 4. 日志系统实现

日志系统的实现与改进:内存管理;异常处理;线程安全与锁机制;异步写入时,阻塞队列满后的处理。

2024-10-30 16:46:54 1092

原创 2. 从服务器的主接口入手

Webserver 的主函数 main.cpp,完成了哪些功能?Config类实现了哪些功能?是怎么实现的?有哪些可以改进的地方?

2024-10-29 23:09:50 1201

原创 【HOT100】技巧篇(136. 只出现一次的数字/169. 多数元素/75. 颜色分类/31. 下一个排列/287. 寻找重复数)

【HOT100】技巧篇(136.只出现一次的数字/169.多数元素175.颜色分类/31.下一个排列/287.寻找重复数)

2024-10-29 18:46:13 340

原创 打家劫舍系列(动态规划、二分查找、贪心)

打家劫舍系列

2024-10-20 15:33:38 1346

原创 2439. 最小化数组中的最大值 (前缀和 / 二分查找)

leetcode 2439. 最小化数组中的最大值 (前缀和 / 二分查找)

2024-10-19 12:23:39 966

原创 查找(线性/顺序、二分/折半、分块/索引、哈希)

查找的平均查找长度(Average Search Length,简称 ASL)是衡量查找效率的一个重要指标,表示在查找表中查找元素时,平均需要检查的元素个数。它与查找方法、查找表的结构以及查找成功或失败的概率等因素有关。根据不同的查找方法,平均查找长度的计算方式会有所不同,下面介绍线性查找、二分查找和哈希查找的平均查找长度的计算方法。

2024-10-18 15:07:44 2031

原创 买卖股票的最佳时机(动态规划方法总结)

总结一下,买卖股票系列的动态规划思想

2024-10-17 16:26:23 1577 3

原创 MySQL 基础入门教程

SQL语言基础语法

2024-10-08 17:56:05 1091

原创 十大排序算法总结

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

2024-09-27 16:43:30 215

原创 15. 服务器调制、调试和测试

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

2024-09-25 15:15:48 965

原创 四足机器人控制算法——建模、控制与实践(unitree_guide配置、自主导航ROS仿真)

宇树科技 unitree_guide 配置

2024-09-01 18:08:46 5209 17

原创 13. 多线程编程

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

2024-08-28 22:53:53 948

原创 12. 多进程编程

本章讨论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 1265

原创 11. 高性能I/O框架库Libevent

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

2024-08-27 20:39:31 1102 2

原创 10. 定时器

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

2024-08-27 14:23:04 867

原创 9. 信号

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

2024-08-24 18:31:51 1140

原创 8. I/O 复用

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

2024-08-23 21:10:48 1331

原创 7. 高性能服务器程序框架

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

2024-08-21 17:22:30 1534

原创 6. Linux服务器程序规范

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

2024-08-20 16:47:45 1146

原创 5. 高级 I/O 函数

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

2024-08-19 22:55:45 1101

原创 4. Linux网络编程基础API

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

2024-08-16 20:31:03 1088

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

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

2024-08-16 13:44:21 298

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

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

2024-08-16 13:42:48 200

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

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

2024-08-16 13:41:50 506

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

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

2024-08-16 13:40:26 537

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

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

2024-08-16 13:39:16 422

十大排序算法C++代码

十大排序算法C++代码

2024-09-27

空空如也

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

TA关注的人

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