1.1 作业如下:
- 做实验,要求如下:
- 无缓冲通道,读数据阻塞
- 无缓冲通道,写数据阻塞
- 有缓冲通道,读数据阻塞
- 有缓冲通道,通道数据已满,写操作阻塞
- 自行实现一个常驻进程,读取channel数据,要求如下:
- 将读取到的数据,写入日志
- 如果channel内没数据,定期刷新等待信息到屏幕
1.2作业目标:
- 通道无阻塞读写
- 练习select+定时器
2.1使用snow框架编写服务A和服务B,要求如下:
- 服务A为模拟网关,服务B为服务A的下游服务
- 服务A通过不同的请求方式请求服务B,至少包含以下几种请求方式:get、post非json方式、post的json方式,可以使用snow-core中的httputil
- 服务B对服务A的请求参数做校验,兼容上游服务同一个字段用不同类型传递,比如mobile字段,用数字(17310196126)和用字符串("17310196126")
- 服务A对服务B返回的消息必须做code值校验,比如0或者200为正常返回,同样要兼容下游服务对code字段返回用不同类型,比如code=200是float32,而code="405"为string
- 将上面两个需要兼容的情况,尽可能抽象成公用方法
- 服务A对服务B的访问要可以通过trace-id进行串联和排查
- 可用同一个服务的不同接口模拟服务A和服务B
- 至少将一个接口应用snow doc生成接口文档
- 服务A和服务B之间调用要有签名验证(自行设计)
2.2作业目标:
- 深入应用接口调用
- 要考虑弱类型语言和强类型语言的交互,考虑多种请求参数和返回参数不同类型的兼容方案,因为php向go迁移的过程中,go服务的上游or下游必定会有php服务
- 了解如何应用生成文档
3.1使用snow框架编写脚本,实现功能如下:
- 单条数据写入,必须带有时间格式字段
- 批量数据插入
- 单条数据更新,注意0值和非0值
- 批量数据更新
- 连表查询
- 使用事务
- 新建其他库的数据库连接
- 如何开启sql日志
- 如何使用原生sql
3.2作业目标:
- 深入使用xorm,为业务重构做准备
- 熟悉snow框架多种运行模式,为重构铺路
思考:Go中各种变量声明方式有什么区别?&&make与new的区别?
https://leetcode.com/problems/add-two-numbers-ii/
- 要求:go语言提交且ACCEPT