小编Ars*_*sen的帖子

可逆的"哈希"函数,从64位整数到64位整数

我需要的是一个可逆函数,它将(64位整数)转换为另一个数,对用户来说似乎是"随机的"(但实际上是确定性的),因此3个后续数字转换为3个数字彼此完全不同.

很容易做到这一点而不是可逆的,但事实证明这部分非常困难.

基本上它与可逆散列函数是一样的问题,但我需要超过2 ^ 32个不同的值.

有任何想法吗?

PS:我将用Java编写它,但问题本身非常通用.

algorithm combinations

7
推荐指数
1
解决办法
2200
查看次数

Spring中的事务原子性

SQL/Spring中的事务原子性意味着什么,它意味着什么?

我在考虑以下情况.如果我错了,请纠正我:

此代码不正确:

@Transactional
public void voteUp(long fooId) {
    Foo foo = fooMapper.select(fooId); // SELECT * FROM foo WHERE fooId == #{fooId}
    foo.setVotes(foo.getVotes() + 1);
    fooMapper.update(foo); // UPDATE foo SET votes = #{votes} (...) WHERE fooId == #{fooId}
}
Run Code Online (Sandbox Code Playgroud)

即使它的事务处理并不意味着"投票"的值总是会增加1,如果在很多机器/许多线程中同时调用voteUp?如果它是这样的话,那意味着一次只能执行一个事务,导致效率下降(特别是如果voteUp代码在事务中做了更多的东西)?

唯一正确的方法就是这样(?):

/* not necessarily */ @Transactional 
public void voteUp(long fooId) {
    fooMapper.voteUp(fooId); // UPDATE foo SET votes = votes + 1 WHERE fooId == #{fooId}
}
Run Code Online (Sandbox Code Playgroud)

在示例中,我使用myBatis连接到数据库,但我认为如果我使用hibernate或纯SQL语句,问题就会保持不变.

java sql spring transactions

6
推荐指数
2
解决办法
3139
查看次数

在javascript中对字符串使用除法运算符(/)

我意识到在javascript中所有101/100,"101"/ 100,101 /"100"和"101"/"100"导致1.01(在Chrome,FF和IE11上检查).但我找不到有关此行为的文档.

因此,我的问题是,如果(跨浏览器)使用此功能是安全的,并且如果这样做是一个好习惯(或者如果变量可以是字符串,则在分割之前使用parseInt)?

javascript

5
推荐指数
2
解决办法
2383
查看次数

标签 统计

algorithm ×1

combinations ×1

java ×1

javascript ×1

spring ×1

sql ×1

transactions ×1