【docker】docker基本命令 也即使用该参数,容器内的root才拥有真正的root权限,否则容器内的root只是外部的一个普通用户权限。卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过UnionFS,提供一些用于持续存储或共享数据。也即启动交互式容器(前台有伪终端,等待交互)特性:卷设计的目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。● attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止。
【docker】docker入门与安装 由于Docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在CPU、内存利用率上docker有明显优势。容器(container):Docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。Docker容器的本质就是一个进程。
【数据结构】一文搞懂并查集 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。举例:求朋友圈链接:https://www.nowcoder.com/questionTerminal/a5c097f75db8418395b6a0e32c608c38假设有N个用户,其中有些人是朋友,有些则不是。A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。给
【MySQL系列】表的常见约束 数据库约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。主要介绍以下几个:NOT NULL(非空约束) - 指示某列不能存储 NULL 值。UNIQUE(唯一约束) - 保证某列的每行必须有唯一的值。DEFAULT(缺省约束) - 规定没有给列赋值时的默认值。PRIMARY KEY(主键约束) - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中
【MySQL系列】入门:安装与配置 CentOS 通过 yum 安装 MariaDB安装以下操作都以 root 用户进行操作安装 mariadb 服务yum install -y mariadb-server安装 mariadb 命令行客户端yum install -y mariadb安装 mariadb C libraryyum install -y mariadb-libs安装 mariadb 开发包yum install -y mariadb-devel更改配置更改 /etc/my.cnf.d/
Cmake学习记录 Cmake学习笔记cmake 是 makefile 的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量.c/c++ 项目工程部署如上:src : 源码工程目录ext : 第三方依赖库文件与头文件CMakeLists.txt : cmake 构建配置文件简单案例源文件编写 : src/main.cc#include <iostream>int main() { std::cout << "Hel
【C++系列】lambda表达式的使用 sort中的比较器std::sort方法,默认是升序也就是less比较器,传入greater也就是降序。#include <algorithm>#include <functional>using namespace std;int main(){ int array[] = { 4,1,8,5,3,7,0,9,2,6 }; // 默认按照小于比较,排出来结果是升序 std::sort(array, array + sizeof(array) / sizeof(
简单探究一下 HTTP2.0版本对于1.1版本的改进 HTTP/1.1 相比 HTTP/1.0 性能上的改进:使用 TCP 长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。但 HTTP/1.1 还是有性能瓶颈:请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;发送冗长的首部。每次互相发送相同的首部造成的浪费较多;服务器是按请求的顺序响应的,如果服务器响应慢,会
深入探讨HTTP的1.1版本:还有哪些优化手段? 早期 HTTP/1.0 性能上的一个很大的问题,那就是每发起一个请求,都要新建一次 TCP 连接(三次握手),而且是串行请求,做了无谓的 TCP 连接建立和断开,增加了通信开销。为了解决上述 TCP 连接问题,HTTP/1.1 提出了长连接的通信方式,也叫持久连接。这种方式的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。HTTP1.1支持管道网络传输,在同一个 TCP 连接里面,客户端可以发起多个请求当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排
【题目记录】巧妙解决 二进制中1的个数 题目链接输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。方法一:二进制移位法让一个数0x01从右向左与val的每一位进行&操作来判断class Solution {public: int NumberOf1(int n) { int ans = 0; int mark = 0x01; while (mark != 0) { if (mark & n) ++ans;
【算法题记录】实现一下 Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x的n次方)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25暴力是会超时的,这个过不了double myPow(double x, int n) { double tmp=1;
编译的整个过程:预编译、编译、汇编、链接 预处理, 展开头文件/宏替换/去掉注释/条件编译 (test.i main .i)编译, 检查语法,生成汇编 ( test.s main .s)汇编, 汇编代码转换机器码 (test.o main.o)链接 链接到一起生成可.
哈希索引、B+树索引(聚集,非聚集,联合,覆盖) 在数据库中,表、数据、索引之间的关系就类似于书籍、书籍内容、书籍目录。什么是索引倘若不使用索引,则MySQL必须遍历整个表,直到找到数据,而表越大,查询的时间则越长,则数据库的效率也就越低。而索引就类似于书籍的目录,可以帮助我们快速的定位、检索到需要的数据行,对提高数据库的性能有着很大的帮助。索引优缺点与适用场景优点大大加快了数据检索的速度所有的列类型都可以被索引,也就是可以给任意字段设置索引缺点索引需要占用物理空间,建立的索引越多则需要的空间越大创建和维护索引需要耗费时间,并
【网络】再谈Socket模型与TCP的连接管理 Socket 模型服务器端服务器端和客户端首先创建socket,服务器调用bind,绑定指定端口和IP。绑定端口主要是为了内核收到数据包知道交给哪个进程,绑定IP主要是因为机器可能有多个网卡,需要选择监听哪个网卡。然后服务器调用listen,将套接字转成被动套接字。接下来服务器就阻塞在accept等待客户端的请求到来。客户端客户端调用完socket后,就需要调用connect向服务器发起连接请求。其中,发起connect,就是主动发起三次握手,三次握手完成。客户端和服务器随
【Linux系列】多路复用IO,从底层理解select 网络数据是怎么接收到的网卡收到网线传送过来的数据,经过硬件电路传送到内存,将数据写在内存的某个地址中。网卡将数据写入内存后,网卡产生一个中断,通过总线把电信号发送给中断控制器。中断控制器把中断发送给处理器,也就是通过电信号给处理器特定的管脚发送一个高电平。处理器立即停止它正在做的事,然后跳转到内存中预定义的位置开始执行那里的代码,这个预定义的位置由内核设置的,是中断处理程序的入口点。对于每个中断线,处理器会跳到对应的一个唯一的位置,这样,内核就知道接收中断的IRQ号,然后调用函数do_IRQ(),
【Linux系列】从本质上理解五种IO模型的区别 IO模型输入操作通常包括两个不同的阶段:(1)等待数据准备好;(2)从内核向进程复制数据。对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待分组到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。根据各自的特性不同,IO模型被分为阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO五类。最主要的两个区别就是阻塞与非阻塞,同步与异步。阻塞与非阻塞阻塞与非阻塞最主要的区别就是程序在等待调用结果时的状态。阻塞:为了完成一个功能发起调
【UNIX环境高级编程】—《文件IO》读书笔记 【UNIX环境高级编程】——《文件IO》读书笔记UNIX环境下的文件共享文件描述符用来表征一个文件,但是为什么操作系统要用这么一个整数来表征一个文件呢?这就操作系统底层实现有莫大的关系。 在进程PCB中有着这么一个部分,IO状态信息,说的再具体点,在PCB中存在着一张表,我们可以叫它文件描述符表也可以叫做打开文件描述符表,这张表每个进程都会有且为进程独有,所以它是进程级的。这张表上的每一个表项都有两个部分组成,文件描述符标志以及一个文件指针。其中文件描述符标志也就是我们所使用的文件描述符fd,当然我
【Linux系列】深入理解task_struct结构体 什么是进程进程是分配系统资源的单位。当一个程序被加载到内存之后并为他分配一个PCB(进程控制块),这时候就称为进程了。在linux中PCB就是一个名字叫做task_struct的结构体,我们叫他”进程描述符”。它里面有进程执行的所有信息,所以CPU对task_struct进行管理就相当于在对进程进行管理。PCB叫做进程控制块,它用来维护进程相关的信息,每个进程都有一个PCB。task_structtask_struct是Linux内核的一种数据结构,它会被装载到RAM里并包含进程的信息。每个进程都把它