自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池原理与实现

本文介绍了线程池的工作原理及其实现方式。线程池通过预先创建并管理一组工作线程,实现任务的高效处理,避免了频繁创建和销毁线程的开销。文章采用银行柜台服务的类比,解释了线程池的运作机制:用户线程(客户)提交任务(业务)到任务队列(取号机),工作线程(柜员)从队列获取任务执行。核心数据结构包括任务描述结构体和线程池控制结构体,分别对应"做什么"和"如何管理"两个方面。线程池工作流程遵循生产者-消费者模型,通过条件变量实现任务调度和线程休眠/唤醒。这种设计显著提升了系统性能,特别适用于高并发场景。

2026-07-10 16:49:04 240

原创 环形队列设计——基于共享内存的高效进程间通信

* 队列头部:记录元信息和同步状态 */int rd_idx;/* 读索引(下一个要读取的 block 编号) */int wr_idx;/* 写索引(下一个要写入的 block 编号) *//* 环形队列中 block 的总数 *//* 每个 block 的字节大小 *//* 信号量集合 ID,用于同步互斥 *//* 环形队列句柄:连接头部和数据区 *//* 指向共享内存中头部区域的指针 *//* 指向数据存储区的指针(紧跟在 header 之后) */

2026-07-10 15:28:08 251

原创 I/O 多路复用完全指南 —— select、poll、epoll

I/O多路复用技术对比指南 本文系统介绍了三种I/O多路复用技术:select、poll和epoll。传统I/O处理方案存在资源浪费问题(多线程模型)或CPU空转问题(轮询模型),而I/O多路复用通过内核监控多个文件描述符,实现高效事件通知机制。 三种技术核心差异: select:使用1024位的fd_set位图结构,每次全量扫描,存在描述符数量限制 poll:改进select的位图限制,采用pollfd数组,但仍需线性扫描 epoll:采用红黑树+就绪链表+回调机制,时间复杂度O(1),性能最优 应用建议

2026-07-10 14:43:31 337

原创 进程 vs 线程:全面对比分析

进程与线程:核心差异与应用场景分析 摘要 本文通过形象类比(公司大楼vs员工)和架构图解,系统对比了进程与线程的关键特性。进程作为资源分配单位,具有独立地址空间、高隔离性但创建和切换开销大(10-100μs);线程作为CPU调度单位,共享进程资源,创建和切换更快(1-10μs)。重点解析了二者在内存管理、通信机制(IPC vs全局变量)、容错性(线程崩溃影响整个进程)及适用场景的差异。通过流程图展示了fork()与pthread_create()的底层实现差异,指出线程复用地址空间的性能优势。结论强调:需隔

2026-07-10 13:38:56 347

原创 Linux 多线程编程——总结

这篇文章总结了Linux多线程编程的核心概念和操作命令。主要内容包括: 线程的基本概念:线程是进程内部的执行单元,共享进程资源但拥有独立栈空间,类比公司大楼里的员工协作场景。 进程与线程的对比:从地址空间、创建开销、切换速度、通信方式等多个维度进行比较,突出线程轻量级和高效的特点。 线程共享与独立资源:通过公司大楼的类比,形象说明线程共享代码段、数据段等资源,但各自拥有独立的栈空间和寄存器值。 线程监控命令:介绍了pidstat、top和ps三个实用命令,用于查看和监控线程运行状态,类比工厂巡查员的工作方式

2026-07-10 10:56:58 301

原创 Linux 进程间通讯(IPC)——总结

本文介绍了Linux进程间通信(IPC)的基本概念和主要机制,重点讲解了无名管道的原理和应用。 主要内容包括: IPC的必要性:由于进程地址空间隔离,进程间需要特殊机制进行通信 IPC机制全景: 管道(无名/有名) 信号 System V IPC(消息队列/共享内存/信号量) 无名管道核心特性: 单向通信,仅限父子进程 通过文件描述符操作 读写阻塞特性 原子性保证 经典应用场景演示:模拟shell命令"ls | sort -r" 文章通过类比日常生活场景(如传话筒、公共信箱等)帮助理解各种IPC机制的特点,

