- 浏览: 12131 次
最新评论
文章列表
冒泡排序
冒泡排序在排序算法中比较简单,但是可以帮助我们理解不变性。不变性是指在算法中,某些条件在算法执行时是不变的,始终为真。
/**
* 其不变性体现在out右边的数据项始终是有序的, 在整个过程中,该条件始终为真.
* 最开始的时候out右边没有数据项.
*/
public void bubbleSort() {
int out, in;
for (out = nElements - 1; out >= 1; out--) { //外循环, 从后向前
for (in = 0; in &l ...
二分查找
简述:
二分查找主要用于在有序数组中查找某个数据项,具有查找速度快的优点,其算法所花时间与数据项的个数的比可用大O表示为O(logN)来表示。数据项的个数越多,越能反应出其优点。
循环
Code:
Long[] array; //表示一个Long型的数组引用, 需要初始化
int nElements; //表示数组中数据项的个数, 需要初始化
int compareTimes = 0; //定义比较次数
public int find(long searchKey) {
int lowerBound = 0; ...
Java并发编程实战纠错与部分翻译优化
版本号:2017年5月第一版第18次印刷。
读Java并发编程实战的时候,发现有些翻译方面的错误,包括理解错误,印刷错误。在参考英文版以及反复理解后,在这里记录下我认为有错和可以优化 ...
处理整型类型(byte, short, int, long)时,可用位运算符对整型数值的各个位进行操作。看看以下的位运算符:
1. &("and") 与运算
int a = 0b1000; //0b1000是8的二进制表示
int b = 0b1011; //0b1011是11的二进制表示
int c = a & b; //对a和b做与位运算
System.out.println(c);//得到结果c为8,即0b1000
具体运算逻辑如下:只有两个操作数对应的位都为1的时候,&运算结果才为1,否则为0.
a 0b1000
b 0 ...
Java中的两种浮点类型: float和double
浮点数值不适用于无法接受舍入误差的计算中。舍入误差的主要原因在于浮点数值采用二进制系统表示,而二进制系统中无法精确地表示分数1/10,这就像十进制无法精确的表示分数1/3一样。
所以如果数值计算中不允许有任何舍入误差,就应该使用BigDecimal类。
二进制系统中无法精确地表示分数1/10何解?
1/10换算成二进制为1/1010,结果无限循环的小数,所以二进制无法用有限的位数来表示0.1.
二进制能用有限的位数表示的一些数,比如0.5, 0.25等。
0.5, 0.25换算成二进制为101/1010,11001/1100100,所以 ...
在使用unitils集成dbunit与MySQL做单元测试的时候总是出现NoSuchColumnException,导致测试无法完成。具体错误信息如下:
org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method public void com.smart.dao.UserDaoTest.findUserByUserName()
at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java: ...
为了方便REST开发,Spring引入了@RestController注解,该注解已经标注了@ResponseBody和@Controller,源码如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
String value() default "";
}
最近遇见个问题,使用@RestController注解控制器 ...
使用getHibernateTemplate().iterate().next()的时候报如下错误(只留下了错误的主体部分):
ERROR: Operation not allowed after ResultSet closed
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not get next iterator result
Caused by: java.sql.SQLException: Operation not allowed after R ...
数据连接泄露是个很头疼的问题,框架Spring也提供了很多种办法来避免这个问题,比如使用Template,当然其背后是DataSourceUtils.这里还有另外一种办法,使用TransactionAwareDataSourceProxy.通过TransactionAwareDataSourceProxy对数据源进行代理后,数据源对象就有了事务上下文感知的能力了。看源码会发现,其实它还是使用的DataSourceUtils. 哈哈,是不是觉得其实是在围着一个原点打转?
这里只取一部分TransactionAwareDataSourceProxy源码来看看,如下。看到这里明白了吧。
Conn ...
最近重温了下JDK动态代理,JDK1.8里的底层实现有了些变化,这里记录下看到的东西。
大家都知道,JDK动态代理只能为接口创建代理实例,所以CGLib就自然而然的有了用武之地。至于为什么JDK只能为接口创建代理实例,后面在说。要用到JDK动态代理,那InvocationHandler和Proxy这对神雕侠侣肯定是要到场的。
先写一个简单的JDK动态代理例子。
1. 一个UserService接口:
public interface UserService {
void service();
}
2. 一个UserService接口的实现类UserServiceImpl ...
这是开通这个ID后写的第一篇文章,所以絮叨下。最近在看Spring4.X的内容,期间遇到许多问题,还好相继都解决了。原本想把这些问题都记录到博客上,只是苦于生活中的责任,未能抽出时间完成,其实这也是给自己找理由,以后还是尽力多写写博文,也算是对自己的一种交代。不废话了,开干吧。
首先搞清楚BeanFactory和FactoryBean的区别:因为这俩长得有点像,所以说拉出来一起看看。
BeanFactory是一个类工厂,也叫SpringIOC容器,就是用来管理Bean的,也就是管理Java对象。它是Spring的基础设施,面向Spring本身,与之对应的有个Spring容器,较Applica ...