
1 geek123 2016 年 5 月 12 日 |
2 iiduce 2016 年 5 月 12 日 Django 真没什么可带的,官方文档写的太好太详细,看一遍,写个博客程序,就入门了。 剩下的的就是了解你需要的各种中间件、插件的使用,用哪个学哪个,基本都是看官方文档就可以了。 |
5 sudo987 OP @iiduce 请问 F()解决 race condition 是怎么个原理,官方教程说的是在 save 之前总会用的是数据库的值而不是本地取下来的值,看源码也没太看明白。 |
6 virusdefender 2016 年 5 月 12 日 via Android @sudo987 save 会更新所有字段,这时候数据库可能已经变了,看 https://virusdefender.net/index.php/archives/276/ |
7 sudo987 OP @virusdefender UPDATE `account_user` SET `age` = (`account_user`.`age` - 100) WHERE `account_user`.`id` = 8000 问题在这儿, F 完成的是更新数据之前总会取数据库最新的值,但是如果在 account_user.user 获取之后数据库发生改变,那岂不是又发生 race condition 了么? |
8 neoblackcap 2016 年 5 月 12 日 @sudo987 你看到是这样,但是底层的 InnoDB 引擎已经将你要修改的 row 隐式加了锁了,自然就解决了 data race 了 |
9 sudo987 OP @neoblackcap 给力!在哪里可以看见代码? |
10 neoblackcap 2016 年 5 月 12 日 @sudo987 你看 MySQL 的文档就知道了,而且 @virusdefender 的文章不是说了吗?是当你选中主键的时候才会是这样,而且要加事务。 我是不建议大家写这样的代码,要加锁的话就显式加上就好了,维护者会更加明确。毕竟这样的隐式加锁依赖于数据库的实现,不同数据库有不同的表现,不同存储引擎也有不同的表现。 |
11 sudo987 OP @neoblackcap 谢谢。 |
13 lyhapple 2016 年 5 月 12 日 这世道,没票子,谁带你哦,哈哈,自学成材吧 |
14 wenbinwu 2016 年 5 月 12 日 看源码,没那么难 |
15 qile1 2016 年 5 月 12 日 via Android qq 比较合适吧,微信发个文件,电脑操作太难, djanjo 是那个各种模块都弄好的,还是 flsk 有都现成,准备学 djaonj ,用 flsk 写个小程序,没错,先用 fksk 先 dns 更新,然后在用 djanjo 开发,一起开发个项目,有钱分可以不?我 QQ14 九零二一唔医二 |
17 zhaojames077 2016 年 5 月 12 日 @qile1 这回复看醉了。。。 |
18 smallerpig 2016 年 5 月 12 日 |
19 qile1 2016 年 5 月 12 日 via Android qq 比较合适吧,微信发个文件,电脑接收操作不方便,截图什么的我也没用过, django 是那个各种模块都弄好现成能用的,还是 flask 有都现成,准备学 django ,我 QQ14 九零二一唔医二 |
20 ayaseangle 2016 年 5 月 12 日 via Android 酱狗 |