问题标签 [data-consistency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 如何生成验证码/号码?
我正在开发一个应用程序,用户必须拨打电话并使用手机键盘输入验证码。
我希望能够检测他们输入的数字是否正确。电话系统无法访问有效号码列表,但它会根据算法(如信用卡号码)验证号码。
以下是一些要求:
- 输入有效的随机码一定很困难
- 如果我打错字(数字换位,错误数字),一定很难有一个有效的代码
- 我必须有合理数量的可能组合(比如说 1M)
- 代码必须尽可能短,以避免用户出错
鉴于这些要求,您将如何生成这样的数字?
编辑 :
@Haaked:代码必须是数字,因为用户是用手机输入的。
@matt b:第一步,代码显示在网页上,第二步是调用并输入代码。我不知道用户的电话号码。
跟进:我发现了几种算法来检查数字的有效性(请参阅这个有趣的 Google 代码项目:checkDigits)。
constructor - 你应该在构造函数中检查错误的参数值吗?
您是在每个构造函数中检查数据有效性,还是只是假设数据正确并在参数有问题的特定函数中抛出异常?
algorithm - 使用什么算法来计算校验位?
使用什么算法来计算数字列表的校验位?
列表的长度在 8 到 12 位之间。
另请参阅:
如何生成验证码/号码?
sql-server - SQL Server 中的“最大允许触发深度”?
我知道“允许触发器触发其他触发器”服务器设置,它允许触发器执行的操作触发另一个触发器(或不触发),据我所知,我唯一的选择是 True(允许触发器触发其他触发器,这可能导致无休止的递归)或 False(触发器采取的操作不会触发任何其他触发器,这可能会导致意外结果或不一致的数据)。
有没有办法在 SQL Server 中强制执行“最大触发深度”?如果重要的话,我正在使用 2008,尽管我不知道任何版本(或任何其他 RDBMS 中的功能,就此而言,尽管我的知识是有限的)。例如,这就是我想要的:
- 将“最大触发深度”设置为“2”。
- 我在 table1 中插入一行
- table1 上的触发器插入 table2
- table2 上的触发器插入 table3
- table3 上有一个触发器会插入到 table4 中,但由于最大深度为 2,因此触发器不会运行(不太理想,但与 SQL Server 上当前的“递归触发器 = False”行为一致),或者整个插入集被回滚并失败并出现错误,例如“超出最大触发深度 (2) - 插入失败”消息(理想)
有没有人知道这是否可能,或者是否有针对此行为的出色功能请求?如果我疯了并且这是一个糟糕的行为想法,我对此持开放态度,但我想知道为什么(无意后果等)。
java - 在这种并发情况下如何确保数据一致性?
问题是这样的:
- 我有多个竞争线程 (100+) 需要访问一个数据库表
- 每个线程将传递一个
String name
- 该名称存在于表中,数据库应返回该行的 id,该名称尚不存在,应插入该名称并返回该 id。 - 数据库中只能有一个实例
name
- 即。名称必须是唯一的
如何确保线程一不会name1
在线程二也尝试插入的同时插入name1
?换句话说,我如何保证name
并发环境中的唯一性?这也需要尽可能高效——这有可能成为一个严重的瓶颈。
我正在使用 MySQL 和 Java。
谢谢
database - 数据完整性和数据一致性之间有什么区别吗?
我对data consistency
and有点困惑data integrity
。来自Oracle 数据库概念:
来自维基百科
data consistency
那么和 和有什么区别data integrity
呢?
提前致谢。
md5 - adler32 校验和的可靠性如何?
我想知道 adler32 校验和与 md5 校验和相比有多可靠?维基百科上告诉我们,adler32 比 md5“更不可靠”,所以我想知道多少,以及以何种方式?
更具体地说,我想知道它是否足够可靠,可以作为长期存档 20GB+ (tar)文件的一致性检查?
ruby-on-rails - Rails 对记录更新的一致性检查
我将启动一个系统,我们选择了 rails,因为它涵盖了我们所有的需求。
我们需要在系统的某些点上保持数据库更新的一致性,我记得我在一些官方文档中发现 rails 可以自动检查记录的版本,但是我用谷歌搜索了很多,我再也找不到那些页面了。
问题如下:
- 假设数据库的一张表中存在一条记录。比方说,一个“帐户”。
- 假设名为 Bob 的用户找到了该记录并开始对其进行编辑。假设用户将其名称从“Incomings”更改为“Sales”。
- 假设在 Bob 正在编辑记录时,另一个名为 Susan 的用户找到了完全相同的记录并开始对其进行编辑。假设 Susan 要将帐户名称从“Incomings”更改为“Service fee”。
- 然后,Bob 保存他的更改。
- Bob 保存他的更改后,Susan 尝试保存她的更改。
此时,系统应通知 Susan 另一个用户已更改记录,她的更改无法保存。
我可以手动进行此验证,但我记得这可以由 Rails 自动完成。我记得唯一需要验证的数据库表的要求是添加一个“版本”列,Rails 会处理这个问题。真的,我不记得该列是否必须称为“版本”或其他名称,但事实是只有一个列启用此功能。
问题是我再也找不到该文档了。如果有人可以向我提供该文档的链接,我将不胜感激,因为“版本”列的要求是我记得的全部内容,我不知道我必须注意哪些其他事情。
提前致谢。
webserver - 在访问 Web 服务器上的文件时保证一致性
我正在为应用程序构建一个简单的更新服务器。正在更新的应用程序部分是配置文件;这些文件的最新副本存在于更新服务器上,并且这些文件可以由管理应用程序的个人(“应用程序管理员”)随时编辑。但是,我不希望应用程序能够在应用程序管理器编辑文件时下载这些文件之一;这显然会导致一致性问题。如何防止这些文件以不一致的状态被访问?或者,解决方案是提供校验和以及应用程序可以用来确定文件是否以一致状态接收的文件?
编辑:我看过这篇关于使用 .htcaccess 的访问限制的帖子,并认为它可能有用。但是,我希望应用程序管理器尽可能少地思考;让他们忘记重新允许连接可能会有问题。话虽如此,他们将不得不在某个时候做一些工作。也许这就是我应该走的路?
python - python代码中的Solr一致性
我已经在多台分析机器上运行了 python 代码,每台机器都从 solr(选择操作)中挑选文档,并通过重新提交带有来自 DB 的更新字段的文档(在更新/插入的情况下)来修改 solr 中的数据。但是由于不同机器上的不同solr实例都有自己的更新文档,这导致了机器之间的数据不一致。
有什么办法可以保留一个中央 solr 文档存储库,由不同的机器查询和更新,从而确保数据的一致性?