【C/C++】C++ 编程规范:101条规则准则与最佳实践
C++ 编程规范:101条规则准则与最佳实践
引言
C++ 是一门强大而复杂的语言,能高效控制硬件,也能写出优雅抽象。然而,正因其复杂性,项目中若缺乏统一规范,极易陷入混乱、难维护、易出错的泥潭。
本文总结了 101条 C++ 编程规范与最佳实践,涵盖 命名、结构、内存管理、多线程、异常、安全、性能等多个维度,旨在帮助开发者构建高质量、可维护、可扩展的 C++ 项目。
一、命名与风格(Rules 1–10)
# | 规则 | 简要建议 |
---|---|---|
1 | 类名使用大驼峰 PascalCase | 如 ThreadPool ,提高可辨识性 |
2 | 变量名使用小驼峰 camelCase | 例:logFilePath ,区分于类名 |
3 | 常量用 ALL_CAPS + _ 分隔 | 强化不变含义,如 MAX_BUFFER_SIZE |
4 | 命名需语义明确 | 避免 data , tmp ,使用 configFilePath 更清晰 |
5 | 缩写仅限通用缩写 | 如 idx , buf ,尽量使用全称提升可读性 |
6 | 函数名用动词 + 名词 | 例如 loadConfig() 表意清晰 |
7 | 命名空间用小写 | 如 network::socket ,避免歧义 |
8 | 接口类加 I 前缀(可选) | 如 ILogger ,强调为接口 |
9 | 成员变量加前缀/后缀 | m_ 或 _ 表示成员变量,增强可读性 |
10 | 用 enum class 替代裸 enum | 强类型更安全,防止命名冲突 |
二、代码结构与风格(Rules 11–20)
# | 规则 | 简要建议 |
---|---|---|
11 | 每个头文件只声明一个模块 | 避免多义性,便于编译与复用 |
12 | 使用 #pragma once 或 include guard | 防止重复包含 |
13 | include 顺序:本地 > 第三方 > STL | 增强可读性与可维护性 |
14 | 避免头文件中包含过多实现 | 使用前向声明可减少依赖 |
15 | 类/函数应单一职责 | 有助于测试与扩展 |
16 | 控制函数长度 < 60 行 | 超过建议拆分子函数 |
17 | 控制每个文件长度 < 2000 行 | 模块化设计更清晰 |
18 | 每行不超过 120 字符 | 保证阅读体验,特别在 review 时 |
19 | 使用 4 空格缩进,禁止制表符 | 统一格式,防止跨平台混乱 |
20 | 所有控制结构都用 {} 包围 | 防止隐式逻辑错误,如单行 if 陷阱 |
三、类设计与对象管理(Rules 21–30)
# | 规则 | 建议 |
---|---|---|
21 | 所有成员变量应为私有 | 使用 getter/setter 访问 |
22 | 提供合理构造/析构函数 | 保证资源初始化与释放对称 |
23 | 禁用复制/移动时应 = delete | 明确意图,防止误用 |
24 | 用 explicit 阻止隐式转换 | 如 explicit Config(std::string path) |
25 | 避免裸指针作为成员 | 使用 unique_ptr /shared_ptr 安全管理 |
26 | 构造函数不做复杂逻辑 | 仅初始化,不处理业务 |
27 | 基类析构函数应为 virtual | 否则 delete 派生类有 UB |
28 | 优先使用组合而非继承 | 组合更灵活、低耦合 |
29 | 不使用多重继承(除非纯接口) | 降低复杂度,避免菱形继承问题 |
30 | 避免深层继承结构 | 建议控制在 2 层以内 |
四、函数与模板(Rules 31–40)
# | 规则 | 建议 |
---|---|---|
31 | 参数多于 3 个建议封装结构体 | 提高可读性与扩展性 |
32 | 参数传递规则明确 | 小型值传递,大型对象引用 |
33 | 函数返回值推荐智能指针或值传递 | 避免裸指针和资源泄露 |
34 | 函数要写用途注释 | 特别是公共接口或库函数 |
35 | 模板逻辑应轻量,避免过多嵌套 | 编译时间压力大时尤需注意 |
36 | 合理使用 auto 简化类型 | 不影响语义的地方使用 |
37 | 模板中加入 static_assert 限定 | 增强类型安全性 |
38 | 使用 constexpr 提升编译期能力 | 如常量计算函数 |
39 | 控制模板递归深度 | 编译器对深层模板支持有限 |
40 | 模板尽可能放 header 中定义 | 避免链接错误(ODR 问题) |
五、内存管理(Rules 41–50)
# | 规则 | 建议 |
---|---|---|
41 | 禁止裸 new/delete | 用 make_unique /make_shared 替代 |
42 | 所有资源管理用 RAII | 让析构自动释放资源 |
43 | 禁止手动 free/close | 封装在类中自动释放 |
44 | 指针拥有权应清晰 | 避免 ownership 混乱 |
45 | 避免 shared_ptr 在多线程竞争 | 使用 atomic_shared_ptr 或避免频繁共享 |
46 | 使用工具检测泄漏 | 如 Valgrind、ASan |
47 | 使用智能指针区分 shared/unique 语义 | 更清晰,更安全 |
48 | 不要传值传递 shared_ptr | 用 const& 降低引用计数开销 |
49 | 使用容器代替裸数组 | STL 容器更安全 |
50 | 类封装资源释放逻辑 | 遵守 RAII,职责清晰 |
六、异常处理与错误传递(Rules 51–60)
# | 规则 | 建议 |
---|---|---|
51 | 尽量避免使用异常 | 推荐 error code / Result<T> 结构 |
52 | 异常必须 catch 并处理 | 记录日志,避免 silent fail |
53 | 不使用 catch (...) | 易隐藏逻辑错误 |
54 | 构造函数中不抛异常 | 否则无法确定对象是否成功创建 |
55 | 明确错误处理模块 | 集中统一处理错误 |
56 | 注释中注明错误返回 | 增强调用方对异常的理解 |
57 | 编写无副作用函数 | 降低调试/测试成本 |
58 | 日志输出必须有上下文 | 包括文件名/函数名/线程信息 |
59 | 接口错误向上传递 | 不要在底层吞掉问题 |
60 | 异常路径不得影响主逻辑性能 | 异常处理应轻量快捷 |
七、多线程与并发(Rules 61–70)
# | 规则 | 建议 |
---|---|---|
61 | 封装线程操作 | 避免裸用 std::thread |
62 | 原子操作使用 std::atomic | 避免竞态条件 |
63 | 使用细粒度锁或无锁结构 | 提升性能,减少死锁 |
64 | 使用 lock_guard 管理锁 | 自动加锁释放 |
65 | 不捕获局部引用传入线程 | 否则线程中变量悬空 |
66 | 避免死锁 | 控制锁顺序,使用 std::scoped_lock |
67 | 避免全局变量并发读写 | 用线程局部存储或加锁保护 |
68 | 构建线程池封装并发任务 | 避免线程爆炸与资源浪费 |
69 | 不得在对象析构前 detach 线程 | 否则存在野线程 |
70 | 使用条件变量控制等待 | 避免忙等浪费 CPU |
八、性能优化(Rules 71–80)
# | 规则 | 建议 |
---|---|---|
71 | 优化热点路径 | 代码中使用 likely / unlikely |
72 | 用 std::move 转移资源 | 防止不必要的拷贝 |
73 | 使用 emplace_back | 避免对象额外构造拷贝 |
74 | 使用 reserve 预分配空间 | 降低 reallocation 成本 |
75 | 避免频繁申请释放内存 | 推荐对象池或内存复用 |
76 | 避免虚函数热路径中使用 | 可用策略模式等替代 |
77 | 小函数可使用 inline | 减少函数调用开销 |
78 | 注意 ABI 兼容性 | 跨平台或多版本部署需考虑 |
79 | 无序容器快于有序容器 | unordered_map 通常优于 map |
80 | 使用 string_view 避免拷贝 | 尤其在字符串解析场景中 |
九、安全与健壮性(Rules 81–90)
# | 规则 | 建议 |
---|---|---|
81 | 所有输入必须校验合法性 | 防止越界、注入等问题 |
82 | 检查整数溢出风险 | 使用安全加法函数 |
83 | 禁止数组越界访问 | 用 at() 或容器封装 |
84 | 使用 RAII 管理资源 | 防止内存泄漏或悬空指针 |
85 | IO 操作必须检查返回值 | 否则容易逻辑错误 |
86 | 不在库中使用 exit/abort | 破坏调用者行为 |
87 | 库中不处理 UI/日志 | 由上层决定策略 |
88 | 接口遵循最小权限原则 | 降低攻击面与耦合 |
89 | 使用静态分析工具辅助检查 | 如 clang-analyzer, cppcheck |
90 | 禁止未定义行为写法 | 避免 UB 问题,如越界指针、悬空引用等 |
十、工程实践与工具链(Rules 91–101)
# | 规则 | 建议 |
---|---|---|
91 | 接入持续集成(CI) | 自动编译与检查保障质量 |
92 | 使用单元测试框架 | 推荐 GTest/GMock |
93 | 使用代码覆盖率工具 | 识别未测试路径 |
94 | 强制统一代码格式化工具 | 推荐 clang-format |
95 | 接入内存检测工具 | 如 AddressSanitizer |
96 | 使用 CMake 管理构建 | 跨平台统一构建系统 |
97 | 单元测试覆盖率 >= 80% | 提升可靠性 |
98 | 所有代码需 Code Review | 防止低级错误 |
99 | 接入日志和监控模块 | 如 Prometheus、Grafana |
100 | 所有模块应可独立构建测试 | 降低耦合度 |
101 | 每半年重审一次规范 | 适应团队与项目演化 |
相关文章:
【C/C++】C++ 编程规范:101条规则准则与最佳实践
C 编程规范:101条规则准则与最佳实践 引言 C 是一门强大而复杂的语言,能高效控制硬件,也能写出优雅抽象。然而,正因其复杂性,项目中若缺乏统一规范,极易陷入混乱、难维护、易出错的泥潭。 本文总结了 10…...
PyTorch topk() 用法详解:取最大值
torch.topk(input, k) 返回张量中最大的 k 个元素以及它们在原张量中的 索引。 函数原型 torch.topk(input, k, dimNone, largestTrue, sortedTrue)参数说明: 参数说明input输入张量k要取出的前 k 个值dim指定沿哪个维度取值(默认是最后一维ÿ…...
毕业论文查重原理及降重方法
【30%的重复率有那么重要吗?】 老师说论文重读率必须低于30%,否则无法毕业! 如果您在专科或者普通本科学生,我只能这样一句话告诉你:你想多了~, 真的想多了~~~,一篇论文还不至于让你不能毕…...
Golang Kratos 系列:业务分层的若干思考(二)
上一篇文章简单讨论了领域层在Kratos中的使用,主要涉及引入领域层,将数据层和业务层之间的解耦,接下来讨论一个稍微全面一点的例子,在此基础上引入外部Api(主要是易变部分)的领域层下的情况。 我们同样可以…...
技术伦理之争:OpenAI陷抄袭风波,法院强制下架宣传视频
在AI巨头OpenAI宣布以65亿美元天价收购苹果前设计总监Jony Ive的硬件公司IO仅一个月后,一场抄袭指控将这家科技明星企业推上风口浪尖。 源自谷歌X实验室的初创企业IYO将OpenAI告上法庭,指控其窃取智能耳塞核心技术,并通过巨额收购试图掩盖抄袭…...
烟花爆竹生产企业库房存储安全风险预警系统
烟花爆竹生产企业库房存储安全风险预警系统是保障库房物资安全、规范作业流程、防范安全事故的重要技术手段,涵盖多个关键预警功能。 温湿度预警 在库房内安装温湿度传感器,这些传感器如同敏锐的“环境感知员”,能够实时监测库房内环境变…...
Jenkins+Jmeter+Ant接口持续集成
2025最新Jmeter接口测试从入门到精通(全套项目实战教程) 前言: 为什么要用Jmeter做接口测试: 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架?说…...
基于STM32的寻迹小车设计
标题:基于STM32的寻迹小车设计 内容:1.摘要 本文围绕基于STM32的寻迹小车设计展开。背景是随着自动化技术的发展,寻迹小车在工业巡检、物流运输等领域有广泛应用前景。目的是设计一款能稳定、准确寻迹的小车。方法上,以STM32微控制器为核心,…...
【150】基于SSM+Vue实现的小说阅读小程序(有文档)
系统介绍 基于SSMVue实现的小说阅读小程序采用前后端分离的架构方式,系统设计了管理员、用户两种角色,系统分为管理端、小程序端,管理端实现了管理员登录、个人中心、管理员管理、帮助中心管理、基础数据管理、论坛中心管理、公告资讯管理、…...
ValKey中使用SIMD指令优化bitcount命令
一、AVX/AVX2 的历史演进 随着计算机技术的飞速发展,数据处理需求呈指数级增长,SIMD(单指令多数据)技术应运而生。它通过一条指令同时处理多个数据元素,大幅提升计算效率,从早期的 MMX 技术起步࿰…...
leetcode114-二叉树展开为链表
leetcode 114 思路 用简单例子推导规律 不要一开始就看复杂的树,先从最简单的情况入手 案例一:只有一个节点 输入:1 输出:1不需要任何操作,直接返回 案例二:有两个节点 输入: 1/2输出&a…...
第七章 习题
1.给出下面表达式的逆波兰表示(后缀式): 3请将表达式-(ab)* (cd)-(abc)分别表示成三元式,间接三元式和四元式序列 四元式(Op,arg1,arg2,result) (,a,b,T1) (,c,d,T2) (*,T1,T2,T3) (uminus,T3,-,T4) (,a,b,T5) (,T5,c,T6) (-,T4,T6,r) 三元式 (op,arg1,arg2) (0) (,…...
Spring Ai Alibaba Graph实现五大工作流模式
Spring Ai Alibaba Graph实现五大工作流模式 概述 在 building-effective-agents 一文中,Anthropic将"智能体系统"(agentic systems),从架构层面分为 “工作流”(workflows)和 “智能体”(agents): 工作流…...
基于单片机的语音控制设计(论文)
摘要 自然语音作为人机交互在目前得以广泛的应用以及极大的发展前景。该设计介绍了基于非指定人语音芯片LD3320的语音控制器结构及其实现语音控制的方法。该语音控制器利用STM32F103C8T6单片机作为主要控制器,控制芯片对输入的进行语音识别并处理,根据语…...
【网络安全】从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark 实战
从IP头部看网络通信:IPv4、IPv6与抓包工具 Wireshark实战 在网络安全分析和数据通信的世界中,一切都始于“数据包”。数据包是网络上传输的基本单位,而数据包的结构与内容,正是我们理解网络行为的核心。本文将带你深入了解 IP 协…...
计算机组成原理笔记(公众号版本)
1.MAR,存储单元和PC位数之间的关系 我们的MAR位数取决于我们的存储单元的个数; PC位数也是取决于我们的存储单元的个数; 假设我们是64个存储单元,我们的这个MAR实际上就是6位,因为这个2的6次方等于我们的64吗&#…...
CPM基本原理
CPM(连续相位调制,Continuous Phase Modulation )是一种恒包络,信号相位随时间连续变化的调制技术 。其优势显著,连续相位特性,频谱效率高,对带外辐射抑制好;相位平滑过渡࿰…...
浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
在为移动端 App 接入在线客服系统的过程中,我经历了长时间的技术选型探索。最初,我也曾被一些“技术理想主义”选项所吸引,比如让用户自己研发界面我提供 API 以获得最高自由度,或集成 SDK 以追求原生体验。然而,随着项…...
AutoGPT,自主完成复杂任务
AutoGPT是一个开源的AI Agent项目,它的核心目标是让AI能够自主完成复杂任务,而不仅仅是回答单个问题。简单来说,它让AI具备了"自主思考和行动"的能力。 1. AutoGPT的核心概念 什么是AI Agent? AI Agent(智…...
基于Qt C++的影像重采样批处理工具设计与实现
摘要 本文介绍了一种基于Qt C++框架开发的高效影像重采样批处理工具。该工具支持按分辨率(DPI) 和按缩放倍率两种重采样模式,提供多种插值算法选择,具备强大的批量处理能力和直观的用户界面。工具实现了影像处理的自动化流程,显著提高了图像处理效率,特别适用于遥感影像处…...
Qt Windows平台调用ffmpeg动态库
本文基于QT6.8实测验证。 一、下载预编译库 从官方或第三方源获取FFmpeg的Windows动态库(Shared版本),解压后需包含以下目录: bin DLL文件(运行时依赖)include 头文件lib .lib或.dll.a链接…...
猿人学js逆向比赛第一届第十三题
一、分析请求 通过分析请求得知,本题目的参数为yuanrenxue_cookie,因为题目中中明说了是动态cookie,所以可以先删除这个cookie然后下脚本断点,简单分析看一下页面执行的js代码逻辑。 在经过这段代码的时候很明显的可以看到这里的有…...
React性能优化精髓之一:频繁setState导致滚动卡顿的解决方案
在开发一个 List 页面时,我们遇到了一个典型的React性能问题:页面在滚动时出现明显卡顿。这个问题的调试过程充满了误判和重新思考,最终发现了一个重要的性能优化原则。 问题现象 我们有一个监控仪表盘页面,包含多个图表组件。用…...
JavaScript 事件常用属性
一、事件对象基础 在事件处理函数中,浏览器会自动传入一个 event 对象,它包含了与事件相关的所有信息。 element.addEventListener(click, function(event) {// event 是事件对象 }); 二、常见事件属性 属性名 类型 描述 type String 事件类…...
配置自己的NTP 服务器做时间同步
✅ 推荐方案:使用 chrony 搭建 NTP 服务器(适用于 CentOS 7/8/9) chrony 是 CentOS 推荐的 NTP 实现,精度高、资源占用低、同步快,默认在 CentOS 8 中取代了 ntpd。 🔧 一、安装 chrony sudo yum install…...
基于深度学习的双色球智能预测系统:从原理到实现
需要源码的小伙伴可以在这里直接下载:基于深度学习的双色球智能预测系统:从原理到实现(完整代码训练数据)可直接运行-预测)资源-CSDN下载可直接运行,包括完整的训练测试数据,让你的双色球更准&a…...
STM32[笔记]--4.嵌入式硬件基础
4.嵌入式硬件基础 4.1认识上官二号开发板 主控芯片:STM32F103C8T6高速晶振:8M低速晶振:32.768kLED:5颗KEY:3个 主控芯片内部的资源如下项目介绍内核Cortex-M3Flsah64K*8bitSRAM20K*8bitGPIO37个GPIO,分别为PA0-PB15,PC13-PC15,PD0-PD1ADC2个12bitADC合计12了通道,外部通…...
Springboot项目中使用手机号短信验证码注册登录实现
文章目录 1. 功能概述2. 技术栈3. 实现步骤3.1 短信服务集成3.2 创建短信工具类3.3 验证码生成和存储3.4 控制器实现发送短信验证码手机号+验证码注册短信验证码登录3.5 服务层实现4. 前端实现4.1 API层4.2 手机号注册页面5. 最佳实践6. 总结本文将介绍如何在Spring Boot应用中…...
Python的GUI库选择指南(深度拓展)
前文我们分析了python的GUI库,有很多,面向应用场景也不尽相同,如何在使用过程中,选择合适的GUI库呢?可以查看:python有哪些常用的GUI(图形用户界面)库及选择指南-CSDN博客 初学者推…...
Kubernetes生命周期管理:深入理解 Pod 生命周期
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
JVM(12)——详解G1垃圾回收器
G1(Garbage-First)垃圾回收器。它是现代 Java 应用中默认的垃圾回收器(自 JDK 9 起),旨在提供一个高性能、可预测停顿时间(低延迟)的解决方案,尤其适合大内存(多GB甚至TB…...
Matplotlib vs Seaborn:选择与区别
相同点 都是Python数据可视化库:两者都用于创建统计图形和图表 基于Python生态系统:都与NumPy、Pandas等科学计算库良好集成 开源免费:两者都是开源项目,可自由使用 支持多种图表类型:都能创建折线图、柱状图、散点…...
TCP/UDP协议深度解析(一):UDP特性与TCP确认应答以及重传机制
🔍 开发者资源导航 🔍🏷️ 博客主页: 个人主页📚 专栏订阅: JavaEE全栈专栏 前言 在网络通信的世界里,传输层协议如同交通规则,决定了数据包如何从源头抵达目的地。其中UDP和TCP就…...
Linux线程概念及常用接口(1)
目录 1. Linux线程概念 什么是线程 线程的优点 线程的缺点 线程异常 线程用途 2. Linux进程VS线程 进程和线程 关于进程线程的问题 3. Linux线程控制 POSIX线程库 创建线程 线程ID及进程地址空间布局 线程终止 线程等待 为什么需要线程等待? 4. 分离线程 1. Linux线…...
Qt+OPC开发笔记(三):OPC客户端订阅特点消息的Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/148868209 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...
《美化生活》投稿简介
《美化生活》杂志是国家新闻出版署批准的正规期刊,是面向全国发行的文学艺术刊。本刊坚持“传播新理念,交流新经验”办刊方针,坚持“指导消费、丰富生活、美化心灵、雅俗共赏”的宗旨,以其丰富的内容,融学术性与技术性…...
如何为虚拟机上的 Manjaro Linux启用 VMware 拖放功能
如果你的Manjaro 发行版本是安装在 VMware Workstation Player 上使用的 ,而且希望可以通过拖放功能将文件或文件夹从宿主机复制到客户端的Manjaro 里面,那么可以按照以下的步骤进行操作,开启拖放功能。 在 VMware 虚拟机上安装 Manjaro 后&…...
VIVADO导出仿真数据到MATLAB中进行分析
VIVADO导出仿真数据到MATLAB中进行分析 目录 前言 一、导出仿真数据需要编写的RTL代码 二、MATLAB读入txt文件中的数据 三、需要注意的点 总结 前言 在使用 Xilinx Vivado 进行 FPGA 开发时,如何将 RTL 仿真生成的数据导出,进行进一步分析与可视化&…...
Harmony状态管理@Event
ArkUI Event装饰器:实现子组件向父组件通信的规范方式 概述 Event装饰器是ArkUI框架中用于规范组件间通信的重要工具,特别是在需要子组件向父组件请求更新Param变量的场景下。它通过回调机制实现数据的双向同步,是组件化开发中不可或缺的一…...
算力服务器选型
算力服务器选型需结合应用场景、算力需求及扩展性,核心要素如下: 应用定位: AI 训练 / 推理:优先高算力 GPU(如 NVIDIA A100、H100,或 RTX4090),搭配多核 CPU(如 Intel …...
基于目标驱动的分布式敏捷开发
研究结论 风险对项目目标的影响 时间目标:需求管理不当(如需求优先级不明确、多产品负责人需求冲突)、架构变更导致的返工、跨站点协调问题(如第三方依赖、通信基础设施不足)是影响项目时间的主要风险因素。质量目标&…...
大数据在UI前端的应用拓展:用户行为分析的深度挖掘
hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在当今数字化时代,大数据已成为推动各行业发展的核心动力之一。对于 UI 前端而言&…...
elk+filebeat收集springboot项目日志
目录 步骤 1: 安装和配置Elasticsearch 步骤 2: 安装和配置Logstash(可选) 步骤 3: 安装和配置Filebeat 步骤 4: 安装和配置Kibana 要使用ELK(Elasticsearch, Logstash, Kibana)堆栈和Filebeat来收集Spring Boot项目的日志&am…...
华为云Flexus+DeepSeek征文 | 华为云MaaS平台上的智能客服Agent开发:多渠道融合应用案例
华为云FlexusDeepSeek征文 | 华为云MaaS平台上的智能客服Agent开发:多渠道融合应用案例 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不…...
SQL关键字三分钟入门:UPDATE —— 修改数据
在数据库操作中,除了添加新记录外,我们还需要经常修改已有的记录。例如: 更新用户的个人信息;调整订单的状态;更改产品的价格。 这时候就需要用到 SQL 中非常基础但极其重要的关键字 —— UPDATE! 它是用…...
用Rust写平衡三进制加法器
1、三进制加法器的发展 最初的平衡三进制加法是采用了三选一结构(github原文),这位大佬也很厉害,他是硬件都弄了出来的,也写了虚拟机,甚至用这三态多路复用器弄出了可以存状态的硬件,但我没有去看了,因为当…...
【AI时代速通QT】第三节:Linux环境中安装QT并做测试调试
目录 引言 一、Linux QT开发环境的核心要素 1.1 编译器(g)与构建工具(make) 1.2 搞定 OpenGL 依赖 二、核心步骤——安装 Qt Creator 2.1 获取官方在线安装器 2.2 赋予文件执行权限 2.3 运行图形化安装向导 三、Linux上创…...
论文阅读:2025 arxiv Qwen3 Technical Report
https://arxiv.org/pdf/2505.09388 https://www.doubao.com/chat/9918384373236738 文章目录 论文翻译Qwen3技术报告摘要1 引言 论文翻译 Qwen3技术报告 Qwen团队 摘要 在这项工作中,我们介绍了Qwen模型家族的最新版本Qwen3。Qwen3包含一系列大型语言模型&…...
Vue3+el-table-v2虚拟表格大数据量多选功能详细教程
Vue3el-table-v2虚拟表格大数据量多选功能详细教程 本教程基于 Element Plus 组件库的 el-table-v2(假设你使用虚拟滚动表格),实现大数据量场景下的多选功能,并包含了全选、反选、已选行展示、清除选择等完整交互。 一、项目背景与…...
开源跨平台的轻量 C# 编辑器
NetPad一个基于.NET 开源、跨平台的 C# 编辑器,目的是创建一个开源的、支持 Web 的跨平台替代方案,从而为开发者提供便利的编程环境并为非 Windows 环境下的开发者提供一个可替代 LINQPad 的实用工具。它以.NET SDK 作为基础运行时环境,利用E…...