Skip to content

89trillion-fyz/go-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-project

go语言项目

demo1

基础需求:

整理士兵配置文件格式且只保留有用的数据,使用Gin开发一个服务。

1) 启动时读取app.ini 配置文件,监听配置中的http端口号,用户请求过来时,返回有用的士兵配置。

2) 启动时用github.com/spf13/pflag 来解析命令行参数传入的 config.army.model.json文件路径,整理格式且只保留有用的数据,生成新的json文件。启动时解析该文件。

仅部分下列逻辑中的士兵信息有用,其他部分无用,设计合适的数据结构处理数据并保存,并封装如下方法:

1)输入稀有度,当前解锁阶段和cvc,获取该稀有度cvc合法且已解锁的所有士兵

2)输入士兵id获取稀有度

3)输入士兵id获取战力

4)输入cvc获取所有合法的士兵

5)获取每个阶段解锁相应士兵的json数据

考核点: 1) ini读取解析、json解析

2) 设计的数据结构在面向对象上是否合理

3) 数据处理的完善程度,是否把处理数据的工作放在了获取数据的方法里

4) 高并发下访问方法的性能(需提供压测性能数据)

工程要求: 1) 接口文档

2) 代码结构拆分,逻辑分层,方便后续拓展

3) 需要处理错误等异常情况

4) 包含对应单元测试代码

5) 使用locust进行压力测试,有压测报告

demo2

  1. 计算器 使用Gin框架完成一个接口:请求参数一个字符串,包含正整数、加(+)、减(-)、乘() 、除(/)的算数表达式(括号除外),返回表达式的计算结果。表达式仅包含非负整数, +, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。

    示例 1:

    输入: "3+2*2+13" 输出: 20

    示例 2: 输入: " 3/2 " 输出: 1

    示例 3: 输入: " 3+5 / 2 " 输出: 5

    说明:你需要检查所给定的表达式是否有效;请不要使用内置的库函数 eval。 工程要求: 1)接口文档,主要逻辑的流程图

    2)代码结构拆分,逻辑分层,方便后续扩展支持% ^ 等运算符,方便支持根号等单 目运算

    3)需要处理错误等各种异常情况

    4)包含对应单元测试代码

    5)使用locust进行压力测试,有压测报告

    考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理,栈 ,atoi,单元测试,压力测试

demo3

基本需求:创建和验证礼品码 请开发一个服务,包含3个接口。 1)管理后台调用 - 创建礼品码:管理员在后台填写礼品描述、可领取次数、有效期和礼 包内容(例如金币、钻石),提交后返回一个8位礼品码,例如: GPA8X6TP 2)管理后台调用 - 查询礼品码信息: 填写礼品码,查询创建时间、创建人员、礼品描 述、礼品内容列表(物品、数量)、可领取次数、有效期、已领取次数、领取列表(领取用 户、领取时间)等信息 3)客户端调用 - 验证礼品码:用户在客户端内输入礼品码并提交,如果礼品码合法且未 被领取过,调用下方奖励接口,给用户增加奖励, 加奖励成功后,返回奖励内容供客户 端内展示。 说明: 1)礼品码分为三类:指定用户一次性消耗,不指定用户限制兑换次数,不限用户不限次数兑换 2)礼包内容可以包含:金币、钻石、道具、英雄、小兵等 工程要求: 1)接口文档,主要逻辑的流程图 2)代码结构拆分,逻辑分层,方便后续扩展 3)需要处理错误等各种异常情况 4)单元测试 5)使用locust进行压力测试,有压测报告 考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理, redis,mysql,单元测试,压力测试

demo3 新增加

  1. Mongo与Protobuf使用

    基本需求:创建玩家信息存储结构、使用礼品码 请基于【03题 Redis使用】修改或开发新接口:

    (1)【客户端调用, http】新增注册与登录接口:客户端传递唯一识别码(一个任意字 符串)至服务器,服务器通过该识别码判断是否存在该玩家:不存在则注册新用户 ,生成唯一UID;存在则返回用户登陆数据(唯一UID、金币数、钻石数玩)家。信息 储存在mongo数据库中

    (2)【客户端调用, http】验证礼品码接口修改:按照管理员所添加的金币与钻石奖 励数目,发放奖励存储至数据库。编译protobuf文件,将返回信息封装为protobuf 对象以 []byte 作为接口返回值返回给客户端。客户端接收到的是二进制序列,可 以编写单测函数通过protobuf的decode方法解析,自测内容正确性。

    说明:

    (1)UID可以为递增数或随机数,但需要保证唯一性

    (2)返回结构GeneraReward已经定义:增加量存在change中,余额存在balance 中返回,具体见附件

    工程要求:

    1)接口文档,主要逻辑的流程图

    2)代码结构拆分,逻辑分层,方便后续扩展

    3)需要处理错误等各种异常情况

    4)单元测试

    5)使用locust进行压力测试,有压测报告

    考核点:接口文档,流程图,代码结构(拆分mvc),基本服务器框架,错误处理, mongo,protobuf,单元测试,压力测试 附:protobuf定义文件

        syntax = "proto3"; package response;
        // 通用奖励消息
        message GeneralReward {
        int32 code = 1;
        string msg = 2;
        map<uint32, uint64> changes = 3; // 客户端展示奖励的部分 : 道具ID ->道具数量
        map<uint32, uint64> balance = 4; // 道具有变化部分的当前余额 : 道具ID -> 道具数量
        map<uint32, uint64> counter = 5; // 计数器当前值 : counterType -> 计数
        string ext = 6; // 扩展字段,IAP使用 
        }

About

go语言项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published