摘要: DRAFT 梳理下我的技能树,要学的太多,学无止境 阅读全文
posted @ 2023-01-29 11:51 Zijian/TENG 阅读(473) 评论(0) 推荐(0) 编辑
摘要: ![image](https://img2020.cnblogs.com/blog/197073/202107/197073-20210714195425183-638051744.jpg) 很庆幸,工作以来一直保持着阅读的习惯。看了一些书,感觉不错,和同样渴望力量的你分享 # 1. 计算机基础 # 阅读全文
posted @ 2021-07-10 22:32 Zijian/TENG 阅读(437) 评论(1) 推荐(0) 编辑
摘要: C++ 中的 volatile 和 atomic 0. TL;DR std::atomic 用于多线程并发场景,有两个典型使用场景: 原子操作:对 atomic 变量的操作(读/写/自增/自减)仿佛受互斥量保护。一般通过特殊的机器指令实现,比使用互斥量更高效 限制编译器/硬件对赋值操作的重新排序 v 阅读全文
posted @ 2024-03-31 13:52 Zijian/TENG 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 问题背景 程序退出过程中卡死,但是一旦开启 log 就无法复现问题。于是考虑获取程序卡死时的 coredump 文件,分析其调用栈。一种方法是在程序卡死时,用 kill 命令向其发送一个信号,使程序产生 coredump 文件。 前提 Target 上可以产生 core 文件(如 /tmp/<exe 阅读全文
posted @ 2024-03-17 16:19 Zijian/TENG 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 之前的“性能优化的一般策略及方法”一文中介绍了多种性能优化的方法。根据以往的项目经验,开启编译器优化选项可能是立竿见影、成本最低、效果最好的方式了。 这么说可能还不够直观,举个真实的例子:我所参与的自动驾驶的项目中,无需修改任何代码,仅仅增加一个 -O2 选项,进程整体的 CPU loading 可 阅读全文
posted @ 2024-03-15 20:25 Zijian/TENG 阅读(886) 评论(0) 推荐(2) 编辑
摘要: TLDR 修饰变量的时候,可以把 constexpr 对象当作加强版的 const 对象:const 对象表明值不会改变,但不一定能够在编译期取得结果;constexpr 对象不仅值不会改变,而且保证能够在编译期取得结果。如果一个 const 变量能够在编译期求值,将其改为 constexpr 能够 阅读全文
posted @ 2024-02-19 21:13 Zijian/TENG 阅读(331) 评论(1) 推荐(2) 编辑
摘要: 本文尝试回答: 现代 C++ 有哪几种初始化形式?分别能够用于什么场景?有什么限制? MyClass obj(); 为什么没有调用默认无参构造函数创建一个对象? new int 和 new int() 有什么区别? 直接初始化、拷贝初始化、列表初始化、默认初始化、值初始化、类内初始值、构造函数初始值 阅读全文
posted @ 2024-01-27 19:59 Zijian/TENG 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 问题描述 前两天群里有人问了这样一个问题: 在 a 文件中定义了一个全局变量,可以在 b 文件中引用。但一旦把全局变量改为 const 之后,就无法在 b 文件中引用,编译(链接)报错“无法解析的外部符号”,这是为什么? 解析 这是因为 const 修饰的全局变量默认具有文件作用域(类比C语言中的s 阅读全文
posted @ 2024-01-21 16:51 Zijian/TENG 阅读(62) 评论(0) 推荐(0) 编辑
摘要: C++ 学习宝藏网站分享 1. C++ 在线参考手册 Cppreference https://zh.cppreference.com C++ 开发者必备的在线参考手册,是我最常访问的 C++ 网站之一。作为参考手册,不仅包含了语言本身的词法、语法特性,还包含了对 C++ 标准库的介绍:需要 inc 阅读全文
posted @ 2024-01-13 22:50 Zijian/TENG 阅读(721) 评论(0) 推荐(4) 编辑
摘要: C++ 核心指南 —— 性能 阅读建议:先阅读 《性能优化的一般策略及方法》 截至目前,C++ Core Guidelines 中关于性能优化的建议共有 18 条,而其中很大一部分是告诫你,不要轻易优化! 非必要,不优化 Per.1: 不要无故优化 Per.2: 不要过早优化 Per.3: 只优化少 阅读全文
posted @ 2023-12-25 15:43 Zijian/TENG 阅读(508) 评论(0) 推荐(1) 编辑
摘要: 性能优化的一般策略及方法 在汽车嵌入式开发领域,性能优化始终是一个无法回避的问题: 座舱 HMI 想要实现更流畅的人机交互 通信中间件在给定的 CPU 资源下,追求更高的吞吐量 更一般的场景:嵌入式设备 CPU 资源告急,需要降低 CPU 使用率... 不同的工程师会从不同的角度给出不同的优化建议: 阅读全文
posted @ 2023-11-26 22:39 Zijian/TENG 阅读(812) 评论(0) 推荐(2) 编辑
摘要: 观察者模式 主体(被观察者)通知一个或多个观察者状态改变/数据更新/事件发生。 描述 C++ 实现观察者模式有几个要点: 观察者都有一个共同的抽象基类 Listener,定义了一个纯虚接口 OnNotified(),主体调用该接口通知观察者 每个观察者 ConcreteListener 继承自抽象基 阅读全文
posted @ 2023-11-18 16:38 Zijian/TENG 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 校招应届生简历中,有一个 C++ 项目出现的频率非常高... select 🙁 1024 fd 限制(可修改,麻烦) 🙁 需要遍历才知道哪些 fd ready 🙁 副作用:修改传入 fd_set,每次需要重新赋值 poll 🙂 解决了 select 的 fd 1024 限制 🙁 依然需要遍 阅读全文
posted @ 2023-11-18 09:43 Zijian/TENG 阅读(31) 评论(0) 推荐(0) 编辑
摘要: QNX 性能分析工具 小结 hogs:列出最占用 CPU/RAM 的进程,可以统计内存占用详细情况【可单个进程】 pidin:显示进程信息、系统信息、库信息...【可单个进程】 ps:显示进程信息【可单个进程】 top:多核平均占用,不能针对单个进程? ttop:和 top 类似,显示更多线程,单核 阅读全文
posted @ 2023-11-18 09:11 Zijian/TENG 阅读(1492) 评论(0) 推荐(1) 编辑
摘要: 问题描述 在 Windows 上搭建 Hexo 环境,已经从官网下载安装 node-v18.18.2-x64.msi,并且通过 npm 命令成功安装 hexo。 PowerShell 中,直接执行 hexo 命令报错: hexo : 无法加载文件 C:\Users\zijia\AppData\Roa 阅读全文
posted @ 2023-10-23 22:48 Zijian/TENG 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 先安装 homebrew,网上教程很多,推荐官方教程,此处略过 通过 brew 安装 llvm brew install llvm 创建软连接,指向 homebrew 安装的 clang-tidy mkdir -p /usr/local/bin/ ln -s /opt/homebrew/Cellar 阅读全文
posted @ 2023-10-14 11:22 Zijian/TENG 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 基础 #id{} ID 选择器 .class{} 类选择器 tag{} 标签选择器,tag 可以是 h1, p, div, span, img, nav, footer... *{} 通用选择器,选择所有元素,可以和其他复杂选择器组合 <div class="class1 class2" id="m 阅读全文
posted @ 2023-10-06 10:26 Zijian/TENG 阅读(20) 评论(0) 推荐(0) 编辑
摘要: CSS 基础 4 - CSS 常用单位 px:基础单位 em:相对当前父容器的系数,可以累乘 rem:相对根 <html> 的系数,方便计算 vw/vh:viewport width/height,整个浏览器的大小,取值范围 1-100 如 100vh,占满高度,如果出现滚动条,是因为 body 预 阅读全文
posted @ 2023-09-28 20:52 Zijian/TENG 阅读(6) 评论(0) 推荐(0) 编辑
摘要: CSS 基础 3 - 定位 Postion 属性 static position 属性的默认值,元素随 HTML 流移动 top/left/right/bottom 属性无效 relative 和 static 类似,元素随 HTML 流移动。区别: 比 static 多了 top/left/rig 阅读全文
posted @ 2023-09-28 20:49 Zijian/TENG 阅读(17) 评论(0) 推荐(0) 编辑
摘要: CSS 基础 2 - Box Model 盒模型 Box Model 盒模型是网页布局的前提。网页布局的几种方式: Table(过时):在 CSS 出现之前,一般用表格布局(将表格边框线隐藏) Float(过时):最初用于“文字环绕图片”,但广泛用于网页布局,非常成熟(IE6也支持) Flexbox 阅读全文
posted @ 2023-09-27 20:40 Zijian/TENG 阅读(10) 评论(0) 推荐(0) 编辑
摘要: CSS 基础 1 - Block & Inline display: inline/block/inline-block/none/flex/grid; block block 元素独占一行,即使两个元素宽度都小于 50% 也不会左右并排 block 元素可以单独设置 width、height 属性 阅读全文
posted @ 2023-09-27 20:38 Zijian/TENG 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 到这个问题的原因可能有很多,这里只是记录下针对我遇到这这跟题的原因及解决方法 问题描述 执行 git commit 命令,报错 /usr/bin/env: ‘python3.8’: No such file or directory 问题分析 git commit 命令本身不需要 python,找不 阅读全文
posted @ 2023-09-23 20:37 Zijian/TENG 阅读(47) 评论(0) 推荐(0) 编辑
摘要: ⚠️ clang-tidy 的规则能够帮助检查潜在的问题,不要盲目抑制警告! 可以通过添加 NOLINT, NOLINTNEXTLINE, 以及 NOLINTBEGIN … NOLINTEND 注释来抑制某些(或所有)clang-tidy 警告。 NOLINT 抑制同一行的警告 NOLINTNEXT 阅读全文
posted @ 2023-09-16 20:31 Zijian/TENG 阅读(534) 评论(0) 推荐(0) 编辑
摘要: > 大师级程序员把系统当作故事来讲,而不是当作程序来写。 ### TLDR 1. 短小(不超过 20 行、缩进不超过 2 层) 2. 只做一件事 3. 保持在同一抽象层级 4. 用多态替代 switch 5. 取个好的函数名 6. 函数参数越少越好(尽量避免 3 个及以上参数) 7. 无副作用、避免 阅读全文
posted @ 2023-09-03 22:06 Zijian/TENG 阅读(84) 评论(0) 推荐(1) 编辑
摘要: > 前段时间在看《架构整洁之道》,里面提到了:构建一个好的软件系统,应该从写整洁代码做起。毕竟,如果建筑使用的砖头质量不佳,再好的架构也无法造就高质量的建筑。趁热打铁,翻出《代码整洁之道》再刷一遍。 # 《代码整洁之道 Clean Code》学习笔记 Part 1 ### 衡量代码质量的唯一标准:W 阅读全文
posted @ 2023-08-20 22:04 Zijian/TENG 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 工欲善其事,必先利其器 ## C++ - clangd:代码补全、跳转、clang-tidy 检查,自带 clang-format - CodeLLDB:LLVM 的调试器(类比 GDB) - CMake - CMake Tools ## 文档 - Doxygen Documentation Gen 阅读全文
posted @ 2023-08-13 19:16 Zijian/TENG 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 相关内容 VSCode C++开发环境配置: LLVM clang clangd 安装 cmake sudo apt install cmake 安装 VSCode 插件 CMake CMakeTools 编写 CMakeLists.txt project(hello) cmake_minimum_ 阅读全文
posted @ 2023-08-13 18:29 Zijian/TENG 阅读(444) 评论(0) 推荐(0) 编辑
摘要: > 工欲善其事,必先利其器 llvm/clang 比 VSCode 自带的代码提示功能速度更快,功能更强(支持 clang-tidy)。 ## 安装 llvm、clang ```bash sudo apt install llvm clang ``` ## 安装 vscode 插件 - 禁用/卸载 阅读全文
posted @ 2023-08-13 16:33 Zijian/TENG 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 《Head First 设计模式》是一本好书,正如书的封面上说的那样,这是一本**重视大脑的学习指南**。里面提到了一些学习方法,可以尝试下,看看哪些对你有用: ### 1. 慢一点,理解的越多,需要记得就越少 不要走马观花地看。停下来,好好想一想。面对书中提出的问题,不要急着翻答案。大脑想得越深, 阅读全文
posted @ 2023-08-08 22:13 Zijian/TENG 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 问题描述 `bazel test` 遇到很多奇怪的编译错误,报错位置位于“googletest”目录,而且没有修改过 googletest 源码: ``` ERROR: /bazel_cache/output_user_root/.../external/google/BUILD.bazel: 阅读全文
posted @ 2023-08-06 17:34 Zijian/TENG 阅读(184) 评论(0) 推荐(0) 编辑
摘要: ## 问题描述 运行 bazel test 命令,遇到错误:“Constraints from @bazel_tools//platforms have been removed. Please use constraints from @platforms repository embedded 阅读全文
posted @ 2023-08-06 17:21 Zijian/TENG 阅读(266) 评论(0) 推荐(0) 编辑
摘要: # VSCode 中如何使用 clang-tidy 1. 安装 clangd 插件 2. 禁用 ms-cpp 插件(VSCode 会自动提示有冲突) 3. 生成 clangd 所需的 compile_commands.json 文件 ## 如何生成 compile_commands.json 文件 阅读全文
posted @ 2023-08-06 16:59 Zijian/TENG 阅读(1172) 评论(0) 推荐(0) 编辑
摘要: ## 目录 - 封装变化 - 针对接口编程,不针对实现编程 - 多用组合(has-a),少用继承(is-a) - 为交互对象之间的松耦合设计而努力 - 最少知识原则 LKP / 迪米特法则 Law of Demeter - 好莱坞原则 - SOLID 原则 - 单一职责原则 SRP - 开放关闭原则 阅读全文
posted @ 2023-08-05 18:04 Zijian/TENG 阅读(302) 评论(0) 推荐(0) 编辑
摘要: > C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C+ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。 > > 这份指南侧重于接口、资源管理、内存管理、并发等 High 阅读全文
posted @ 2023-08-04 23:04 Zijian/TENG 阅读(371) 评论(0) 推荐(0) 编辑
摘要: > C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C+ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。 > > 这份指南侧重于接口、资源管理、内存管理、并发等 High 阅读全文
posted @ 2023-07-30 23:09 Zijian/TENG 阅读(440) 评论(0) 推荐(1) 编辑
摘要: 开门见山,下载链接: https://files.cnblogs.com/files/tengzijian/SDV_API_Version3_Beta1_%E5%85%AC%E4%BC%97%E5%8F%B7%EF%BC%9A%E5%A5%BD%E8%AE%B0%E6%80%A7%E5%A6%82% 阅读全文
posted @ 2023-07-27 20:56 Zijian/TENG 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 计算机编程发展至今,一共只有三个编程范式: - 结构化编程 - 面向对象编程 - 函数式编程 ### 编程范式和软件架构的关系 - 结构化编程是各个模块的算法实现基础 - 多态(面向对象编程)是跨越架构边界的手段 - 函数式编程是规范和限制数据存放位置与访问权限的手段 **软件架构的三大关注重点** 阅读全文
posted @ 2023-07-16 09:10 Zijian/TENG 阅读(271) 评论(0) 推荐(0) 编辑
摘要: ### 本书主题 - 介绍什么是优秀的软件架构,以提高软件架构质量 - 介绍系统架构的各种属性与成本和生产力的关系,以采用好的设计和架构以便减少构建成本 ### 好的软件架构可以带来什么? - 大大节省软件项目构建与维护的人力成本 - 每次变更:改动少,易于实施,不容易出bug - **用最小的成本 阅读全文
posted @ 2023-07-15 21:42 Zijian/TENG 阅读(62) 评论(0) 推荐(0) 编辑
摘要: # C++ 惯用法之 Copy-Swap 拷贝交换 > 这是“C++ 惯用法”合集的第 3 篇,前面 2 篇分别介绍了 RAII 和 PIMPL 两种惯用法: > > - [RAII: Resouce Acquistion Is Initialization](https://www.cnblogs 阅读全文
posted @ 2023-07-08 18:16 Zijian/TENG 阅读(333) 评论(0) 推荐(0) 编辑
摘要: RAII(Resource Acquisition Is Initialization)资源获取即初始化,是 C++ 中最基本、应用最广范的惯用法(idiom)之一。 RAII 的基本思想是通过构造/析构函数,对资源的获取/释放进行封装,然后**借助局部对象的自动生命周期来管理资源**。使用 RAI 阅读全文
posted @ 2023-07-02 17:33 Zijian/TENG 阅读(150) 评论(0) 推荐(0) 编辑
摘要: > C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C+ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。 > > 这份指南侧重于接口、资源管理、内存管理、并发等 High 阅读全文
posted @ 2023-07-01 23:30 Zijian/TENG 阅读(339) 评论(0) 推荐(0) 编辑
摘要: > C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup、Herb Sutter 等顶尖 C++ 专家创建的一份 C++ 指南、规则及最佳实践。旨在帮助大家正确、高效地使用“现代 C++”。 > > 这份指南侧重于接口、资源管理、内存管理、并发等 Hig 阅读全文
posted @ 2023-06-25 20:57 Zijian/TENG 阅读(266) 评论(0) 推荐(0) 编辑