书香雅阁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 267|回复: 0

【请求序号的作用】

[复制链接]

384

主题

407

帖子

158万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1581367
发表于 2024-3-11 04:50:59|字数:593 | 显示全部楼层 |阅读模式
LV10 站长

图片.png

这个参数主要是为了防止记录时多线程冲突的

例子:假如我要编写一个记录的功能

目前一般能取到的时间极限是毫秒,那么假如两条请求同时到达,并且,ip来源、get数据、post数据全部相同,那么如何加以区分,因为我们要记录2次,记录的标志头如何写?但是引入了请求序号这个参数后,再配合取时间戳函数,则可以从理论上避免上述的情况

请求序号和传递序号的区别:
1:请求序号每次程序重启则会自动重置为0,传递序号是记录在本地的
2:请求序号是全局序号,传递序号是子程序的,也就是单次启动后,传递序号会相同相同的,请求序号是唯一的
3:请求序号一般用于记录相关(防止数据同时到达导致记录覆盖),传递序号一般用于取数据(确保多个客户端可以取到不同的数据)

请求序号的设计由来
在设计的时候,考虑到了记录的需要,根据测试,取13位的时间戳(毫秒级)可以确保同一个子程序中的2条记录值有不同的记录名,但是如果不同的子程序有同一个需求,是否会导致无法区分记录名?因此我想到了传递序号
因为传递序号在子程序范围里具备了唯一性,但是关键在于,EWEB可以加载多个DLL,也就是子程序名称可以重复,因此要想取得唯一标志,则需要进行DLL名称+子程序名称+传递序号+取13位时间戳的算法确保每一条数据都有唯一的标志,但是这太麻烦了,因此最终设计出了请求序号

请求序号+取13位时间戳可以确保每一条数据都有唯一的标志
034627gijsx9o93cs3scc3-1.png


点击返回: 【EWEB总览】


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|书香雅阁论坛 ( 湘ICP备17011672号-3 )

GMT+8, 2024-5-3 12:04 , Processed in 0.121162 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表