modern cpp 中auto 和decltype 的区别
区别
在现代C++中,auto和decltype是用于类型推导的关键字,它们有不同的用途和行为。
auto关键字:
auto用于自动推导变量的类型。编译器会根据变量的初始化表达式推导出变量的类型,并将其替换为推导得到的类型。
auto适用于大多数情况,特别是在使用迭代器、范围循环和模板编程时非常有用。
auto不能用于函数参数、类成员变量和非静态成员函数的返回类型(C++14之前)。
示例:
auto x = 42; // 推导为int类型
auto name = "John"; // 推导为const char*类型
std::vector<int> vec = {1, 2, 3};
for ...
常用的命令
基础命令
时间同步信息 chronyc sources -v
acs@iZf8zeytjbajfs6v6d0oxuZ:~$ chronyc sources -v
210 Number of sources = 15
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| ...
实车调试
0 基本的硬件 实车信息
工控机,
ntpserver
域控芯片板子,
nas
通过工控机,连接到板子上,车辆上电需要10min,启动完成,交换机启动可能会很慢, 能从工控机ping 通板子说明交换机已经启动完成
1 时间同步
时间同步是最首要要检查的,时间不同步,感知软件无法启动
时间不同步的话,从板端向上逐级排查
主要顺序是: 板端 -> 工控机 -> ntp server
检查板端的时间同步
data 命令
chronyc sources -v命令
看到每个工控机和板端的时间差, delta 控制在3ms内
clockdiff 192.168.1.11
检查 ntpserver信号
ntp-server 依赖gps信号,需要在地面上启动(...
c++ guide 格式相关
行长度相关
代码行宽度推荐80不允许超过120
其中80主要考虑的是人眼视线范围而非屏宽
非法ASCII 字符相关
代码中不要添加非ASCII的字符,允许中文注释
空格和制表位相关
缺省缩进为 2 个空格.使用空格而不是tab
函数声明和定义格式相关
对显式重写的虚函数要使用override修饰。重写虚函数时不要添加virtual关键字
class Base {
public:
virtual void do_something() {}
};
class Derived :public Base {
public:
void do_something() override {} // good
virtual void do_something...
8021. 使子序列的和等于目标的最少操作次数
题目
https://leetcode.cn/contest/weekly-contest-360/problems/minimum-operations-to-form-subsequence-with-target-sum/
给你一个下标从 0 开始的数组 nums ,它包含 非负 整数,且全部为 2 的幂,同时给你一个整数 target 。
一次操作中,你必须对数组做以下修改:
选择数组中一个元素 nums[i] ,满足 nums[i] > 1 。W
将 nums[i] 从数组中删除。
在 nums 的 末尾 添加 两个 数,值都为 nums[i] / 2 。
你的目标是让 nums 的一个 子序列 的元素和等于 target ,请你返回达成这一目标的 最少操作次数 ...
c++ guide 注释相关
注释风格
对于作为接口暴露的头文件,需要尽可能使用doxygen工具的注释语法
使用 // ,注释总是统一在代码上面
不要块注释,不方便cr
文件注释
头文件加入版权公告
class注释
类的定义都要附带一份注释, 描述类的功能和用法
多个线程访问的话要注意记录多线程使用的规则和不变量
function注释
函数声明处的注释描述函数功能
功能注释应以该功能的隐含主语书写,并应以动词短语开头;例如,“Opens the file”,而不是“Open the file”
在编写函数重写(override)相关注释时,请关注重写本身的细节
构造函数析构函数记录对参数所做的操作
详细记录:
输入输出
类成员函数方法调用后是否还有其参...
c++ guide 命名相关
通用命名规则
首选将缩写当做为单个单词,例如 StartRpc() 而不是 StartRPC() 。
参考: https://www.educative.io/collection/page/10370001/5111386763952128/6533026123087872
repo 风格保证相对统一
文件命名
全部小写,单词间用”_” 链接,例如file_name.h
定义FooBar 类型的文件: foo_bar.h 和 foo_bar.cc
类型命名
单词首字母大写,如 MyClass
class MyClass {}; // class|
struct MyStruct {}; // struct
typedef int64_t Time...
protouf 性能优化在哪里
优化方式
二进制编码:protobuf 使用紧凑的二进制格式进行数据编码,相比于文本格式(如 JSON、XML),二进制格式在存储和传输上更加高效。二进制编码不仅减少了数据的体积,还降低了序列化和反序列化的时间开销。
压缩算法:protobuf 提供了多种压缩算法,如 Varint 编码、ZigZag 编码等,用于对整数和布尔类型数据进行压缩。这些算法可以减小整数类型数据的存储空间,从而减少序列化和反序列化的时间和网络传输的带宽消耗。
字段标签和有限字段集:protobuf 使用字段标签来标识消息中的字段,而不是使用字段名称。通过使用数字标签,可以减小数据的体积,并且在序列化和反序列化时可以更快地定位和访问字段。此外,protobuf 还支持有限字段集,即只序列化消息中定义的字段,...
共计 90 篇文章,12 页。