自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多态(虚函数核心作用原理)--C++学习(0)

虚函数是在基类中用virtual关键字声明的成员函数,派生类可「重写(override)」该函数;当通过基类指针/引用调用该函数时,编译器不会在编译期确定调用哪个版本,而是在运行时根据指针/引用指向的「实际对象类型」(基类/派生类)选择对应的函数实现。// 基类声明虚函数public:virtual void showInfo() { // 虚函数核心:virtual 关键字cout << "Person 基类" << endl;

2025-12-21 23:21:23 741

原创 22_GDB调试记录+程序崩溃分析思路

本文展示了一个基于MQTT协议的消息队列系统实现。程序包含三个主要文件:main.cpp实现MQTT客户端功能,messagequeue.h定义消息队列结构体,messagequeue.cpp实现线程安全的消息队列操作。系统使用两个线程分别处理接收消息和发布消息,通过互斥锁和条件变量保证线程安全。消息队列采用链表结构实现入队(enqueue)和出队(dequeue)操作,支持多线程环境下的安全访问。MQTT客户端连接到本地代理,订阅和发布测试主题,实现消息的接收、处理和转发功能。

2025-12-19 23:35:11 963

原创 21_Linux中远程共享设备节点的工具usbip

USBip 作为 Linux 内核级工具,实现了 USB 设备节点的跨网络透明共享,核心优势是兼容性强、延迟低、无需修改应用程序。服务端通过usbip bindusbipd完成设备共享,客户端通过挂载后即可像本地设备一样操作。使用时需重点关注权限配置、设备占用、网络连通性三大问题,结合实际场景选择合适的设备节点路径和操作方式。本文提供的 C 语言示例可直接适配 USB 串口设备,其他类型设备可在此基础上根据协议扩展。

2025-11-27 21:33:10 1019

原创 20_Linux编程-qrencode库的使用

本文介绍了qrencode库的使用方法,包括安装配置和应用示例。qrencode是一个开源的QR码生成库,支持多种编码模式和纠错级别。文章提供了两种安装方式:在线安装(通过apt-get)和源码编译安装,并详细说明了交叉编译动态库的配置步骤。示例代码展示了如何生成二维码并打印其原始数组数据,支持命令行参数输入文本内容。代码实现了二维码的紧凑格式输出,使用■和□表示黑白模块,并包含边框设计。最后给出了项目配置(qmake.pro)和主程序(main.c)的完整实现方案。

2025-09-24 16:36:59 306

原创 19_内核模块挂载问题处理

内核模块挂载问题处理指南 本文介绍了内核模块挂载方法及常见问题排查方法。安装方法包括insmod *.ko和强制安装insmod -f *.ko。常见失败原因包括:内核版本不匹配、依赖模块缺失或内核配置问题。排查步骤:1)使用modinfo检查模块依赖;2)通过uname -r和modinfo比对内核版本;3)用lsmod查看已加载模块。这些方法可帮助诊断和解决模块加载失败问题。

2025-09-08 19:53:41 196

原创 03_计算机网络-网关ip和端口映射(路由器转发)操作和原理

摘要: IP与端口映射技术是实现外网访问内网设备的核心方法。方案一(路由器端口映射)适合有公网IP的场景,需配置转发规则并固定内网IP;方案二(内网穿透工具)适用于无公网IP或受限网络环境,需借助云服务器搭建转发服务。关键注意事项包括防火墙设置、端口冲突排查及动态IP绑定DDNS。选择方案取决于网络条件(有无公网IP)和稳定性需求,两者均需确保IP、端口、协议参数准确。通过合理配置,可高效实现远程访问内网NAS、监控等设备。

2025-09-02 21:30:29 1454 1

原创 04_动态库和静态库编译实验

静态库在可执行程序编译的时候就已经链接好了,运行的时候不再需要寻库操作动态库在可执行程序编译的时候指定了库的名称和调用函数的相关信息,运行时需要寻库操作若是库文件发生修改,静态库需要重新编译可执行程序,动态库只需要替换一下即可注意:可执行程序链接的形式自身无法确定,在编译时才根据库的属性进行对应的操作。

2025-08-14 17:21:21 857

原创 18_Linux中valgrind交叉编译嵌入式部署使用

此处给到一个偷懒的方式,可能实际开发时,第一次接触也不清楚目标平台有什么特点,对于参数也不知道其含义,自己配置的参数对不对,可以先进入目标平台的后台,打印出CPU和系统信息,然后交给大语言模型,让模型给配置一下。执行shell脚本,这里给到了一个通用的configure的编译脚本,如果有其他的程序需要编译可以使用该脚本,只需修改编译时根据目标平台特点,修改编译器和相关参数即可。通过以上步骤,你可以成功为 ARM Cortex-A7 平台交叉编译 Valgrind,并在目标设备上进行内存和性能分析。

