展开目录
感谢beego陪伴我度过那不靠谱的半年
golang
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

现在终于正式和一泡污一样的beego说再见了,真是可喜可贺~

标题上提到的beego,我的网站有一个核心功能session用到了它提供的模块。但这个模块的设计十分反人类:

结果,我用这个session模块来做验证码功能时,特定时间段特定用户会一直出现:即时输对了也对不上号,因为特么上上次请求生成的验证码才是你需要输入的。

开始一切都没有,我只能选择用这个不靠谱的session模块。现在有时间了,我直接自己实现了一个session模块替换了它,终于再也不出现这个其妙的问题了。

初接触golang做网站时,发现上手最大的问题并不是语法点多,而是各种官方模块的缺少,因此我做网站时首先给予自己所掌握的mvc常识实现了一个简单的后台框架,然后一些容易实现的细节就自己写掉了,而较繁琐的点,例如 formdata表单处理sessionmysqlwebdev 等则用了别人的模块直接装上去。就这样一部拼拼凑凑的破车也挂了个golang的牌挤上了互联网的大桥,开启了漫长而看不到尽头的开发之路。

做了大半年,用了第三方模块大都是比较靠谱的,mysql可以说是一次差错都没有出现过,结巴分词虽然有几次引起了进程直接崩溃的错误,但后来调整了使用方式,渐渐地这个问题出现频率减少到可以忽略的地步了。

用golang遇到过最大的问题就是进程崩溃。但偏偏这个问题是不可能完美解决的,因为任何一次新功能上线都有可能因某一处差错而产生意外。所以我自己实现了一个守护进程的方法,让跑崩掉的进程崩溃日志写到文件,然后自动重启。

其实直接用golang而不封装一些基础类型的方法来写一个网站那是不可能的,除非真的有这么多人力可以被挥霍。我从一个javascript工程师的角度来谈这个问题,是因为javascript支持了太多有用的数据类型了,而最有用的 ArrayObject偏偏golang没有提供原生支持,String原生支持也有隐藏坑:

其他还有一些经历暂时想不到,以后有时间再记录吧。

相关文档

  1. golang 实现mysql Quote方法

  2. golang 限制goroutine并行个数

  3. golang 解压zip文件

  4. gb2312字符串转utf-8

  5. otto踩坑:substr()遇到utf8出错

  6. otto踩坑:vm.Interrupt导致goroutine无限增加

  7. http.ResponseWriter.Header().Set()不是线程安全的!

  8. 利用golang的反射实现类似js中的apply方法

随便看看

  1. windows电脑防止自动休眠

  2. word文件命令行打印

  3. sass变量和继承类写法

  4. npm远程服务器某些配置不兼容代理的解决办法

  5. nginx用域名来转发请求

  6. npm包命令行调用

  7. git删除远程分支

  8. html5 全屏代码

  9. nodejs俄罗斯方块

  10. heroku登陆cli

  11. mongodb 批量修改字段语句

  12. 模拟307跳转情况

  13. 树莓派 3B/3B+ usb启动

  14. 单页应用的单向数据流的流程图

  15. putty使用http代理连接服务器

  16. git配置服务端支持http认证

  17. mysql导出csv文件

  18. sendmail用nginx做代理

  19. mysql选取内容导出到文件

畅言模块加载中