更新
最近博客没更新是因为一直在忙,毕设只做了一点,然后就去接外包了。
这次接的外包总的来说就是钱少事多。
linux服务器遇见的问题
我完成了一大壮举,使用了rm -rf /*,删除了服务器的所有文件,这次属实怪我,真成段子了。
熟悉了部分命令
- rm 删除命令
- unzip解压命令
- lsof查看端口命令
- kill等命令
- mysql在linux的日常使用命令
- ls等获取路径和路径选择等命令
代码问题
Go
这次单子的主要逻辑和bug是数据库和json转换问题。
uc支付回调会重复多次,而这套游戏框架的源码有bug,自定义的命令完全不行,如:
只是简单的插入,他却使用自己定义的命令,无法正常插入表,打开的数据库连接和连接池设定也有部分问题,
由于无法正常插入而导致的重复服务器发货问题,还得自己解决。
好累.jpg。
uc回调后的数据被解析为byte字节数组,转化为string时,发生了不能将url编码过的encode编码解析,而应为位数不符合3特殊字符,而部分内容无法解析,如:
url.QueryEscape()
这个命令完全不行,而我想了想,觉得可以使用这样的方案来解决:
str:=string(this.Ctx.Input.RequestBody)
strbody,_:=url.ParseQuery(str)
strbody["biz_content"][0], _ = url.QueryUnescape(strbody["biz_content"][0])
这样将没有正常进行转换的那一部分给转化,这样就能成功。
友情提示:当字符没有经过encode正常解码(特殊字符同样)时,进行json的二进制流编码转化会报错。
而json转化必定失败,于是只能这么操作:
ob.App_id=strbody["app_id"][0]
ob.Client_id=strbody["client_id"][0]
ob.Biz_content=strbody["biz_content"][0]
ob.Nonce_str=strbody["nonce_str"][0]
ob.Sign=strbody["sign"][0]
ob.Sign_type=strbody["sign_type"][0]
ob.Version=strbody["version"][0]
这样我看着也非常蠢,有算法可以优化,但是钱给的少,没必要(冷漠脸)。
上限服务器遇见过的问题
- root 权限才能正常运行文件,需要给予权限进行端口占用
- 使用Go生成的二进制文件需要足够的权限
- beego的日志包和logrus包有bug冲突,判断时hook问题
- linux有些时候数据文件夹不见了,可能是未挂载数据盘的问题
- linux不要用高权限来做危险操作
- rm命令,不要图方便用它
不要用rm等危险命令了,我都成段子了。
1 条评论
牛啊!玉衡!OωO