51CTO博客开发互联网产品
局部内部类 即定义在方法中的内部类。由于本身就在方法内部(可出现在形参定义处或方法体处),因而,访问方法中的局部变量或形参是很正常的事情。 局部变量的生命周期与局部内部类的生命周期可能不一致。先看下面的示例代码public class TestInnerClass { public static void main(String[] args){ TestInnerCl
类加载器介绍顾名思义,类加载器(ClassLoader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取Java字节代码,把类信息放到方法区,并生成 java.lang.Class 类的一个实例放到堆中。每个
Oracle数据库中的锁机制数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改;加了共享锁
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。在数据库
注解的作用1、wikipedia上对Annotation的概念介绍Annotation,是Java语言中的一种特殊的元数据语法,可以被添加到Java代码中。类,方法,变量,参数,包都可以被标注。与Javadoc的标签不同,注解是可以被反射的,因为他们被编译器生成嵌入在编译后文件,并保留在虚拟机中以便在运行时被索引。2、Sun网站上写的 JDK5引入了Metedata(元
为什么要使用代理设计模式中定义为:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,此时代理对象可以在客户端和目标对象之间起到中介的作用。代理分类代理分为静态代理与动态代理静态代理:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。
问题场景在一个业务类ServiceDemo中有a、b两个业务方法,在业务方法a中有对b进行调用。此时,在b上定义的事务将失效。问题产生原因当我们调用业务类ServiceDemo的实例中的a方法时,我们拿到的句柄其实是一个Spring的AOP代理,JDK的proxy或CGLIB的proxy。此时,在调用方法a之前,首先执行事务切面,事务切面内部通过TransactionInterceptor环绕增强
若对业务类没有进行增强,如加事务、日志等,那么Spring并不代理该业务类。在IOC时,只是把该类的实例注入。如果我们对Spring管理的bean进行了增强,如果该bean是接口、实现类的方式,那么Spring会使用JDK自身的动态代理JdkDynamicAopProxy来实现代理;如果我们定义的bean没有接口,那么Spring会使用cglib的方式Cglib2AopProxy来实现代理。
除了众所周知的在debug模式下,我们可以通过设置断点来查看程序运行时的详细信息。还有其它一些小细节,今天我们就来说一下。在debug模式下,当我们修改方法体内的代码时,我们是不需要重启web server的,web服务器会自动的把这些改动替换到vm当中,学名叫hot swap。通过以下运行时的截图,给大家展示一下效果原始情况下:在不重启web服务器的情况下,修改控制台输出内容,运行时控制台输出内
Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页基本上是没有用的。本文基于插件,通过拦截StatementHandler重写sql语句,实现数据库的物理分页。本文适配的mybatis版本是3.2.2。准备为什么在StatementHandler拦截在深入浅出MyBatis-Sqlsession章节介绍了一次sqlsessio
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号