摘要: AOP 面向切面编程 面向切面式编程, 会横切程序中的流程, 在不破坏原有代码结构的情况下, 将相同的业务逻辑(比如 Transaction, Security, Logging)应用到"切面的位置". AOP 定义 1. ADVICE, 定义 what and when 插入, Spring 提供 阅读全文
posted @ 2017-02-04 21:25 still_water 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 高级注入 环境注入 通过 profile, Spring 支持为不同的运行环境,如 dev, qa, prod 注入不同的 bean. 体现在: 1. 为不同的环境配置不同的 configuration/xml 2. 在同一个 configuration/xml 中, 为不同的环境配置不同的 bea 阅读全文
posted @ 2017-02-04 13:35 still_water 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 垃圾判定, 回收算法 垃圾判定 垃圾回收的重要环节是判定哪些对象需要回收, 重要的回收算法有: 1. 引用计数算法(COM, ActionScript, Python) 2. 可达性分析算法(Java, C , Lisp 采用) 引用计数算法 什么是引用计数算法? 每个对象中有一个引用计数器: 每当 阅读全文
posted @ 2017-02-03 22:41 still_water 阅读(192) 评论(0) 推荐(0) 编辑
摘要: GC 垃圾回收器简介 程序计数器, 虚拟机栈, 本地方法栈 3个区域都在线程上分配, 随线程生, 随线程灭. 而堆(Java Heap)上的空间就需要 GC 来回收了. 至于方法区, 虽然也在堆上, 但是它存储的东西变化比较小, 所以它的垃圾回收机制又会不同. 那么, 怎么判断对象是否该回收呢? 判 阅读全文
posted @ 2017-02-03 20:23 still_water 阅读(128) 评论(0) 推荐(0) 编辑
摘要: Bean 注入 Spring4 中有如下注入方式 显式在 XML 文件中配置 显式在 Java 代码中配置 (比 XML 更加安全) 隐式地通过 Bean 发现和自动装配 推荐的方式: 尽量依赖 自动装配 当需要显式配置的时候, 优先使用 JavaConfig 若1和2不能满足, 使用 XML. 自 阅读全文
posted @ 2017-02-02 00:13 still_water 阅读(192) 评论(0) 推荐(0) 编辑
摘要: <!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> Spring 容器 基于 Spring 的项目, 对象在 容器(container)中 生存. 容器负责: 对象的创建 对象的配置 对象的注入 对象生命周期管理 容器是 Sprin 阅读全文
posted @ 2017-02-01 14:58 still_water 阅读(124) 评论(0) 推荐(0) 编辑
摘要: JDK 1.5 之前的同步容器 JDK 1.5 之前, 主要包括: 同步容器 (Vector 和 Hashtable) 同步包装类 (Collections.synchronizedXxx) 这些类的共同特征是, 公共方法都是由 synchronized 来修饰的, 以限制一次只能有一个线程能访问容 阅读全文
posted @ 2017-01-31 20:41 still_water 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 设计线程安全类 套路一: 实例限制 假如现在有一个非线程安全类, 让它可以被多线程安全访问, 可以做一层封装. 多线程 只通过 封装类进行访问. 注意事项, 一定要加对锁! 套路二: 返回深拷贝 若一个对象是可变对象, 假如不是太频繁地作为参数或者返回值传递, 可以通过每次在传递时, 构建深拷贝来保 阅读全文
posted @ 2017-01-07 21:03 still_water 阅读(141) 评论(0) 推荐(0) 编辑
摘要: Volatile 变量 Volatile 关键字的作用: 确保对声明的变量的操作 不会 和其他内存操作一起被重排序 Volatile 变量不会缓存到寄存器或者其他对处理器隐藏的地方(保证可见性) 确保 引用类型, long 和 double的读取或者赋值的原子性 Volatile 的主要用法: 确保 阅读全文
posted @ 2016-12-14 23:39 still_water 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 并发 并发在单核和多核 CPU 上都存在, 对于单核 CPU,通过轮训时间片的方式实现并发. 线程 线程对象 利用Thread对象, 有两种方式来创建并发程序: 线程的创建 有两种方式创建线程: 两种方法的优缺点? Runnable 总体来说更好一点 线程的基本状态 线程有如下状态: WAITING 阅读全文
posted @ 2016-12-07 22:54 still_water 阅读(299) 评论(0) 推荐(0) 编辑