第二次笔记|青训营

136 阅读2分钟

实践案例

猜谜游戏:生成随机数字,让玩家猜测

1、 生成随机数:fmt math/rand 包 设置随机数种子 rand.Seed(time.Now().UnixNano())利用系统时间戳来设置随机数种子。

2、 读取用户输入的数字:输入的数据需要利用fmt.printIn 或者scanf来读取,并对应取出空格等错误格式的数据

3、 实现游戏循环,效果

在线词典:解析json文件,对外接口API,如何提高代码效率

以彩云翻译为例,输入一个词,点击对应按钮进行翻译、音标、wiki等功能的实现

1、 代码生成:创建请求,设置请求头,发起请求,读取响应 生成代码解读

2、 生成request body 与json一一对应,将response 反解析化,同样写一个与返回的response一一对应的结构体 仍需使用到代码生成部分的知识及相关代码。(fmt.unmarshal反序列化)

3、 打印结果:将所得的已有数据进行处理后,写入printf代码中进行打印输出。同时要注意检查输出的数据的正确性。并进行进一步的代码完善

Socks5代理服务器:明文传输的代理服务器,确保管理员能够通过特定端口访问内部资源,服务器原理介绍:协商阶段——通过协商——发送请求——建立tcp链接——返回响应——返回状态——发送数据——relay数据——响应结果(client server host)

1、 TCP echo server(输入什么就输出什么)的基本实现:导入的包有:bufio log net 关键在于process函数的实现,建立一个新的带缓冲的流来获取所需要的数据,并凭借它与外界端口进行对接

2、 Auth:在process函数中调用新写的函数来完成交互的部分——读取报文内容,(三个字段)协议版本号等等

3、 请求阶段:报文格式、各字符串所代表的意义:服务器版本号,请求类型,目标地址(某些地址或者域名),可变长度的值,目标端口等等,connection基本完成

4、 Relay阶段:真正与服务器进行连接。利用copy函数进行单向数据转化(dst->src)注意拷贝方向!!问题在于程序耗时较久,利用到withcancel机制。