Doxygen 注释规范
Doxygen 注释规范文件头注释1234567891011121314151617181920/* polyspace<MISRA-C3:1.1:Not a defect:Justify with annotations> *//** * @file Adc.h * @author linmin * @brief This file provides ADC related function declarations and related macro definitions. * * @par Platform File * * * @copyright (c) 2022 AOTECAR, all rights reserved. *//*------------------------------------------------------------------------------ R E V I S I O N H I S T O R Y...
通用C语言编码规范
通用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 静态函数 -...
clang-format 配置规则说明
clang-format 配置规则说明本文档详细说明项目中 .clang-format 文件的各项配置规则及其效果。 基本语言配置 配置项 当前值 说明 效果 Language Cpp 语言类型,也适用于C语言 使用C++/C语言的格式化规则 Standard Latest 使用最新的语言标准 支持最新的语法特性格式化 ColumnLimit 120 每行最大字符数 超过120字符自动换行 对齐配置 配置项 当前值 说明 示例 AccessModifierOffset -2 访问修饰符缩进 public: 相对类缩进-2个空格 AlignAfterOpenBracket Align 开括号后内容对齐 参数与开括号对齐 AlignConsecutiveAssignments true 连续赋值语句对齐 =...
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 依赖...
Hexo 静态网站托管阿里云 OSS
现在用 Hexo 来搭建静态站点的人越来越多了,很多人会选择使用 GitHub Pages 服务来部署自己的静态站,但 GitHub Pages 国内访问速度实在无法接受,本文介绍一下如何一键使用阿里云 OSS 对象存储服务部署 Hexo 站点,同时解决一个浏览器缓存的坑。 加速方案对比 Netlify:与 GitHub 配合使用很方便,但国内访问速度不佳,需要搭配国内 CDN 使用 Vercel:与 Netlify 类似,国内访问速度不错,域名没有备案的话是个不错的选择 对象存储:使用阿里云 OSS 或类似的对象存储服务,国内访问速度不错,也可搭配国内 CDN 使用,速度最好,但要求你的域名有备案号 境内对象存储 + 境外 Vercel/Netlify:我所采用的方案,应该是最佳的方案了 创建 Bucket首先要做的事情就是去 阿里云 创建一个 Bucket: Bucket 名称:随便起,只要不重复就行 地域:按你的需求,阿里云的节点国内访问速度都可以。如果你不打算使用 CDN 服务的话,可以选择华东节点,全国访问速度都能兼顾;如果使用 CDN...
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...
django 项目实战:项目总览与技术栈选型
从零搭建”一物一码”合格证查询系统——项目总览与技术栈选型 本文是”一物一码合格证查询系统”系列教程的第 1 篇(共 5 篇)。我们将从项目背景出发,梳理核心功能、敲定技术栈,并给出完整的工程目录结构与数据模型概览,帮助你在动手写代码之前建立全局认知。 项目背景与需求分析在制造业和供应链领域,产品合格证是证明出厂质量最直接的凭据。然而,传统纸质合格证存在三个致命问题: 易伪造——一张 A4 纸加一个公章,仿冒成本极低。 难追溯——纸质证书没有版本链,一旦补发或作废,下游根本无法判断手里那张是不是最新版。 无数据沉淀——扫码率、查询热力、异常扫描等运营数据完全缺失。 “一物一码”(One Product, One Code)的核心思路非常简单:为每一件出厂产品生成一枚唯一的 QR 码,绑定到一份数字化的检验合格证上。终端用户(经销商、消费者、监管方)只需用手机扫码,即可在浏览器中查看该产品对应的合格证详情,无需下载 App,无需登录。 整个流程可以概括为: 123厂家录入产品 → 创建货物批次 → 绑定合格证 → 审核发布 → 生成 QR 码贴纸 ...
django 项目实战:从零搭建"一物一码"合格证查询系统——项目总览与技术栈选型-2
从零搭建”一物一码”合格证查询系统——Django + DRF 后端架构详解 系列文章(2/5):本篇将深入拆解后端核心架构,涵盖环境配置、数据模型、视图层、权限体系、中间件审计、JWT 认证与服务层设计。如果你还没阅读第一篇系统总览,建议先回顾后再继续。 一、Django 配置与环境管理在实际项目中,开发环境和生产环境的配置往往差异巨大。我们使用 django-environ 配合 APP_ENV 环境变量,实现了一套零硬编码的配置方案。 1.1 基于 APP_ENV 的多环境加载123456789101112131415161718# settings.pyimport osimport environfrom pathlib import PathBASE_DIR = Path(__file__).resolve().parent.parentenv = environ.Env( DEBUG=(bool, False), # 默认关闭 DEBUG,防止生产环境泄露)# 核心:根据 APP_ENV 加载对应的 .env 文件# 开发时...
django 项目实战:安全与防篡改设计——Ed25519签名、审计哈希链与双人复核
从零搭建”一物一码”合格证查询系统——安全与防篡改设计 本文是系列教程的第 4 篇。前三篇我们完成了需求分析、数据建模与前后端开发;本篇将深入系统中最核心的安全架构——数字签名、审计哈希链、不可变性守卫、频率限制与双人复核机制。如果你对”如何让一张电子合格证无法被伪造”这个问题感兴趣,这篇文章值得你从头读到尾。 1. Ed25519 数字签名1.1 为什么选 Ed25519?在非对称签名算法的选择上,我们放弃了 RSA 和 ECDSA,转而采用 Ed25519。理由如下: 维度 RSA-2048 ECDSA (P-256) Ed25519 公钥长度 256 bytes 64 bytes 32 bytes 签名长度 256 bytes 64 bytes 64 bytes 签名速度 慢 中等 极快 参数选择 需选 e/padding 需选曲线 无需任何参数 时序攻击 需额外防护 需额外防护 天然免疫 对于合格证这种需要批量签发、移动端快速验证的场景,Ed25519 的 32...
django 项目实战:Vue 3 + Vite 前端架构详解
从零搭建”一物一码”合格证查询系统——Vue 3 + Vite 前端架构详解 系列文章(3/5):本篇聚焦前端架构设计。我们将拆解为什么选择”双 SPA”方案,深入管理后台与公众查询端的核心模块,并覆盖 Vite 构建、前后端交互和移动端适配等关键主题。 1. 双 SPA 架构设计理念很多团队在项目初期会把管理后台和面向公众的页面塞进同一个 SPA。随着业务增长,巨型 bundle 导致公众页面加载缓慢,而后台专属依赖又污染了公众端的 tree-shaking 效果。我们从立项之初就做了一个决定——将管理后台与公众查询端拆分为两个独立的 Vue 3 SPA。 123456789frontend/├── admin/ # 管理后台:功能全面,面向内部用户│ ├── src/│ ├── package.json│ └── vite.config.ts└── cert-view/ # 公众查询端:轻量快速,面向终端消费者 ├── src/ ├── package.json └──...