自定义博客皮肤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)
  • 收藏
  • 关注

原创 多态(polymorphism)

看下面的例子,注意在Base中加了virtual和没有加virtual的区别public://成员函数上面标注了一个virtual那么便是虚函数//virtual//virtualprivate:public://virtualprivate:Derived d;//使用基类指针去指向派生类对象//pbase里面存储的便是派生类对象的地址//Base *指针决定了该指针只可以sizeof(Base)个字节int main()test();return 0。

2025-08-22 20:09:12 1040

原创 继承(Inheritance)

继承中的隐藏是编译器的名字查找规则导致的:当在派生类中查找某个名称时,编译器会先在派生类内部查找,找到后就停止向上查找基类的同名成员。这一机制可能导致意外屏蔽基类成员,因此实际开发中应尽量避免在派生类中定义与基类同名的成员(除非有意隐藏)。多继承的核心是让派生类同时拥有多个基类的功能,但也可能带来菱形继承(需用虚继承解决)和成员名冲突(需显式指定来源)等问题。实际开发中应谨慎使用多继承,优先考虑组合(将多个类作为成员对象)而非继承,以降低代码复杂度。

2025-08-21 17:54:20 917

原创 关联容器和序列容器的基础

可以推导出。

2025-08-20 16:15:20 1138

原创 String类

如指针一样,迭代器也有其固定的形式。

2025-08-20 11:05:00 1069

原创 运算符重载

运算符重载是 C++ 的重要特性,允许自定义类型(如类、结构体)像内置类型(int、double 等)一样使用运算符(如<<等),使代码更直观、简洁。

2025-08-15 17:24:15 1036

原创 日志系统(log4cpp)

某一行日志的优先级,就是Category对象在调用某一个日志记录函数时指定的级别,如 logger.debug("this is a debug message") ,这一条日志的优先级就是DEBUG级别的。日期可以进一步的设置格式,用花括号包围,例如%d{%H:%M:%S,%l}或者%d{%d/%m-%Y %H:%M:%S,%l}。:负责产生日志记录的原始信息,比如(原始信息,日志优先级,时间,记录的位置)等等信息。:将日志直接写入本地磁盘文件,是最基础的文件日志输出组件。

2025-08-14 19:47:46 775

原创 函数指针和指针函数

的语句,它的作用是为一种特定的函数指针创建一个别名,方便后续使用。

2025-08-14 09:20:42 205

原创 C++输入输出流

IO 操作与生俱来的一个问题是可能会发生错误,一些错误是可以恢复的,另一些是不可以的。表示发生,如不可恢复的读写错误。通常情况下一旦 badbit 被置位,流就无法再使用了。表示发生,如期望读取一个int数值,却读出一个字符串等错误。这种问题通常是可以修改的,流还可以继续使用。表示, 流在正常输入输出的情况下结束,会被置为eofbit状态。表示流处于。流在有效状态下,才能正常使用。如果 badbit 、 failbit 和 eofbit 任何一个被置位,则流无法正常使用。

2025-08-13 11:54:55 912

原创 设计模式(单例)

代码编写经验的总结(理解起来不是那么的容易),是一个经验产物;最开始这个词来源于建筑领域(绿化率、容积率 2.93、5.9、得房率)想要建造一个房屋,不借助于任何的设计模式,直接盖一个小平房,但是如果你希望建造一个摩天大楼,必须得借助于设计模式如果只是为了去完成某个功能,可以不借助于任何的设计模式,直接从上往下堆积代码即可;如果希望代码后续能够更加健壮,更好进行维护管理,那么肯定需要借助于一些设计模式,让代码维护起来更加容易维护。

2025-08-12 16:10:04 330

原创 C++的基础知识

临时变量无法取地址int num=10;可以吗?将整型变量num为double类型,生成的是一个(临时存在的值)值返回和引用返回的区别int&func()int&&func2()

2025-08-07 17:41:06 399

原创 ADC、Flash、SPI、watchdog

在STM32F103C8T6中, 同样具有ADC功能.以我们的芯片为例, 也存在2个片上外设ADC, 即ADC1和ADC2, 这两个ADC片上外设都挂载在APB2总线上.我们的ADC片上外设, 是一种具有12位逐次逼近型ADC.在配置使用ADC时, 通道是一个重要数据, 而ADC的通道和固定的引脚绑定.规则组 和 注入组连续转化扫描模式。

2025-08-07 16:34:46 254

原创 项目基础1

