- 博客(16)
- 资源 (10)
- 收藏
- 关注
原创 ACID和事务的隔离级别
数据库事务的四大特性ACID原子性(atomicity) 一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。一致性(consistency) 数据库总是从一个一致性的状态转换到另外一个一致性的状态隔离性(isolation) 通常来说,一个事务所做的修改在最终...
2018-09-11 22:53:44
193
原创 Double-Check实现单例模式
Double-Check提供了一种高效的数据同步策略,那就是首次初始化时加锁,之后则允许多个线程同时执行getInstance方法的调用来获得类的实例。示例代码如下:public final class Singleton { private static Singleton instance = null; private Singleton() { } ...
2018-09-10 19:31:18
1224
原创 volatile和synchronized
1.使用上的区别 volatile关键字只能用于修饰实例变量或者类变量,不能用于修饰方法以及方法参数和局部变量、常量等。 synchronized关键字不能用于对变量的修饰,只能用于修饰方法或者语句块。 volatile修饰的变量可以为null,synchronized关键字同步语句块的monitor对象不能为null。2.对原子性的保证volatile无法保证原子性...
2018-09-09 22:05:04
217
原创 LOCK;内存屏障
确保指令重排序时不会将其后面的代码排到内存屏障之前。 确保指令重排序时不会将其后面的代码排到内存屏障之后。 确保在执行到内存屏障修饰的指令时前面的代码全部执行完成。 强制将线程工作内存中值的修改刷新到主内存中。 如果是写操作,则会导致其他线程工作内存(CPU Cache)中的缓存数据失效。...
2018-09-09 21:38:34
979
1
原创 类的主动使用和被动使用
JVM规范了以下6种主动使用类的场景:1.通过new关键字会导致类的初始化:这种是大家经常采用的初始化一个类的方式,它肯定会导致类的加载并且最终初始化。2.访问类的静态变量,包括读取和更新会导致类的初始化,这种情况的示例代码如下public class Simple{ static{ System.out.println("I will be initiali...
2018-09-08 17:44:21
1150
原创 happens-before原则
1.程序次序规则:在一个线程内,代码按照编写时的次序执行,编写在后面的操作发生于编写在前面的操作之后。 这句话看起来是程序按照编写的顺序来执行,但是虚拟机还是可能对程序代码的指令重排序,只要保证一个线程内最终的结果和代码顺序执行的结果一致即可。2.锁定原则:一个unlock操作要先行发生于对同一个锁的lock操作。 无论是单线程还是多线程的环境下,如果同一个锁是锁定状态,那必...
2018-09-08 17:27:04
1152
原创 @Transactional的自调用失效问题
注解@transactional的底层实现是Spring AOP技术,而Spring AOP技术使用的是动态代理。这就意味着对于静态(static)方法和非public方法,注解@Transactional是失效的。还有一个更为隐秘的,而且在使用过程中极其容易犯错误的——自调用。 所谓的自调用是指一个类的一个方法去调用自身另外一个方法的过程。看代码: @Transactional(pr
2018-02-01 20:52:23
1858
1
原创 SqlSession运行总结
SqlSession是通过执行器Executor调度StatementHandler来运行的。而StatementHandler经过3步:1、prepared预编译SQL2、parameterize设置参数3、query/update执行SQL其中,parameterize是调用parameterHandler的方法设置的,而参数是根据类型处理器typeHandler处理的。que
2018-01-21 19:37:51
1516
原创 JDK动态代理与CGLIB动态代理
一、JDK动态代理被代理的实现类:public interface Helloworld { public void sayHelloworld();}public class HelloWorldImpl implements Helloworld { @Override public void sayHelloWorld(){ System.ou
2018-01-10 09:54:12
221
原创 ssm+redis的工具类
JedisUtil.javapackage cn.ssm.utils;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class JedisUtil { private static
2017-12-12 20:09:27
660
原创 Java内存泄漏-------JDK6与JDK7里的subString()方法
在JVM中一般在GC时可达性分析算法,而有些java对象存在着“可达而不可用”,这也就导致java内存泄漏。何为“可达而不可用”呢?简单来说也就是一个对象生命周期已经结束,但是他被别的对象引用了,而那个对象生命周期还未结束,所以也就出现了内存泄漏。举个例子,对象A引用了对象B,对象A的生命周期比对象B长,当对象B生命周期结束时,对象A还未结束并且保持着对对象B的引用。对象B无法被GC,也就导致了内...
2017-12-11 15:44:10
328
原创 自定义参数绑定ConversionService和mvc:resources的命名冲突
报错:org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.util.ArrayList to type java.util.List for value '[/js/]'; nested exception is org.springframework.core
2017-12-10 19:44:36
326
原创 Mybatis中sqlmapper的xml文件中对“<”二义性的处理
问题:在sqlmapper的xml中编写sql语句是,where段常会出现大于或者小于号,这些会与xml标签二义性,以下有两种处理方式:1.使用转移符:<小于号>>大于号&&和''单引号""双引号
2017-12-05 15:58:11
413
原创 Ajax的应用
尝试在登录页面使用ajaxfunction request(){ var var1=document.getElementById("name").value; var var2=document.getElementById("pwd").value; $.ajax({ type:'post', url:'${pageContext.request.contextPath
2017-11-18 19:16:06
255
原创 java线程同步synchronized与lock
一、synchronized关键字 public synchronized void method(){ method body}二、ReentrantLock类在jdk1.5以后有了java.util.concurrent包,里面提供了lock方法 private Lock lock1 = new ReentrantLock();public void m...
2017-11-15 21:25:46
234
原创 SSM框架中的分页操作
在有分页需求时,首先要想到对分页的封装,然后根据ssm框架,从下向上开发。一、对数据库的操作这里主要运用sql语句中的limitselectperson.NO,person.Name,person.Sex,person.Birthday,person.Professor,person.password,Dept.DeptNamefrom person ,de
2017-11-14 20:19:33
727
spring-data-redis-2.0.2.RELEASE.jar
2017-12-08
jedis-2.9.0.jar
2017-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人