Skip to content

Latest commit

 

History

History
56 lines (48 loc) · 2.49 KB

week2.md

File metadata and controls

56 lines (48 loc) · 2.49 KB

一、应用实战是王道

1.【GROUP I】

1.1 作业如下:

  • 做实验,要求如下:
    • 无缓冲通道,读数据阻塞
    • 无缓冲通道,写数据阻塞
    • 有缓冲通道,读数据阻塞
    • 有缓冲通道,通道数据已满,写操作阻塞
  • 自行实现一个常驻进程,读取channel数据,要求如下:
    • 将读取到的数据,写入日志
    • 如果channel内没数据,定期刷新等待信息到屏幕

1.2作业目标:

  • 通道无阻塞读写
  • 练习select+定时器

2.【GROUP II】

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.【GROUP III】

3.1使用snow框架编写脚本,实现功能如下:

  • 单条数据写入,必须带有时间格式字段
  • 批量数据插入
  • 单条数据更新,注意0值和非0值
  • 批量数据更新
  • 连表查询
  • 使用事务
  • 新建其他库的数据库连接
  • 如何开启sql日志
  • 如何使用原生sql

3.2作业目标:

  • 深入使用xorm,为业务重构做准备
  • 熟悉snow框架多种运行模式,为重构铺路

二、纸上谈兵也重要

思考:Go中各种变量声明方式有什么区别?&&make与new的区别?

三、数据结go不可少 【非必选】

https://leetcode.com/problems/add-two-numbers-ii/

  • 要求:go语言提交且ACCEPT