Abstract
在参加字节跳动青训营的后端开发项目踩了不少坑,为了防止忘记这里先记录一些踩的坑(这样才能清掉我的几十个标签页)
Issues
1.Go私有仓库依赖
由于众所周知的原因,在大陆开发程序免不了和proxy之类打交道,go开发也不例外,使用goproxy是比较好的选择,但这样一来一些未被同步到的依赖就麻烦了。为了提取上传视频的首帧,我使用ffmpeg-go来操作,但是,在操作完成后我发现会输出一大串不必要的日志信息,然后再搜索issue的时候指向了pr的#81,这里面包含了silent()函数来关闭大量信息输出到控制台,遗憾的是虽然被merge了,却并没有发布到release,还是一年前的,无奈之下只得自行创建并发布release
要注意的点是,fork之后需要修改go.mod里的信息改成自己的仓库,然后,设置GOPRIVATE变量,这里我加入自己仓库为
go env -w GOPRIVATE="github.com/Shanwer"
之后便可以同步私有依赖了,这个参考了Go Mod引用私有库 (yii666.com),他还提供了除此之外的多个方法供以参考。
2.数据库相关
哥们才大一,数据库很多东西都是靠自学的,下学期的数据库原理还是基于SQL Server啥的,老师又摆,恐怕指望不上,这里记录一些常用的
重新设置自增列新的一列的自增值:
ALTER TABLE video AUTO_INCREMENT = 3;
设置表video的自增值为3后,插入的新的一列的自增值就为3,如果出于调试开发目的删除了带有自增值的列之后要记得进行这个操作
MySQL的时间戳记录:
mysql的默认时间戳记录形式是以 yy-mm-dd hh-mm-ss 的格式,在go中sql查询取出来后应该以[]uint8的类型存储,很奇怪吧,但就是这样
MySQL外键与版本和引擎的关系:
由于涉及到表的多对多关系,需要用到外键,但是又因为这个踩了好几个坑
首先为了省事我使用的是phpstudy面板来做本地测试,然而自带的MySQL版本是5.7.26,高版本才有外键功能,我不知道还折腾了半天,浪费好多时间
其次,高版本的MySQL,database就是schema,而表的引擎也决定是否可以使用外键,InnoDB引擎是可以的,然而默认的MyISAM引擎是不支持外键的,需要额外指定一下,这也是一个坑
一些吐槽:感觉优化和安全很多时候都是粗心大意,或者单纯的懒,其次才是做不到,连续写了6个多小时的代码后很多安全和优化问题我自己都懒得检查了,实现功能就万事大吉(
学习还是挺不容易的,开发小组里7个人已经被劝退了3个人,我还好声好气的怕人跑走,马上上学又要影响学习了,哎(
别的想不到了,上床休息去,想到了再写