- 博客(55)
- 收藏
- 关注
原创 Dive into C++
std::map1. 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
413
原创 【读书笔记】【C++ Primer】【拷贝控制】3 交换操作
swap 函数应该调用 swap,而不是 std::swapvoid 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
206
原创 【读书笔记】【C++ Primer】【拷贝控制】2 拷贝控制和资源管理
行为像值的类赋值运算符通常组合了析构函数和构造函数的操作。编写赋值运算符的好的模式是,先将右侧运算对象拷贝到一个局部临时对象中。当拷贝完成后,销毁左侧运算对象的现有成员就是安全的了。一旦左侧运算对象的资源被销毁,就只剩下将数据从临时对象拷贝到左侧运算对象的成员中了。行为像指针的类析构函数不能单方面地释放关联的 string。只有当最后一个指向 string 的 hasptr 销毁时,它才可以释放 string。...
2021-04-05 12:22:03
155
原创 【读书笔记】【C++ Primer】【拷贝控制】1 拷贝、赋值与销毁
拷贝构造函数class Foo {public: Foo(); // 默认构造函数 Foo(const Foo&); // 拷贝构造函数 // ...};只有当类没有声明任何构造函数时,编译器才自动生成默认构造函数。也就是说,一旦用户声明了一个构造函数,不管带不带参数,编译器都不会再声明默认构造函数。没有声明拷贝构造函数时,编译器会合成一个拷贝构造函数。拷贝构造函数在几种情况下都会被隐式地使用。因此,拷贝构造函数通常不应该是 explicit 的。
2021-04-05 11:46:09
290
原创 【C++新经典】【并发与多线程】6 unique_lock 详解
1 unique_lockunique_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
171
原创 【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
125
原创 【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
167
原创 【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
149
原创 【C++新经典】【并发与多线程】2 线程启动、结束与创建线程写法
主线程从 main() 函数开始执行,子线程也需要从一个函数开始运行(初始函数),一旦此函数运行完毕,该线程就结束了。1 进程结束的标志主线程执行完毕(子线程不论是否结束都会被终止,有例外情况)2 创建线程#include <iostream>#include <thread>using namespace std;void SubThreadPrint() { cout << "子线程开始运行" << endl; ...
2021-04-04 16:12:46
192
原创 【C++新经典】【并发与多线程】1 基本概念与实现
1 线程栈空间我的 linux机器上默认是8192 kbytes。[admin@host]$ ulimit -s8192[admin@host]$ ulimit -acore file size (blocks, -c) unlimiteddata seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks,...
2021-04-04 16:09:32
124
原创 C++11并发与多线程
转载并整理自 https://blog.youkuaiyun.com/qq_38231713/category_10001159.html线程栈空间我的 linux开发机上默认是8192 kbytes。[admin@host]$ ulimit -s8192[admin@host]$ ulimit -acore file size (blocks, -c) unlimiteddata seg size (kbytes, -d) unlimitedsched...
2021-03-31 13:15:58
295
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
91
原创 【Effective C++】条款03:尽可能使用 const
结论编译器强制实施 bitwise constness,但你编写程序时应该使用概念上的常量性。 当 const 和 non-const 成员函数有着实质等价的实现时,令 non-const 版本调用 const 版本可避免重复。bitwise constness —— 不更改对象的任一bitclass CTextBlock {public: ... char &operator[](std::size_t position) const { retur...
2021-03-29 10:59:15
152
原创 shell
1. shell命令行解释器编程语言2. 其他符号‘’ 单引号在单引号中所有的特殊符号,如 “$” 和 “`” 都没有特殊含义。“” 双引号在双引号中特殊符号都没有特殊含义,但是 “$” 和 “`” 和 “” 是例外。拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。[admin@host ~]$ name=xiaoyu[admin@host ~]$ echo '$name'$name[admin@host ~]$ echo "$name"xiaoyu
2021-03-29 09:52:05
162
1
原创 which whoami
whichLinux which命令用于查找文件。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。[root@localhost ~]# which bash/usr/bin/bashwhoamiLinux whoami命令用于显示自身用户名称。
2021-03-28 10:53:24
126
原创 df du
df显示文件系统的磁盘使用情况统计:dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda6 29640780 4320704 23814388 16% /udev 1536756 4 1536752 1% /devtmpfs 617620 888 616732 1%
2021-03-28 10:52:30
77
1
原创 test
test(选项)符号含义-b<文件>如果文件为一个块特殊文件,则为真;-c<文件>如果文件为一个字符特殊文件,则为真;-d<文件>如果文件为一个目录,则为真;-e<文件>如果文件存在,则为真;-f<文件>如果文件为一个普通文件,则为真;-g<文件>如果设置了文件的SGID位,则为真;-G<文件>如果文件存在且归该组所有,则为真;-k<文件&g
2021-03-28 10:50:35
280
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
102
原创 awk sed sort wc
awkawk ‘条件1{动作1} 条件2{动作2}’ 文件名[admin@host ~]$ cat student.txtID Name PHP Linux MySQL Average1 Liming 82 95 86 87.662 Sc 74 96 87 85.663 Gao 99 83 93 91.66输出第2列和第6列[admin@host ~]$ awk '{printf $2 "\t" $6 "\n"}' student.txtName AverageLiming 8
2021-03-28 10:44:34
150
原创 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 6123456[admin@host ~]$ printf '%s %s %s' ...
2021-03-28 10:43:01
60
原创 cut
cut [选项] 文件名设备含义-f列号 提取第几列-d分隔符 按照指定分隔符分割列-c输出字符[admin@host ~]$ cat test.txtNo Name Mark Percent01 tom 69 9102 jack 71 8703 alex 68 98[admin@host ~]$ cut -f 1 -d " " test.txtNo010203[admin@host ~]$ cut -f 2,3 -d " " tes.
2021-03-28 10:42:04
48
原创 正则表达式与通配符
grep、awk、sed等命令可以支持正则表达式。表达式含义*前一个字符匹配0次或任意多次。.匹配除了换行符外任意一个字符。^匹配行首。 例如: ^hello会匹配以hello开头的行。$匹配行尾。 例如: hello$ 会匹配以hello结尾的行。[]匹配中括号中指定的任意一个字符, 只匹配一个字符。例如: [aoeiu] 匹配任意一个元音字母, [0-9] 匹配任意一位数字, [a-z][0-9]匹配小写字和一位数字构成的两位字符。[^]匹
2021-03-28 10:40:06
494
1
原创 多命令
命令1;命令2多个命令顺序执行,命令之间没有任何逻辑联系。命令1 && 命令2当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行。命令1 || 命令2当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行。...
2021-03-28 10:37:25
80
原创 输入输出
输入输出设备文件含义键盘/dev/stdin0 标准输入显示器/dev/sdtout1 标准输出显示器/dev/sdterr2 标准错误输出输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备当中。错误命令 2> 文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。错误命令 2>> 文
2021-03-27 18:56:58
93
原创 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
58
原创 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
110
原创 netstat
-t : TCP协议 -u : UDP协议 -l : 监听 -r : 路由 -n : 显示IP地址和端口号netstat -tlun 查看本机监听的端口netstat -an 查看本机所有的网络连接netstat -rn 查看本机路由表...
2021-03-27 18:50:07
63
原创 zip gzip bzip2 tar
zipzip [-r] [压缩后文件名] [文件或目录]-r 压缩目录$ zip buduo.zip boduo$ zip -r Japan.zip Japanunzip$ unzip test.zipgzipgunzip(base) root@localhost:~/play_dir/testdir$ lstestfile.txt(base) root@localhost:~/play_dir/testdir$ gzip testfile.txt(b.
2021-03-27 18:48:45
68
原创 whereis which locate grep
whereis 搜索命令所在目录及帮助文档路径 which 搜索命令所在目录及别名信息locate 在文件资料库中查找文件 grepgrep 在文件中搜寻字串匹配的行并输出-i 不区分大小写-v 排除指定字串 ...
2021-03-27 18:38:31
51
原创 ln
ln -s [src_file] [dest_file]-s 创建软链接软链接和硬链接的区别两者的作用对象不同:硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区)。软链接,可以应用于文件,而且可以应用于目录和可跨文件系统(即分区)。两者的作用原理不同:假如说A文件是B文件的硬链接文件,那么A和B的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的,硬链接中一个inode号可以对应多个文件。如.
2021-03-27 18:36:15
83
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 [用户] [文件或目录]umaskiPad:~# uma
2021-03-27 18:31:40
151
原创 find
-size 限定文件大小-a 两个条件同时满足-o 两个条件满足任意一个即可iPad:~# ls -ltotal 4-rw-r--r-- 1 root root 49 Feb 21 13:35 testfile.txtiPad:~# find ./ -size +45c -a -size -50c./testfile.txtiPad:~# find ./ -size +45c -a -size -46ciPad:~#-name 按名字查找-i 不区分大小写iPad
2021-03-27 18:24:13
95
原创 more less head tail
more逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。more -s testfile从第 20 行开始显示 testfile 之文档内容。more +20 testfilelessps查看进程信息并通过less分页显示。ps -ef | lesshead-n 指定行数显示 notes.log 文件的开头 5 行,请输入以下命令:head -n 5 runoob_notes.log显示文件前 20 个字节:head
2021-03-27 18:18:13
80
原创 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
289
原创 深度学习基础
第1章 Python入门1.1 NumPynp.array() 接收Python列表作为参数,生成NumPy数组。>>> import numpy as np>>> x = np.array([1.0, 2.0, 3.0])>>> xarray([1., 2., 3.])>>> type(x)<class 'numpy.ndarray'>1.1.1 广播>>> x = np
2021-03-26 09:51:24
63
原创 Python 基础
1. printprint的内容输出到文件>>> fp = open('./text.txt', 'a+')>>> print('hello world', file = fp)>>> fp.close()符号 含义 \n 换行 \r 回车 \b 退格 \t tab >>> print('hello\nworld')helloworld>>>
2021-03-24 16:03:56
912
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 & enumconst double AspectRatio
2021-03-24 15:50:48
135
原创 C++中的空类
#include <iostream>using namespace std;// 空类的大小是1class 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
269
原创 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
525
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人