Go项目笔记 | 青训营

122 阅读3分钟

//时间原因,未能详细介绍qwq

语法:

练习:

目前用到比较多的库 web:

微服务:

数据库、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 对象的父级。