2025-06-25 18:25:57 1103

原创 C语言库zlog日志库工具

zlog官网zlog是一个专为C语言设计的高性能、高可靠性日志函数库,具有以下核心特性与功能:​高性能:支持每秒数万至数十万条日志记录(具体性能因配置而异,最高可达72,000条/秒),远超传统syslog的性能。​线程安全与进程安全:适用于多线程和多进程环境,支持安全日志转档(日志文件按大小自动分割)。​纯C实现:无第三方依赖,兼容POSIX系统和C99标准,适用于嵌入式Linux及其他资源受限环境。​分类(Category)​:通过字符串标识不同日志来源,例如代码中可通过不同分类名输出不同目的的日志

2025-03-31 21:44:46 1432

原创 git使用钩子文件出现错误

git/hooks/commit-msg: 行 1: ` Your browse does not support frame!无法commit 1 个文件: .git/hooks/commit-msg: 行 1: 未预期的符号。可以提交到本地,但是不能生成change-Id,无法推送到远程。

2025-03-24 22:15:18 342

原创 17_线程互斥量和信号量的使用

摘要:本文介绍了线程同步中信号量和互斥量的使用机制。重点分析了pthread_cond_wait的线程状态变化:先释放互斥锁进入阻塞状态,收到信号后变为就绪状态,必须重新获取互斥锁才能继续执行。通过生产者-消费者模型示例,说明了条件变量和互斥锁的配合使用方式。同时指出,pthread_cond_signal应在解锁前调用,以避免竞态条件和减少线程切换开销。这种顺序能确保被唤醒线程在锁释放后立即获取锁,提高同步效率。

2025-03-20 23:08:48 712

原创 Linux中shell对话框(dialog)编程

dialog 是一个在类 Unix 系统(如 Linux、BSD 等)的终端环境下使用的工具,它能创建各种交互式的对话框,以方便用户与脚本进行交互。这些对话框提供了一种直观且友好的方式,让用户无需手动输入复杂的命令或参数,就能完成各种操作。

2025-03-04 11:34:16 639

原创 16_嵌入式开发编译不同Linux平台的依赖库

本文介绍了在嵌入式开发中如何手动编译不同平台的依赖库。主要包括:1)通过源码下载、配置和编译sqlite3数据库,并详细说明了交叉编译工具链的设置和动态库的部署使用方法;2)Gdb调试工具的交叉编译过程,重点强调了版本选择和编译参数配置。文章提供了完整的命令操作流程、环境变量设置方法以及实际项目中的配置示例,帮助开发者在嵌入式平台上成功构建和使用这些关键工具。编译过程中可能遇到的问题和解决方案也一并给出,具有较强实践指导价值。

2024-11-26 20:37:23 771

原创 15_Linux应用编程cJSON库的使用

本文介绍了cJSON库在Linux应用编程中的使用方法。主要内容包括:1)cJSON库的下载和引用方法,仅需cJSON.h和cJSON.c两个文件;2)提供完整的JSON创建和解析示例代码,演示如何构建多层嵌套的JSON对象和数组;3)详细说明动态库和静态库的编译链接方法,包括gcc编译参数设置和环境变量配置。该库使用简单,只需几行代码即可实现复杂的JSON数据操作,适用于需要轻量级JSON处理的C/C++项目。

2024-10-10 20:42:00 760

原创 14_Linux中参数和变量查看方法

Linux 系统中的变量种类繁多,涵盖了环境变量、内核参数、shell 内部变量以及系统配置变量等。查看这些变量的方法因变量类型而异,通常可以通过命令行工具如 printenv、sysctl、cat 等来查看。此外,也可以通过查看特定的配置文件来了解系统的配置信息。

2024-10-08 11:30:39 853

原创 13_Linux编程进程之间通信(完善中)

本文介绍了Linux系统中进程间通信的两种管道方式:匿名管道和命名管道。匿名管道(Pipes)只能用于具有亲缘关系的进程间通信,通过pipe()函数创建,数据单向流动。文中给出了父子进程通过匿名管道通信的代码示例。命名管道(Named Pipes/FIFOs)则突破了亲缘限制,通过mkfifo()创建存在于文件系统中的特殊文件,允许无关联进程通信。文章提供了生产者-消费者模式的实现代码,并特别说明了open()函数在命名管道中的阻塞行为,以及使用fcntl()函数时无法修改文件描述符基本打开模式的注意事项。

2024-09-07 22:42:30 702

原创 12_Linux时间处理操作

本文介绍了Linux中常用的时间处理结构体和函数,包括time_t、timespec、timeval、tm和itimerspec等类型,详细说明了它们的用途和实现方式。重点讲解了localtime函数返回的静态数据存储问题,并通过代码示例展示了如何正确使用这些时间处理函数。此外,还提供了使用itimerspec创建定时器并结合select系统调用进行定时处理的完整示例代码,帮助开发者理解Linux时间处理机制。文章最后通过实验验证了localtime函数返回数据被覆盖的问题,强调了数据拷贝的重要性。

2024-09-02 22:56:09 545

原创 02_计算机网络--监控抓取网口的报文

使用wireshark打开.cap文件即可。

2024-08-16 22:05:50 606

原创 11_Linux中如何让程序重启后自动启动

假设你的应用程序位于 /opt/myapp 目录下,并且有一个名为 myapp 的可执行文件。我们将创建一个名为 myapp.service 的文件,以定义如何启动、停止和服务的行为。[Unit][Service][Install][Unit] 部分Description:服务的描述。After:定义此服务依赖于哪些其他服务。在这里,我们指定 network.target,意味着服务将在网络准备好之后启动。[Service] 部分Type:定义服务的启动类型。

2024-08-15 22:01:25 764

原创 03_Linux网络配置命令方法

讲解了动态和静态ip的区别,ip和mac的配置方法

2024-07-30 15:14:50 689

原创 09_LINUX交叉编译工具链的配置过程和qtcreater软件配置方法

交叉编译工具链是一组用于在一台计算机上生成可在不同体系结构上运行的程序的工具。通常,交叉编译工具链由以下几个组件组成:交叉编译器:交叉编译器是工具链的核心组件,用于将源代码编译为目标体系结构上的可执行文件。交叉编译器能够理解源代码和目标体系结构之间的差异,并将代码正确地转换为目标平台上的可执行文件。调试器:交叉编译工具链通常还包括一个用于调试目标体系结构上的程序的调试器。调试器可以让开发人员在目标平台上运行程序,并提供查看变量、跟踪代码执行等功能。

2024-06-16 00:28:55 1433

原创 02_NFS的配置和使用技巧

nfs,跨平台共享文件

2024-06-11 23:26:18 698

原创 01_计算机网络--实用的网络运行机制

该文展示了网络通信中,设备怎样根据路由表和ARP寻找传输路径的原理,非常实用,在脑海中思考的过程中,需要注意报文所处的位置,报文起点,中转设备,目的设备。

2024-04-10 23:07:54 928

原创 10_C语言程序中也能执行终端命令

C语言中也能借助于linux命令行,快速实现特定功能

2024-03-20 21:16:21 1145

原创 虚拟机中win10无法上网

win11系统下,安装虚拟机,并在内部安装win10,遇到网络无法使用的情况,通过修改虚拟机中win10和win11的IP获得方式,,成功上网

2024-03-07 21:15:29 3054

原创 01_git的简单使用

本文介绍了Git团队协作中的常用操作指南,包括用户配置、SSH密钥生成、分支管理、代码提交和冲突解决等核心功能。主要内容有:如何配置本地和全局用户信息;生成并部署SSH密钥;分支的创建、查看、切换和追踪远程分支;代码修改的暂存、提交和推送流程;使用cherry-pick选择性合并提交;以及推送失败时的解决方案。这些命令涵盖了Git团队协作中的日常工作场景,包括git config、ssh-keygen、git branch、git checkout、git stash、git commit、git push

2024-02-06 17:48:05 496 1

原创 08_C语言构建C++中的类(另类的面向对象)

本文介绍了如何在C语言中模拟C++的类结构。通过#define和typedef两个关键字的配合使用,可以构建类似C++的类机制。文章首先对比了这两个关键字的区别:#define是预处理宏,进行字符串替换;typedef是类型定义,具有类型检查功能。然后给出了一个Student类的实现示例,展示了如何通过宏定义和结构体来模拟类声明。最后还提供了一个函数指针的另类用法示例,但建议采用分离式定义方式。这种方法在C语言中实现了类似面向对象的编程风格。

2023-10-06 21:04:55 261

原创 07_函数指针和void的妙用

本文介绍了函数指针和void指针的灵活应用。函数指针可用于结构体成员和函数参数传递,通过示例展示了如何将不同函数封装到结构体数组中循环调用。void指针则能够突破类型限制,作为通用指针接收和返回任意类型数据,通过类型转换实现多态功能。文章还演示了如何结合函数指针和void指针构建通用操作函数,提高代码复用性。这些技巧在C语言中能有效增强程序的灵活性和扩展性。

2023-09-10 02:12:20 321

原创 06_【Linux线程的使用】

本文介绍了Linux下线程的基本使用方法,主要包括线程创建、停止和状态管理三部分内容。线程创建使用pthread_create()函数,需指定线程标识符、属性、入口函数和参数;线程停止可通过return语句、pthread_exit()或pthread_cancel()实现。线程状态分为分离状态(自动释放资源)和可连接状态(需pthread_join()释放资源)。文章还提供了完整代码示例,展示如何创建线程、传递参数、获取返回值并进行线程同步。重点强调了线程资源管理和状态转换的重要性,以及pthread_j

2023-09-05 22:31:13 265

原创 03_虚拟机中网络设置和远程连接

本文介绍了虚拟机网络设置和不同系统间的互ping测试方法。主要内容包括:1)三种虚拟机网络模式(NAT、桥接、主机模式)的特点和连通性现象;2)Linux和Windows系统的远程连接工具(MobaXterm、Filezilla、xshell等)及SSH/Telnet服务配置;3)虚拟机连通外网的NET和桥接设置步骤;4)xshell远程连接失败的三大排查方法(网络连通性、账号密码、SSH配置)。文中特别强调所有系统需关闭防火墙以避免ping不通的问题,并提供了详细的命令和配置示例。

2023-06-29 17:55:45 668

原创 05_Linux中编写新的命令

Linux命令本质上是存放在/bin目录下的可执行文件。当在终端输入命令时,shell程序会从环境变量/etc/environment记录的路径中查找对应的可执行文件并执行。要创建自定义命令,可先编写C程序(如hello.c),编译生成可执行文件后,将其所在目录(如/home/book)添加到环境变量PATH中。这样在任意目录输入命令名即可执行该程序,实现自定义命令功能。这解释了Linux命令的执行机制和自定义命令的创建方法。

2023-06-28 17:54:47 330

原创 01_【U盘制作ubuntu22.04启动盘并为电脑安装系统记录】

本文详细记录了使用U盘制作Ubuntu 22.04启动盘并安装系统的全过程。首先介绍了从清华镜像站等渠道下载Ubuntu镜像文件的方法,然后使用UltraISO软件将镜像写入U盘制作启动盘。接着说明如何通过U盘启动安装系统,包括设置语言、用户名等步骤。最后介绍了在Ubuntu系统中使用apt工具安装软件(如QQ)的方法,并提供了解决QQ音乐无法打开的参考链接。整个流程涵盖了从系统下载到安装使用的完整步骤,适合Linux新手参考。

2023-06-25 13:21:57 16492 1

原创 【QT学习记录】

qt学习记录

2023-01-06 14:48:15 368

原创 类中的拷贝构造函数(复制构造函数)浅拷贝--C++学习(6)

类的复制构造函数深拷贝,浅拷贝区分

2022-12-02 22:07:22 278

原创 图论(算法)--C++学习(5)

该文章主要是对算法设计中图论的学习总结----拓扑排序,最小生成树(Kruskal和Prim),最短路径(Dijkstra和Floyd)

2022-11-26 17:27:32 633

原创 04_Linux工具的使用

本文摘要介绍了Linux下多项实用工具的基本使用方法: gdb调试:涵盖程序装载、断点设置、变量监控及线程调试等核心操作,提供快速定位程序退出问题的技巧。 vi/vim编辑器:解析命令模式、输入模式、底线命令模式三种状态切换及常用操作指令。 Shell脚本编写:展示变量定义、算术运算、条件判断、函数定义及参数处理等基础语法。 日志工具: dmesg:用于硬件检测、驱动加载及系统错误诊断,支持实时监控。 journalctl:基于systemd的日志管理工具,支持结构化查询与服务日志过滤。 tee命令:实现输

2022-11-20 11:27:09 245

原创 设计模式--C++学习(4)

该文章主要针对设计模式进行学习,同时学习EA中的软件管理方法,类图的学习和各中关系的UML表现形式

2022-11-19 21:19:25 653

原创 【C++面试问到的问题】

C++面试问题笔记

2022-11-04 19:19:37 220

原创 02_ubuntu22.04在虚拟机中的安装过程以及搜狗输入法的安装

本文介绍了在虚拟机中安装Ubuntu 22.04及搜狗输入法的完整流程。建议选择18版本虚拟机以获得更好的文件拖拽功能,并提供了多个镜像下载源。安装时需注意分配足够的内存和硬盘空间。针对中文输入问题,详细说明了搜狗输入法的下载安装步骤,包括依赖处理、源更换、输入法系统配置等关键操作,最后强调需要将搜狗输入法设为默认并重启系统才能正常使用。整个过程涵盖了从系统安装到中文输入法配置的完整解决方案。

2022-10-06 11:37:18 3254

原创 二叉树----C++学习(3)

二叉树的学习总结

2022-10-04 16:20:47 431

空空如也

空空如也

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

TA关注的人

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