- 浏览: 12540 次
- 性别:
- 来自: 上海
最新评论
文章列表
java实现银行卡号校验算法luhn
- 博客分类:
- 开源心得
Luhn是著名的校验和算法也叫模10算法,主要应用于解决银行卡号,社保号等重要信息传输出错问题。
先来解释下算法原理,校验和类型的算法,一般是ID+校验号,校验号和ID号的每位相关,如果出错,通过某种运算能检测出这种改动。借用维基百科的例子我来解释下。
我们以数字“7992739871”为例,计算其校验位:
从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
把得到的数字加在一起(本例中得到67);
将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位 ...
异常也是单元测试的一部分,java开发中,如何利用JUnit测试异常呢。
总结下来有两种方法,一种是注解,一种是try-catch,我们先来实现一个异常类
public class MyException extends RuntimeException{
//....omit
}
需要测试的方法
public class MyClass{
public void execute(){
throw new MyException("A");
}
}
1. ...
Spring循环依赖检查算法分析
- 博客分类:
- 开源心得
Spring在注入bean的时候会做循环依赖检查,例如A依赖B,B依赖C,C依赖A,这就形成了一个循环依赖,Spring会抛出异常。
那么Spring是怎么做到循环依赖检查的呢?我们先来考虑,Spring是如何实现注入功能的,在注入A之前,如果A依赖B那么需要先注入B,然后依次类推下去,明显,这是一个递归的调用,Spring在其BeanFactory的实现类中,对getBean方法递归调用实现注入,代码如下:
// spring 依赖注入 DFS
String[] dependsOn = mbd.getDependsOn();
if (dependsOn ...