模块: 所谓模块, 就是把芯片和外围电路、电源管理模块、外部晶振、电压保护电路(稳压电路)、复位按键、外接接口等等各种硬件, 和设计好的电路板集成到一起, 以供用户使用.当手机APP通过HTTP请求, 请求服务器, 服务器应该能把自己从STM32发过来的数据, 先存储, 再转发给手机APP(实际就是回复HTTP请求的响应报文)是指 HTTP 请求或响应中携带的 JSON 格式的数据部分,通常出现在 HTTP 报文的正文(Body)中。)的首次出现位置,并返回从该位置开始到字符串末尾的部分。

2025-07-30 19:16:25 1036

原创 网络 编程

Socket 即套接字是指网络中 一种用来建立连接、网络通信的设备,用户创建了Socket之后,可以通过其发起或者接受TCP连接、可以向TCP的发送和接收缓冲区当中读写TCP数据段,或者发送UDP文本。

2025-07-28 22:32:22 1097

原创 网络层描述

(如。

2025-07-28 20:05:20 881

原创 孤儿进程、僵尸进程和守护进程

如果父进程先于子进程退出,则子进程成为孤儿进程,此时将自动被PID为1的进程收养, PID为1的进程就成为了这个进程的父进程。当一个孤儿进程退出以后,它的资源清理会交给它的父进程来处理。查看再使用 kill -9 <PID> # 强制终止进程 我这里是kill -9 28667。

2025-07-27 13:35:15 1217

原创 父子进程(fork、exec函数)

当一个子进程被创建时(例如通过fork()系统调用),。这是进程属性继承的一部分,属于 POSIX 标准行为。:子进程会复制父进程的当前工作目录路径(通过getcwd()获取的值)。:子进程后续对工作目录的修改(如chdir(),反之亦然。:工作目录路径字符串本身属于进程内存数据,遵循写时复制机制(实际修改时才分离)。。子进程仅继承创建时刻的快照,后续双方独立修改。A:在子进程中主动调用chdir(),或使用exec()系列函数时通过参数指定(如fexecve()的dirfd。

2025-07-26 17:30:43 539

原创 网络协议HTTP、TCP/UDP

如何让数据具有自我描述性?为什么网络有层级的划分?交换机、路由器要不要阅读一个信息的头部?要不要阅读数据部分?网卡:网卡可以完成帧的封装和解封装,工作在数据链路层。中继器:中继器以比特方式将网络信号进行再生和重定时,使其能够传输更长的距离。放大器集线器:集线器实际上就是一个多端口的中继器。网桥/桥接器:连接两个局域网的一种存储转发设备,可以将一个大的LAN分割为多个网段,或者将两个以上的LAN互联为一个逻辑LAN。交换机:交换机有一张交换表,可以记录MAC帧和对应端口。

2025-07-25 22:17:32 831 1

原创 管道、IO多路复用

直到监听集合中, 至少有一个文件按照条件就绪(条件:预设的监听是读就绪OR写就绪...), 这一次的select监听宣告结束, 并携带就绪的文件描述符集合返回, 继续执行用户书写的代码逻辑。假设我们创建一个1.pipe的管道, 我们在不读的情况下可以连续写入16个4096, 即可把管道写满, 再试图写就会写阻塞;上面一问一答式的对话流程, 是因为在上面代码执行中, 它是一个串行执行的逻辑, 如果模拟现实情况, 我们更希望要做的是怎么把这个串行逻辑改为并行逻辑。命名管道创建的管道文件不是普通的磁盘文件。

2025-07-25 20:31:51 887

原创 重 定 向

fopenfopenwrite当然上述代码中直接使用魔法数,还是不太好,我们可以利用fileno函数(ISO-C标准C语言库函数)来获取已打开文件流的文件描述符。好到这里,你已经了解文件流和文件描述符的关系,实际上我们可以更进一步的去了解FILE这个结构体。你仍然可以通过查看预处理后生成的.i文件的方式,来查看FILE结构体的定义,使用vim编辑器打开预处理后得到的文件。然后直接输入下列。

2025-07-25 14:45:14 544

原创 文件映射

所谓文件映射(Memory Mapped Files, mmap)是一种的技术:允许将文件的数据内容在虚拟内存中进行映射,使得程序可以像访问普通虚拟内存一样来访问磁盘上文件的内容。根据以上内容,我们大体上,可以认为文件映射是下面的模型:图 1.文件映射-图。

2025-07-25 14:09:45 700

原创 全缓冲、行缓冲

用内存换速度,减少低速设备的直接访问。

2025-07-24 19:45:45 341

原创 C语言家族函数

遇到换行符'\n',或者文件的末尾就会终止(也就是说,读取的字符数可能不足 count - 1 个)字符的读取操作,该函数会在字符数据的最后加上空字符,以表示一个字符串。从输入流 stream 中,最多读取 count - 1 个字符,并把读取的字符存入 str 指向的字符数组中。可以从输入流中读取一个字符,如果读取成功,返回读取的字符;可以向输出流中写入一个字符,如果写入成功,返回写入的字符;如果写入失败,返回EOF。是因为读取了换行符而终止,在空间充足时,它还会存储换行符'\n',而。

2025-07-24 19:22:19 894

原创 端口(Port)

同一台设备(如服务器)可能同时运行多个服务(如网页、邮件、数据库),端口用于标识这些服务,确保数据精准送达。的缩写,它是 OpenSSH 软件套件中的核心服务进程,用于在网络上提供安全的加密通信通道。A:符合“父进程环境决定子进程初始状态”的通用原则,确保行为可预测(如相对路径访问)。:工作目录路径字符串本身属于进程内存数据,遵循写时复制机制(实际修改时才分离)。时,请求会被发送到目标服务器的 443 端口,由 HTTPS 服务处理。:服务启动时会绑定到特定端口(如 Web 服务监听 80 端口)。

2025-07-24 19:05:34 780

原创 文件流, 系统调用

系统调用函数标准库函数POSIX库函数: 指的是符合POSIX标准的C语言库函数。

2025-07-22 21:36:32 1464

原创 Linux文件系统

硬链接数指的是一个文件拥有的硬链接数量,类似于"有多个指针指向了同一片内存空间",于是"指针的总数量"就被称之为"硬链接数",即VFS中有几个文件指向同一份数据。不同的操作系统平台、不同的存储设备(机械硬盘、固态硬盘等),物理文件系统肯定会有所不同,那么用户就需要理解这些差异,增加了操作的复杂性,出错的概率也大大增加。既然有虚拟的文件管理系统,那么对应的就有"真正的、真实的"物理文件管理系统,物理文件管理系统涵盖了硬盘上的文件存储、目录结构和数据组织方式等物理层面的细节。

2025-07-21 21:12:25 576

原创 main函数的参数

是 C/C++ 程序中main函数的参数声明,用于接收命令行参数。

2025-07-21 17:04:15 227

原创 正则表达式

正则表达式(Regular Expression,简称)是一种用于文本模式的强大工具,广泛应用于编程、文本编辑(如、VS Code)和数据处理(如 Python、JavaScript)。colou?r{n}a{3}{n,}\w{3,}{n,m}\d{2,4}(abc)(foo)+:abc):ab)|cd\1\2(\w+) \1例如:匹配1+1=2→1\+1=2\D。

2025-07-21 14:06:58 367

原创 预处理、编译、汇编和链接

由此看出头文件中仅只包含函数或变量的声明, 如函数声明、类/结构体定义、宏定义、类型别名等,但不包含函数实现(内联函数和模板例外)。当使用了强制静态链接后, 我们发现文件的大小一下子变大了不少, 由此可见静态链接虽然导致速度变快了, 但是也引发了一个问题, 可执行程序的体积体积会变得很大。strace -e openat ./program 2>&1 | grep '\.so' //查看程序尝试打开哪些库文件。所以在这里test就是可执行程序,但是如果是Windows的话它就是test.exe格式。

2025-07-20 16:09:55 1842

原创 Shell 文件和文件夹操作命令大全(增删改查)及vim指令

cat syslog.txt | grep "error" # 从日志文件中筛选包含"error"的行。tar -czvf archive.tar.gz dir/ # 创建tar.gz压缩包。tar -xzvf archive.tar.gz # 解压tar.gz。find /path -name "*.txt" # 按名称查找。find / -type d -name "log*" # 查找目录。rm -f file.txt # 强制删除(无提示)

2025-07-17 20:23:02 805

原创 FreeRTOS队列和补充

队列集是一项 FreeRTOS 功能, 可让 RTOS 任务在同时从多个队列和/或 信号量接收数据时进行阻塞(挂起)。队列和信号量被分成集合,之后任务并非对 单个队列或信号量进行阻塞,而是对集合进行阻塞。**请注意:**虽然有时需要阻塞(挂起)多个队列 (当 FreeRTOS 与遗留代码的第三方集成时),但不受此类限制的设计 通常能以更有效的方式实现相同的功能,方法是使用 替代设计模式(记录在此页面底部)。软件定时器(简称“定时器” )能够让函数在 未来的设定时间执行。

2025-07-16 20:19:19 1117

原创 FreeRTOS任务调度

核心文件FreeRTOS的最核心文件只有2个:task.c里面定义了任务 list.c里面定义了列表 所以接下来的篇幅,主要就是介绍这两个文件里的内容变量名有前缀:函数名的前缀有2部分:返回值类型、在哪个文件定义。

2025-07-13 12:09:58 981 1

空空如也

空空如也

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

TA关注的人

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