05 2022 档案
摘要:管道是一种单向通信的方式,一般用于进程间通信,在零拷贝时也会用到管道。管道本质上是一个文件,一个进程读,一个进程写。但是管道本身不占用磁盘或者其他外部存储的空间。在Linux上它占用内存空间。所以管道就是一个操作方式为文件的内存缓冲区。也正是因...
阅读全文
摘要:fork用于创建进程,使用时需要包含如下头文件: #include #include 1.进程简介: 进程是一个向CPU申请资源的正在执行的程序,和线程相比进程之间的资源相互独立,一个进程至少...
阅读全文
摘要:考虑到内存和文件描述符等客观限制,几乎所有的服务器都不可能达到理论上最大tcp连接量的上线。考虑到这些我们此篇仅考虑性能无限的情况下最大tcp连接数量。 1.tcp端口号上限: tcp端口类型是无符号短整型unsigned short,因此端口号上限是6553...
阅读全文
摘要:常见的加减乘除等运算符相对比较好重载,++和>: 如下: class node {protected: int32_t x = {0}; int32_t y = {0};public: //设置成友元函数是为了...
阅读全文
摘要:1.大端字节序和小端字节序: 大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址。 小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址。 以0x12345678为例: ...
阅读全文
摘要:1 查看能打开的数量: 用户级限制:ulimit -n可以看到结果。 系统级限制:cat /proc/sys/fs/file-max 2 临时修改最大数量: ulimit -n 2000 将最大值改为20...
阅读全文
摘要:1.cin,cout加速: std::ios::sync_with_stdio(false); cin,cout效率低是因为先把要输出的东西存入缓冲区,再输出,导致效率降低。这段语句取消iostream的输入输出缓存,可以显著提高cin和cou...
阅读全文
摘要:简单介绍c++11的四种智能指针的用法。使用智能指针需要包含头文件#include。c++11提出了四种智能指针auto_ptr,unique_ptr,shared_ptr和weak_ptr。 1.auto_ptr: auto_...
阅读全文
摘要:1.一个数字出现一次,其它数字出现两次: 这是此类问题中最简单的。考虑到异或运算符^会把相同的位置为零,因此从第一个数字开始异或,最后得到的值就是出现一次的数字。 2.一个数字出现1次,其它数字出现N次: 如果n为偶数就比较简单...
阅读全文
摘要:二分查找也叫折半查找,其用于在排好序的数组找到指定值,复杂度为logN。假定要在数组a[n]中寻找b,方法是先找到数组中间的值a[n/2],如果a[n/2]=b则找到,如果a[n/2]#include#includeint main() { s...
阅读全文
摘要:1.TCP/IP协议: 1.1 TCP/IP协议是什么: 很多人认为tcp/ip就是tcp和ip组成的通信协议。其实tcp/ip协议不仅仅指代tcp/ip,它是指一个由FTP,SMTP,TCP,UDP,IP,HTTP等协议构成的...
阅读全文
摘要:目前有三种比较常见的网络模型,即OSI七层模型,tcp/ip四层模型和TCP五层模型。 1 OSI七层模型: OSI从底层至上层依次为:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 1.1 物理层和数据链路层: ...
阅读全文
摘要:1.mysql无法进入。 mysql无法进入, 使用systemctl status mysqld发现: New main PID 4194 does not belong to service, and PID file is not owned by ...
阅读全文
摘要:dnf安装并设为开机自启 dnf install nginxsystemctl start nginxsystemctl enable nginx 如果想使用nginx需要80和443端口,故保存镜像后重新导入: docker commit 运行的容器id c...
阅读全文
摘要:一.安装redis dnf install redis#启动redissystemctl start redis#开机自启redissystemctl enable redis 安装后运行redis-server出现如下界面 即安装并成功启动 二.简单的使用...
阅读全文
摘要:一.下载并安装mysql源 dnf install wgetwget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpmdnf localinstall mysql57-com...
阅读全文
摘要:centos7使用dnf或yum下载的gcc默认版本较低,因此需要高版本gcc,g++来支持redis等工具 dnf install centos-release-scldnf install devtoolset-9-gcc devtoolset-9-gcc...
阅读全文
摘要:本文章记录了dnf和ssh的配置,并包含部分其它常用软件的安装 一.dnf配置 dnf是yum的一种代替品,性能要好于yum。当然也可以不安装dnf使用yum。centos8自带dnf,其它centos版本需要安装才可以使用dnf。 yum install e...
阅读全文
摘要:本文章主要记录拉取镜像->运行容器->换源->保存并打包镜像的过程 一.拉取centos7镜像 #查看可拉取centos7的镜像docker search centos:7#拉取centos7docker pull centos:7 二.doc...
阅读全文
摘要:头文件: #include 或#include 一.设置环境变量 1.1.int putenv(char *string); string为指向环境变量的指针,其中环境变量必须以 "name=value" 的形式。如果环境表中...
阅读全文
摘要:1.开启和关闭docker服务 systemctl start docker.servicesystemctl stop docker.service 2.docker查找及下载镜像 docker search 镜像名(如centos,mysql等)#例do...
阅读全文
摘要:1.查看文件大小操作: 查看当前文件夹大小总和: du -sh 查看当前目录下文件(夹)大小: du -h --max-depth=1 2.创建文件 vi ***.txt 3.远程复制: sc...
阅读全文
摘要:1.右值引用: 我们可能知道函数里的临时对象的生存周期在函数内,也可能更详细的知道临时对象离开它的作用域就会消亡,不过我们平时可能很少直观感受到这一点。因此我们想象下面一个场景,如果我们想要定义一个int*类型返回值的函数,该函数构建一个int...
阅读全文
摘要:1.内链接和外链接: gcc/g++编译的时候是以源文件cpp文件为单位,编译成一个个的.o文件(vsc++是obj),然后再把不同的.o文件链接起来。内链接的变量或函数在链接的时候不会拿与.o比较是否重复定义,也不会去寻找是否在其它文件中定义...
阅读全文
摘要:1.atomic及部分函数: atomic是c++11推出的原子变量,使用需要C++11及更高标准,包含的头文件为#include 1.1 atomic变量: atomic可以声明基本类型的变量,如下: std::atomic ...
阅读全文
摘要:1.function和bind 这两个函数需要包含头文件#inlude。 std::function是一种封装函数的工具或者说方法。std::function封装包普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::funct...
阅读全文
摘要:1.引入条件变量的原因: 首先我们想象一个场景,果农每秒摘一个苹果,无数的消费者排队等苹果,苹果摘好就拿走。为此场景写一个极简生产者消费者模型如下: #include #include #include #include std::mutex ...
阅读全文
摘要:1.互斥量mutex: 1.1 多线程的问题: 当使用多线程编程时,如果多个线程同时访问同一资源很可能会出现错误,下面程序展示了这点。 #include #include #include #include void func1(int& a)...
阅读全文
摘要:1.std::thread的使用: std::thread是C++11提出的,因此使用std::thread需要c++11或c++11以上标准。在linux使用std::thread时需要在编译时链接-lpthread。 2.使用thread的...
阅读全文
摘要:1.前置知识: 在了解万能引用和完美转发之前需要了解左值,右值,左值引用,右值引用和引用折叠。下面简单概括一下这些名词,关于每个名词的详细解释网上有很多非常好的文章,故不在本文赘述。 1.1 左值和右值: 简单的说可以取地址的就...
阅读全文
摘要:一.什么是类型双关: 维基百科对类型双关的定义是这样:类型双关是计算机科学的术语,指任何编程技术能颠覆或者绕过一门程序设计语言的类型系统,以达成在形式语言内部难以甚至不可能实现的效果。 这个概念可能有些不好理解,其实简单的说它就...
阅读全文
摘要:一.C库函数: 头文件: #include或#include 1.1 char*转int/long: long int strtol(const char *nptr, char **endptr, int base) ...
阅读全文
摘要:官方文档链接: 在 Visual Studio 中创建 CMake Linux 项目 | Microsoft Docs 前置需求: 在远程计算机上安装了gcc/g++,gdb,rsync,zip。同时远程计算机需要支持ssh。 ...
阅读全文