基于go的二维码签到系统

suoluoji · · 3649 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


公司最近在搞go语言学习小组,于是3个人一起组队,做了一个简单的签到系统, 见链接:

https://github.com/suoluoji/signIn


0.模块组成

db模块、go-server模块,html文件模, 二维码制作

db模块负责和数据库的交互,封装起来,做一些简单的insert/update工作

go-server模块:本来想用https://github.com/go-martini/martini 这样的web框架,组内人有不同意见,于是保留

html文件模块:一些页面相关的东西在里面

说明:这个里面有很多东西可以改进的地方那个,比如db从配置文件中读取,而不应该写在代码中;webserver模块的性能测试,可以看看go的web性能;db模块可以封装的更好点等等,后续在慢慢改进吧

1. db模块介绍

1.1 db driver选择

go相对与其它语言的,感觉driver模块并不是特别成熟,许士伟在《go语言编程》中说七牛的整体框架都基于go搭建的,真希望有天他们能开源出来,哈哈,题外话,暂时略过。
mymysql与go-mysql-driver性能比较这篇文章中详细比较了几个方面,可以看出go-mysql-dirver的对于使用者并不是特别的友好(自我感觉),主要一点就是select的scan操作比较繁琐,这点mymysql的查询结果直接支持map操作要好很多,当然,最后还是选择了go-sql-driver,受这篇文章影响较多,下来可以详细研究下两者的实现方式,在做具体的分析

1.2  代码介绍及pkg的封装

在dao中定义了一个UserInfo的struct,有Username, Phone, Id,这里之所以大写研究过go的应该清楚,如果struct中的变量名是小写开头的,在模块外是例外,当然test不算的;
同行做了一个简单的封装,把*sql.DB隐藏在UserDB中,在模块外是不可见的。

为了测试这个模块,引入了testing的功能,对GetUser/SaveUser/SaveSigninLog几个功能做了简单的测试,事实证明,函数确实有点小的问题, dao_test..go代码如下:
 
封装的pkg的几个步骤如下:
go build dao
go test  dao
go install dao
这样,在我们的pkg目录下就会发现有dao.a文件生成(这点真是麻烦。吐槽一下 。


更新了好久竟然没有更新完毕,好吧,最近比较忙,今天又要开始使用celery了,去了解下rabbitmq 和redis的一些使用吧






本文来自:CSDN博客

感谢作者:suoluoji

查看原文:基于go的二维码签到系统

3649 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传