1、什么是类的加载
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
类加载器并不需要等到某个类被“首[……]
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
类加载器并不需要等到某个类被“首[……]
JDK InvocationHandler的动态代理是基于接口来实现的,从newProxyInstance()方法中的参数也可以看出来,假如被代理的对象的类并没有实现接口,而是一个普通的类,那么久可以通过CGLIB动态代理来实现
了解了JDK动态代理之后,再来理解CGLIB相对容易一些,大致流程
1、通过CGLIB的Enhancer对象注入被代理类和方法属性,进而调用create()方法来创建代理[……]
到处都是用的动态代理,这次是认真的
静态代理:事先已经知道了要代理什么,而且编译时代理类就已经生成
动态代理:事先不知道要代理什么,运行的时候才能确定,实现InvocationHandler接口,调用Proxy的newProxyInstance()方法通过反射动态地创建代理类
下图就是创建代理类的流程
Redis是KV内存数据库,支持很多数据结构,具体如下面之前写过的,也可以自行google
Spring对Redis操作的支持,基本也和JDBC,MongoDB类似,通过Spring Data Redis,具体有
1、客户端支持,Jedis和Lettuce
2、RedisTemplate
3、Repository支持
测试一下通过Jedis来操[……]
Mongodb是一个文档型NoSQL数据库,大致有Database,Collection,Document这几个概念组成,他们之间的关系下面这张图很清晰
很多Document组成了一个Collection,而Database里面有很多的Collection
而Spring对MongoDB是通过Spring Data MongoDB来支持,对比Spring Dota JPA,Spring Data[……]
相比编程式事务,Spring声明式事务用得更多,这里就不纠结了,事务都通过注解方式来做
要新增schema的相关配置,可以搜索https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html
事务相关,可以搜索spring-tx
<?xml versio[......]
了解了事务特性之后,可以试一下Spring的事务操作
编程式事务使用TransactionTemplate或者直接使用底层PlatformTransactionManager来完成
事务管理的接口如下:
public interface PlatformTransactionManager extends TransactionManager {
TransactionStatus getT[......]
最近迷上了tomcat,小研究了下多层容器结构,下图来自互联网
Spring MVC相关的内容,一些基本的概念,转载几个讲解的部分内容学习一下
web容器中有servlet容器,spring项目部署后存在spring容器和springmvc容器。其中spring控制service层和dao层的bean对象。springmvc容器控制controller层bean对象。servlet容器[……]
多线程wait()判断条件这个地方的逻辑琢磨了挺久的,本意就是拿到锁之后如果条件不满足就等待,感觉用if和while似乎没啥区别
首先是生产者,单独一个线程,和消费者共用一个锁和一个队列,都通过构造方法传入
1.线程里直接死循环持续生产消息,消息体最好不一样,可以弄个随机数,我这里用了微妙时间戳,调用add()方法
2.需要添加一个条件,如果队列已经满了,就不能继续添加了,调用wait()方法等待[……]
有人自主翻译的,Github地址:https://github.com/lingcoder/onJava8/
这几个概念不清楚,熟悉一下,转自:Java BIO、NIO、AIO
对于Java里面同步异步阻塞非阻塞那些,其实我的理解都只停留在最基础的层面,有一些概念可能还非常模糊。最近由于工作需要准备研究一下netty,查了一下发现-Netty 是一个基于 JAVA NIO 类库的异步通信框架。啥是NIO.. 一脸懵逼,看来不先搞懂这个是没办法进行下去了。看到NIO顺便又了解了一下B[……]