自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 Dive into C++

std::map 1. insert() #include <iostream> #include <map> using namespace std; int main() { std::map<char, int> mymap; // first insert function version (single parameter): mymap.insert(std::pair<char, int>('a', 100))

2021-08-02 20:10:08 482

原创 【读书笔记】【C++ Primer】【拷贝控制】3 交换操作

swap 函数应该调用 swap,而不是 std::swap void swap(Foo &lhs, Foo &rhs) { // 错误,这个函数使用了标准库版本的 swap,而不是 HasPtr 版本 std::swap(lhs.h, rhs.h); } 正确的 swap 函数 void swap(Foo &lhs, Foo &rhs) { using std::swap; swap(lhs.h, rhs.h); } 为什么 us...

2021-04-09 20:30:02 270

原创 【读书笔记】【C++ Primer】【拷贝控制】2 拷贝控制和资源管理

行为像值的类 赋值运算符通常组合了析构函数和构造函数的操作。 编写赋值运算符的好的模式是,先将右侧运算对象拷贝到一个局部临时对象中。当拷贝完成后,销毁左侧运算对象的现有成员就是安全的了。一旦左侧运算对象的资源被销毁,就只剩下将数据从临时对象拷贝到左侧运算对象的成员中了。 行为像指针的类 析构函数不能单方面地释放关联的 string。只有当最后一个指向 string 的 hasptr 销毁时,它才可以释放 string。 ...

2021-04-05 12:22:03 191

原创 【读书笔记】【C++ Primer】【拷贝控制】1 拷贝、赋值与销毁

拷贝构造函数 class Foo { public: Foo(); // 默认构造函数 Foo(const Foo&); // 拷贝构造函数 // ... }; 只有当类没有声明任何构造函数时,编译器才自动生成默认构造函数。也就是说,一旦用户声明了一个构造函数,不管带不带参数,编译器都不会再声明默认构造函数。 没有声明拷贝构造函数时,编译器会合成一个拷贝构造函数。 拷贝构造函数在几种情况下都会被隐式地使用。因此,拷贝构造函数通常不应该是 explicit 的。

2021-04-05 11:46:09 374

原创 【读书笔记】【C++ Primer】【拷贝控制】总

拷贝控制操作 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数

2021-04-05 10:28:36 121

原创 【C++新经典】【并发与多线程】6 unique_lock 详解

1 unique_lock unique_lock 比 lock_guard 灵活,但是效率差。 unique_lock my_uni_lock(my_mutex); 2 unique_lock 的第二个参数 2.1 std::adopt_lock 互斥量已经被 lock(),不需要在构造函数中 lock。 2.2 std::try_to_lock 如果没有锁定成功,会立即返回,不会阻塞。 owns_locks() 方法判断是否拿到锁,如拿到锁则返回true。 2.3 std::defe

2021-04-05 02:36:35 217

原创 【C++新经典】【并发与多线程】5 互斥量的概念、用法、死锁演示与解决详解

互斥量 互斥量是个类对象,使用 lock() 成员函数来加锁。 头文件 #include <mutex> 一般用法 lock() ... unlock() lock_guard 构造函数里面执行了 mutex::lock() 作用域结束时,析构函数执行 mutex::unlock() { lock_guard guard(my_mutex); } std::lock() 用于处理多个互斥量,所有互斥量都锁住才继续执行,否则会释放已经锁住的互斥量,防止死锁

2021-04-05 01:06:44 165

原创 【C++新经典】【并发与多线程】4 创建多个线程、数据共享问题分析与案例代码

#include <iostream> #include <thread> #include <memory> #include <vector> using namespace std; void sub_thread() { cout << " thread id " << this_thread::get_id() << endl; } int main() { std::vector<thread&.

2021-04-05 00:37:08 212

原创 【C++新经典】【并发与多线程】3 线程传参详解、detach坑与成员函数作为线程函数

传递临时对象 #include <iostream> #include <thread> using namespace std; class A { public: A(int a) : m_i(a) { cout << "构造函数 " << this << endl; } A(const A &a) { cout << "拷贝构造 " << this << endl; } ...

2021-04-04 20:48:35 195

原创 【C++新经典】【并发与多线程】2 线程启动、结束与创建线程写法

主线程从 main() 函数开始执行,子线程也需要从一个函数开始运行(初始函数),一旦此函数运行完毕,该线程就结束了。 1 进程结束的标志 主线程执行完毕(子线程不论是否结束都会被终止,有例外情况) 2 创建线程 #include <iostream> #include <thread> using namespace std; void SubThreadPrint() { cout << "子线程开始运行" << endl; ...

2021-04-04 16:12:46 237

原创 【C++新经典】【并发与多线程】1 基本概念与实现

1 线程栈空间 我的 linux机器上默认是8192 kbytes。 [admin@host]$ ulimit -s 8192 [admin@host]$ ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks,...

2021-04-04 16:09:32 163

原创 C++11并发与多线程

转载并整理自 https://blog.youkuaiyun.com/qq_38231713/category_10001159.html 线程栈空间 我的 linux开发机上默认是8192 kbytes。 [admin@host]$ ulimit -s 8192 [admin@host]$ ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited sched...

2021-03-31 13:15:58 361 1

原创 【Effective C++】条款04:确定对象被使用之前已先被初始化

结论 C++ 不保证初始化内置类型 为免除 “跨编译单元之初始化次序” 问题,请以 local static 对象替换 non-local static 对象 对象的成员变量的初始化动作发生在进入构造函数本体之前 编译单元 编译单元是指产出单一目标文件的那些源码。 C++ 对 “定义于不同编译单元内的 non-local static 对象” 的初始化次序并无明确定义。如果一个编译单元的 non-local static 对象的初始化动作使用了另一编译单元内的non-local static 对象

2021-03-29 11:43:44 126

原创 【Effective C++】条款03:尽可能使用 const

结论 编译器强制实施 bitwise constness,但你编写程序时应该使用概念上的常量性。 当 const 和 non-const 成员函数有着实质等价的实现时,令 non-const 版本调用 const 版本可避免重复。 bitwise constness —— 不更改对象的任一bit class CTextBlock { public: ... char &operator[](std::size_t position) const { retur...

2021-03-29 10:59:15 201

原创 shell

1. shell 命令行解释器 编程语言 2. 其他符号 ‘’ 单引号 在单引号中所有的特殊符号,如 “$” 和 “`” 都没有特殊含义。 “” 双引号 在双引号中特殊符号都没有特殊含义,但是 “$” 和 “`” 和 “” 是例外。拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。 [admin@host ~]$ name=xiaoyu [admin@host ~]$ echo '$name' $name [admin@host ~]$ echo "$name" xiaoyu

2021-03-29 09:52:05 224 1

原创 which whoami

which Linux which命令用于查找文件。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 [root@localhost ~]# which bash /usr/bin/bash whoami Linux whoami命令用于显示自身用户名称。

2021-03-28 10:53:24 179

原创 df du

df 显示文件系统的磁盘使用情况统计: df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 29640780 4320704 23814388 16% / udev 1536756 4 1536752 1% /dev tmpfs 617620 888 616732 1%

2021-03-28 10:52:30 128 1

原创 test

test(选项) 符号 含义 -b<文件> 如果文件为一个块特殊文件,则为真; -c<文件> 如果文件为一个字符特殊文件,则为真; -d<文件> 如果文件为一个目录,则为真; -e<文件> 如果文件存在,则为真; -f<文件> 如果文件为一个普通文件,则为真; -g<文件> 如果设置了文件的SGID位,则为真; -G<文件> 如果文件存在且归该组所有,则为真; -k<文件&g

2021-03-28 10:50:35 339 2

原创 进程和系统资源命令

1 进程查看 查看系统中所有进程 [admin@host ~]$ ps aux 查看系统中所有进程,使用linux标准命令格式 [admin@host ~]$ ps -le 符号 含义 USER 该进程是由哪个用户产生的; PID 进程的ID号; %CPU 该进程占用CPU资源的百分比,占用越高,进程越耗费资源; %MEM 该进程占用物理内存的百分比,占用越高,进程越耗费资源; VSZ 该进程占用虚拟内存的大小,单位KB; RSS 该进程占用实际物理内存的大小

2021-03-28 10:49:05 148

原创 awk sed sort wc

awk awk ‘条件1{动作1} 条件2{动作2}’ 文件名 [admin@host ~]$ cat student.txt ID Name PHP Linux MySQL Average 1 Liming 82 95 86 87.66 2 Sc 74 96 87 85.66 3 Gao 99 83 93 91.66 输出第2列和第6列 [admin@host ~]$ awk '{printf $2 "\t" $6 "\n"}' student.txt Name Average Liming 8

2021-03-28 10:44:34 183

原创 printf

设备 含义 %ns 输出字符串,n表示输出几个字符 %ni 输出整数,n表示输出几个数字 %m.nf 输出浮点数,如%8.2f代表共输出8位数,其中2位是小数,6位是整数。 \a 输出警告声音 \b 输出退格键 \f 清除屏幕 \n 换行 \r 回车 \t 水平输出退格键 \v 垂直输出退格键 [admin@host ~]$ printf %s 1 2 3 4 5 6 123456 [admin@host ~]$ printf '%s %s %s' ...

2021-03-28 10:43:01 99

原创 cut

cut [选项] 文件名 设备 含义 -f 列号 提取第几列 -d 分隔符 按照指定分隔符分割列 -c 输出字符 [admin@host ~]$ cat test.txt No Name Mark Percent 01 tom 69 91 02 jack 71 87 03 alex 68 98 [admin@host ~]$ cut -f 1 -d " " test.txt No 01 02 03 [admin@host ~]$ cut -f 2,3 -d " " tes.

2021-03-28 10:42:04 87

原创 正则表达式与通配符

grep、awk、sed等命令可以支持正则表达式。 表达式 含义 * 前一个字符匹配0次或任意多次。 . 匹配除了换行符外任意一个字符。 ^ 匹配行首。 例如: ^hello会匹配以hello开头的行。 $ 匹配行尾。 例如: hello$ 会匹配以hello结尾的行。 [] 匹配中括号中指定的任意一个字符, 只匹配一个字符。例如: [aoeiu] 匹配任意一个元音字母, [0-9] 匹配任意一位数字, [a-z][0-9]匹配小写字和一位数字构成的两位字符。 [^] 匹

2021-03-28 10:40:06 577 1

原创 多命令

命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系。 命令1 && 命令2 当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行。 命令1 || 命令2 当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行。 ...

2021-03-28 10:37:25 123

原创 输入输出

输入输出 设备 文件 含义 键盘 /dev/stdin 0 标准输入 显示器 /dev/sdtout 1 标准输出 显示器 /dev/sdterr 2 标准错误输出 输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。 命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中。 错误命令 2> 文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。 错误命令 2>> 文

2021-03-27 18:56:58 137

原创 bash

命令 含义 ctrl+a 光标移动到命令行开头 ctrl+e 光标移动到命令行结尾 ctrl+u 删除或剪切光标之前的命令 ctrl+k 删除或剪切光标之后的内容 ctrl+y 粘贴 ctrl+u 或 ctrl+k 剪切的内容 esc + b 以单词为整体往左跳 esc + f 以单词为整体往右跳 esc + backtrace 删除,以单词为整体 ...

2021-03-27 18:55:41 86

原创 vim

命令 含义 $ 移至行尾 0 移至行首 :set nu 设置行号 :set nonu 取消行号 gg 第一行 G 最后一行 :n 第n行 :4,5d 删除4~5行的内容 D 删除光标所在处到行尾内容 dG 删除光标所在行到文件末尾内容 dd 删除光标所在行,ndd删除n行 nx 删除光标所在处后n个字符 x 删除光标所在处字符 yy 复制当前行 nyy 复制当前行以下n行 dd 剪切当前行 p 剪切当前行以下n行 P 粘贴在...

2021-03-27 18:53:21 149

原创 netstat

-t  :  TCP协议 -u  : UDP协议 -l  :  监听 -r  :  路由 -n  : 显示IP地址和端口号 netstat -tlun   查看本机监听的端口 netstat -an   查看本机所有的网络连接 netstat -rn   查看本机路由表 ...

2021-03-27 18:50:07 89

原创 zip gzip bzip2 tar

zip zip [-r] [压缩后文件名] [文件或目录] -r 压缩目录 $ zip  buduo.zip  boduo $ zip  -r  Japan.zip  Japan unzip $ unzip test.zip gzipgunzip (base) root@localhost:~/play_dir/testdir$ ls testfile.txt (base) root@localhost:~/play_dir/testdir$ gzip testfile.txt (b.

2021-03-27 18:48:45 100

原创 whereis which locate grep

whereis 搜索命令所在目录及帮助文档路径  which 搜索命令所在目录及别名信息 locate 在文件资料库中查找文件  grep grep 在文件中搜寻字串匹配的行并输出 -i  不区分大小写 -v 排除指定字串  ...

2021-03-27 18:38:31 76

原创 ln

ln -s [src_file] [dest_file] -s 创建软链接 软链接和硬链接的区别 两者的作用对象不同: 硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区)。 软链接,可以应用于文件,而且可以应用于目录和可跨文件系统(即分区)。 两者的作用原理不同: 假如说A文件是B文件的硬链接文件,那么A和B的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的,硬链接中一个inode号可以对应多个文件。如.

2021-03-27 18:36:15 116 1

原创 chmod chgrp chown umask

chmod 改变权限 命令格式 chmod [{ugoa}{+-=}{rwx}] [文件或目录] chmod [mode=421 ] [文件或目录] -R 递归修改 $ chmod g+w testfile 赋予文件testfile所属组写权限 $ chmod -R 777 testdir 修改目录testdir及其目录下的文件的权限 chgrp 改变文件或目录的所属组 chown 改变文件或目录的所有者 chown [用户] [文件或目录] umask iPad:~# uma

2021-03-27 18:31:40 202

原创 find

-size 限定文件大小 -a 两个条件同时满足 -o 两个条件满足任意一个即可 iPad:~# ls -l total 4 -rw-r--r-- 1 root root 49 Feb 21 13:35 testfile.txt iPad:~# find ./ -size +45c -a -size -50c ./testfile.txt iPad:~# find ./ -size +45c -a -size -46c iPad:~# -name 按名字查找 -i 不区分大小写 iPad

2021-03-27 18:24:13 138

原创 more less head tail

more 逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。 more -s testfile 从第 20 行开始显示 testfile 之文档内容。 more +20 testfile less ps查看进程信息并通过less分页显示。 ps -ef | less head -n 指定行数 显示 notes.log 文件的开头 5 行,请输入以下命令: head -n 5 runoob_notes.log 显示文件前 20 个字节: head

2021-03-27 18:18:13 121

原创 word

单词 含义 interact [ˌɪntərˈækt] v. 相互作用,相互影响 transaction [trænˈzækʃn] n. 处理,办理;交易 agenda [əˈdʒendə] n.(政治)议程;议事日程;目的(***) massacre [ˈmæsəkə®] v.&n. 屠杀,残杀 millennial [mɪˈlenɪəl] n. 千禧一代 a. 一千年的 audit [ˈɔ:dɪt] v.&n.旁听;审计 aural [ˈɔ:rəl...

2021-03-26 09:59:14 356

原创 深度学习基础

第1章 Python入门 1.1 NumPy np.array() 接收Python列表作为参数,生成NumPy数组。 >>> import numpy as np >>> x = np.array([1.0, 2.0, 3.0]) >>> x array([1., 2., 3.]) >>> type(x) <class 'numpy.ndarray'> 1.1.1 广播 >>> x = np

2021-03-26 09:51:24 89

原创 Python 基础

1. print print的内容输出到文件 >>> fp = open('./text.txt', 'a+') >>> print('hello world', file = fp) >>> fp.close() 符号 含义 \n 换行 \r 回车 \b 退格 \t tab >>> print('hello\nworld') hello world >>>

2021-03-24 16:03:56 1026 2

原创 【Effective C++】条款02:尽量以 const, enum, inline 替换 #define

1. 结论 对于单纯常量,最好以 const 对象或者 enum 替换 #define 。 对于形似函数的宏 (function-like marco),最好用 inline 函数替换 #define 。 2. #define #define ASPECT_RATIO = 1.653 编译器没有将这个名称存入到调试器的记号表(symbol table)中,无法追踪,不利于调试。 在程序中存在多份拷贝。 3. const & enum const double AspectRatio

2021-03-24 15:50:48 184

原创 C++中的空类

#include <iostream> using namespace std; // 空类的大小是1 class MyClass1 { }; class MyClass2 { public:     int64_t value; }; int main() {     cout << sizeof(MyClass1) << endl;     cout << sizeof(MyClass2) << endl;     return 0;.

2021-03-24 15:19:32 333

原创 C++中的禁止复制

1. private 将复制构造函数和赋值运算符的可见性声明为 private,可以防止它们被外部调用。 class TestClass { private:     TestClass(const TestClass &);              // 复制构造函数     TestClass & operator=(const TestClass &);  // 赋值运算符 public:     ... }; 2. delete 在 C++11 中,我们可以在复

2021-03-24 15:16:15 603

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除