摘要:
设置普通变量 1. 命令格式 set(<variable> <value>... [PARENT_SCOPE]) 说明:将变量variable设置为值<value>...,变量variable的作用域为调用set命令的函数或者当前目录,如果使用了PARENT_SCOPE选项,意味着该变量的作用域会传
阅读全文
posted @ 2022-04-14 20:48
苏格拉底的落泪
阅读(423)
推荐(0)
摘要:
project project(<PROJECT-NAME> [<language-name>...]) project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [DESCRIPTION <project-desc
阅读全文
posted @ 2022-04-14 20:40
苏格拉底的落泪
阅读(222)
推荐(0)
摘要:
调用基类的虚函数 代码实现: #include <iostream> class Base { public: virtual void f() { std::cout << "Base::base()" << std::endl; } }; class Test : public Base { p
阅读全文
posted @ 2022-04-14 11:00
苏格拉底的落泪
阅读(127)
推荐(0)
摘要:
读写锁 读写锁由「读锁」和「写锁」两部分构成,如果只读取共享资源用「读锁」加锁,如果要修改共享资源则用「写锁」加锁。所以,读写锁适用于能明确区分读操作和写操作的场景。 读写锁的工作原理是: 当「写锁」没有被线程持有时,多个线程能够并发地持有读锁,这大大提高了共享资源的访问效率,因为「读锁」是用于读取
阅读全文
posted @ 2022-04-12 22:51
苏格拉底的落泪
阅读(472)
推荐(0)
摘要:
互斥锁与自旋锁 多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。 最底层的两种就是会「互斥锁和自旋锁」,有很多高级的锁都是基于它们实现的,你可以认为它们是各种锁的地基,所以我们必须清楚它俩之间的区别和应用。 加锁的目的就是保证
阅读全文
posted @ 2022-04-12 22:44
苏格拉底的落泪
阅读(326)
推荐(0)
摘要:
for循环 在 perl 中,redo 用于立即重新开始当前的循环迭代,而不进行条件测试和循环控制变量的更新。redo 通常用于在特定条件下重复某个循环迭代。下面是一些示例,展示了如何使用 redo 循环控制语句: 控制语句 描述 next语句 停止执行从next语句的下一语句开始到循环体结束标识符
阅读全文
posted @ 2022-04-12 10:59
苏格拉底的落泪
阅读(29)
推荐(0)
摘要:
#include <iostream> class Base { public: virtual void f() { std::cout << "Base::base()" << std::endl; } }; class Test : public Base { public: void f()
阅读全文
posted @ 2022-04-12 10:55
苏格拉底的落泪
阅读(224)
推荐(0)
摘要:
转移数据修改docker默认存储位置 参考资料 1. 转移数据修改docker默认存储位置
阅读全文
posted @ 2022-04-09 11:30
苏格拉底的落泪
阅读(34)
推荐(0)
摘要:
mon命令 查看mon选举: [root@ecos75r018-meijia-31-161 ~]# ceph quorum_status -f json-pretty { "election_epoch": 17, "quorum": [ 0 ], "quorum_names": [ "ecos75
阅读全文
posted @ 2022-03-30 20:55
苏格拉底的落泪
阅读(459)
推荐(0)
摘要:
docker 命令 docker stop $(docker ps -a -q) // stop停止所有容器 docker rm $(docker ps -a -q) 删除所有已经停止的容器 docker rmi $(docker images -q)删除所有镜像 docker ps // 查看所有
阅读全文
posted @ 2022-03-28 09:44
苏格拉底的落泪
阅读(89)
推荐(0)
摘要:
共享内存 下面是一个简单明了的 C++ demo,演示使用 shm_open + mmap 创建共享内存并在 mmap 后立即调用 shm_unlink,从而实现“匿名共享内存”(仅当前进程使用,路径消失,但映射依然有效)。 #include <fcntl.h> // shm_open #inclu
阅读全文
posted @ 2022-03-21 10:38
苏格拉底的落泪
阅读(103)
推荐(0)
摘要:
堆排序 作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点 。 当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫
阅读全文
posted @ 2022-03-19 17:53
苏格拉底的落泪
阅读(149)
推荐(0)
摘要:
https://blog.csdn.net/czyt1988/article/details/80149695
阅读全文
posted @ 2022-03-10 11:07
苏格拉底的落泪
阅读(40)
推荐(0)
摘要:
debuginfo子包设置 _debuginfo_subpackages 是 RPM(Red Hat Package Manager) 打包过程中用于自动生成调试信息子包的宏。当该值设置为 1 时,打包工具会在构建过程中提取二进制文件和库的调试符号和相关的源代码信息。自动创建一个单独的调试信息子包(
阅读全文
posted @ 2022-03-01 21:02
苏格拉底的落泪
阅读(91)
推荐(0)
摘要:
缓存变量 参考资料 1. CMake语法—缓存变量(Cache Variable)
阅读全文
posted @ 2022-03-01 20:40
苏格拉底的落泪
阅读(69)
推荐(0)
摘要:
yum命令 查看提供某个命令的rpm包: # yum provides gcc Loading mirror speeds from cached hostfile * base: mirrors.bupt.edu.cn * centos-sclo-rh: mirrors.nju.edu.cn *
阅读全文
posted @ 2022-02-28 22:50
苏格拉底的落泪
阅读(43)
推荐(0)
摘要:
https://www.jianshu.com/u/9456fecb5f96 1 #include <algorithm> 2 #include <atomic> 3 #include <cstddef> 4 #include <iostream> 5 #include <thread> 6 #in
阅读全文
posted @ 2022-02-28 10:48
苏格拉底的落泪
阅读(371)
推荐(0)
摘要:
cmake_dependent_option cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>) 说明: 如果<depends>中以分号分割的条件列表全部为true,则使<option>对用户可用。否则,名
阅读全文
posted @ 2022-02-24 20:51
苏格拉底的落泪
阅读(64)
推荐(0)
摘要:
radosgw-admin 命令 删除bucket: radosgw-admin bucket rm --bucket=test 删除bucket所有对象: radosgw-admin bucket rm --bucket=bucketname --purge-objects --bypass-gc
阅读全文
posted @ 2022-02-24 14:50
苏格拉底的落泪
阅读(1027)
推荐(0)
摘要:
iptables 禁止 IP和端口 1. 禁止指定 IP iptables -I INPUT -s 10.0.28.15 -j DROP 2. 禁止指定 IP段 iptables -I INPUT -s 10.0.28.15/24 -j DROP 3. 禁止指定 IP和端口 iptables -I
阅读全文
posted @ 2022-02-22 16:53
苏格拉底的落泪
阅读(4841)
推荐(0)
摘要:
Linux 远程挂载 Ceph RBD 磁盘 创建存储池 1 sudo ceph osd pool create <pool-name> 128 128 2 sudo ceph osd pool application enable <pool-name> rbd View Code 查看独占锁信息
阅读全文
posted @ 2022-02-22 14:57
苏格拉底的落泪
阅读(782)
推荐(0)
摘要:
字节序 与同一台计算机上的进程进行通信时,一般不用考虑字节序,字节序是一个处理器架构特性,用于指示像整数计算的大数据类型内部的字节如何排序。 假设上图图 中在内存 0x1000 到 0x1003 这连续的 4 个字节保存了数据,这段数据对应的数据类型是 int 类型。我们知道 int 类型的数据在大
阅读全文
posted @ 2022-01-15 14:53
苏格拉底的落泪
阅读(190)
推荐(0)
摘要:
修改集群配置 启动 ceph 存储集群时,各守护进程都从同一个配置文件(默认的 ceph.conf )里查找它自己的配置。ceph.conf 中可配置参数很多,有时我们需要根据实际环境对某些参数进行修改。 修改的方式分为两种:直接修改 ceph.conf 配置文件中的参数值,修改完后需要重启 Cep
阅读全文
posted @ 2022-01-11 17:34
苏格拉底的落泪
阅读(1544)
推荐(0)
摘要:
删除mon 当你想要删除一个 mon 时,需要考虑删除后剩余的 mon 个数是否能够达到法定人数。 1、停止 mon 进程: systemctl stop ceph-mon@node01 2、从集群中删除 mon: ceph mon remove node01 3、从 ceph.conf 中移除 m
阅读全文
posted @ 2022-01-11 15:35
苏格拉底的落泪
阅读(476)
推荐(0)
摘要:
参考资料 1. 存储基础和Ceph
阅读全文
posted @ 2022-01-11 10:33
苏格拉底的落泪
阅读(77)
推荐(0)
摘要:
DNE状态解析 删除osd时,如果没有在crush中删除,osd可能会出现DNE的状态,具体解决方法: 1)过滤处于DNE状态的osd: ceph osd tree | grep DNE 2)osd DNE状态清楚方法: ceph osd crush remove osd.id 注意: 删除一块磁盘
阅读全文
posted @ 2022-01-04 17:14
苏格拉底的落泪
阅读(587)
推荐(0)
摘要:
fmt fmt库地址:https://github.com/fmtlib/fmt fmt输出: #include <fmt/core.h> int main() { std::string name = "龙龙米"; int age = 25; fmt::print("你好,{}!你今年 {} 岁。
阅读全文
posted @ 2021-12-29 22:49
苏格拉底的落泪
阅读(67)
推荐(0)
摘要:
用户API 1. 函数原型: #include <unistd.h> uid_t getuid(void); uid_t geteuid(void); 说明:1. getuid()返回调用进程的真实用户ID。 2. geteuid()返回调用进程的有效用户ID。 和系统数据相关的一个结构passwd
阅读全文
posted @ 2021-12-29 19:59
苏格拉底的落泪
阅读(183)
推荐(0)
posted @ 2021-12-29 10:47
苏格拉底的落泪
阅读(25)
推荐(0)
摘要:
shared_mutex 解析 1. 示例 #include <mutex> #include <shared_mutex> #include <thread> #include <list> #include <iostream> #include <vector> #define READ_TH
阅读全文
posted @ 2021-12-27 18:19
苏格拉底的落泪
阅读(612)
推荐(0)
摘要:
标准IO库(C库函数) 标准IO库 FILE *fopen(const char *restrict pathname, char *restrict type); FILE *fdopen(int fd, const char *type); FILE *freopen(const char *r
阅读全文
posted @ 2021-12-25 16:53
苏格拉底的落泪
阅读(129)
推荐(0)
摘要:
标准输入输出 1. cin 原型: template <class CharT, class Traits = std::char_traits<CharT>> class basic_istream : virtual public std::basic_ios<CharT, Traits> 2.
阅读全文
posted @ 2021-12-25 14:08
苏格拉底的落泪
阅读(121)
推荐(0)
摘要:
stream_buf 解析 1. stream_buf原型: template <class CharT, class Traits = std::char_traits<CharT>> class basic_streambuf; 【注意】 typedef basic_streambuf<char
阅读全文
posted @ 2021-12-25 13:59
苏格拉底的落泪
阅读(1095)
推荐(0)
摘要:
文件输入输出 对于文件读取流和向文件写入流,需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: 数据类型 描述 ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。 ifstream 该数据类型表示输入文件流,用于从文件读取信息。 fstream 该数
阅读全文
posted @ 2021-12-25 12:31
苏格拉底的落泪
阅读(195)
推荐(0)
摘要:
容器set 解析 1. 例子 #include <boost/intrusive/set.hpp> #include <utility> #include <iostream> #include <string> using namespace boost::intrusive; struct ve
阅读全文
posted @ 2021-12-24 10:06
苏格拉底的落泪
阅读(143)
推荐(0)
摘要:
last_epoch_started介绍 Info中实际保存了两个last_epoch_started属 性,一个位于Info属性之下,另一个则位于Info的history属性之 下。 1. info.last_epoch_started由每个副本收到Primary发送的Peering完成通知之后更
阅读全文
posted @ 2021-12-23 16:57
苏格拉底的落泪
阅读(450)
推荐(0)
摘要:
boost::statechart Boost 提供了状态机的实现接口,采用了CRTP技术实现,下面以秒表为例子实现一个状态机,这是一个官方的例子,也可以参考资料:Boost Statechart 庫,状态机的状态转换图如下所示 实现代码如下: 1 #include <stdio.h> 2 #inc
阅读全文
posted @ 2021-12-22 22:27
苏格拉底的落泪
阅读(422)
推荐(0)
摘要:
boost::statechart Ceph在处理PG的状态转换时,使用了boost库提供的statechart状态机。因此,这里先简单介绍一下statechart状态机的基本概念和涉及的相关知识,以便更好地理解Peering过程PG的状态转换流程。 3.1 状态 在statechart里,状态的定
阅读全文
posted @ 2021-12-22 19:51
苏格拉底的落泪
阅读(1074)
推荐(0)
摘要:
OSDMap 机制浅析 OSDMap 机制是 Ceph 架构中非常重要的部分,PG 在 OSD 上的分布和监控由 OSDMap 机制执行。OSDMap 机制和 CRUSH 算法一起构成了 Ceph 分布式架构的基石。 OSDMap 机制主要包括如下3个方面: 1、Monitor 监控 OSDMap
阅读全文
posted @ 2021-12-22 17:07
苏格拉底的落泪
阅读(607)
推荐(0)
摘要:
paxos算法解析 阅读论文 《Paxos Made Simple》 选定提案的最简单方式就是只允许一个accpetor存在。Proposer发送提案给accpetor,Acceptor会选择它接收到的第一个提案作为被选定的提案。尽管简单,但是这个解决方式却很难让人满意,因为如果accpetor出错
阅读全文
posted @ 2021-12-21 22:46
苏格拉底的落泪
阅读(154)
推荐(0)