Linux 学习笔记
Linux 学习笔记 arch 1.1. arm 1.1.1. assembly.md 1.1.2. boot.md 1.1.3. debug.md 1.1.4. include.md 1.1.5. kernel.md 1.1.6. lds.md 1.1.7. lib.md 1.1.8. mm.md 1.1.9. process.md 1.1.10. syscall_table生成流程.md block 2.1. bio.md 2.2. blk-ioc.md 2.3. blk-mq.md 2.4. block.md 2.5. genhd.md drivers 3.1. base 3.1.1. base.md 3.1.2. bus.md 3.1.3. class.md 3.1.4. container.md 3.1.5. cpu.md 3.1.6. dd.md 3.1.7. devres.md 3.1.8. devtmpfs.md 3.1.9. faux.md 3.1.10. firmware.md 3.1.11. platform.md 3.1.12...
alarmtimer
[TOC] kernel/time/alarmtimer.c闹钟定时器(Alarm Timer)初始化:构建可挂起的定时器基础框架本代码片段的核心功能是初始化Linux内核中的闹钟定时器(Alarm Timer)子系统。闹钟定时器的主要特点是它们能够在系统进入挂起(suspend)等低功耗状态后,依然能够到期并唤醒系统。此初始化函数负责建立管理这些定时器的核心数据结构,将它们与具体的时钟源(如CLOCK_REALTIME和CLOCK_BOOTTIME)关联起来,并注册相应的驱动以等待与硬件设备绑定。 实现原理分析此初始化过程是闹钟定时器框架能够工作的基础,它通过配置一个预定义的alarm_bases全局数组来为不同类型的闹钟定时器提供统一的管理接口。 配置时钟源: 函数首先为REALTIME和BOOTTIME两个闹钟“基地”(alarm_bases数组的元素)分别配置其clockid和获取时间的函数指针。这使得上层代码可以通过ALARM_REALTIME类型来设置一个基于“墙上时间”(wall-clock time)的定时器,或通过ALARM_BOOTTIM...
hpatch 学习笔记
hpatch 学习笔记 libdivsufsort 1.1. divsufsort.md 1.2. sssort.md 1.3. trsort.md SA-IS 2.1. SA-IS.md 3. hdiffpatch.md 4. HPatch.md 5. hpatch_lite.md 6. readme.md 7. SuffixString.md 8. tinyuz.md
HPatch
[TOC] HDiffPatch\libHDiffPatch\HPatch\patch.cpackUInt & hpatch_packUIntWithTag 可变长度整数编码这组函数实现了一种高效的、类似于 LEB128 (Little-Endian Base 128) 或 VLQ (Variable-length quantity) 的整数编码方案。其核心目标是:用更少的字节来表示小数值,用更多的字节来表示大数值,从而在数据流中实现对数值本身的压缩。 原理与设计思路解析您提供的注释已经非常精彩地概括了其编码方案,我将在此基础上做更详细的解析。 编码规则 (Encoding Scheme):算法将一个整数 uValue 拆分成多个字节进行存储。每个字节都由两部分组成: 数据位 (Data Bits): 每个字节的低7位用于存储 uValue 的一部分数据。 连续标志位 (Continuation Bit): 每个字节的最高位 (MSB) 作为标志位。 如果 MSB 是 1,表示后面还有字节属于这个整数。 如果 MSB 是 0,表示这是这个整数的最后一个字节。 ...
tinyuz
[TOC] tinyuz\compress\tuz_enc.cpptuz_compress Tuz 数据压缩核心实现 负责执行 Tuz 无损压缩算法,将输入数据流 (data) 压缩后写入输出数据流 (out_code)。该实现同时支持高效的单线程和多线程压缩模式。 原理与设计思路解析tuz_compress 函数是 Tuz 压缩器的核心,它负责编排整个压缩流程。其设计思想围绕着分块处理 (Clipping) 和并行计算,以在处理大规模数据时兼顾内存效率和执行速度。 核心压缩策略 写入文件头 (Header First): 压缩开始时,首先会向输出流写入一个头部。这个头部包含了后续解压所必需的元数据,最主要的是字典大小 (Dictionary Size)。 数据分块 (Clipping): 为了有效管理内存并为并行化创造条件,输入数据不会被一次性加载。相反,它会被切分成连续的、大小适中的数据块,称为 “clip”。每个 clip 的大小会根据字典大小进行策略性计算,以平衡压缩率和处理开销。 分块压缩: 真正的压缩逻辑由 compress_clip 函数(在本代码片段中被调用...
SA-IS
[TOC] saisxx (顶层API)saisxx 是整个 sais.hxx 库提供给外部使用的公共接口函数。它本身不执行任何复杂的算法逻辑,其主要作用是作为一层封装,进行参数的合法性检查,处理一些简单的边界情况,并调用内部的核心实现 saisxx_private::suffixsort。 原理与设计思路解析 API 设计: 函数签名 template<typename string_type, typename sarray_type, typename index_type> 表明它是一个高度通用的模板函数。它可以接受任何满足随机访问迭代器 (Random Access Iterator) 条件的类型作为输入字符串 T 和输出数组 SA。例如,T 可以是 const char*、std::string 或 std::vector<unsigned char>;SA 可以是 int* 或 std::vector<long>。 k = 256 的默认参数,表明它默认处理的是8位字符(如ASCII, UTF-8字节流)的字符串。 参数校验...
构建基于Hexo、Butterfly、GitHub与Cloudflare的高性能个人博客
[toc] 构建基于Hexo、Butterfly、GitHub与Cloudflare的高性能个人博客 1. 引言本文旨在提供一个详尽、分步骤的技术指南,用于构建一个集现代化、高性能与功能丰富于一体的个人博客系统。该方案以静态站点生成器Hexo为核心,选用功能强大且美观的Butterfly主题,利用GitHub Pages进行版本控制与基础托管,并通过Cloudflare的服务实现全球CDN加速、自定义域名解析与静态站点部署。此外,文章还将深入探讨一系列插件的集成与优化,涵盖网站分析、用户交互、内容优化及搜索引擎收录等多个维度。 1234567891011graph TD A[本地环境: Hexo] --> B(生成静态文件); B --> C[版本控制: Git]; C --> D[代码托管: GitHub Repository]; D --> E{部署方案}; E --> F[方案一: GitHub Pages]; E --> G[方案二: Cloudflare Pages]; ...
测试效果
默认 提示块标签 default 提示块标签 primary 提示块标签 success 提示块标签 info 提示块标签 warning 提示块标签 danger 提示块标签 [{"url":"https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png","alt":"","title":""}] [{"url":"https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png","alt":"","title":""},{"url":"https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png","alt":"","title":""},{"url":"https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png","alt":"","title":""},{"url":"https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png...
《RT-Thread与STM32CubeMX深度整合实战:嵌入式开发配置陷阱与性能优化全解析》 —— 从SConscript管理到时钟同步,构建高效嵌入式系统的避坑指南
@[toc] 参考这博客进行了配置:https://blog.csdn.net/qq_45396672/article/details/118076336没有跟这样一步步来,发现了几个坑 工程配置优化指南一、关键配置陷阱与解决方案1. SConscript文件同步异常现象CubeMX生成外设驱动未自动同步至工程 本质原因构建系统未正确识别CubeMX输出路径 修正方案 123456789# 修改applications/SConscriptImport('RTT_ROOT')group = DefineGroup('HAL_Drivers', src = [ 'Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c', 'Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c' ], depend = [''])Return(...
RT-Thread 使用设备驱动框架 驱动看门狗例程中 MSH命令后提示“find iwg failed“”解决办法
@[toc] 太长不看版:修改这几行代码为下面这些 123#define IWDG_DEVICE_NAME "wdt" /* 看门狗设备名称 */ rt_uint32_t timeout = 10; /* 溢出时间 */ 代码参考 https://www.rt-thread.org/document/api/iwdg_sample_8c-example.html 下面是官方例程中的代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes...