在使用Postgres处理JDBC时......
Isolationlevel ="读取已提交"
当我在一些操作后尝试更新表时,我在多线程环境中遇到了同样的死锁.所以我尝试使用多个查询,如下所示
ps = con.prepareStatement("UPDATE TableA SET column1=column1-? WHERE column2=? and column3=?;"
+ "UPDATE TableA SET column1=column1+? WHERE column2=? and column3=?;");
Run Code Online (Sandbox Code Playgroud)
以下是错误的postgresql日志
2016-12-19 12:25:44 IST STATEMENT: UPDATE TableA SET column1=column1+$1 WHERE column2=$2 and column3=$3
2016-12-19 12:25:44 IST FATAL: connection to client lost
2016-12-19 12:25:45 IST ERROR: deadlock detected
2016-12-19 12:25:45 IST DETAIL: Process 8524 waits for ShareLock on transaction 84942; blocked by process 12520.
Process 12520 waits for ShareLock on transaction 84940; blocked by process 20892.
Process 20892 …Run Code Online (Sandbox Code Playgroud) 声纳规则squid:S2384引发了这个代码的问题:
public Date getCreatedOn() {
return createdOn;
}
Run Code Online (Sandbox Code Playgroud)
我明白我们不应该返回原文,而是应该返回该对象的副本.
另一方面,Sonar没有就此代码提出问题:
public Date getCreatedOn() {
return this.createdOn;
}
Run Code Online (Sandbox Code Playgroud)
是什么让这个代码不同?
我们是不是在第二种情况下退回原件?
我特别致力于一个允许拼写错误和别名的 人的功能.我做了一些研究,发现字符串度量和语音库也有很多算法.
我已经尝试了一些,其中Jaro Winkler给出了一些好的结果,如下所示.
compareStrings("elon musk","elon musk")) --> 1.0
compareStrings("elonmusk","elon musk")) --> 0.98
compareStrings("elon mush","elon musk")) --> 0.99
compareStrings("eln msuk","elon musk")) --> 0.94
compareStrings("elon","elon musk")) --> 0.89
compareStrings("musk","elon musk")) --> 0.0 //This is bad, but can fix that.
compareStrings("mr elon musk","elon musk")) --> 0.81
Run Code Online (Sandbox Code Playgroud)
以上是Apache commons Library的实现.我想知道是否有更好的实现可以更好地实现目的.任何帮助表示赞赏.
编辑:@newuserua_ext @Trasher谢谢,我感谢你的时间.我已经完成了与此相关的所有StackExchange问答.并发布了这个关注人名的问题.
java ×2
algorithm ×1
deadlock ×1
heuristics ×1
immutability ×1
jdbc ×1
postgresql ×1
sonarqube ×1
sql-update ×1
this ×1