Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1hexo new "My New Post" More info: Writing Run server1hexo server More info: Server Generate static files1hexo generate More info: Generating Deploy to remote sites1hexo deploy More info: Deployment
Hexo + Butterfly 主题搭建与使用指南
一篇面向实际操作的 Hexo + Butterfly 搭建手册,跳过废话,直接上手。 环境准备需要提前安装两个工具: Node.js(>= 14.0):下载地址 Git:下载地址 验证安装: 123node -vnpm -vgit --version 安装 Hexo1npm install -g hexo-cli 初始化博客项目: 123hexo init my-blogcd my-blognpm install 初始化完成后的目录结构: 1234567my-blog/├── _config.yml # 站点配置文件├── package.json # 依赖管理├── scaffolds/ # 文章模板├── source/ # 资源文件夹│ └── _posts/ # 文章目录└── themes/ # 主题目录 安装 Butterfly 主题1npm install hexo-theme-butterfly Butterfly 依赖...
嵌入式C/C++项目的 clang-format 配置
分享一下我的 clang-format 配置,主要针对嵌入式 C/C++ 项目进行了优化,注重代码可读性和一致性,同时适度限制行宽以提升代码审查体验。配置涵盖了大括号风格、参数换行、对齐规则、空格使用、Tab 和行尾符等多个方面,旨在形成一个清晰、统一的代码风格规范。 我的主要要求1 行宽限制为可以半个屏幕显示完全,这样优化分屏显示2 使用Allman风格的大括号,单独占一行,优化阅读体验3 对Include的头文件排序4 永不使用Tab字符,统一使用四个空格缩进5 函数参数分行显示,禁止装箱,提升代码审查体验6 统一的空格和对齐规则,提升代码一致性和可读性 配置说明🔧 基本语言配置 配置项 当前值 说明 效果 Language Cpp 语言类型,也适用于C语言 使用C++/C语言的格式化规则 Standard Latest 使用最新的语言标准 支持最新的语法特性格式化 ColumnLimit 120 每行最大字符数 超过100字符自动换行 📐...
Hexo 静态网站托管阿里云 OSS
现在用 Hexo 来搭建静态站点的人越来越多了,很多人会选择使用 GitHub Pages 服务来部署自己的静态站,但 GitHub Pages 国内访问速度实在无法接受,本文介绍一下如何一键使用阿里云 OSS 对象存储服务部署 Hexo 站点,同时解决一个浏览器缓存的坑。 加速方案对比 Netlify:与 GitHub 配合使用很方便,但国内访问速度不佳,需要搭配国内 CDN 使用 Vercel:与 Netlify 类似,国内访问速度不错,域名没有备案的话是个不错的选择 对象存储:使用阿里云 OSS 或类似的对象存储服务,国内访问速度不错,也可搭配国内 CDN 使用,速度最好,但要求你的域名有备案号 境内对象存储 + 境外 Vercel/Netlify:我所采用的方案,应该是最佳的方案了 创建 Bucket首先要做的事情就是去 阿里云 创建一个 Bucket: Bucket 名称:随便起,只要不重复就行 地域:按你的需求,阿里云的节点国内访问速度都可以。如果你不打算使用 CDN 服务的话,可以选择华东节点,全国访问速度都能兼顾;如果使用 CDN...
通用C语言编码规范
1. 总体原则1.1 可读性优先 代码应该像散文一样易于阅读 清晰的命名比短小的命名更重要 一致性胜过个人偏好 1.2 简洁性 避免不必要的复杂性 一个函数只做一件事 避免过深的嵌套 1.3 安全性 检查所有输入参数 避免缓冲区溢出 明确处理错误情况 2. 命名约定2.1 文件命名123456789// 源文件使用小写字母和下划线string_utils.cmemory_pool.cuart_driver.c// 头文件对应string_utils.hmemory_pool.huart_driver.h 2.2 函数命名2.2.1 公共函数 - snake_case1234// 公共API函数使用模块前缀int memory_pool_init(memory_pool_t *pool, size_t size);bool string_utils_is_empty(const char *str);void uart_driver_send_data(const uint8_t *data, size_t len); 2.2.2 静态函数 - snake_case...
can协议基础(3) -can数据链路层2
can协议基础(3) -can数据链路层26 位定时器与同步6.1位定时 CAN时钟是CAN控制器的工作时钟 CAN时钟的一个周期称为时间份额tQ ,它是CAN控制器工作的最小时间单位 在CAN总线控制器中,BTR0(Bit Timing Register 0)是一个用于配置CAN总线位定时参数的寄存器。BTR0通常包含两个主要字段: BRP(Baud Rate Prescaler) :波特率预分频器,用于设置CAN总线的时钟分频。 SJW(Synchronization Jump Width) :同步跳转宽度,用于调整同步时钟的容忍度。 6.2 波特率1位时长:若干个tQ组成 确定位时间,以便确定波特率(位速率),从而确定总线的网络速度;或在给定总线的网络速度的情况下确定位时间; 确定1位的各个组成部分——同步段、传播时间段、相位缓冲器段1和相位缓冲器段2的时间长度,其中同步段用于硬同步,位于相位缓冲器段1终点的采样点用于保证正确地读取总线电平; 确定重同步跳转宽度以用于重同步。 波特率=1/位时间 6.3...
can协议基础(1)-简要介绍及物理层
can协议基础(1)-简要介绍及物理层1 介绍1.1 can 协议的简要介绍CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519 以及 ISO11898),是国际上应用最广泛的现场总线之一。差异点如下: 1.2 通讯方式can 总线通讯方式是串行通迅的一种,与 SPI、IIC 等不同,can 总线的同步并不是以时钟信号来进行同步的,是预先设置好波特率的异步半双工通讯方式,can 总线广泛应用于汽车和工业自动化领域。它允许在没有主机计算机的情况下,多个微控制器和设备之间进行通信。以下是 CAN 总线的一些关键特点: 多主通信:CAN 总线允许网络上的任何设备(节点)随时开始通信,采用多主通信方式。 消息优先级:当两个或更多节点同时尝试发送消息时,CAN 总线通过标识符的优先级来决定哪个消息具有传输优先权。 差错检测:CAN...
can协议基础(2)-can数据链路层
can协议基础(2)-can数据链路层1 数据链路层的介绍CAN 总线的数据链路层负责在物理层提供的原始比特流上实现可靠的通信。它包括帧的封装、错误检测、确认机制、仲裁过程等关键功能。以下是数据链路层的主要特点和功能: 帧类型CAN 协议定义了几种不同类型的帧,包括数据帧(用于数据传输)、远程帧(用于请求数据)、错误帧(用于错误通知)、过载帧(用于延迟下一帧的传输)和空闲帧(总线空闲状态)。 仲裁CAN 总线使用非破坏性仲裁方法,允许多个节点同时尝试发送消息。如果两个或更多节点同时开始发送,节点会在发送过程中监听总线,并在检测到冲突时停止发送较低优先级的消息。这是通过帧 ID 的二进制值来实现的,较低的 ID 具有较高的优先级。 错误检测CAN 数据链路层包括多种错误检测机制,如循环冗余检查(CRC)、帧检查、比特监视和确认检查。这些机制确保了数据的完整性和通信的可靠性。 确认机制在数据帧成功传输后,接收节点会发送一个确认位,表明消息已被接收。如果发送节点没有检测到确认,它可能会重新尝试发送消息。 流量控制虽然 CAN...