2026-07-09 17:13:50 387

原创 Linux 进程管理——总结

文章摘要 Linux进程管理笔记精要: 进程本质:程序的一次动态执行过程,是资源分配的最小单位(区别于线程的CPU调度单位)。类比程序为菜谱,进程即炒菜过程,PID唯一标识进程。 地址空间:32位系统为每个进程分配4GB虚拟地址空间(3G用户空间+1G内核空间),通过MMU硬件映射物理内存,实现内存隔离与安全访问。 进程状态:核心五状态转换模型(就绪、运行、可中断/不可中断睡眠、停止、僵尸态),通过状态机动态管理。僵尸态需父进程wait回收资源,避免内存泄漏。 结构特性:采用树形管理(init为根进程),支

2026-07-09 15:04:45 339

原创 cursor注册国内手机号全过程

国内的需要改成 +86 再输手机号,例如我的185 1xxx xxxx。默认的是:+1位北美地区号码归属地。

2026-03-05 13:57:24 8142 1

原创 NVIDIA Jetson设备刷写利器:l4t_initrd_flash.sh参数解析

掌握l4t_initrd_flash.sh的深入用法,能够显著提升Jetson设备部署效率,特别是在大规模生产环境和定制化存储方案中。该脚本的模块化设计(生成与刷写分离)和网络刷写支持,使其成为工业级应用的首选工具。建议结合具体硬件型号和JetPack版本,通过小规模测试验证后再部署到生产环境。

2025-07-14 11:19:31 1662

原创 异步I/O库:libuv、libev、libevent与libeio

• 追求开发效率与跨平台:libuv是现代化工程的标杆,尤其适合全栈JavaScript开发者。• 榨取Unix性能极限:libev+libeio仍是C语言老手的利器。• 历史与兼容性优先:libevent提供“一站式”传统解决方案。在异步I/O的世界里,库的选择决定了应用的天花板。理解其内核差异,方能写出既高性能又可持续维护的代码。

2025-07-10 18:00:57 1539

原创 VS Code 远程连接 带端口

【代码】VS Code 远程连接 带端口。

2025-07-10 14:09:56 242

原创 VMareTools 安装

一路Next,输入Y 到底。最后重启虚拟机(不重启不生效!

2025-07-08 10:28:45 440

原创 inotify-cpp 使用

‌ 是 Linux 系统调用inotify的一个 C++ 封装库。

2025-06-23 18:28:12 519

原创 fatal error: filesystem: No such file or directory

编译过程中出现 filesystem: No such file or directory 问题。

2025-06-23 17:48:25 368

原创 Ubuntu VMware虚拟机卡在/dev/sda1

虚拟机重启后,出现故障,一直卡在如下图所示地方,偶尔重启后,可以多显示一点:无法进入命令行。

2025-06-13 14:45:24 544

原创 NANO 最新 tegra 32.7.6 资源包安装记录

是NVIDIA Jetson开发工具包中的一个关键脚本,主要作用是将预编译的二进制文件(如内核模块、固件、库文件等)部署到解压后的根文件系统中。部分板卡需要修改tegra210-p3448-0002-p3449-0000-b00.dtb。该脚本通常在解压根文件系统后执行,是完成Jetson系统烧录前的必要步骤。

2025-06-10 14:21:20 433

原创 关于TFLOPS、GFLOPS、TOPS

在人工智能与高性能计算飞速发展的今天,“GFLOPS”“TOPs”“TFLOPS” 这些术语频繁出现在芯片参数、设备评测中。例如NANO官方的技术规格。它们如同衡量计算能力的 “度量衡”,是判断硬件性能的关键指标。那么,这些神秘的缩写究竟代表着什么?它们之间又存在怎样的联系与差异?

2025-06-09 16:58:50 1934

原创 新版NANO下载烧录过程

搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。

2025-06-05 15:35:05 1365

原创 系统调试——ADB 工具

ADB(Android Debug Bridge) 是 Android SDK 里的一个工具, 用这个工具可以操作管理Android 模拟器或真实的 Android 设备。ADB 是一个“客户端-服务器端” 程序, 其中客户端主要是指 PC, 服务器端是 Android 设备的实体机器或者虚拟机。

2025-06-04 15:03:25 1208

原创 新制作文件系统占满:Error writing to file - write (28: No space left on device)

新制作的文件系统刷机后,发现系统占满。

2025-06-04 14:23:08 559

原创 NANO 2025年新批次板卡SD卡问题

正常启动过程(我这里安装了WK驱动和ads 驱动,未安装设备没有):异常过程:SD卡初始化报错,或无法识别SD卡。

2025-06-03 15:33:19 1345

原创 NANO 2025年新批次板卡启动问题

串口卡在串口enable,插上HDMI 开机画面在白色底的NVIDIA ,过一段时间后重启。

2025-06-03 15:09:43 878 1

原创 18.04 update 报错:(appstreamcli:2822): GLib-ERROR

【代码】18.04 update 报错:(appstreamcli:2822): GLib-ERROR。

2025-06-03 11:16:46 477

原创 Windows 使用 WSL 安装 Ubuntu

Windows 上轻松跑 Linux 又不想用笨重的VMware 和VirtualBox,怎么办?开源项目。它解决了许多开发者在 Windows 和 Linux 间切换的痛点,实现在 Windows 上无缝跑 Linux 工具和命令。,简称 WSL,是一个能直接在 Windows 上运行 Linux 命令行工具、编译代码,甚至运行 GUI 应用的神器。不需要虚拟机,也不用重启电脑。GitHub 上已经吸引了,足见业界关注度和热度。主体用开发,同时包含等语言协作开发。

2025-05-23 10:21:20 1931

原创 Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy

​​应该看到talker​说它正在Publishing​消息,listener​说I heard​这些消息。如果你在一个最小的环境中(比如docker容器),语言环境可能是最小的,比如POSIX​。始终建议您在安装新软件包之前确保您的系统是最新的。如果安装ros-foxy-desktop​,可以尝试一些例子。但是,如果你使用不同的UTF-8支持的语言环境,应该没问题。​需要将ROS 2 apt存储库添加到系统中。​添加带有apt的ROS 2 GPG密钥。确保你有一个支持UTF-8​的语言环境。

2025-04-29 17:16:40 2534

原创 安装Second Me

Second Me我的损失:随着人工智能获得力量,我们失去了意义我们真正相信什么?像许多人一样,我们看到了通用人工智能(AGI)的巨大潜力。然而,有一个缺口——一个“缺失的部分”——让我们感到不安。担忧是真实的:随着通常被称为“上帝模型”的AGI的出现,我们有可能失去自己的身份,沦为超级智能力量控制下的棋子。随着人工智能的进步,我们的个性面临风险:•我们的数据掌握在企业手中,为科技巨头训练人工智能,而不是我们自己•我们的经验和见解失去了相关性,取而代之的是标准化的人工智能反应•。

2025-04-24 10:30:20 1525

原创 Ubuntu 20.04 安装Docker 全过程

系统版本:Ubuntu 20.04.3。

2025-04-23 18:33:38 4609 3

原创 ubuntu20.04 远程桌面Xrdp方式

最后可以远程,但一定可能出现连接黑屏。此时再次连接,正常。

2025-04-22 15:55:36 1505 2

原创 VMware无法检测到USB设备

正常使用的VMware虚拟机,可能跟前段时间关闭系统启动项相关,现在虚拟机插拔USB设备都无法检测到,插拔设备没有任何的反应和提示。windows 可以正常识别,插拔USB,VMware虚拟机无任何反应。

2024-12-31 10:39:58 2252

原创 C++ ——命名空间namespace

一般情况下,如果c++中出现两个变量、函数名、类名完全相同时,就会产生冲突。解决命名冲突的办法传统的做法是重新使用不同的标识符。但又是这样做有时反而降低程序的可读性,因此c++提供了第二种解决命名冲突的方法——命名空间。将这些名字相同的变量、函数和类定义在不同的命名空间中,问题就解决了。需要注意的是,同一个命名空间中标识符须是唯一的。例如:XX和YY都定义了一个全局变量 fp,用来指明当前打开的文件,将他们的代码整合在一起编译时,编译器会提示 fp 重复定义( Redefinition)错误。

2024-12-26 14:25:19 522

原创 spdlog 关于 std::make_shared<spdlog::sinks::rotating_file_sink_mt> 使用详情

关于:std::make_shared<spdlog::sinks::rotating_file_sink_mt> 第一参数大多数例子,包括头文件中给的都是 "logs/log.txt" 字符串样式代码中使用 string 还是 转成 char * 使用?

2024-12-23 18:07:33 638

原创 有道云笔记批量导出

它可以将云笔记全部按目录下载下来。

2024-12-12 11:37:15 3175 1

原创 ubuntu 格式化磁盘为ext4、fat、ntfs 等

1、兼容性:FAT是计算机系统中最古老的文件系统,它的兼容性最好,几乎所有的操作系统都能支持它。3、文件名:FAT只能支持短文件名,文件名长度最多只能8个字符,而VFAT则支持长文件名,文件名长度可以达到255个字符。5、管理性:FAT具有较好的管理性,它能够自动进行文件碎片整理,而VFAT则不具有这一特性,文件碎片整理需要用户手动完成。其中,`/dev/sdXn` 是要格式化的分区路径,`<文件系统类型>` 是要使用的文件系统类型。下列参数,版本系统不同,可能有所差异(慎用不清楚的参数,常用为-t)。

2024-12-04 14:36:09 4456

原创 nginx 服务搭建

Nginx 是一个非常轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。

2024-12-03 11:43:33 650

原创 解决 VMware ubuntu--vg-ubuntu--lv 磁盘空间不足的问题

VMware 安装 Ubuntu Server查看文件系统磁盘空间的使用情况可以发现 /dev/mapper/ubuntu–vg-ubuntu–lv 虚拟机根目录空间几乎占满。查看磁盘信息,还有很多查看LVM卷组的信息使用命令进行磁盘扩容。

2024-11-27 10:55:04 670

原创 ARM板 海康威视SDK使用

3,将 HCNetSDKV6.1.9.45_build20220902_ArmLinux64_ZH_20240802154010 中库 全部拷贝到 consoleDemo/linux64/lib 同理拷贝到psdatacall_demo相应目录;设备网络SDK_Linux64 V6.1.9.48_build20230410 与 设备网络SDK_ArmLinux64 V6.1.9.45_build20。问题:直接编译,可能缺少库,可以通过export 或者拷贝到/usr/lib 下解决。

2024-11-21 16:00:39 3519 4

原创 ubuntu Error! The directory /var/lib/dkms/asg_xdroid/2.0/source does not appear 等错误处理

尝试通过更换内核方式解决,更换成低版本linux-headers-6.8.0-31-generic 后问题依旧。

2024-11-01 10:55:43 919 2

原创 程序运行缺库,但本地已安装

原因分析:在编译的时候已经指定了库的路径,程序编译完成在运行可执行文件时,提示错误:找不到libssl.so.3(在默认路径/lib、/usr/lib)说明编译程序时加入的库路径,并不是意味着把路径参数也编译进去后,可以直接运行可执行文件,事实是执行程序时仍需要指定库的路径(可以采用静态编译(libxxx.a),这样可以直接执行)。

2024-10-21 16:32:28 679

原创 paho.mqtt.c 及 paho.mqtt.cpp编译问题记录

原因分析:ssl 环境问题,但在其他设备中编译均可正常编译所有库,NANO 中需显示调用。问题 无法编译出 libpaho-mqtt3as.so 等库。ubuntu 直接安装openssl。注意:前提是已经安装过ssh。

2024-10-21 14:13:36 674

原创 查看当前编译器是否支持C++17

man gcc。

2024-10-16 14:26:18 1585 2

空空如也

空空如也

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

TA关注的人

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