论坛每个帖子都有一个id号,从1开始增长,每新增一个帖子,id增1
假设帖子有三项,id,文本和时间
在后端,设计一个类Article,类里就有三项:id, text, time
现在这个id增长有两种思路:
1) 利用数据库自增,id设为主键,启动数据库自增
2) 页面帖子前,利用ajax请求,取得数据库当前最大号maxid,然后帖子的id设为maxid+1
2)的思路在高并发的时候有问题,有可能多人同时发帖从而ajax请求获得同样的id,然后他们的帖子都是id+1
但是如果是1),那么提交帖子的时候,帖子数据只有两项,text和time
这样的话,后端可能就要设计两个类
一个Article有三项,id, text, time,另一个只ArticleWithoutID有两项 text, time
因为前端用户如果查看帖子,那么后端就要返回id, text, time三项了
但是要设计两个类,又感觉怪怪的
大家怎么看?
肯定是在服务器端自增,不然可能冲突的。
你可能会问,我都取了最大的为什么还会冲突。如果你知道为什么数据库会有锁这个概念,你就不会在这里迷茫了。
并发大的时候,可能是同时取得的最大ID,提交时,一个先一个后,就会导致一个提交失败。
另外前端数据可以伪造,作为程序员对前端的数据一定要持怀疑态度,要验证