<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[alwaysAlearner的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/alwaysAlearner</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; alwaysAlearner]]></copyright><item><title><![CDATA[推导 STM32 主频(168MHz)]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/169654005</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/169654005</guid><author>alwaysAlearner</author><pubDate>Sun, 01 Nov 2026 00:22:29 +0800</pubDate><description><![CDATA[在这段代码的实质是按位或（）拼装操作。其依据是《STM32 参考手册》中寄存器的物理位定义。PLL_M |PLLM字段位于 Bit 5 ~ Bit 0（最低位），无需移位，直接写入。PLLN字段位于 Bit 14 ~ Bit 6，因此数值需左移 6 位对齐。PLLP字段位于 Bit 17 ~ Bit 16。根据手册规定，写入00代表 PLL_P=2。代码通过>>1 -1的算法（2>>1 = 1;1-1 = 0），计算出二进制00，并左移 16 位。PLLSRC。]]></description><category></category></item><item><title><![CDATA[C++ STL 关联容器：map / set / multi / unordered]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/163538291</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/163538291</guid><author>alwaysAlearner</author><pubDate>Thu, 06 Aug 2026 16:04:51 +0800</pubDate><description><![CDATA[有序容器（红黑树系列）：插入/查找/删除稳定 O(logN)，无性能退化，支持有序遍历、范围查询无序容器（哈希系列）：平均O(1)哈希冲突极端场景最坏 O(N)，存在 rehash 性能抖动有序容器（set/map）：需实现严格弱序，默认重载operator<，或自定义比较器无序容器（unordered_）：需自定义哈希函数+ 重载operator==，标准库无默认哈希实现。]]></description><category></category></item><item><title><![CDATA[Linux 文本编辑器 Vim]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/162960999</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/162960999</guid><author>alwaysAlearner</author><pubDate>Fri, 17 Jul 2026 11:18:07 +0800</pubDate><description><![CDATA[Vim（Vi IMproved）是 Linux/Unix 系统中最强大的文本编辑器之一，由 Bill Joy 1976 年编写的 Vi 编辑器发展而来。特点说明全键盘操作双手不离开主键盘区，编辑效率极高模式化设计不同模式各司其职，功能清晰无处不在预装在几乎所有 Linux 发行版和 macOS 中轻量高效资源占用极少，SSH 远程连接下流畅运行高度可扩展插件生态丰富，可打造成 IDE分类核心命令用途模式切换iEsc插入 ↔ 普通 ↔ 命令光标移动h/j/k/lggG0全键盘导航编辑ddyypPu。]]></description><category></category></item><item><title><![CDATA[【Linux 基础 IO】文件操作、文件描述符、重定向]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/160689807</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/160689807</guid><author>alwaysAlearner</author><pubDate>Fri, 01 May 2026 16:38:58 +0800</pubDate><description><![CDATA[标准 IO 易用带缓冲；系统调用底层无缓冲文件描述符是进程打开文件的句柄，0/1/2 默认打开重定向 = 关闭标准 fd+open 新文件一切皆文件：统一抽象，简化系统设。]]></description><category></category></item><item><title><![CDATA[Linux 操作系统】进程]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/160689267</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/160689267</guid><author>alwaysAlearner</author><pubDate>Fri, 01 May 2026 16:24:15 +0800</pubDate><description><![CDATA[进程 = 运行中的程序，是 Linux 系统资源分配与调度的基本单元。程序：磁盘上的静态指令集合（如乐谱）进程：加载到内存、被 CPU 执行的动态实例（如演奏）代码段（.text）：可执行指令数据段（.rodata/.data/.bss）：全局 / 静态变量堆（heap）：malloc/new 动态分配栈（stack）：局部变量、函数调用进程控制块 PCB：内核描述进程的核心数据结构完整进程 = 独立虚拟地址空间 + 内核 PCB。]]></description><category></category></item><item><title><![CDATA[Linux 常用指令与参数速查表]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/157172150</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/157172150</guid><author>alwaysAlearner</author><pubDate>Tue, 20 Jan 2026 10:33:13 +0800</pubDate><description><![CDATA[【代码】Linux 常用指令与参数速查表。]]></description><category></category></item><item><title><![CDATA[[C语言]：预编译指令]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/157019789</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/157019789</guid><author>alwaysAlearner</author><pubDate>Fri, 16 Jan 2026 10:42:35 +0800</pubDate><description><![CDATA[define是预编译中最常用的指令，用于定义常量或带参数的宏，本质是字符串替换，替换过程发生在预编译阶段，不占用运行时资源。直接定义一个常量符号，替换时仅做字符串替换，无需加分号（否则会导致额外语法问题）。2// 定义常量TWO，值为2TWO // 嵌套使用已定义的宏// 预编译后替换为 int x = 2;// 输出2x = FOUR;// 预编译后替换为 x = 2*2;// 输出4return 0;注意：定义常量时末尾不要加;，否则会出现类似x = 2;;的语法冗余。]]></description><category></category></item><item><title><![CDATA[【C语言】：文件]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156993731</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156993731</guid><author>alwaysAlearner</author><pubDate>Thu, 15 Jan 2026 21:32:24 +0800</pubDate><description><![CDATA[程序文件：用于组成程序的文件，包括源文件（.c）、目标文件（.obj）、可执行程序（.exe）等。数据文件：程序运行时读写的数据载体，比如存储配置信息的文本文件、保存用户数据的二进制文件等。]]></description><category></category></item><item><title><![CDATA[【C 语言】：结构体、枚举体、共用体]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156796273</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156796273</guid><author>alwaysAlearner</author><pubDate>Sat, 10 Jan 2026 13:23:25 +0800</pubDate><description><![CDATA[int age;// stu1、stu2 是 struct student 类型变量结构体变量的定义有两种方式，初始化需遵循“成员顺序匹配”或“指定成员赋值”原则。方式1：声明类型后单独定义（推荐，结构清晰）方式2：声明类型时同步定义（如前文的 stu1、stu2）// 定义成绩结构体// 语文成绩// 数学成绩// 学生结构体嵌套成绩结构体int age;// 嵌套 struct score 类型成员// 嵌套初始化：内层用 {} 包裹。]]></description><category></category></item><item><title><![CDATA[C语言：字符与字符串函数]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156792013</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156792013</guid><author>alwaysAlearner</author><pubDate>Sat, 10 Jan 2026 12:10:57 +0800</pubDate><description><![CDATA[/ 判断是否为小写字母// 判断是否为大写字母// 判断是否为数字// 使用已有函数组合实现函数关键特点使用场景注意事项memcpy速度快，不处理重叠非重叠内存复制确保内存不重叠memmove安全，处理重叠不确定是否重叠时比memcpy稍慢memcmp二进制比较比较内存内容比较的是字节，不是字符串memset按字节设置清零或初始化对非char类型要小心。]]></description><category></category></item><item><title><![CDATA[【C语言】指针]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156342258</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/156342258</guid><author>alwaysAlearner</author><pubDate>Sat, 27 Dec 2025 23:06:09 +0800</pubDate><description><![CDATA[指针是C语言的灵魂，它赋予了程序员直接操作内存的能力，是实现高效、灵活程序的关键。理解指针，是通往C语言高手之路的必经关卡。]]></description><category></category></item><item><title><![CDATA[C语言：数组]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155376136</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155376136</guid><author>alwaysAlearner</author><pubDate>Mon, 15 Dec 2025 18:57:46 +0800</pubDate><description><![CDATA[定义：数组是一组具有相同数据类型的元素，在内存中连续存储的集合。核心特性元素类型统一：不能在一个int数组中存储char或float类型数据；长度固定：创建时必须指定大小（常量值），后续无法动态扩容（C99出现的VLA边长数组针对此做出了便利性更新）；连续存储：元素在内存中紧密排列，无间隙，便于快速访问。分类：按维度分为一维数组（最常用）、二维数组（矩阵形式）、多维数组（极少使用）。]]></description><category></category></item><item><title><![CDATA[C语言：语句——选择结构与循环结构]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155375116</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155375116</guid><author>alwaysAlearner</author><pubDate>Sat, 29 Nov 2025 08:35:58 +0800</pubDate><description><![CDATA[范围判断用if-else if，固定值匹配用（效率更高）；中，每个case后必加break，避免无意穿透；嵌套if不超过3层（否则代码可读性差，可拆分为函数）。]]></description><category></category></item><item><title><![CDATA[C语言：逗号、sizeof与最高优先级运算符]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155374564</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155374564</guid><author>alwaysAlearner</author><pubDate>Sat, 29 Nov 2025 08:21:43 +0800</pubDate><description><![CDATA[逗号运算符：优先级最低，必须加括号；返回最后一个表达式值，避免在数组初始化中误用。sizeof运算符：编译时求值，不执行表达式；数组作为函数参数退化为指针，字符串数组与指针的sizeof结果不同。最高优先级运算符()可改变优先级、类型转换；[]访问数组；和->访问结构体成员，优先级最高无需括号。]]></description><category></category></item><item><title><![CDATA[【C 语言】赋值、条件与位运算]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155322557</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/155322557</guid><author>alwaysAlearner</author><pubDate>Thu, 27 Nov 2025 20:13:20 +0800</pubDate><description><![CDATA[位运算符直接对整数的二进制位进行操作，适用于底层硬件控制、性能优化等场景，常见包括按位与、或、异或、取反、移位等。右移会丢弃右侧低位，有符号负数右移时左侧补 1（最终变为 - 1）。复合赋值运算符将算术 / 位运算与赋值结合，简化代码书写，常见包括。是最基础的赋值运算符，用于将右侧表达式的值赋给左侧变量，支持。条件运算符支持嵌套，适用于多分支简单判断（如成绩等级划分）。逻辑，实现 “条件判断 - 结果选择” 的快速映射。）是 C 语言中唯一的三目运算符，用于简化。，因此可用于条件判断或表达式嵌套。]]></description><category></category></item><item><title><![CDATA[【C】算数，关系和逻辑运算符]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154901560</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154901560</guid><author>alwaysAlearner</author><pubDate>Sun, 16 Nov 2025 08:59:26 +0800</pubDate><description><![CDATA[一、算数运算符。]]></description><category></category></item><item><title><![CDATA[C 语言标准IO]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154900597</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154900597</guid><author>alwaysAlearner</author><pubDate>Sun, 16 Nov 2025 08:04:22 +0800</pubDate><description><![CDATA[实践中，常常会因为输入缓冲区中残余'\n'等字符，导致提前结束输入等未预料的情况，可以利用getchar()清空缓冲区。]]></description><category></category></item><item><title><![CDATA[C语言类型转换——默认隐式转换]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154567141</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154567141</guid><author>alwaysAlearner</author><pubDate>Sat, 08 Nov 2025 14:39:56 +0800</pubDate><description><![CDATA[横向同级类型（如同为整型）：按“无符号优先”“高字节优先”转换。纵向不同级别（如整数与浮点）：按“精度更高”原则向上转换。无符号与有符号混合是高频陷阱，需关注负数转无符号后的“最大值效应”。]]></description><category></category></item><item><title><![CDATA[C语言字符与字符串存储原理深度解析]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154564188</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154564188</guid><author>alwaysAlearner</author><pubDate>Sat, 08 Nov 2025 10:37:10 +0800</pubDate><description><![CDATA[字符串通过字符数组定义，常见方式有 3 种，核心要求是必须为\0预留空间指定数组长度（大于字符串实际长度）：// 数组长度10，前5位存字符，第6位自动补'\0'，剩余4位默认填充'\0'不指定数组长度（编译器自动计算，含\0）：// 编译器自动分配6个字节（5个字符 + 1个'\0'）手动初始化字符数组（需显式添加\0）：// 正确，手动添加结束标志// 错误，无'\0'，不是合法字符串。]]></description><category></category></item><item><title><![CDATA[数值数据类型及其内存存储实现简介（C&C++） ]]></title><link>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154250010</link><guid>https://blog.youkuaiyun.com/alwaysAlearner/article/details/154250010</guid><author>alwaysAlearner</author><pubDate>Sat, 01 Nov 2025 22:33:54 +0800</pubDate><description><![CDATA[本文系统介绍了C/C++中的数值数据类型及其内存存储机制。整型包括char、int、short、long等，分为有符号和无符号两类，采用补码形式存储。其中，正数补码等于原码，负数补码需取反加1。浮点型遵循IEEE754标准，分为float、double和long double，存储结构包含符号位、指数位和尾数位，采用偏移值表示指数并默认整数部分为1。文章通过具体示例（如-10的char存储和-0.65的float存储）详细演示了数值转换和存储过程，并提供了十进制转二进制的代码实现。]]></description><category></category></item></channel></rss>