lihuu's blog

HTTP 协议:从基础到高级通信模式

HTTP(HyperText Transfer Protocol)是 Web 的基础协议,浏览器与服务器之间的每一次交互都依赖它。本文从基础模型出发,逐步覆盖状态管理、安全加密、协议演进,以及 SSE 和 WebSocket 等高级通信模式。

HTTP 基础

通信模型

HTTP 采用客户端-服务器(C/S)模型,通信过程是一问一答

  1. 客户端(浏览器)发起请求(Request)
  2. 服务器处理后返回响应(Response)
  3. 连接断开(HTTP/1.1 默认 keep-alive 可复用连接)

HTTP 是无状态协议——服务器不会记住之前的请求。每次请求都是独立的,服务器不知道"这个用户是谁"。

Kubernetes集群安装

安装

我们只是搭建一个 mini 的类似于真实的 kubernetes 环境,用来自己学习,我们也可以选择安装 minikube

安装前的准备工作

  1. 修改 hostname,因为 kubernetes 使用 hostname 来区分集群

    sudo vim /etc/hostname
  2. 使用 docker 作为容器运行时,kubernetes 支持多种容器运行时,使用 docker 比较方便。

    cat <<EOF | sudo tee /etc/docker/daemon.json
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
      "storage-driver": "overlay2"
    }
    EOF
    
    sudo systemctl enable docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  3. 修改 iptables 的配置,启用"br_netfilter"

Zabbix 入门

安装

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202304111723534.png

这里选用了如上的配置

1. 安装 Zabbix repository

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
sudo apt update

2. 安装 Zabbix server,Web 前端,agent

apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

3. 创建初始数据库

create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;

4. 导入初始架构和数据

zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

5. 配置数据库

编辑配置文件 /etc/zabbix/zabbix_server.conf

正则表达式入门

元字符

特殊单字符

. 任意字符,不包括换行

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121437456.png

\d 任意的数字

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121439070.png

\D 任意的非数字

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121439355.png

\w 任意的字母、数字、下划线

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121441651.png

\W 非字母、数字、下划线

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121442574.png

\s 空白符号

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121443512.png

\S 非空白符号

https://blog-img-1259526442.cos.ap-nanjing.myqcloud.com/202305121443352.png

空白符号

  • \r 回车

  • \n 换行

  • \f 换页

  • \t 制表符

  • \v 垂直制表符

  • \s 任意空白符 \s 能匹配上各种空白符号,也可以匹配上空格。换行有专门的表示方式,在正则中,空格就是用普通的字符英文的空格来表示。

Docker 入门:从安装到实战的完整指南

Docker 是目前最主流的容器化工具,它将应用及其依赖打包成一个轻量级、可移植的容器,解决"在我机器上能跑"的经典问题。相比传统虚拟机,Docker 容器共享宿主机内核,启动速度从分钟级降到秒级,资源占用也大幅降低。

核心概念

在使用 Docker 之前,需要理解三个核心概念:

概念 说明 类比
镜像(Image) 只读的应用模板,包含代码、运行时、依赖 Java 的 .class 文件
容器(Container) 镜像的运行实例,可读写 JVM 中运行的进程
仓库(Registry) 存储和分发镜像的服务 Maven Central

它们的关系:从仓库拉取镜像,用镜像创建容器运行。

Javascript 宏任务和微任务

宏任务

由宿主发起的任务称为宏观任务。
例如setTimeout函数创建的就是宏任务,当前的脚本执行也是宏任务。

setTimeout(() => {
  console.log("Hello");
}, 100);

微任务

由 JavaScript 引擎发起的任务称为微任务。
微任务的主要来源是Promise。 在 JavaScript 的事件循环中,当期宏任务执行完或者如果调用栈为空的时候,会检查微任务队列,如果队列不为空,会执行微任务队列中的任务。

Vim 实用技巧速查

Vim 的学习曲线陡峭,但一旦掌握常用技巧,编辑效率会远超普通编辑器。本文整理日常高频使用的 Vim 操作,按场景分类方便速查。

模式与基础操作

Vim 有四种主要模式:

模式 进入方式 用途
Normal Esc 移动光标、删除、复制等操作
Insert i / a / o 输入文本
Visual v / V / Ctrl+v 选择文本
Command : 执行命令(保存、替换等)

常用移动

按键 作用
h j k l 左下上右
w / b 下一个/上一个单词开头
0 / $ 行首/行尾
gg / G 文件开头/末尾
Ctrl+d / Ctrl+u 向下/向上翻半页
% 跳转到匹配的括号
f{char} 跳转到当前行下一个 {char}
; 重复上次 f 查找

常用编辑

按键 作用
dd 删除当前行
D 删除到行尾
dw 删除一个单词
yy 复制当前行
yw 复制一个单词
p 粘贴
u 撤销
Ctrl+r 重做
. 重复上次操作

文本对象

Vim 的文本对象让操作更精确,格式为 操作 + 范围 + 对象