06 2018 档案

摘要:概要 程序执行过程中,一共经历了四步,最终生成可执行的目标文件hello,这四个步骤分别是:预处理,编译,汇编,链接。 预处理:预处理器(cpp)预处理就是把程序中引用文件,插入到当前文本文件中,比如开头的#include <stdio.h>,包含了stdio.h文件,预处理命令就会读取stdio. 阅读全文
posted @ 2018-06-28 10:54 苏格拉底的落泪 阅读(1215) 评论(0) 推荐(0)
摘要:流量控制算法 令牌桶算法示意图: 令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。 令牌桶算法的描述如下: 假如用户配置的平均速率为r,则每隔1/r秒一个令牌被加入到桶中; 假设桶最多可以存b个令牌。如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃; 当一个n个字节大小的数据包到 阅读全文
posted @ 2018-06-27 20:21 苏格拉底的落泪 阅读(200) 评论(0) 推荐(0)
摘要:perl数组 返回数组长度: 1. 方法1: my @array = (1, 2, 3, 4, 5); my $length = scalar @array; print "数组长度为: $length\n"; 2. 方法2: my @array = (1, 2, 3, 4, 5); my $len 阅读全文
posted @ 2018-06-27 11:17 苏格拉底的落泪 阅读(365) 评论(0) 推荐(0)
摘要:ceph+nfs-ganesha异步读写git历史记录 1. client: unlock client_lock when copying data and do more check for the client_lock 2. Client: C_Read_Async_Finisher sho 阅读全文
posted @ 2018-06-24 21:17 苏格拉底的落泪 阅读(480) 评论(0) 推荐(0)
摘要:客户端与服务端mds交互过程 hand_client_reply() | insert_trace() | inert_readdr_results() 阅读全文
posted @ 2018-06-24 20:27 苏格拉底的落泪 阅读(218) 评论(0) 推荐(0)
摘要:函数ceph_fsal_open2解析 定义说明: enum fsal_create_mode { FSAL_NO_CREATE = 0, FSAL_UNCHECKED = 1, FSAL_GUARDED = 2, FSAL_EXCLUSIVE = 3, FSAL_EXCLUSIVE_41 = 4, 阅读全文
posted @ 2018-06-24 15:57 苏格拉底的落泪 阅读(172) 评论(0) 推荐(0)
摘要:设置rpm打包完成后不删除BUILROOT 目录的文件 在RPM打包过程中,如果要保留BUILDROOT目录,你可以通过修改spec文件中的清理部分来实现。下面是具体的做法: 1. 在spec文件中找到或添加%clean部分: %clean # 注释掉原来的清理命令 # rm -rf $RPM_BU 阅读全文
posted @ 2018-06-24 15:17 苏格拉底的落泪 阅读(128) 评论(0) 推荐(0)
摘要:nmcli nmcli con show 关闭网卡: nmcli connection down <连接名或UUID> nmcli con down <连接名> 启用网卡: nmcli con up <连接名> 阅读全文
posted @ 2018-06-23 10:53 苏格拉底的落泪 阅读(554) 评论(0) 推荐(0)
摘要:参考资料 1. ceph客户端条带化 阅读全文
posted @ 2018-06-22 22:34 苏格拉底的落泪 阅读(131) 评论(0) 推荐(0)
摘要:虚基类 一、虚基类介绍 多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如非常经典的菱形继承层次。如下图所示: 类A派生出类B和类C,类D继承自类B和类C,这个时候类A中的成员变量和成员函数继承到类D中变成了两份,一份来自 A- 阅读全文
posted @ 2018-06-22 22:26 苏格拉底的落泪 阅读(2492) 评论(0) 推荐(1)
摘要:普通继承中的构造函数与析构函数 【注意】定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。 #include <iostream> using namespace std; class Base { public: Ba 阅读全文
posted @ 2018-06-22 20:53 苏格拉底的落泪 阅读(228) 评论(0) 推荐(0)
摘要:学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 【注意】对派生类进行拷贝构造时,如果想让基类的成员也同时拷贝,就一定要在派生类拷贝构造函数初始化列表中显示调用基类拷贝构造函数(当然在函数体内将基类 阅读全文
posted @ 2018-06-22 20:05 苏格拉底的落泪 阅读(2366) 评论(1) 推荐(0)
摘要:虚析构函数 直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。 假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生类的析构函数 阅读全文
posted @ 2018-06-22 20:03 苏格拉底的落泪 阅读(563) 评论(0) 推荐(0)
摘要:深度优先搜索(DFS) 广度优先搜索(BFS) 1、介绍 广度优先搜索(BFS)是图的另一种遍历方式,与DFS相对,是以广度优先进行搜索。简言之就是先访问图的顶点,然后广度优先访问其邻接点,然后再依次进行被访问点的邻接点,一层一层访问,直至访问完所有点,遍历结束。 2、无向图的广度优先搜索 下面是无 阅读全文
posted @ 2018-06-20 20:28 苏格拉底的落泪 阅读(1265) 评论(0) 推荐(0)
摘要:带宽与上传下载速率关系 带宽单位用bps(bit/s),表示每秒钟传输的二进制位数。下载速率单位用Bps(Byte/s)表示,表示每秒钟传输的字节数。 1Byte(字节)= 8bit(位),即下载速率=带宽/8 通常1M带宽即指1Mbps=1000Kbps=1000/8KBps=125KBps。一般 阅读全文
posted @ 2018-06-19 19:05 苏格拉底的落泪 阅读(439) 评论(0) 推荐(0)
摘要:算法简介 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 算法动态演示: 算法思想 阅读全文
posted @ 2018-06-09 10:34 苏格拉底的落泪 阅读(2097) 评论(0) 推荐(0)
摘要:二分查找图解 第一类: 查找等于目标值的数 比如我们有数组 [2, 4, 5, 6, 9],target = 6,那么我们可以写出二分查找法的代码如下: int find(vector<int> &nums, int target) { int left = 0, right = nums.size 阅读全文
posted @ 2018-06-07 20:51 苏格拉底的落泪 阅读(244) 评论(0) 推荐(0)
摘要:预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于 阅读全文
posted @ 2018-06-07 19:23 苏格拉底的落泪 阅读(143) 评论(0) 推荐(0)
摘要:bash =~ 用法 在 Bash 中,=~ 是用来执行正则表达式匹配的操作符。它通常在 [[ ... ]] 双中括号测试中使用,用于判断一个字符串是否符合给定的正则表达式。 if [[ "$string" =~ regex ]]; then # 如果字符串匹配正则表达式 echo "匹配成功" e 阅读全文
posted @ 2018-06-06 20:01 苏格拉底的落泪 阅读(301) 评论(0) 推荐(0)
摘要:vmware克隆独立虚拟机及初始配置 首先确保原型机为关机状态。鼠标右键“管理”->“克隆”,进入“克隆虚拟机向导”,点击“下一步”: 选择“克隆自-虚拟机中的当前状态(C)”->“创建完整克隆(F)”,然后设置克隆机的名称和存储位置,点击“完成”等待生成克隆机 首先我们在这介绍一下/etc/sys 阅读全文
posted @ 2018-06-03 22:06 苏格拉底的落泪 阅读(180) 评论(0) 推荐(0)
摘要:重载 如果同一作用域内的几个函数名字相同但形参列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),称之为C++的重载。 注意:c语言没有函数重载的机制; • 示例: #include<iostream> using namespace std; int Add(int a,in 阅读全文
posted @ 2018-06-03 19:29 苏格拉底的落泪 阅读(270) 评论(0) 推荐(0)
摘要:创建子包 参考资料 1. 创建子包 阅读全文
posted @ 2018-06-03 17:22 苏格拉底的落泪 阅读(269) 评论(0) 推荐(0)
摘要:概述 为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。 C++多态实现的原理: • 当类中声明虚函数时,编译器会在类中生成一个虚函数表 • 虚函数表是一个存储成员函数地址的数据结构 • 虚函数表是由编译器自动生成与 阅读全文
posted @ 2018-06-01 12:41 苏格拉底的落泪 阅读(1218) 评论(0) 推荐(0)