自学go和beego项目笔记

自学go和beego项目笔记

  • 一个月的时间学习了go语言基础,之后开始着手用beego做项目,现在项目终于完结了,有时间总结一下自己的心得和笔记。

  • 能力一般,水平有限,错误之处敬请留言指正。

  • 项目简介

    • 项目一,主要用到beego框架,数据库redis,mongodb,mysql,第三方oss,云片短信,聚合数据,自定义header,restful风格接口,orm模型,命名空间路由等等。
    • 项目二,基于go语言gorilla包的websocket项目,涉及三方交互,设计模式观察者模式,统一接受,分开处理。
  • 项目一技术要点

    • 账户系统,采用jwt做token验证(jwt相较于传统session的好处在此不多说),实现账号密码登录,手机短信验证码登录,第三方微信QQ登录,短信验证码防刷机制(对同ip和同手机号进行单位时间请求次数限制)
    • token刷新机制,遵从oauth2.0协议,通过access_token和refresh_token分别分配不同的过期时间,进行验证刷新token。另外token中可以自由携带一些非重要信息,方便验证数据。
    • 数据缓存采用redis,自由选择使用几号库,redis.Dial(netWork, redisUrl, redis.DialDatabase(dataBase)),(关于redis相较于memcached优点,简单说明,redis内存型,io多路复用,单线程仍可高并发,避免了多线程频繁上下文切换,c语言实现,数据结构多,可用命令多,等等)
    • 数据存储,除了常规使用mysql,这里使用了mongodb,mongodb又名文档型数据库,适合存储 较长json结构数据。(项目有些json数据结构较长又没必要拆分,采用mongodb进行存储是最好的选择。)
    • 设计到用户头像,用户图片数据,视频数据等存储,项目对接阿里云oss实现文件直传,比普通上传(客户端传服务器,服务器再传oss),速度快好几倍,而且使用安全灵活。
    • 数据状态的使用。(数据状态好多种,这里简单就是返回数据id)
  • 项目二技术要点

    • 基于websocket的实时全双工通讯服务。
    • 设计模式观察者模式
    • 三方交互,app,服务器, 设备,做到实时通讯,实时监听,实时显示。
    • 自定义消息类型,json结构分为header和payload,header携带消息属性(包括消息id,消息类型,版本号),payload携带具体数据。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章