02 2022 档案

摘要:CMake 从入门到崩溃5 - 基础语法之模块 CMake 内置一套标准模块 ,可以分为两类 工具类模块 通过 include() 命令使用 Find 模块 即 Find*.cmake 使用它们你可以方便的找到系统上安装的第三方库 通过 find_package 命令使用 通过 include 使用 阅读全文
posted @ 2022-02-27 21:40 路过的摸鱼侠 阅读(350) 评论(0) 推荐(0) 编辑
摘要:CMake 从入门到崩溃4 - 基础语法之函数和宏 函数 function(<someName> [<arg1> ...]) <commands> endfunction() 🔑 CMake 函数名不区分大小写 函数可以接受两种参数:命名参数和可选参数,命名参数是强制性的,如果不提供,会抛异常 可 阅读全文
posted @ 2022-02-27 21:25 路过的摸鱼侠 阅读(355) 评论(0) 推荐(0) 编辑
摘要:CMake 从入门到崩溃3 - 基础语法之作用域 上一篇我们介绍了 CMake 变量的使用,在这篇里我们会讲解 CMake 是怎样做名字查找的,也就是 CMake 中的变量作用域,由于 CMake 的作用域和其他编程语言区别很大,因此理解 CMake 作用域机制对正确的写出 CMake 脚本帮助很大 阅读全文
posted @ 2022-02-27 21:10 路过的摸鱼侠 阅读(512) 评论(0) 推荐(1) 编辑
摘要:CMake 从入门到崩溃2 - 基础语法之CMake变量 CMake 中变量名大小写敏感,且可以由任何字符组成 🔑 最佳实践 仅在当前作用域中使用的本地变量用简短的小写命名,在多个作用域中使用的变量用详细的大写命名 变量评估 CMake 中变量都是“字符串化”的,用 ${} 包裹一个变量会用变量的 阅读全文
posted @ 2022-02-27 00:38 路过的摸鱼侠 阅读(658) 评论(0) 推荐(0) 编辑
摘要:CMake 从入门到崩溃1 - CMake 简介 什么是 CMake CMake 是一种工具,它读入用于描述软件如何构建的脚本,CMake 将评估这些脚本并构建出表达软件项目的内部结构,如果它处理完这些脚本并没有发现错误,CMake 将生成用于实际构建项目的构建文件(可能是脚本或 IDE 工程文件) 阅读全文
posted @ 2022-02-26 23:33 路过的摸鱼侠 阅读(502) 评论(0) 推荐(0) 编辑
摘要:# C++ 通用引用 `&&` 并不是在所有情况下都代表右值引用。 ```cpp Widget&& var1 = someWidget; // here, “&&” means rvalue reference auto&& var2 = var1; // here, “&&” does not m 阅读全文
posted @ 2022-02-26 23:04 路过的摸鱼侠 阅读(604) 评论(0) 推荐(2) 编辑
摘要:Raft 学习笔记1 - 领导人选举和日志复制 图片来自 John Ousterhout 的 Raft user study 系列课程 Raft 算法的背景是复制状态机,关于复制状态机可以看我写的这篇博客 Paxos 算法存在的问题 Raft 是为了解决 Paxos 算法的这些问题而提出的 晦涩难懂 阅读全文
posted @ 2022-02-26 22:51 路过的摸鱼侠 阅读(329) 评论(2) 推荐(0) 编辑
摘要:Paxos 学习笔记2 - Multi-Paxos 图片来自 John Ousterhout 的 Raft user study 系列课程 关于 Basic Paxos 可以看本人的这篇文章 🔑 Multi-Paxos 论文里对很多问题并没有描述清楚,所以实践里往往用的是修改过的 Multi-Pa 阅读全文
posted @ 2022-02-26 22:39 路过的摸鱼侠 阅读(201) 评论(0) 推荐(0) 编辑
摘要:Paxos 学习笔记1 - Basic Paxos 图片来自 John Ousterhout 的 Raft user study 系列课程 共识问题是在复制状态机的背景下被提出的 复制状态机 复制状态机是指一组状态机相同的节点,只要它们接收到的指令顺序相同,那么就会表现出相同的行为,并产生相同的结果 阅读全文
posted @ 2022-02-26 22:31 路过的摸鱼侠 阅读(187) 评论(0) 推荐(0) 编辑
摘要:close-on-exec 相关的一个 bug 测试一个用 V4L2 拍照的程序时,发现程序单独运行很正常,但在多进程环境下运行时就会出现问题,具体表现为执行 open 系统调用打开 /dev/video 设备时返回 EBUSY 错误,查询 V4L2 的文档可以看到该错误的含义 EBUSY The 阅读全文
posted @ 2022-02-26 12:52 路过的摸鱼侠 阅读(76) 评论(0) 推荐(1) 编辑
摘要:Linux 内核 RCU机制介绍 内容基本上是这篇文章的翻译 RCU 是一种内核同步机制,在2002年10月加入到 Linux 内核中 RCU 与读写自旋锁和顺序锁不同,后两者只允许多个读者的并发,RCU 允许单个写者和多个读者的并发 那有人会问了,顺序锁中不也是读者和写者同时在运行嘛?RCU 和顺 阅读全文
posted @ 2022-02-24 22:54 路过的摸鱼侠 阅读(1366) 评论(0) 推荐(0) 编辑
摘要:Proactor 网络模型 本文内容主要参考 asio文档 Proactor 和其他网络模型最大的区别就是 Proactor 中,执行 I/O 的职责由操作系统代为我们承担,因此使用 Proactor 网络库的应用程序代码里,是不会有 read、write 等 I/O 接口调用的 Proactor 阅读全文
posted @ 2022-02-23 23:40 路过的摸鱼侠 阅读(176) 评论(0) 推荐(0) 编辑
摘要:CMake 交叉编译 交叉编译就是说在平台 A (宿主机)上编译出可以在平台 B (目标机) 上运行的程序,比如在 x86 上编译 ARM 程序 要交叉编译首先要去下载目标平台的工具链,比如要编译 ARM 程序就应该去下载 Linaro 提供的工具链 交叉编译时,我们的 CMake 文件也需要做一些 阅读全文
posted @ 2022-02-23 21:59 路过的摸鱼侠 阅读(1962) 评论(0) 推荐(1) 编辑
摘要:# C++ 左值和右值 C++中值有两个独立的属性 - 有身份(has identity):或者说,有地址,有指向它的指针 - 有身份的值统称为 glvalue (“generalized” lvalue) - 可以被移动(can be moved from) - 可以移动的值统称为 rvalue 阅读全文
posted @ 2022-02-23 21:39 路过的摸鱼侠 阅读(166) 评论(0) 推荐(0) 编辑
摘要:# C++ 列表初始化 C++11 中,引入了用 `{}` 执行初始化的统一形式,C++11 称这种形式为统一初始化(Uniform initialization) 使用这种形式,可以解决所谓的“C++最令人恼怒的解析问题” ## 最令人恼怒的解析问题 该问题源于函数风格的转型和函数声明之间的相似性 阅读全文
posted @ 2022-02-23 21:11 路过的摸鱼侠 阅读(754) 评论(0) 推荐(0) 编辑
摘要:Libco 源码分析 设计目标 libco 的设计目标是对现有同步代码做异步化改造,但完全重写为异步的代码基本需要将所有代码重写,工作量太大 libco 的做法是采用 Linux 下的 hook 机制,将 glibc 的阻塞系统调用捕获,将它的底层逻辑改为异步的,以实现代码的无缝迁移 协程设计 什么 阅读全文
posted @ 2022-02-23 19:14 路过的摸鱼侠 阅读(610) 评论(0) 推荐(0) 编辑
摘要:BASE 理论 BASE 指的是 基本可用(Basically Available) 分布式系统在出现故障时,允许损失部分可用性,即保证核心可用 可以通过流量削峰、延迟响应、体验降级、过载保护等手段来实现 软状态( Soft State) 允许系统存在中间状态,而该中间状态不会影响系统整体可用性 这 阅读全文
posted @ 2022-02-23 19:09 路过的摸鱼侠 阅读(156) 评论(0) 推荐(0) 编辑
摘要:CAP 理论 CAP 理论将分布式系统的特性概括为三个维度 一致性(Consistence) 对某个指定的客户端来说,读操作保证能够返回最新的写操作结果 强调数据的正确性 可用性(Availability) 非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应) 强调的是服务的可用,但不保 阅读全文
posted @ 2022-02-23 19:07 路过的摸鱼侠 阅读(125) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示