这是我参与「第五届青训营 」笔记创作活动的第2天
一、本堂课重点内容:
- 本堂课的知识要点有
- 实现一个随机数的猜测:生成随机数,读取输入。
- 实现一个在线词典:发送合同谈判请求,解析json格式
- sockss5 代理
二、详细知识点介绍:
- 1,生成随机数:需要先生成一个随机数种子,不然会老是生成同一个随机数 `
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)`
- 2,读取一行输入
`
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
- 3,在线词典:
- 调用第三方,并且打印出来(发送http请求,解析json
- win11:在浏览器按F10,点击网络——Fetch/XHR ——dict——右击选择复制为cURL(bash)复制到Convert curl commands to Go (curlconverter.com),就可以生成第一个版本
- 使用 oktools.net/json2go 将返回的json字符串生成相应的结构体,然后利用json.unmarshal将body反序列化到这个结构体中
- 最后打印出我们所需要的内容
- 4,sockss5 代理介绍
- 四大阶段
- 协商阶段
- 请求阶段
- 建立阶段
- relay阶段
- 先用net.listen去监听一个端口 会返回一个server
- 一个死循环 每次接受一个accept 然后执行process函数
- 用bufio.NewReader来创建一个带暖冲的只读流
- 调用auth函数,认证阶段
- 调用connect函数,实现请求阶段,对报文进行分析,建立端口链接,实现双向转发数据
- 四大阶段
三、实践练习例子:
- 对于课程提供的代码,加上注释,可以起到深入理解的程度。
- 对于每一个代码都是渐进式的发展可以按顺序看下来,一步一步去理解代码的含义。
四、课后个人总结:
- 对于基础的语法知识进一步巩固,学习到了
net.Listen 端口监听
bufio.NewReader 带缓冲区的只读流
reader.ReadByte() 读一个字节
go关键字:代表启动一个goroutinue