摘要:
带宽与上传下载速率关系 带宽单位用bps(bit/s),表示每秒钟传输的二进制位数。下载速率单位用Bps(Byte/s)表示,表示每秒钟传输的字节数。 1Byte(字节)= 8bit(位),即下载速率=带宽/8 通常1M带宽即指1Mbps=1000Kbps=1000/8KBps=125KBps。一般
阅读全文
posted @ 2018-06-19 19:05
苏格拉底的落泪
阅读(429)
推荐(0)
摘要:
算法简介 折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。 算法动态演示: 算法思想
阅读全文
posted @ 2018-06-09 10:34
苏格拉底的落泪
阅读(2089)
推荐(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
苏格拉底的落泪
阅读(242)
推荐(0)
摘要:
预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于
阅读全文
posted @ 2018-06-07 19:23
苏格拉底的落泪
阅读(142)
推荐(0)
摘要:
bash =~ 用法 在 Bash 中,=~ 是用来执行正则表达式匹配的操作符。它通常在 [[ ... ]] 双中括号测试中使用,用于判断一个字符串是否符合给定的正则表达式。 if [[ "$string" =~ regex ]]; then # 如果字符串匹配正则表达式 echo "匹配成功" e
阅读全文
posted @ 2018-06-06 20:01
苏格拉底的落泪
阅读(300)
推荐(0)
摘要:
vmware克隆独立虚拟机及初始配置 首先确保原型机为关机状态。鼠标右键“管理”->“克隆”,进入“克隆虚拟机向导”,点击“下一步”: 选择“克隆自-虚拟机中的当前状态(C)”->“创建完整克隆(F)”,然后设置克隆机的名称和存储位置,点击“完成”等待生成克隆机 首先我们在这介绍一下/etc/sys
阅读全文
posted @ 2018-06-03 22:06
苏格拉底的落泪
阅读(180)
推荐(0)
摘要:
重载 如果同一作用域内的几个函数名字相同但形参列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),称之为C++的重载。 注意:c语言没有函数重载的机制; • 示例: #include<iostream> using namespace std; int Add(int a,in
阅读全文
posted @ 2018-06-03 19:29
苏格拉底的落泪
阅读(269)
推荐(0)
摘要:
创建子包 参考资料 1. 创建子包
阅读全文
posted @ 2018-06-03 17:22
苏格拉底的落泪
阅读(269)
推荐(0)
摘要:
概述 为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。 C++多态实现的原理: • 当类中声明虚函数时,编译器会在类中生成一个虚函数表 • 虚函数表是一个存储成员函数地址的数据结构 • 虚函数表是由编译器自动生成与
阅读全文
posted @ 2018-06-01 12:41
苏格拉底的落泪
阅读(1211)
推荐(0)
摘要:
iostream迭代器 标准库为iostream定义了可用于这些IO类型对象的迭代器。 istream_iterator读取输入流, ostream_iterator向一个输出流写数据。 1. istream_iterator操作 当创建一个流迭代器时,必须指定迭代器将要读写的对象类型。一个istr
阅读全文
posted @ 2018-05-30 16:28
苏格拉底的落泪
阅读(219)
推荐(0)
摘要:
目录 • iostream迭代器 • 反向迭代器 插入迭代器 插入迭代器,这些迭代器被绑定到一个容器上,可以向容器插入元素。 头文件为:#include<iterator it=t 在it指定的当前位置插入值t。假定c是it绑定的容器,依赖于插入迭代器的不同种类,此赋值分别调用c.push_back
阅读全文
posted @ 2018-05-30 14:50
苏格拉底的落泪
阅读(199)
推荐(0)
摘要:
反向迭代器 • 反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器。对于反向迭代器,递增(以及递减)操作的含义会颠倒过来。 • 递增一个反向迭代器(++it)会移动到前一个元素;递减一迭代器(--it)会移动到下一个元素。 • 除了forward_list之外,其他容器都支持反向迭代器。我们可以
阅读全文
posted @ 2018-05-29 21:42
苏格拉底的落泪
阅读(186)
推荐(0)
摘要:
安装虚拟化rdma网络 参考资料 1. 安装虚拟化rdma网络 2. 基于 SoftRCoE 部署 DeepSeek Fire-Flyer File System (3FS)
阅读全文
posted @ 2018-05-28 22:38
苏格拉底的落泪
阅读(194)
推荐(0)
摘要:
2. 暴力匹配算法 【问题】假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置。 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有: • 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字
阅读全文
posted @ 2018-05-26 21:09
苏格拉底的落泪
阅读(338)
推荐(0)
摘要:
可变参数模板 一个可变参数模板就是一个接受可变数目参数的模板函数或模板类,可变数目的参数称作参数包 存在两种参数包: 模板参数包,表示零个或多个模板参数 函数参数包, 表示零个或多个函数参数 使用原型: template <typename T, typename ... Args> void fu
阅读全文
posted @ 2018-05-25 10:47
苏格拉底的落泪
阅读(620)
推荐(0)
摘要:
模板实参推断:对于函数模板,编译器利用调用中的函数实参来确定模板参数,从函数实参来确定模板参数的过程被称为模板实参推断。 类型转换与模板类型参数 与往常一样,顶层const无论在形参中还是在是实参中,都被会忽略。 • const转换:可以将一个非const对象的引用(或指针)传递给const的引用(
阅读全文
posted @ 2018-05-24 13:57
苏格拉底的落泪
阅读(491)
推荐(0)
摘要:
树的特征 树是一种数据结构,它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。 区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点: n>0时,根节点是唯一的,不可能存在多个根节点。 每个节点有零个至多个子节点;除了根节点外,
阅读全文
posted @ 2018-05-22 22:07
苏格拉底的落泪
阅读(823)
推荐(0)
摘要:
• 在编写C++程序的时候,偶尔需要用到前置声明(Forward declaration)。下面的程序中,带注释的那行就是类B的前置说明。这是必须的,因为类A中用到了类B,而类B的声明出现在类A的后面。如果没有类B的前置说明,下面的程序将不同通过编译,编译器将会给出类似“缺少类型说明符”这样的出错提
阅读全文
posted @ 2018-05-22 14:35
苏格拉底的落泪
阅读(566)
推荐(0)
摘要:
移动构造函数 1. 移动构造函数示例: #include<iostream> #include<vector> #include<string> using namespace std; class Test { public: Test(const string& s = "hello world
阅读全文
posted @ 2018-05-21 19:49
苏格拉底的落泪
阅读(2014)
推荐(0)
摘要:
json编码和解码 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数: json.dumps(): 对数据进行编码。 json.loads(): 对数据进行解码。
阅读全文
posted @ 2018-05-21 15:52
苏格拉底的落泪
阅读(195)
推荐(0)
摘要:
参考资料 1. 打包工具 setuptools 的使用 114. 二叉树展开为链表 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序
阅读全文
posted @ 2018-05-18 21:39
苏格拉底的落泪
阅读(4904)
推荐(0)
摘要:
内核源码分析 1. kernel-code-comment https://github.com/dongzhiyan-stack/kernel-code-comment 2. async_memory_reclaim_for_cold_file_area https://github.com/do
阅读全文
posted @ 2018-05-17 15:21
苏格拉底的落泪
阅读(635)
推荐(0)
摘要:
11.3.1节练习 【练习11.16】代码 map<int, int> m; auto iter = m.begin(); iter ->second = 2;
阅读全文
posted @ 2018-05-17 14:12
苏格拉底的落泪
阅读(118)
推荐(0)
摘要:
练习答案 一、访问元素 关联容器额外类型别名 key_type 此容器类型的关键字类型 mapped_type 每个关键字关联的类型,只 适用于map mapped_type 对于set,与key_type相同对于map,为pair<const key_type, mapped_type> 二、关联
阅读全文
posted @ 2018-05-17 10:40
苏格拉底的落泪
阅读(181)
推荐(0)
摘要:
设置linux开机自动挂载 修改配置文件/etc/fstab 注:如果配置文件信息有误,重启云服务器时会进入维护模式,需要修改配置信息正确才能正常进入操作系统。通过将信息写入etc/fstab中进行自动化挂载云硬盘操作时,建议不要使用盘符以及分区id,建议使用文件系统的UUID,因为当云硬盘涉及到挂
阅读全文
posted @ 2018-05-17 10:03
苏格拉底的落泪
阅读(242)
推荐(0)
摘要:
m命令eval 参考资料 1. 命令eval用法 2. shell中的eval学习与应用
阅读全文
posted @ 2018-05-16 16:31
苏格拉底的落泪
阅读(169)
推荐(0)
摘要:
一、什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子: 1 #include<iostream> 2 using n
阅读全文
posted @ 2018-05-14 15:05
苏格拉底的落泪
阅读(1768)
推荐(0)
摘要:
函数 offsetof 的用法 offsetof()是一个宏, 返回 结构体成员 在内存中的偏移量。 1. 实例 #include<stdio.h> #include<stddef.h> struct S { char c1; int a; char c2; }; int main() { //of
阅读全文
posted @ 2018-05-12 15:48
苏格拉底的落泪
阅读(6631)
推荐(1)
摘要:
• 二叉树节点类型BTNode: 1 typedef struct node 2 { 3 char data; 4 struct node *lchild, *rchild; 5 } BTNode; 创建二叉树 1 void CreateBTree(BTNode *&b, char *str) 2
阅读全文
posted @ 2018-05-09 19:37
苏格拉底的落泪
阅读(412)
推荐(0)
摘要:
右值引用 左值和右值 (1)两者区别: ①左值:能对表达式取地址、或具名对象/变量。一般指表达式结束后依然存在的持久对象。 ②右值:不能对表达式取地址,或匿名对象。一般指表达式结束就不再存在的临时对象。 总结:一般而言,一个左值表达式表示的是一个对象的身份,而一个右值表达式表示的是对象的值。 (2)
阅读全文
posted @ 2018-05-09 18:22
苏格拉底的落泪
阅读(573)
推荐(0)
摘要:
1 #include <iostream> 2 #include <memory> 3 4 struct Foo 5 { 6 Foo() { std::cout << "Foo...\n"; } 7 ~Foo() { std::cout << "~Foo...\n"; } 8 }; 9 10 str
阅读全文
posted @ 2018-05-09 16:19
苏格拉底的落泪
阅读(208)
推荐(0)
摘要:
aio struct iocb结构体: struct iocb { __u64 aio_data; // 用户自定义数据(透传返回) __u32 aio_key; // 保留(在某些系统上未使用) __u32 aio_reserved1; __u16 aio_lio_opcode; // 操作类型,
阅读全文
posted @ 2018-05-09 16:08
苏格拉底的落泪
阅读(210)
推荐(0)
摘要:
contexpr 1. constexpr变量 1对于修饰的变量而言,const并未区分出编译常量和运行常量;constexpr限定在编译器常量。 2. constexpr函数 #include <iostream> #include <array> using namespace std; con
阅读全文
posted @ 2018-05-09 12:31
苏格拉底的落泪
阅读(289)
推荐(0)
摘要:
StrVec类的设计 【题目描述】:我们将实现标准库vector类的一个简化版本,我们所做的一个简化是不使用模板,我们类只用于string,因此,它被命名为StrVec。 1 #include<iostream> 2 #include<string> 3 #include<memory> 4 usi
阅读全文
posted @ 2018-05-09 09:37
苏格拉底的落泪
阅读(323)
推荐(0)
摘要:
std::jthread 1. 自动 join std::jthread 在析构时会自动调用 join()。 不再需要手动 join() 或 detach(),避免了资源泄露或程序崩溃。 2. 支持取消(stop_token) std::jthread 可以配合 stop_token 实现线程的 协
阅读全文
posted @ 2018-05-08 21:45
苏格拉底的落泪
阅读(457)
推荐(0)
摘要:
vdbench存储性能测试工具 vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。 安装部署 1. 部署jdk环境:解压缩jdk安装包至/opt目录 tar -zxvf
阅读全文
posted @ 2018-05-07 19:38
苏格拉底的落泪
阅读(836)
推荐(0)
摘要:
拷贝控制和资源管理 • 类的行为像一个值。意味着它应该有自己的状态,当我们拷贝一个像值得对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响。 • 行为像指针的类则共享状态。当我们拷贝一个这种类的对象时,副本和原对象使用相同的底层数据,改变副本也会改变原对象。 13.2节练习 1 #in
阅读全文
posted @ 2018-05-07 19:26
苏格拉底的落泪
阅读(251)
推荐(0)
摘要:
拷贝控制、赋值和销毁 如果一个构造函数的第一个参数是自身类的引用,且额外的参数都有默认值,则此构造函数是拷贝控制函数(拷贝构造函数不应该是explicit的)。 如果我们没有为一个类定义拷贝构造函数,编译器会为我们定义一个,与合成默认构造函数不同, 即使我们定义了其他构造函数,编译器也会为我们合成一
阅读全文
posted @ 2018-05-03 20:21
苏格拉底的落泪
阅读(348)
推荐(0)