![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
t0tott
timj3ly.com
展开
-
线程的创建与管理
线程的创建#include <iostream>#include <thread> //头文件using namespace std;void greeting(){ cout << "Hello multithread!"<<endl; return;}int main(){ thread t{greeting}; //列表初始化 t.join(); //确保主线程在子线程退出之后才退出 retur原创 2020-11-13 18:26:36 · 142 阅读 · 0 评论 -
vim常用快捷键
模式切换Vim一共有4个模式:正常模式 (Normal-mode) :正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作插入模式 (Insert-mode):在正常模式中按下i, I, a, A等键命令模式 (Command-mode):在正常模式中,按下:(冒号)键,会进入命令模式可视模式 (Visual-mode):在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。显示行号set nu 显示行号set nonu 不显示行号删除行文本相关首先前提是在编辑原创 2020-11-03 07:25:42 · 176 阅读 · 0 评论 -
C++ 常见 内存 错误
野指针野指针:指向不可用内存区域的指针。如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃。野指针不是NULL指针,是指向**“垃圾”**内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是野指针是很危险的,也具有很强的掩蔽性,if语句对它不起作用。造成野指针的常见原因有三种:指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针。在Debug模式下,VC++编译器会把未初始化的栈内存上的指针全部填成 0xcccccccc ,当字符串看就是原创 2020-10-22 10:04:09 · 113 阅读 · 0 评论 -
进程、线程、协程 进程间的通信方式 IO多路复用的方式
进程:进程是系统进行资源分配和调度的⼀个独立单位,一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”。进程一般由程序、数据集、进程控制块三部分组成程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志;进程的局限是创建、撤销和切换的开销比较大线程:线程是进程的⼀个实体, 也叫轻量级进程,是CPU调度和分派的基本单位,原创 2020-10-20 14:10:27 · 593 阅读 · 2 评论 -
C++类或结构作为map的key值
1.只有重载<的类或者结构才能作为map的key值。string可以作为key值是因为string重载了<2.如果不重载<会提示如下错误:error C2676: 二进制“<”: “const C”不定义该运算符或到预定义运算符可接收的类型的转换...原创 2020-10-20 08:58:12 · 782 阅读 · 0 评论 -
static_cast dynamic_cast
static_cast用法:static_cast < type-id > ( exdivssion )该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。②用于基本数据类型之间的转换,如把int转换成char,把in原创 2020-10-19 15:43:30 · 185 阅读 · 0 评论 -
linux df
(base) ➜ ~ df 文件系统 1K-块 已用 可用 已用% 挂载点udev 8137076 0 8137076 0% /devtmpfs 1633052 2128 1630924 1% /run/dev/sda10 199793984 56065704 133509632 30% /tmpfs 8165248 352300原创 2020-10-19 08:37:19 · 269 阅读 · 0 评论 -
linux gdb
gdb启动gdb对C/C++程序的调试,需要在编译前就加上-g选项:$ g++ -g hello.cpp -o hello调试可执行文件:$ gdb <program>program也就是你的执行文件,一般在当前目录下。调试core文件(core是程序非法执行后core dump后产生的文件):$gdb <program> <core dump file>$gdb program core.11127调试服务程序:$ gdb <program原创 2020-10-17 22:20:33 · 112 阅读 · 0 评论 -
自旋锁和互斥锁
互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthread函数库)保证了如果一原创 2020-10-09 21:24:47 · 368 阅读 · 0 评论 -
手撕快排
#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;void quickSort(int arr[], int low, int high){ if(low>=high) return; int key = arr[low]; int left = low; int right = high; while原创 2020-10-09 14:06:14 · 138 阅读 · 0 评论 -
孤儿进程 僵尸进程 解决办法
定义孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。危害unix提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到。这种机制就是: 在每个进程退出的时候,内核释放该进程原创 2020-10-08 20:09:31 · 382 阅读 · 0 评论 -
linux top命令
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% siMem: 191272k total, 173656k used, 17原创 2020-10-08 16:18:04 · 317 阅读 · 0 评论 -
拷贝构造函数 浅拷贝遇到的问题 如何用深拷贝解决
使用条件:1.明确表示由一个对象初始化另一个对象2当对象作为函数的实参传递给形参时3当对象作为函数的返回值时#include <iostream>using namespace std;class Person{ private: int m_age; public: Person(int age):m_age(age){ cout<&原创 2020-10-05 21:26:51 · 217 阅读 · 0 评论 -
linux的入门学习笔记
@TOC[linux学习]1.anaconda的安装1.1 打开anaconda下载官网点击linux,再点击Download(默认下载64位)1.2 ctrl+alt+t 打开Teminalcd 下载lsls:列举当前目录,目的是:方便复制anaconda的文件名bash anaconda...(对应anaconda的文件名,因为版本不同,我就不贴出来了)往后的命令无脑...原创 2019-02-22 14:43:09 · 163 阅读 · 0 评论 -
linux学习笔记
更新源出错输入sudo apt-get update出现以下错误错误:8 http://ppa.launchpad.net/simpleyyt/ppa/ubuntu bionic Release 404 Not Found [IP: 91.189.95.83 80]尝试搜索此问题:出现如下解决办法:删掉 /etc/apt/sources.list.d 目录下 所有的仓库源。...原创 2019-02-15 21:39:53 · 131 阅读 · 0 评论 -
Ubuntu常用命令 conda 常用命令
获取管理员权限(superuseDo):sudo su查看现在的路径:pwd (present working directory)打开文件夹:cd (changing directory)显示文件:ls (list)创建新的文件夹: mkdir (make directory)拷贝文件至指定的系统路径:cp (copy-and-paste)删除指定的文件或文件夹: rm (remov...转载 2019-01-13 20:14:10 · 382 阅读 · 0 评论