//时间原因,未能详细介绍qwq
语法:
练习:
- 基于 Go 语言构建企业级的 RESTful API 服务
- 设计模式
- 7天用Go从零实现Web框架Gee教程 框架:
- gin
- go-zero
- beego 规范:
- uber-go/guide 的中文翻译 微服务与工程:
- go-kit
- 极客go训练营的笔记
目前用到比较多的库 web:
- gin
- cli:
- urfave/cli
- cron
微服务:
数据库、cache:
第三方:
日志:
其他:
在线词典
步骤
抓包 复制curl ↓ 生成代码 Convert curl commands to Go
strings. NewReader ()将字符串转化为流 defer 结束后从下往上触发(栈)
↓ 生成 request body ↓ 解析 response body JSON转Golang Struct - 在线工具 - OKTools
序列化:json. Marshal 反序列化:json.Unmarshal 序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
SOCKS5 代理服务器
原理
步骤
TCP echo server 用于测试
bufio. Newreader ()带缓冲的流,作用是减少底层系统调用的次数
cancel 函数,当数据交换完成时,也就是 cancel 函数被调用的时候,ctx.Done 函数被执行,主进程才继续往下执行。
net.Listen函数接受两个参数(IP:Port),表明了服务器的类型和监听的 IP 地址,返回监听对象 listener 当listener.Accept()函数被调用时,程序会陷入阻塞,直到接收到建立连接的请求时。函数返回 Conn
补充
listener.Accept() 用于接受客户端的连接请求,一旦有客户端连接进来,它将返回一个 net.Conn 接口
net.Listen 用于在指定网络和地址上监听连接。返回一个 net.Listener 接口,可以接受客户端连接请求
net.Dial 用于建立到指定网络和地址的连接,返回一个 net.Conn 接口,用于与服务器进行通信
net.ResolveIPAddr 和 net.ResolveTCPAddr: 用于解析主机名和端口,返回一个 net.IPAddr 和 net.TCPAddr 对象,以便在网络操作中使用。
net.LookupIP 和 net.LookupHost : 用于查询给定主机名的 IP 地址或者反向查询给定 IP 地址的主机名。
net. DialTimeout 和 net. ListenTimeout: 类似于 Dial 和 Listen,但可以指定一个超时时间,用于限制连接或监听的等待时间。
net.Conn 接口方法: 除了 Write 和 Read,net.Conn 接口还有其他方法用于设置超时、关闭连接、获取本地和远程地址等。
net.PacketConn 接口: 用于在数据报传输层进行通信,支持的协议包括 UDP、IP 和 ICMP。
net.Interface 和 net.Interfaces: 用于获取网络接口信息,如网络接口的名称、硬件地址等。
net.JoinHostPort和 net.SplitHostPort: 分别用于将主机名和端口合并为一个地址字符串,以及将地址字符串拆分为主机名和端口。
net.ParseCIDR: 用于解析 CIDR(无类别域间路由)格式的网络地址。
net.LookupPort: 通过服务名查找对应的端口号。
net.ErrClosed 和 net.ErrWriteToConnected: 表示常见的错误情况,如连接已关闭、尝试在连接上执行写操作等。
bind
操作用于将一个套接字(socket)与特定的本地网络地址(IP 地址和端口号)绑定在一起,以便在该地址上监听连接或者进行数据通信。用于指定服务器监听的地址和端口。
在 Go 语言的 net 包中,bind 操作通常是通过创建一个 net.Listener 对象来实现的,而不需要显式地调用 bind 函数。net.Listener 的 Listen 方法会隐式地执行 bind 操作。
context.Background () 是 Go 语言中的一个函数,它返回一个空的 Context 对象。
Context 类型是 Go 语言中用于控制并传递请求范围数据、取消信号和截止时间的机制。Background () 函数返回的 Context 对象通常用作整个应用程序的顶级 Context,也可以作为其他 Context 对象的父级。