JAVA
文章平均质量分 92
艾翁
这个作者很懒,什么都没留下…
展开
-
JDK1.8 HashMap源码解析(不分析红黑树部分)
一、HashMap数据结构 HashMap由 数组+链表+红黑树实现,桶中元素可能为链表,也可能为红黑树。为了提高综合(查询、添加、修改)效率,当桶中元素数量超过TREEIFY_THRESHOLD(默认为8)时,链表存储改为红黑树存储,当桶中元素数量小于UNTREEIFY_THRESHOLD(默认为6)时,红黑树存储改为链表存储。table即Node<k,v>[] tab...原创 2018-06-07 16:33:00 · 687 阅读 · 0 评论 -
git基本操作
git配置Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。git提供了三级的配置:/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选...原创 2018-06-02 17:00:56 · 168 阅读 · 0 评论 -
Spring AOP中的JDK代理和Cglib代理
JDK动态代理是java JDK自身提供的基于接口的代理,代理类的生成速度快,而代理类的运行速度慢,适合于prototype类型Cglib代理是基于之类继承的方式的代理,能代理非基于接口的类,适合于非final修饰的类,能对public的方法进行代理,代理类的生成速度慢,而代理类的运行速度快,适合于singleton类型Spring通过判断目标类是否有实现接口来选择JDK代理和Cglib代理,如果...原创 2018-04-19 10:14:01 · 223 阅读 · 0 评论 -
Spring AOP如何让内部方法调用也发生代理
方法之间的调用直接使用的是原始对象,而非代理对象,因而内部调用不会产生代理public class Waiter { public void greetTo(String name) { System.out.println("greet to :" + name); } public void serveTo(String name) { ...原创 2018-04-17 15:47:39 · 5735 阅读 · 0 评论 -
Mybatis学习笔记——动态Sql
关于条件的判断if 判断语句choose (when, otherwise) 类似于switch case语句if 和 when 都需要与test属性连用,test为具体判断逻辑在判断之前都加1=1的原因是:如果不加1=1,当断语句返回false时,后面判断部分的sql为空,这样整体sql语句就变成了xxx where,因而会出错可以通过使用where或trim元素去掉1=1这样的语句对...原创 2018-03-04 19:57:05 · 411 阅读 · 0 评论 -
Mybatis学习笔记——映射
在映射器中,我们主要可以定义如下几类元素:select 查询,可以自定义查询参数和返回结果insert 插入,执行后返回一个整型,代表插入的条数update、deletesql 允许定义一部分SQL,在其它地方应用它resultMap 用来描述数据库结果集返回对象(和select中的resultType作用相同,select中只能二选一)cache、cache-ref 定义和引用缓存策...原创 2018-03-02 19:40:29 · 683 阅读 · 0 评论 -
Mybatis学习笔记——入门+配置
1. MyBatis入门2. Mybatis配置PS:XML文件的层次结构不能调到顺序,如果颠倒,会解析失败2.1 properties配置2.1.1 三种配置的方式及加载顺序 3. 通过程序加载 常用于对数据库密码进行解密,配置文件中配置密文,程序解析成明文之后再传给Mybatis properties.setProperty("username", decode(p...原创 2018-02-28 21:20:15 · 191 阅读 · 0 评论 -
Spring无效的事务传播行为
insertRole方法上的propagation=Propagation.REQUIRES_NEW表示不管当前上下文环境有没有事务,都重新开启一个新的事务,但实际上是不生效的。原因如下:Spring的事务管理是在通过动态代理类进入invoke方法里面的,然后判断是否需要拦截方法,需要的时候才根据注解和XML配置生成事务切面,而insertRole方法的调用是直接作用于原始对象,而不是代理对象,因...原创 2018-03-07 21:21:12 · 482 阅读 · 0 评论 -
Mybatis学习笔记——解析及运行原理
构造SqlSessionFactory过程采用Builder模式设计Builder设计模式:对于复杂对象,直接通过构造函数构造会导致大量逻辑放在构造函数中。为了简化构造逻辑,我们更希望一步一步有秩序地构造对象,从而降低其复杂度SqlSessionFactoryBuilder就是SqlSessionFactory的构造类构造过程: 通过org.apache.ibatis.builder.xml.XM...原创 2018-03-07 21:13:14 · 186 阅读 · 0 评论 -
String,StringBuffer、StringBuilder的那些事
public class StringText { public static void main(String[] args){ String s1,s2,s3,s4; s1 = new String("123"); s2 = new String("123"); s3 = "123"; s4 = "123"; S原创 2016-12-23 21:47:39 · 187 阅读 · 0 评论 -
String、StringBuffer、StringBuilder区别
StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,任何对String的改变都 会引发新的String对象的生成;StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象。既然可变和不可变都有了,为何还有一个StringBuilder呢?相信初期的你,在进行append时,一般都会选择StringBuffer原创 2016-12-23 21:39:25 · 184 阅读 · 0 评论