Cwww3's Blog

Record what you think

0%

Map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// A header for a Go map.
type hmap struct {
// 元素个数,调用 len(map) 时,直接返回此值
count int
flags uint8
// buckets 的对数
B uint8
// overflow 的 bucket 近似数
noverflow uint16
// 计算 key 的哈希的时候会传入哈希函数
hash0 uint32
// 指向 buckets 数组,大小为 2^B
// 如果元素个数为0,就为 nil
buckets unsafe.Pointer
// 扩容的时候,buckets 长度会是 oldbuckets 的两倍
oldbuckets unsafe.Pointer
// 指示扩容进度,小于此地址的 buckets 迁移完成
nevacuate uintptr
extra *mapextra // optional fields
}
阅读全文 »

Slice

1
2
3
4
5
type SliceHeader struct {
Data uintptr
Len int
Cap int
}
阅读全文 »

使用 Kqueue 实现简单的 TCP 服务器

项目地址

设计

TCP 服务器由 TCP socket,来自客户端连接的 socket,kqueue 以及轮询 kqueue 的 event loop 组成。

image-20211223235715574

阅读全文 »

HTTPS

HTTP 由于是明⽂传输,所以安全上存在以下三个⻛险:

窃听⻛险,⽐如通信链路上可以获取通信内容,⽤户号容易没。

篡改⻛险,⽐如强制植⼊垃圾⼴告,视觉污染,⽤户眼容易瞎。

冒充⻛险,⽐如冒充淘宝⽹站,⽤户钱容易没。

阅读全文 »

Nginx

二进制安装

安装地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 解压nginx压缩包并进入nginx-1.20.2
tar -xf nginx-1.20.2.tar.gz && cd nginx-1.20.2

# 安装所需软件
yum install -y pcre pcre-devel #支持nginx的正则
yum install -y openssl openssl-devel #加密认证

# 执行./configure 配置环境 生成Makefile文件
# prefix指定安装的路径
./configure --user=nginx --group=nginx --prefix=/etc/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-pcre

# 编译并且安装
make&&make install

# 配置PATH路径
export PAHT=$PATH:/etc/nginx/sbin
阅读全文 »

HTTP

HTTP (HyperText Transfer Protocol)超文本传输协议

HTTP 是⼀个在计算机世界⾥专⻔在「两点」之间「传输」⽂字、图⽚、⾳频、视频等「超⽂本」数据的「约定和规范」。

阅读全文 »