随笔分类 - Java
1
摘要:AOP 面向切面编程 面向切面式编程, 会横切程序中的流程, 在不破坏原有代码结构的情况下, 将相同的业务逻辑(比如 Transaction, Security, Logging)应用到"切面的位置". AOP 定义 1. ADVICE, 定义 what and when 插入, Spring 提供
阅读全文
摘要:高级注入 环境注入 通过 profile, Spring 支持为不同的运行环境,如 dev, qa, prod 注入不同的 bean. 体现在: 1. 为不同的环境配置不同的 configuration/xml 2. 在同一个 configuration/xml 中, 为不同的环境配置不同的 bea
阅读全文
摘要:垃圾判定, 回收算法 垃圾判定 垃圾回收的重要环节是判定哪些对象需要回收, 重要的回收算法有: 1. 引用计数算法(COM, ActionScript, Python) 2. 可达性分析算法(Java, C , Lisp 采用) 引用计数算法 什么是引用计数算法? 每个对象中有一个引用计数器: 每当
阅读全文
摘要:GC 垃圾回收器简介 程序计数器, 虚拟机栈, 本地方法栈 3个区域都在线程上分配, 随线程生, 随线程灭. 而堆(Java Heap)上的空间就需要 GC 来回收了. 至于方法区, 虽然也在堆上, 但是它存储的东西变化比较小, 所以它的垃圾回收机制又会不同. 那么, 怎么判断对象是否该回收呢? 判
阅读全文
摘要:Bean 注入 Spring4 中有如下注入方式 显式在 XML 文件中配置 显式在 Java 代码中配置 (比 XML 更加安全) 隐式地通过 Bean 发现和自动装配 推荐的方式: 尽量依赖 自动装配 当需要显式配置的时候, 优先使用 JavaConfig 若1和2不能满足, 使用 XML. 自
阅读全文
摘要:<!--?xml version="1.0" encoding="UTF-8" standalone="no"?--> Spring 容器 基于 Spring 的项目, 对象在 容器(container)中 生存. 容器负责: 对象的创建 对象的配置 对象的注入 对象生命周期管理 容器是 Sprin
阅读全文
摘要:JDK 1.5 之前的同步容器 JDK 1.5 之前, 主要包括: 同步容器 (Vector 和 Hashtable) 同步包装类 (Collections.synchronizedXxx) 这些类的共同特征是, 公共方法都是由 synchronized 来修饰的, 以限制一次只能有一个线程能访问容
阅读全文
摘要:运行时内存可能抛出的异常 StackOverflowError OutOfMemoryError 程序计数器 (Program Counter Register) 作用: 指定虚拟机在各个线程要执行的下一条字节码指令的地址 数量: 线程私有 (每个线程都有一个) 说明: 若线程正在执行一个 Java
阅读全文
摘要:设计线程安全类 套路一: 实例限制 假如现在有一个非线程安全类, 让它可以被多线程安全访问, 可以做一层封装. 多线程 只通过 封装类进行访问. 注意事项, 一定要加对锁! 套路二: 返回深拷贝 若一个对象是可变对象, 假如不是太频繁地作为参数或者返回值传递, 可以通过每次在传递时, 构建深拷贝来保
阅读全文
摘要:Volatile 变量 Volatile 关键字的作用: 确保对声明的变量的操作 不会 和其他内存操作一起被重排序 Volatile 变量不会缓存到寄存器或者其他对处理器隐藏的地方(保证可见性) 确保 引用类型, long 和 double的读取或者赋值的原子性 Volatile 的主要用法: 确保
阅读全文
摘要:并发 并发在单核和多核 CPU 上都存在, 对于单核 CPU,通过轮训时间片的方式实现并发. 线程 线程对象 利用Thread对象, 有两种方式来创建并发程序: 线程的创建 有两种方式创建线程: 两种方法的优缺点? Runnable 总体来说更好一点 线程的基本状态 线程有如下状态: WAITING
阅读全文
摘要:基本 IO 重要接口 重要类 字节类 InputStream 特点: 读取字节流的抽象类 BufferedInputStream 特点: 用字节缓冲区来从 InputStream 中读取流 缓冲区默认大小是 8K, 可能会增长 实现了 mark() 和 reset() 方法 fill() 方法 By
阅读全文
摘要:Collection Collection 集合 在 java.util 包中, 其中 Collection 包含: List: 必须按特定的顺序容纳元素 Set: 不可包含任何重复的元素 注意: Map 不在 Collection 集合中. Collection的主要方法 Boolean add(
阅读全文
摘要:ResultSet (结果集) RSType 和 RSConcurrency 当对数据库进行查询操作的时候, 数据库返回的数据通过 ResultSet 接口获取. ResultSet 内部管理了一个 cursor(游标), cursor 指向当前要读的数据, ResultSet 提供了以下三类接口:
阅读全文
摘要:Transaction(事务)事务简介事务的作用是保护数据完整性.它将一系列操作作为一个原子操作来处理, 从而防止多个操作中有的操作失败有的操作成功, 造成数据不完整. 在 JDBC 中, 一个连接默认的提交方式是Auto-Commit模式, 在这种模式下, 每个单独的SQL语句都会被视为一个事务,...
阅读全文
摘要:操作 SQL 语句Statement, PreparedStatement, CallableStatement一旦建立好连接, 就可以与数据库交互. JDBC 中Statement,PreparedStatement和CallableStatement提供了SQL操作的相关API. 其中Calla...
阅读全文
摘要:JDBC 入门 - 建立连接建立连接在于数据库交互的时候, 第一件事是和数据源(Data Source)也就是数据库建立连接(Connection). 可以从这两个类从数据源取得连接:DriverManager: 在 java.sql 包中, 连接时必须要指定 URL 去连接, 在 JDBC4.0 ...
阅读全文
摘要:简介JDBC APIJDBC 是 Java 数据库连接(JavaDataBaseConnectivity) 的缩写, 它提供了 Java 访问各种关系型数据库的一系列 API, 功能包括:建立数据库连接创建 SQL 语句执行 SQL 语句查看或修改结果集JDBC API 中主要几个接口:Driver...
阅读全文
摘要:Java EE 简介Java EE 基本架构JavaEE 的诞生是为了解决传统 C/S 架构的弊端:客户端臃肿庞大,扩展性差等弊端。 JavaEE 将传统的两层结构细分为了四层。这四层分别是:Client 层, Web 层, Business 层, EIS 层Java EE 客户端Java EE客户...
阅读全文
1

浙公网安备 33010602011771号