Internet/Unix socket

socket是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。socket实现了网络协议栈的网络层和传输层。

UNIX/Linux 中的一切都是文件,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。

为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如:

  • 通常用 0 来表示标准输入文件(stdin),它对应的硬件设备就是键盘;
  • 阅读全文 »

正则表达式速查表

基本语法

阅读全文 »

【容器】docker-ce、docker-compose安装

moby、docker-ce与docker-ee的区别

最早的时候docker就是一个开源项目,主要由docker公司维护。

2017年年初,docker公司将原先的docker项目改名为moby,并创建了docker-ce和docker-ee。

这三者的关系是:

【算法】位运算

应用

求一个数二进制表示中1的个数

利用到了一个数的原码和补码。

一个数的原码和补码按位相与可以得到这个数的最低位的1所表示的数的大小,例如:

一个数11000100,那么其反码是00111011,补码是00111100,那么11000100与00111100相与结果为:00000010

阅读全文 »

【go】golang

语言结构

包声明:第一行代码必须使用package xxx指明该文件属于哪个包。

引入包:后面导入包,用双引号引起。

导出名:

阅读全文 »

【linux】文件I/O

文件的基本原理

当进程每打开一个文件,内核会为其返回一个文件描述符fd,是一个非负int整数,之后对文件的操作需要以fd作为主要参数。一般从0算起,上限为1024-1,但可以设定上限值。

每个进程默认会打开三个文件,其文件描述符分别为STDIN_FILENO STDOUT_FILENO STDERR_FILENO,即0 1 2,分别表示标准输入、标准输出、标准错误。

文件描述符不仅能表示普通文件,还能表示设备文件、目录、socket等等。

打开文件

阅读全文 »

【linux】capability

使用capsh -print可以输出当前容器所具有的cap权限列表。但并非所有容器内都有此命令,可以通过cat /proc/1/status获取cap的hex记录,再使用capsh --decode解码出cap。

阅读全文 »

【linux】进程管理

进程

对于操作系统来说,进程是一个很重要的抽象,进程的抽象是为了提高CPU的利用率,任何的抽象都需要一个物理基础,进程的物理基础便是程序。

程序和进程的区别:

  1. 进程是操作系统分配内核、CPU时间片等资源的基本单位。
  2. 阅读全文 »
reg