在我们使用的java应用服务器上 RandomStringUtils.randomAlphabetic()
以迭代方式为重复出现的类似段落顺序创建html id。
通过这些生成的id,我们允许内部页面锚导航(没有单击时触发的页面加载)。
现在的问题是,我是否可以将这些生成的id也用于从外部页面链接到此目标的url?根据我的观察,对同一页的后续请求,会创建相同的id序列。如果生成的序列 randomAlphabetic
确实是可预测的(也可以通过多个页面加载),我们不仅可以使用这些链接进行内部页面导航,还可以使用从外部引用的链接,因为第一个、第二个、第三个。。。生成的id始终相同。
1条答案
按热度按时间r3i60tvu1#
如果段落的给定文本字符串的“随机”id总是相同的(也就是说,id仅仅是段落文本的函数),那么应该考虑哈希函数,而不是伪随机数生成器,例如
randomAlphabetic
. (我假设对于识别页面部分的用例,为不同的文本字符串生成重复id的风险可以忽略不计。但是,如果你不能容忍这种风险,就不应该使用散列函数。)有很多种散列函数用于此目的;甚至java.lang.String.hashCode()
因为该方法的java文档指定了它使用的确切算法,所以在这里可以使用。此外,
randomAlphabetic
不是你想要的“确定性”,原因有两个:无法设置该方法使用的基础生成器的种子(
RandomStringUtils
存储用未定义的种子初始化的静态prng变量,即new Random()
).的文档
RandomStringUtils.randomAlphabetic
(除其他外)RandomStringUtils
方法)没有指定用于生成随机字符串的确切算法。