摘要:1,iBatis源码中DefaultSqlSession.java,下面这个方法中匿名类的使用比较有意思,我对这个语法不熟悉,师兄说这是匿名类的初始化, private Object wrapCollection(final Object object) { if (object instanceof List) { return new HashMap() {{ put("list", object); }}; } else if (object != null && object.getClass().isArray()) { return new Ha
阅读全文
摘要:由于以前没接触过Maven,上周第一次checkout项目代码学习时,看到项目的结构觉得挺奇怪的,src/main/java下放代码,src/main/resource下放配置文件,src/test/java下放单元测试文件,src/main/webapp下放web层的代码,今天看了《Maven权威指南》后,才明白这是Maven的约定的代码结构,它的核心理念就是“约定优于配置”。 Maven和Ant的区别简单来说,就是如果你使用Ant,那么就必须明确告诉Ant你想让它做什么,你的源代码在哪里,结果字节码你想放到哪,如何把这些字节码打包成JAR文件,而使用Maven,你只需要创建一个pom.x.
阅读全文
摘要:在看jdk里的collection framework这部分,小结一下:1,Arrays.copyOf, System.arraycopy这两个方法用得非常多。 2,比较两个 Object是否相等 if (o1==null ? o2 == null : o1.equals(o2)) 3, equals方法一般写法 Public Boolean equals(Object o) { If (o == this) return true; If ( ! (o instanceof List) return false; //比较具体数据大小 } 4,Iterator一定要会用 5,延迟初始化一定要
阅读全文
摘要:今天接着读《MySQL技术内幕InnoDB存储引擎》的第5章关于索引这部分内容。 什么时候使用B+树索引?并不是在所有的查询条件下出现的列都需要添加索引,作者指出当访问表中很少一部分行时,使用B+树索引才有意义。对于像性别,地区,类型等字段,它们的可取值范围很小,即所谓低选择性,比如Select * from student where sex=’M’,那么结果可能是该表50%的数据,此时添加B+树索引是完全没有必要的,相反,如果某个字段的取值范围很广,几乎没有重复性,即高选择性,则此时使用B+树索引是最合适的,例如姓名字段。 因此,当访问高选择性字段并从表中取出很少一部分数据行时,对这个字段
阅读全文
摘要:1)今天在读《MySQL技术内幕InnoDB存储引擎》,作者在第四章讲到MySQL的分区时提到了一个问题,“对数据表分区真的会提高数据库的查询性能吗?”。对于OLAP的应用,分区的确可以很好地提高查询的性能,因为OLAP应用中大多数查询需要频繁地扫描一张很大的表。假设表中数据有1亿行,其中有一个时间戳属性列。你的查询需要从这张表中获取一年的数据。如果按数据戳进行分区,则只需要扫描相应的分区就可以了。对于OLTP 的应用,分区则应该非常小心。在这种应用下,不可能会获取一张大表中10%的数据,大部分都是通过索引返回几条记录就可以了。而根据B+树索引的原理可知,对于一张大表,一般的B+树需要2~3次
阅读全文