<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maxiumII的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/maxiumII</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; maxiumII]]></copyright><item><title><![CDATA[LINUX学习笔记——文件操作]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/157024726</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/157024726</guid><author>maxiumII</author><pubDate>Fri, 16 Jan 2026 14:29:12 +0800</pubDate><description><![CDATA[刚才讲过，打开文件会建立进程和文件之间的连接，文件描述符就是用来惟一标识这个连接的，如果同时打开好几个文件，它们所对应的文件描述符是不同的，如果将一个文件打开多次，对应的文件描述符也不相同。通过阅读who和 utmp的联机帮助，以及头文件/usr/include/utmp.h，可以知道who的工作原理，who通过读文件来获得需要的信息，而每个登录的用户在文件中都有对应的记录。closc这个系统调用会关闭进程和文件fd之间的连接，如果关闭的过程中出现错误，close返回-1，例如：fd所指的文件并不存在。]]></description><category></category></item><item><title><![CDATA[LINUX学习记录——第一章 UNIX系统编程概述]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/156889983</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/156889983</guid><author>maxiumII</author><pubDate>Tue, 13 Jan 2026 17:05:20 +0800</pubDate><description><![CDATA[编写普通程序时可以认为，程序是直接连到键盘、显示器、磁盘等设备的，但在进行系统编程时，必须对系统的结构和工作方式有更深的了解，要知道内核提供哪些服务(系统调用)，如何使用它们，系统有哪些资源和设备，不同的资源和设备该如何操作。虽然模型复杂了，但对程序而言，它还是从键盘得到数据，将结果显示在显示器上，也可以对磁盘读写,这些操作都没有任何问题，它使用的还是简单模型。用户和程序之间的连接方式，就是程序之间的连接（输入输出的连接），后续会深入。看图，从程序模型来看，程序是用来读写外部设备的。以键盘显示器为例，有。]]></description><category></category></item><item><title><![CDATA[Diving into the STM32 HAL-----HAL_GPIO笔记]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/143332347</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/143332347</guid><author>maxiumII</author><pubDate>Tue, 29 Oct 2024 17:10:13 +0800</pubDate><description><![CDATA[在HAL中，已经定义了GPIOA，并将用户通过GPIO_InitStruct结构体设置的参数，使用HAL_GPIO_Init函数写入上面所说的GPIO_TypeDef结构体（在地址0x48000000开始的内存）。接下来，要将引脚拉高，我们必须在输出数据寄存器 （ODR） 中设置相应的位[5]，根据下表，该位映射到 GPIOA + 0x14 内存位置，即 0x4800 0000 + 0x14。要注意，这些总线中的每一个都连接到不同的时钟源，这些时钟源决定了连接到该总线的外设操作的最大速度。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第14章高级算法]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142977231</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142977231</guid><author>maxiumII</author><pubDate>Wed, 16 Oct 2024 15:41:49 +0800</pubDate><description><![CDATA[2. 写一个程序，允许用户改变背包问题的约束条件，以便于观察条件的变化对结果的影 响。比如，你可以改变背包的容量、物品的价值，或物品的重量。每次最好只改一个约 束条件。3. 使用贪心算法找零钱，不过这次不允许使用 10 美分，假设要找的零钱一共是 30 美分， 请尝试找到一个解。1. 写一个程序，使用暴力技巧来寻找最长公共子串。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第13章检索算法]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142973955</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142973955</guid><author>maxiumII</author><pubDate>Wed, 16 Oct 2024 11:27:56 +0800</pubDate><description><![CDATA[3. 创建一个函数用来查找数据集中的次小元素。你能否归纳一下，如何实现查找第三小、 第四小，等等的搜索函数？在至少有 1000 个元素的数据集上测试你的函数。请同时在 数字和文本数据集上进行测试。2. 对同一个数据集进行测试，比较顺序查找算法执行所花费的时间与同时使用插入排序算 法和二分查找算法花费的总时间。你得到的结果是什么？1. 顺序查找算法总是查找数据集中匹配到的第一个元素。请重写该算法使之返回匹配到的 最后一个元素。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第12章排序算法]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142970677</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142970677</guid><author>maxiumII</author><pubDate>Wed, 16 Oct 2024 10:25:45 +0800</pubDate><description><![CDATA[2. 创建一个包含 1000 个整数的有序数组。编写一个程序，用本章讨论的所有算法对这个 数组排序，分别记下它们的执行时间，并进行比较。4. 创建一个包含 10 000 个随机整数的数组，使用快速排序和 JavaScript 内置的排序函数分 别对它进行排序，记录下它们的执行时间。3. 创建一个包含 1000 个整数的倒序数组。编写一个程序，用本章讨论的所有算法对这个 数组排序，分别记下它们的执行时间，并进行比较。1. 使用本章讨论的所有算法对字符串数据而非数字数据进行排序，并比较不同算法的执行 时间。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第11章图和图算法]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142940312</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142940312</guid><author>maxiumII</author><pubDate>Tue, 15 Oct 2024 13:52:48 +0800</pubDate><description><![CDATA[1. 编写一个程序，测试广度优先和深度优先这两种图搜索算法哪一种速度更快。请使用不 同大小的图来测试你的程序。4. 构建一个图，用它为你居住地的地图建模。测试一下从一个开始顶点到最后顶点的最短路径。5. 对上一题中创建的图执行深度优先搜索和广度优先搜索。2. 编写一个用文件来存储图的程序。3. 编写一个从文件读取图的程序。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第10章二叉树和二叉查找树]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142913855</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142913855</guid><author>maxiumII</author><pubDate>Mon, 14 Oct 2024 15:14:52 +0800</pubDate><description><![CDATA[5. 写一段程序，读入一个较大的文本文件，并将其中的单词保存到 BST 中，显示每个单词 在文本中出现的次数。3. 为 BST 类增加一个新方法 max()，该方法返回 BST 中的最大值。4. 为 BST 类增加一个新方法 min()，该方法返回 BST 中的最小值。1. 为 BST 类增加一个新方法，该方法返回 BST 中节点的个数。2. 为 BST 类增加一个新方法，该方法返回 BST 中边的个数。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第9章集合]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142913246</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142913246</guid><author>maxiumII</author><pubDate>Mon, 14 Oct 2024 11:22:52 +0800</pubDate><description><![CDATA[3. 为 Set 类增加一个 higher(element) 方法，该方法返回比传入元素大的元素中最小的那 个。写一段测试代码来测试这个方法。4. 为 Set 类增加一个 lower(element) 方法，该方法返回比传入元素小的元素中最大的那 个。写一段测试代码来测试这个方法。2. 修改 Set 类，将存储方式从数组替换为链表。写一段测试代码来测试你的修改。1. 修改 Set 类，使里面的元素按顺序存储。写一段测试代码来测试你的修改。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第8章散列]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142883382</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142883382</guid><author>maxiumII</author><pubDate>Sat, 12 Oct 2024 18:28:05 +0800</pubDate><description><![CDATA[1. 使用线性探测法创建一个字典，用来保存单词的定义。该程序需要包含两个部分：第一 部分从文本文件中读取一组单词和它们的定义，并将其存入散列表；第二部分让用户输 入单词，程序给出该单词的定义。3. 读取一个文本文件，使用散列显示该文件中出现的单词和它们在文件中出现的次数。2. 使用开链法重新实现练习 1。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第7章字典]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142875928</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142875928</guid><author>maxiumII</author><pubDate>Sat, 12 Oct 2024 13:56:39 +0800</pubDate><description><![CDATA[2. 使用 Dictionary 类写一个程序，该程序用来存储一段文本中各个单词出现的次数。比如下面一段话“the brown fox jumped over the blue fox”，程序的输出应为： the: 2 brown: 1 fox: 2 jumped: 1 over: 1 blue: 1。1. 写一个程序，该程序从一个文本文件中读入名字和电话号码，然后将其存入一个字典。该程序需包含如下功能：显示单个电话号码、显示所有电话号码、增加新电话号码、删 除电话号码、清空所有电话号码。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第6章链表]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142856646</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142856646</guid><author>maxiumII</author><pubDate>Sat, 12 Oct 2024 10:47:52 +0800</pubDate><description><![CDATA[他 们围成一个圈，从一个人开始，数到第三个人时将第三个人杀死，然后再数，直到杀光 所有人。约瑟夫和另外一个人决定不参加这个疯狂的游戏，他们快速地计算出了两个位 置，站在那里得以幸存。写一段程序将 n 个人围成一圈，并且第 m 个人会被杀掉，计算 一圈人中哪两个人最后会存活。1. 实现 advance(n) 方法，使当前节点向前移动 n 个节点。2. 实现 back(n) 方法，使当前节点向后移动 n 个节点。3. 实现 show() 方法，只显示当前节点上的数据。5. 使用双向链表重写例 6-4 的程序。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第5章队列]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142852485</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142852485</guid><author>maxiumII</author><pubDate>Fri, 11 Oct 2024 14:59:59 +0800</pubDate><description><![CDATA[4. 修改例 5-5 中的候诊室程序，使得候诊室内的活动可以被控制。写一个类似菜单系统， 让用户可以进行如下选择： a. 患者进入候诊室；c. 显示等待就诊患者名单。1. 修改 Queue 类，形成一个 Deque 类。这是一个和队列类似的数据结构，允许从队列两端 添加和删除元素，因此也叫双向队列。写一段测试程序测试该类。3. 修改例 5-5 中的优先队列，使得优先级高的元素优先码也大。写一段程序测试你的改动。2. 使用前面完成的 Deque 类来判断一个给定单词是否为回文。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第4章栈]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142844826</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142844826</guid><author>maxiumII</author><pubDate>Fri, 11 Oct 2024 14:01:16 +0800</pubDate><description><![CDATA[2. 一个算术表达式的后缀表达式形式如下： op1 op2 operator 使用两个栈，一个用来存储操作数，另外一个用来存储操作符，设计并实现一个 JavaScript 函 数，该函数可以将中缀表达式转换为后缀表达式，然后利用栈对该表达式求值。编写一个函数，该函数接受一个算 术表达式作为参数，返回括号缺失的位置。想象一下你有一盒佩兹糖果，里面塞满了红 色、黄色和白色的糖果，但是你不喜欢黄色的糖果。使用栈（有可能用到多个栈）写一 段程序，在不改变盒内其他糖果叠放顺序的基础上，将黄色糖果移出。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第3章列表]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142827805</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142827805</guid><author>maxiumII</author><pubDate>Thu, 10 Oct 2024 17:55:57 +0800</pubDate><description><![CDATA[1. 增加一个向列表中插入元素的方法，该方法只在待插元素大于列表中的所有元素时才执 行插入操作。这里的大于有多重含义，对于数字，它是指数值上的大小；5. 为影碟租赁程序创建一个 check-in() 函数，当客户归还一部影片时，将该影片从已租列 表中删除，同时添加到现有影片列表中。4. 修改本章的影碟租赁程序，当一部影片检出后，将其加入一个已租影片列表。每当有客 户检出一部影片，都显示该列表中的内容。2. 增加一个向列表中插入元素的方法，该方法只在待插元素小于列表中的所有元素时才执 行插入操作。]]></description><category></category></item><item><title><![CDATA[数据结构与算法JavaScript描述练习------第2章数组]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142826387</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142826387</guid><author>maxiumII</author><pubDate>Thu, 10 Oct 2024 17:34:37 +0800</pubDate><description><![CDATA[3. 修改本章前面出现过的 weeklyTemps 对象，使它可以使用一个二维数组来存储每月的有 用数据。想深入知道为什么，先看深入浅出HTML与CSS，深入浅出HTML5编程，深入浅出JavaScript语言等书籍，这几天花了时间把这三本书草草看了一遍，大概有些印象。4. 创建这样一个对象，它将字母存储在一个数组中，并且用一个方法可以将字母连在一 起，显示成一个单词。1. 创建一个记录学生成绩的对象，提供一个添加成绩的方法，以及一个显示学生平均成绩 的方法。]]></description><category></category></item><item><title><![CDATA[STM32F1 HAL库笔记2_HAL 系统驱动程序]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142105150</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142105150</guid><author>maxiumII</author><pubDate>Wed, 11 Sep 2024 09:50:45 +0800</pubDate><description><![CDATA[通用 HAL 驱动程序包含一组通用的 API，PPP 外设驱动程序可以使用这些 API 来开始使用 HAL。HAL 包含两个 API 类别： • 常见的 HAL API • 服务 HAL API        本节提供的功能：        • 初始化闪存接口、NVIC 分配和初始时钟配置。它还会在需要超时时初始化 systick，并在启用时初始化备份域。        • 去初始化 HAL 的公共部分。        • 将时基源配置为具有 1ms 时基和专用的 Tick 中断优先级。        – ]]></description><category></category></item><item><title><![CDATA[STM32F1 HAL库笔记1_HAL 驱动程序概述(2)]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/142092002</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/142092002</guid><author>maxiumII</author><pubDate>Tue, 10 Sep 2024 17:44:58 +0800</pubDate><description><![CDATA[LL驱动程序旨在提供快速、轻量级、面向专家的层，它比 HAL 更接近硬件。与 HAL 相反，LL API 不适用于以下外设：不需要代码优化的外设，软件配置复杂的外设，复杂的上层堆栈（如 USB）的外设。LL 驱动程序特征：一组初始化函数，用于根据数据结构中指定的参数初始化外设主要功能一组初始化函数，用于用每个字段的重置值填充初始化数据结构执行外设去初始化的函数（外设寄存器恢复为默认值）一组内联函数，用于直接和原子寄存器访问。]]></description><category></category></item><item><title><![CDATA[STM32F1 HAL库笔记0_HAL 驱动程序概述(1)]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/141898214</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/141898214</guid><author>maxiumII</author><pubDate>Wed, 04 Sep 2024 18:07:01 +0800</pubDate><description><![CDATA[_HAL_PPP_CLK_ENABLE/__HAL_PPP_CLK_DISABLE                //启用/禁用外设时钟 __HAL_PPP_FORCE_RESET/__HAL_PPP_RELEASE_RESET             //强制/释放外设复位 __HAL_PPP_CLK_SLEEP_ENABLE/__HAL_PPP_CLK_SLEEP_DISABLE    //在睡眠模式下启用/禁用外设时钟。stm32f1xx_hal.h包含了stm32f1xx_hal_conf.h。]]></description><category></category></item><item><title><![CDATA[JZ2440笔记：驱动调试]]></title><link>https://blog.youkuaiyun.com/maxiumII/article/details/139470369</link><guid>https://blog.youkuaiyun.com/maxiumII/article/details/139470369</guid><author>maxiumII</author><pubDate>Thu, 06 Jun 2024 18:00:15 +0800</pubDate><description><![CDATA[18:   e5923000        ldr     r3, [r2] //根据r3 : bf003000  r2 : 56000050  r1 : bf003c24  r0 : 00000000，有 ldr bf003000,[56000050]，结合上文对应的C为*gpfcon &= ~(0x3<<(4*2)|(0x3<<(5*2))|(0x3<<(6*2)));可以看到*gpfcon &= ~(0x3<<(4*2)|(0x3<<(5*2))|(0x3<<(6*2)));]]></description><category></category></item></channel></rss>