论坛每个帖子都有一个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三项了
但是要设计两个类,又感觉怪怪的
大家怎么看?
Ia mesti ditambah pada bahagian pelayan, jika tidak, ia mungkin bercanggah.
Anda mungkin bertanya, mengapa masih terdapat konflik apabila saya telah mengambil yang terbesar? Jika anda tahu mengapa pangkalan data mempunyai konsep kunci, anda tidak akan keliru di sini.
Apabila konkurensi besar, ia mungkin ID maksimum yang diperoleh pada masa yang sama Apabila menyerahkan, satu pertama dan satu terakhir, ia akan menyebabkan satu penyerahan gagal.
Selain itu, data bahagian hadapan boleh dipalsukan Sebagai seorang pengaturcara, anda mesti ragu-ragu tentang data bahagian hadapan dan mengesahkannya
Pangkalan data perkaitan boleh menetapkan medan kenaikan automatik Anda tidak perlu menentukannya apabila memasukkan data Pangkalan data mengendalikan ID kenaikan automatik dengan sendirinya
Sudah pasti pangkalan data id akan ditambah secara automatik, dan bahagian hadapan pasti akan selesai jika konkurensi meningkat secara automatik. Bergantung pada keperluan anda, kelas boleh mengendalikannya sepenuhnya, ia tidak begitu rumit. (Penyelesaian ID meningkat sendiri adalah tidak baik dan tidak disyorkan untuk konkurensi tinggi)
1. Bahagian hadapan menghantar objek artikel ke pelayan, termasuk teks dan masa.
2. Pelayan menyimpan objek ini dalam pangkalan data, dan pangkalan data secara automatik meningkat untuk menjana id. Terdapat pemprosesan serentak di bahagian pangkalan data.
3. Selepas deposit berjaya, anda boleh mengembalikan keseluruhan data atau ID ke bahagian hadapan.
4. Bahagian hadapan menerima mesej kejayaan dan kemudian memaparkan siaran semasa dalam senarai. Pada ketika ini, ID siaran telah diperoleh dan boleh ditanya berdasarkan ID tersebut.
====
Adalah disyorkan untuk menjana ID rawak pada bahagian hadapan, supaya konkurensi yang tinggi pada bahagian pangkalan data tidak akan menyebabkan kehilangan prestasi disebabkan masalah kenaikan automatik.