2020-09-19 18:13:58    3    0    0

使用go mod来管理项目,完全忽略掉GOPATH的存在,测试版本go1.15

一. 启用GO111MODULE并设置代理

  1. $ go env -w GO111MODULE=on
  2. $ go env -w GOPROXY=https://goproxy.cn,direct
  3. # 设置完成以后查看
  4. $ go env
2020-08-03 12:54:44    24    0    0

流量控制(tc)是一个非常有用的Linux实用程序,使您能够配置内核数据包调度程序。
tc可以模拟UDP或TCP应用程序的数据包延迟和丢失,或者限制特定服务的带宽等等场景。

命令安装

  1. # Debain和Redhat系列的系统安装iproute包即可
  2. sudo apt-get install -y iproute
  3. sudo yum install -y iproute


控制网络延迟(双向)

这里的延迟控制是双向的,即当前主机到其他主机延迟,其他主机到当前主机延迟。

2020-07-26 22:27:33    63    0    0

数据链路层

常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准(以太网V2标准),另一种是IEEE的802.3标准。这里介绍的是使用的最多的以太网V2的MAC帧格式。

  • 一个MAC帧的大小最小为64字节。
2020-07-26 17:30:58    24    0    0

TCP的连接建立

下图画出了TCP的建立连接的过程。假定主机A运行的是TCP客户程序,而B运行的是TCP服务器程序。最初两端的TCP进程都处于CLOSED状态。请注意,A主动打开连接,而B被动打开连接。

连接过程如下:

2020-07-20 01:47:08    57    0    0

尽管Elasticsearch需要很少的配置,但是在上线之前,还是需要考虑许多设置的。

一. 系统配置

查看常见系统配置

  1. # 查看memory_lock
  2. GET _nodes?filter_path=**.mlockall
  3. # 查看系统描述符
  4. GET _nodes/stats/process?filter_path=**.max_file_descriptors


1.1 max number of open files

  • ulimit
    ulimit 可以临时修改,重启失效。
2020-07-20 01:44:45    37    0    0

一. 系统安装

1.1 系统配置

  • 方法一:选择安装套件时选择Virtuallization Host,右边选择上常用的工具包即可。
  • 方法二:如果在装系统时没有选择Virtuallization Host,则按如下步骤安装:
  1. dnf module install virt
  2. dnf install virt-install virt-viewer
  3. # 环境检查是否满足要求
  4. virt-host-validate
  5. systemctl start libvirtd.service
  6. systemctl enable libvirtd.service
  7. systemctl status libvirtd.service
  • 安装完成后配置网卡的静态IP地址。
  1. vim /etc/sysconfig/network-scripts/ifcfg-eno4
  2. nmcli c reload
Docker    2020-07-18 01:12:45    30    0    0

创建网络空间

Containers are just Linux cgroups and namespaces.

如果在网络上搜索什么是容器,那么通常会达到如上的结果,那么我们就从网络命名空间说起。

在第一个终端中我们启动了一个监听在8080端口的服务,其实我们是使用了主机的网络命名空间(host network namespace),有时又叫root or global network namespace,为了不让端口冲突,我们创建一个新的网络空间给第三个终端使用。

  1. sudo ip netns add netns_dustin


使用新创建的网络空间启动http server服务,而不是host network namespace,现在问题来了,如何访问这个新的网络命名空间呢。

awk    2020-07-12 14:49:34    22    0    0

一. 简要概览

  • 问什么awk使用单引号
    (awk程序使用单引号包围)这个规定可以防止程序中的字符 (例如 $) 被 shell 解释, 也可以让程序的长度多于一行.

  • 程序格式
    动作的左花括号必须与它的模式在同一行; 而剩下的部分, 包括右花括号, 则可以出现在下
    面几行.
    空行会被忽略; 它们可以插入在语句之前或之后, 用于提高程序的可读性. 空格与制表符可
    以出现在运算符与操作数的周围, 同样也是为了提高可读性.

二. 模式匹配

2.1 模式汇总

  1. BEGIN{ statements}
    在输入被读取之前, statements 执行一次.

  2. END{ statements}
    当所有输入被读取完毕之后, statements 执行一次.

2020-07-07 00:04:32    22    0    0

字符串startswithendswith

  • Python
  1. # startswith
  2. if "BusFly".startswith("Bus"):
  3. print(True)
  4. # endswith
  5. if "BusFly".endswith("Fly"):
  6. print(True)
  • bash
  1. # startswith
  2. if [[ "BusFly" = Bus* ]];then
  3. echo true
  4. else
  5. echo false
  6. fi
  7. # endswith
  8. if [[ "BusFly" = *Fly ]];then
  9. echo true
  10. else
  11. echo false
  12. fi
KVM    2020-07-05 20:16:19    29    0    0

KVM

  • kvm(kernel-based virtual machine)是Linux的一个内核驱动模块,它只模拟CPU和内存。KVM模块的职责就是打开并初始化VMXVirtual Machine Extension)功能,提供相应的接口以支持虚拟机的运行。对于KVM来说,其匹配的用户空间工具并不仅仅只有QEMU,还有其他的,比如libvirt、virsh、virt-manager等,QEMU并不是KVM的唯一选择。

  • 在 KVM 模型中,每一个虚拟机都是一个由 Linux 调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。一个普通的 Linux 进程有两种运行模式:内核和用户。 KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)。