12 2018 档案
摘要:动态代理 一、静态代理 代理的背后一般至少有一个实际对象,代理的外部功能和实际对象一般是一样的, 用户与代理打交道,不直接接触实际对象。代理存在的价值: 1)节省成本比较高的实际对象创建开销,按需延迟加载,创建代理时 并不正真创建实际对象,而只是保存实际对象的地址,在需要时再加载或者创建。 2)执行
阅读全文
摘要:注解 一、内置注解 Java内置了一些常用注解: 1.@Override 该注解修饰一个方法,表示当前类重写了父类的该方法。 2.@Deprecated 该注解可以修饰类、方法、字段、参数等。表示对应的代码已经过时,不应该被使用。 它是一种警告,不是强制性的。当一个元素被注解为Deprecated时
阅读全文
摘要:反射 反射是在运行时获取类型的信息,再根据这些信息进行操作。 一、Class类 每个已加载的类在内存中都有一份类信息,每个对象都有指向它的类信息的引用。 在Java中,类信息对应的类就是java.lang.Class(注意不是小写的class),Object方法: Class是泛型类,还有一种获取C
阅读全文
摘要:同步和协作工具类 一、读写锁ReentrantReadWriteLock ReadWriteLock接口的定义为: 读操作使用读锁,写操作使用写锁。只有"读-读"操作是可以并行的,"读-写"和"写-写"都不行。 始终只有一个线程能进行写操作,在获取写锁时,只有没有任何线程持有任何锁才可以获取到, 在
阅读全文
摘要:异步任务执行服务 一、基本原理和概念 一)基本接口 1)Runnable和Callable:表示要执行的异步任务。 2)Executor和ExecutorService:表示执行服务。 3)Future:表示异步任务的结果。 Executor接口: ExecutorService扩展了Executo
阅读全文
摘要:面向切面的Spring 一、面向切面的概念 在软件开发中,散布于应用多处的功能被称为横切关注点(cross-cutting concern)。 通常来讲这些横切关注带点从概念上来讲是与应用逻辑相分离的(但是往往会直接嵌入到应用的业务逻辑中)。 把这些横切关注点与业务逻辑相互分离正是面向切面编程(AO
阅读全文
摘要:高级装配 一、环境与Profile 一)配置profile bean 环境的改变导致配置改变(需求:通过环境决定使用哪个bean),可以通过Spring的Profile解决。 Profile可以在程序运行时根据环境的改变决定使用哪个bean。所以一个部署单元能适应所有环境。 1.在Java文件中配置
阅读全文
摘要:并发容器 一、写时复制的List和Set CopyOnWrite即写时复制,或称写时拷贝,是解决并发问题的一种重要思路。 一)CopyOnWriteArrayList 该类实现了List接口,它的用法与其他List基本一样。其特点如下: 1)它是线程安全的 2)它的迭代器不支持修改操作,但也不会抛出
阅读全文
摘要:并发包 Java中还有一套并发工具包,位于包java.util.concurrent下,里面包括很多易用 且很多高性能的并发开发工具。 一、原子变量和CAS 为什么需要原子变量,因为对于例如count++这种操作,使用 synchronized成本太高了。Java并发包的基本原子变量有: Atomi
阅读全文
摘要:并发基础知识 一、线程的基本概念 线程表示一条单独的执行流,它有自己的程序计数器,有自己的栈。 1.创建线程 1)继承Thread Java中java.lang.Thread这个类表示线程,一个类可以继承Thread并重写run方法来实现一个线程: 2)实现Runnable接口 2.线程的基本属性和
阅读全文
摘要:文件基础技术 一、文件概述 一)基本概念 1.文件的分类: 1)文本文件:文件中每个二进制字节都是某个可打印字符的一部分。如.java文件 2)二进制文件:文件中每个二进制字节不一定用来表示字符,也可表示颜色、字体、声音。 2.文件的元数据信息:如文件名、创建时间、修改时间、文件大小等。 3.文件名
阅读全文
摘要:文件高级技术 一、常见文件类型处理 一)属性文件 属性文件很简单,一行表示一个属性,属性就是键值对,键和值用(=)或者(:)分隔。 Java使用专门的类java.util.Properties处理这种文件。主要方法: 优势:可以自动处理空格,自动忽略空行,以#或者!开头的会被视为注释。 二)压缩文件
阅读全文
摘要:Bean装配 Spring提供了3种装配机制: 1)隐式的Bean发现机制和自动装配 2)在Java中进行显示装配 3)在XML中进行显示装配 一)自动化装配 1.指定某类为组件类: 2.创建配置类启用组件扫描 1)通过Java配置: 2)通过xml: 3.测试: 二)通过Java装配 三)通过XM
阅读全文
摘要:Spring简介 Spring丰富的功能的底层都依赖于它的两个核心特性: 1.依赖注入(dependency injection, DI): 每个对象负责管理与自己协作的对象(即它所依赖的对象)的引用,这会导致高度耦合和难以测试的代码。 解决办法:依赖注入,把对象的创建和管理交给第三方组件。 2.面
阅读全文
摘要:通用容器类和总结 一、抽象容器类 一)AbstractCollection 提供了Collection接口的基础实现,具体来说,实现了如下方法: AbstractCollection不知道基础数据是怎么存储的,它如何实现这些方法呢? 它依赖于如下更为基础的方法: add方法: size()是抽象方法
阅读全文