Browsed by
分类: Java

Java

Spring AOP 的实现原理

Spring AOP 的实现原理

AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为A[……]

继续阅读

静态代理

静态代理

上一篇讲了动态代理,接下里就说说静态代理。静态代理就是面向接口编程,在代理类中调用真实对象的行为。
cd337e41-6ee8-3619-a1c4-a2c096fb711c

先上代码:
[java]
package com.learn.core.proxy;

public interface Subject {

public void d[……]

继续阅读

Java自带的动态代理

Java自带的动态代理

大家都知道,代理模式是23中设计模式中的一种,代理模式又分为动态代理和静态代理,今天主要介绍下动态代理。目前流行的动态代理,一种是JDK自带的动态代理,另外一种就是cglib动态代理。所为的代理就是构造一个新对象,实现对原有对象所有行为的支持,同时又可以支持新的功能,比如常见的AOP。

JDK[……]

继续阅读

JDBC事务详解

JDBC事务详解

事务的特性:
1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。
2)一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数[……]

继续阅读

重构 01-Replace Nested Conditional with Guard Clauses 以卫语句取代嵌套条件表达式

重构 01-Replace Nested Conditional with Guard Clauses 以卫语句取代嵌套条件表达式

在函数中,如果嵌套很深的if/else,代码理解起来是比较费力,可以说是bad code。在重构过程中,可以通过谓语句表达式达到同样的效果。如下代码:
[java]
double getPayAmount() {
double result;
if (_isDead) res[……]

继续阅读

JDK8 Stream流的用法

JDK8 Stream流的用法

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的[……]

继续阅读

JDK8 lambda表达式

JDK8 lambda表达式

JDK8 中包含了很多内置的函数式接口。有些是在以前版本的Java中大家耳熟能详的,例如Comparator接口,或者Runnable接口。对这些现成的接口进行实现,可以通过@FunctionalInterface 标注来启用Lambda功能支持

Predicate
Predicate 是一[……]

继续阅读