最新回答 / 枫荇
您好!@lancoliu case语句是保证不了原子性的。但可以使用case语句来测试执行值的分支,最终来确定要更新的值。update 语句是执行在事务之中,不管是自动提交还是手动提交,都存在一个事务,那么在这个事务中是满足原子操作的。case语句和原子性没有任何关系,并不能保证原子性,只是用在分支测试而已,课程中的案例是用在update 语句中,简单理解就是数据库事务中的if else代码判断而已。
2019-04-29
讲师回答 / 枫荇
@qq_慕雪2491004这个是写的一个bug,哈哈,不过问题不大,缺少自动化测试代码录制课程时没有发现,下面是同学的bug解决方法,请移步参考:https://www.imooc.com/qadetail/303903
2019-04-20
讲师回答 / 枫荇
嗯,是的,课程中的main方法只是演示,并不是生成一个真实的红包序列,但同样的代码我在mac下也不会出现生成同样的数字的现象,这个问题还是需要找到原因的。你的代码实际上是生成了一个真实的序列,是没有问题的。
2019-04-15
讲师回答 / 枫荇
@我們啲承諾 这个是写的一个bug,哈哈,不过问题不大,缺少自动化测试代码录制课程时没有发现,下面是同学的bug解决方法,可以参考https://www.imooc.com/qadetail/303903
2019-04-02
讲师回答 / 枫荇
您好!这个问题是因为无法访问谷歌地址的原因,可以通过手动下载GitHub上的代码来解决:cd /path/to/$GOPATH/src/golang.org/x/ git clone https://github.com/golang/oauth2.git同样的方法适用于golang.org/x/中所有的包,这些包都可以在https://github.com/golang仓库中找到。
2019-03-27
讲师回答 / 枫荇
@Q646448149 您好!这个案例中关键的逻辑是对数据版本字段的维护和使用数据版本字段进行CAS。第一个问题:通过在where条件中添加数据版本字段的验证,来确定要更新的数据是最新的才能被修改;如果已经被修改,数据版本就会被更新,那么当前更新就要被更新失败。第二个问题:这种方案不通用,但在很多场景中来代替锁,简单说就是避免使用锁来优化性能。
2019-03-03