数值计算锁定ruby
我正试图实现一个id混淆方案,在别处借用了一个简单的散列。我在应用程序助手上添加了一个方法:数值计算锁定ruby,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我正试图实现一个id混淆方案,在别处借用了一个简单的散列。我在应用程序助手上添加了一个方法: @@M_ID = 2**31-1 @@PRIME = 1580030173 @@PRIME_INVERSE = 59260789 # (calculated from MAXID and PRIME offline) def obfuscate_id(x) if x return ((x * @@PRIME) & @@M_ID) else
@@M_ID = 2**31-1
@@PRIME = 1580030173
@@PRIME_INVERSE = 59260789 # (calculated from MAXID and PRIME offline)
def obfuscate_id(x)
if x
return ((x * @@PRIME) & @@M_ID)
else
x
end
end
出于某种原因,无论何时调用,ruby都会锁定,并开始占用mac上的磁盘空间。。。喜欢它。有什么想法吗?你确定
x
是一个数字吗?如果x
是一个字符串,我可以看到这种情况发生——在Ruby中,字符串乘以数字可以让您重复字符串连接:
irb(main):004:0> "hi" * 32
=> "hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi"
而且你的@@PRIME
肯定足够大,可以消耗大量的内存。如果是这种情况,将添加到_i
应该可以修复它(并且您的条件可能会消失):
希望有帮助 你确定
x
是一个数字吗?如果x
是一个字符串,我可以看到这种情况发生——在Ruby中,字符串乘以数字可以让您重复字符串连接:
irb(main):004:0> "hi" * 32
=> "hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi"
而且你的@@PRIME
肯定足够大,可以消耗大量的内存。如果是这种情况,将添加到_i
应该可以修复它(并且您的条件可能会消失):
希望有帮助