- 博客(141)
- 资源 (1)
- 收藏
- 关注
原创 linux命令行工具进阶
本文记录了一些不经常用到,但在某个时刻需要用到的一些指令。免密ssh登录到远程提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2025-03-23 21:24:34
1435
2
原创 busybox的终端图形化界面菜单
busybox终端图形化配置界面,和内核的相似进程启动,准备数据调用子程序子程序负责渲染| bufbufptr显示内容通过文件配置,主进程负责读取和解析Config.in,并为子进程生成要渲染的数据,子进程负责实际的渲染工作。内容配置文件有简单的语法定义// 解析 conf_parse 文件// 显示的文本 Busybox Configuration//int lineno;// 用于 hash 冲突的表链char *name;char *help。
2025-03-23 21:15:17
267
原创 protobuf, rpc, 火焰图
protobuf: 一种将结构化数据进行序列化和反序列化的协议,提供IDL工具,生成接口代码,支持多种语言。rpc: 类似http的请求相应模式,可跨设备提供远程接口调用功能,其接口可通过protobuf定义。利用perf生成火焰图,分析程序性能。
2025-03-10 22:19:41
731
原创 个人NAS方案,终端字符界面浏览器
可以通过浏览器访问nas中的文件、图片、视频支持像访问本地分区一样访问nas,对应用程序来讲文件在nas和本地是透明的。
2025-02-17 20:09:51
992
原创 io多路复用, select, poll, epoll 线程池
阻塞IO非阻塞IOIO复用信号驱动Linux用套接字进行信号驱动IO,安装一个信号处理函数,进程继续运行并不阻塞,当IO事件就绪,进程收到SIGIO信号,然后处理IO事件异步。
2024-12-31 21:30:34
838
原创 Linux账号管理与权限设定
很多程序的运行都与权限有关,而权限与UID/GID有关。ACL(Access Control List), 在传统权限基础之上提供额外的细节权限设定,它可针对单一使用者、单一文件或目录进行rwx权限限制。/etc/passwd的GID就是该账户的初始群组,当使用者一登入系统,立刻就会有这个群组的相关权限的意思。当使用者执行sudo时,系统在**/etc/sudoers**文件中搜索该使用是否能执行sudo。查看、修改shell,其实就是/etc/shells的内容。记录GID与群组名称的对应。
2024-12-16 22:46:11
1241
原创 数据结构与算法——深度优先搜索算法
本文所述的深度优先搜索算法主要针对树状结构,其中的树的每个节点都可以包含0到多个子节点。深度优先,即为先纵向搜索树的枝干,搜索到该枝干的叶子节点后返回,再搜索另一条枝干(横向搜索),从而在纵向和横向上实现对整个树形结构的全遍历。
2024-12-16 22:45:14
385
原创 一种程序结构设计json,多线程,避免数据竞争
我已经学会了C语言,json解析程序就是用C语言的基本语法写的,那么我应该可以解析json了此外还提供了一种避免数据竞争的多线程程序。
2024-11-17 22:32:58
357
原创 深度探索C++对象模型
c++对象模型语言中直接支持面向对象程序设计的部分对于各种支持的底层实现机制说白了是介绍编译器是如何支持、实现C++的面向对象机制的。如,继承、虚函数、指向class members的指针等等,编译器是如何实现的。本书C++语法基于C++95本书出版自2001年,虽然书中用到的标准早已盖棺定论,cfront编译器也早已过时,当时来看一些无法确定的标准、难以实现的技术、功能也早已实现,但是对C++对象模型的某些实现方式依然沿用至今。这本书依然不过时。
2024-10-27 22:17:24
1481
原创 国密算法SM4实现
SM4是国内采用的一种分组密码标准,有国家密码管理局于2012年3月21日发布,相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。2016年8月,成为中国国家密码标准(GB/T 32907-2016)。SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。分组长度 block length: 一个信息分组的比特位数密钥长度key length:密钥的比特位数。
2024-10-27 22:15:55
775
原创 boost log 快速入门 Getting started
本文的boost log实力代码具有易读时间戳、可选日志级别和自动换行的C++风格日志打印功能,且保证
2024-10-24 22:07:11
1237
原创 C++ STL 适配器
适配器(adapters)在STL组件的灵活组合运用上扮演者重要角色。Adapter这个概念源于23个设计模式中的一个:将一个class的接口转换为以一个class接口,使原本因接口不兼容而不能合作的classes可以一起运作。实际上就是在原有的接口上再套一层接口或许叫接口适配器或者接口层也可algorithm里存放各种算法如accumulate,sort等functional里存各种xx函数如std::move, less, greater等适配器一般要和泛型算法配合使用方可体现其强大之处。
2024-09-08 21:09:11
746
原创 操作系统概述(三、虚拟化)
操纵系统内核的启动:CPU Reset->Firmware->Boot loader->Kernel_start()->…init进程, init进程通过系统调用创建Linux中的所有…操作系统启动后做了什么?操作系统如何管理程序(进程)
2024-09-08 21:08:42
1325
原创 Cyclone DDS Getting started
ROS getting started https://blog.youkuaiyun.com/surfaceyan/article/details/137162604eProsima Fast DDS getting started https://blog.youkuaiyun.com/surfaceyan/article/details/137162608Fast-DDS & ros2 ros与fastdds通讯 https://blog.youkuaiyun.com/surfaceyan/article/details/14062
2024-08-25 09:17:28
356
原创 C++ STL 关联容器
C++STL迭代器iterator设计 https://blog.youkuaiyun.com/surfaceyan/article/details/126772555C++ STL 序列式容器(一 vector list) https://blog.youkuaiyun.com/surfaceyan/article/details/126860166C++ STL 序列式容器(二 deque slist) https://blog.youkuaiyun.com/surfaceyan/article/details/127083966t
2024-08-25 09:10:03
905
原创 Fast-DDS & ros2 ros与fastdds通讯
本文介绍了ros环境中的节点与无ros环境程序之间的通讯。其中plumbing采用DDS协议,ros2默认其中Fast-DDS,因此ros2节点默认是通过fastdds与其他节点(应用)进行通讯的,本文介绍的是在ros2环境下编写的节点与远程主机无ros环境通过fastrtps库编写的程序之间的通讯。ros2中的类型与C++, python, DDS type 之间的对应关系。
2024-07-28 22:16:02
1758
原创 ROS getting started
ROS在Ubuntu的基础上实现了一套机器人操作系统框架。ROS并非是像Linux那样的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。
2024-07-28 22:15:15
419
原创 zmq socket 和 模式
如何创建和使用ZMQ sockets通过socket send和 receive message使用ZMQ的异步I/O模型单线程处理多个socket适当的处理致命和非致命错误处理如Ctrl+C的中断信号关闭并清理ZMQ应用如何检测ZMQ应用的内存泄露发送和接收 multipart messages如何跨网络转发消息如何构建一个简单的消息队列代理使用ZeroMQ编写多线程应用程序使用ZeroMQ在线程之间发送信号使用ZeroMQ协调节点网络。
2024-07-14 22:48:06
1056
原创 eProsima Fast DDS getting started
eProsima Fast DDS是DDS规范的C++实现,DDS是由OMG定义的一种协议。eProsima Fast DDS 库提供应用程序编程接口 (API) 和通信协议 部署 以数据为中心的发布者-订阅者 (DCPS) 模型,旨在建立高效可靠的信息在实时系统之间分配。eProsima Fast DDS 在资源处理方面具有可预测性、可扩展性、灵活性和高效性。为了满足这些要求,它利用了类型化接口和多对多的铰链 分布式网络范式,巧妙地允许将通信的发布者和订阅者端分开。DDS API实现。
2024-07-14 22:47:36
1333
原创 GCC扩展功能、函数,预处理命令
GCC(GNU Compiler Collection)提供了许多扩展功能,这些功能在标准C和C++中没有定义,但可以提高代码的效率和可移植性。__LINE__ // int #line num 会重置该值。
2024-07-07 17:48:33
1293
原创 ZMQ Getting Started
ZMQ(ØMQ、ZeroMQ, 0MQ)看起来像是一套嵌入式的网络链接库,但工作起来更像是一个并发式的框架。它提供的套接字可以在多种协议中传输消息,如线程间、进程间、TCP、广播等。你可以使用套接字构建多对多的连接模式,如扇出、发布-订阅、任务分发、请求-应答等。ZMQ的快速足以胜任集群应用产品。它的异步I/O机制让你能够构建多核应用程序,完成异步消息处理任务。ZMQ有着多语言支持,并能在几乎所有的操作系统上运行。ZMQ是iMatix公司的产品,以LGPL开源协议发布。
2024-07-07 17:46:51
945
原创 我的创作纪念日
提示:你过去写得最好的一段代码是什么?提示:当前创作和你的工作、学习是什么样的关系。提示:可以和大家分享最初成为创作者的初心。提示:在创作的过程中都有哪些收获。提示:职业规划、创作规划等。
2024-05-19 16:53:52
265
原创 nmap getting started 网络扫描工具安全加固工具
Nmap(Network Mapper)是一款用于网络发现和安全审计的强大工具。它可以帮助你识别网络上的主机、服务和开放端口,并提供关于它们的详细信息。基本扫描扫描多个主机指定端口范围服务和版本探测Nmap可以识别正在运行的服务和它们的版本信息。你可以使用-sV选项来启用服务和版本探测。操作系统检测Nmap可以尝试识别目标主机的操作系统。你可以使用-O选项来进行操作系统检测。脚本扫描Nmap提供了一系列预置的脚本,可以用于执行更深入的审计和攻击。
2024-04-21 11:38:29
290
原创 VIM插件安装与配置
在某些情况下只能用vim编辑器,而没有类似vscode的图形化界面,为vim配置一系列插件即可方便的在vim下编程建议用vscode,经过一番折腾,发现还是vscode好用。
2024-04-21 11:38:00
1828
原创 C/C++编译问题,摆脱编译时的动态库依赖
在编译程序时,考虑如下场景:代码中使用到了A库的函数,此外再无其它依赖库。但是,A库中使用了B库的函数,B库依赖C库,C库依赖D库。因此在编译可执行文件时,需要找到ABCD,并指定库的路径,在链接时才不会爆出找不到某个定义的错误。如果在交叉编译时A库的依赖项高达几十甚至更多个,会让编译变得非常麻烦,需要指定每个库的位置和库名,有些情况可能需要给库添加软链。有没有什么方法在编译时不需要指定依赖?在编译可执行文件时,需要找到所有已使用符号的定义,如果该符号在动态库中就需要指定动态库;
2024-03-17 17:07:49
1988
原创 Linux运维相关基础知识(一)
终端仿真器/终端仿真程序虚拟控制台tty1(桌面环境 gnome等) | tty2 | tty3 …分区(分区表,GPT等)物理磁盘Linux系统拥有很高的灵活性和自由度,系统启动后首先进入桌面环境(例如Ubuntu默认进入gnome,用户可更换其他桌面)或者tty(虚拟终端)。当进入桌面环境后可启动终端仿真器(用户可自行更换),终端仿真器会启动默认的shell(Ubuntu默认bash,用户可自行更换)。
2024-03-17 17:07:26
1068
原创 riscv简单常用汇编指令xv6
riscv在目录下,执行make qemu-gdb ,进程会阻塞.另开一个终端,在目录下,执行gdb-multiarch kernel/kernel进入gdb后 b _entry将断点打在最开始处退出qemu:用户态执行#include "syscall.h"# execinit , 0 };init , 0 };init , 0 };init , 0 };init , 0 };;init , 0 };init , 0 };init , 0 };
2024-03-10 18:33:49
2294
原创 boost.asio使用简介
The Boost.Asio库是为使用C++进行系统编程的程序员设计的,在系统编程中,通常需要访问操作系统功能(如网络)。特别是Boost。便携性。该库应支持一系列常用的操作系统,并在这些操作系统之间提供一致的行为。可扩展性。该库应促进可扩展到数千个并发连接的网络应用程序的开发。每个操作系统的库实现都应该使用最能实现这种可伸缩性的机制。效率该库应支持分散采集I/O等技术,并允许程序最大限度地减少数据复制。从已建立的API(如BSD套接字)中建模概念。
2024-03-09 21:53:10
2116
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人