代理模式

Spring004--Spring AOP(mooc)

China☆狼群 提交于 2020-01-05 06:06:30
一。Spring AOP概览 1.1。AOP(面向切面编程)是什么 1。 AOP是一种编程范式,而不是编程语言。   2。解决特写问题,不能解决所有问题   3。是OOP的补充,不是替代 除了面向切面编程,还有如下编程范式:   1。面向过程编程:如c/python   2。面向对象编程:如java/c++   3。函数式编程   4。事件驱动编程(GUI开发中比较常见)   5。面向切面编程 1.2。AOP(面向切面编程)解决的问题 1。DRY:Don't Repeat yourself 避免代码重复问题 2。SoC:Separation of Concerns 关注点分离 (1)。水平分离:展示层-》服务层-》持久层   (2)。垂直分离:模块划分(订单/库存等业务角度) (3)。切面分离:分离功能性需求与非功能性需求(把非功能性需求从功能性需求中剥离开来集中管理) 1.3。AOP(面向切面编程)好处 AOP好处即为“集中管理”: 1。集中处理某一关注点/横切逻辑; 2。可以方便的添加/删除关注点; 3。侵入性少,增强代码可读性及可维护性; 1.4。AOP(面向切面编程)应用声景 1。权限控制 2。缓存控制 3。事务控制(数据库事务控制) 4。审计日志(操作记录) 5。性能监控 6。分布式追踪 7。异常处理 以上为偏非功能性需求,特别适合AOP应用声景。 1.5。支持AOP

AOP与IOC区别

穿精又带淫゛_ 提交于 2020-01-05 06:05:48
Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。 • WEB层:SpringMVC • 业务层:Spring的IoC • 持久层:Spring的JDBCTemplate(Spring的JDBC模板,ORM模板用于整合其他的持久层框架) 从上面的简要介绍中,我们要知道Spring的核心有两部分: • IoC:控制反转

Spring AOP通俗理解与应用

岁酱吖の 提交于 2020-01-05 06:05:04
目录 AOP 图解AOP 概念 通俗理解AOP 作用 实现方式 应用场景 应用 Aop与SpringAOP的关系   关于AOP,一般都会先去了解AOP的基础概念,如切点、通知、连接点、切入点 、引入和织入等,面对晦涩难懂的概念,很容易陷入困境,找了几篇讲解较好的文章,将其整合起来,帮助深入理解AOP AOP   AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP(面向对象编程)的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容(Spring核心之一),是函数式编程的一种衍生范型。 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 作用   为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。 图解 传统的纵向体系代码复用: 横向抽取机制(AOP思想): 概念 1.通知(Advice)   就是你想要的功能,也就是上面说的安全,事务,日志等。你得先定义好把,然后在想用的地方用一下。 2.连接点(JoinPoint)   这个更好解释了,就是spring允许你使用通知的地方,那可真就多了,基本每个方法的前,后

Sencha Touch权威指南

限于喜欢 提交于 2020-01-05 04:13:26
《Sencha Touch权威指南》 基本信息 作者: 陆凌牛 [作译者介绍] 出版社:机械工业出版社 ISBN:9787111395010 上架时间:2012-8-22 出版日期:2012 年8月 开本:16开 页码:1 版次:1-1 所属分类: 计算机 > 软件与程序设计 > 网络编程 > javascript 计算机 > 软件与程序设计 > 网络编程 > HTML 更多关于》》》《 Sencha Touch权威指南 》 内容简介 书籍 计算机书籍   如何才能全面而透彻地理解和掌握移动应用开发框架sencha touch并开发出令人心动的移动应用?本书将给我们满意的答案!它的内容系统而全面,细致地讲解了sencha touch的所有功能、特性、使用方法、开发技巧,让我们能做到对sencha touch了如指掌;它实战性强,不仅每个知识点都配有精心设计的小案例(具体的实现步骤、完整的实现代码、最终的实现效果,图文并茂),而且还有综合性的案例,能让我们迅速获得实战经验。本书所有实例代码都经调试运行成功,我们可以对这些代码进行修改,以便观察各种不同效果,加深对实例代码的理解。   第一部分(第1~2章):首先介绍了sencha touch的功能和特性,然后介绍了如何搭建开发环境和发布应用程序,以及sencha touch的相关基础知识;第二部分(第3~15章):这是本书的核心部分

SQL Server 复制:事务发布

北城余情 提交于 2020-01-04 22:44:05
一、 背景   在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程; 二、 实现过程 (一) 环境信息 系统环境:Windows Server 2008 + SQL Server 2008 R2 发布服务器:192.168.1.151,服务器名称:USER-H2B2A89PEK 分发服务器:与发布服务器同一台机器 订阅服务器:192.168.1.152,服务器名称:USER-FJMO8L052U 发布数据库:Task 订阅数据库:TaskSiteInfo 数据库帐号:ReplicationUser/ ReplicationPassword (二) 搭建步骤 A. 发布服务器配置   首先在发布数据库和订阅数据库上创建相同的帐号和密码(ReplicationUser/ ReplicationPassword),并且设置Task数据库的安全对象,设置这样的帐号的目的就是为了和程序连接到数据库的帐号区分开,可以做权限上的控制,方便问题的排查; --更改安全对象的所有权 ALTER AUTHORIZATION

多线程(一)

谁说我不能喝 提交于 2020-01-04 20:52:05
说起多线程不得不弄清几个“词”的含义: 进程:顾名思义就是正在执行中的程序,为了完成某个特定的任务、功能,而用某种编程语言编写的一组指令的集合。 线程: 在操作系统中,进程是资源分配、调度和管理的最小单位。每个进程在内存中是独立的。 进程与线程之间的关系: 线程是进程中的一条执行路径。 那么怎么开启线程哪? a:继承 thread 类 b:实现 runnable接口 a方式的代码如下: // 方式一:继承Thread类 class MyThreadMethod1 extends Thread { private static int ticket = 10; // 重写run方法: public void run() { while (true) { if (ticket > 0) {// 提升效率 synchronized (MyThreadMethod1.class) {// 保证线程安全。 if (ticket > 0) { System.out.println(getName() + "票数:" + ticket); ticket--; } } } else { break; } } } } //测试方式一: @Test public void test() { // 定义3个线程 MyThreadMethod1 t1 = new MyThreadMethod1();

AOP实现原理

点点圈 提交于 2020-01-04 12:24:16
Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔。   本文来探讨一下AOP实现的原理。 一. 概述    代理模式 是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。   按照代理的创建时期,代理类可以分为两种。 静态代理 :由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理 :在程序运行时,运用反射机制动态创建而成。   另外还有 Cglib动态代理 ,它是针对类实现的代理。 二. 静态代理 1. Count.java 1 /** 2 * 定义一个账户接口 3 */ 4 public interface Count { 5 // 查看账户方法 6 public void queryCount(); 7 8 // 修改账户方法 9 public void updateCount(); 10 } 2. CountImpl.java 1 import net.battier.dao.Count; 2 /** 3 * 委托类(包含业务逻辑) 4 *

java基础——接口和工厂模式

北城余情 提交于 2020-01-04 10:33:33
package proxy; /* * 代理模式:把原对象(被代理类)的一些功能交给代理类处理 * * 安全代理:屏蔽真实角色的直接访问 * 远程代理:通过代理类处理远程方法调用RMI * 延迟加载:先加载轻量级代理对象,需要时通过代理对象再加载真实对象 * 动态生成代理类( 需要反射 ),静态生成代理类 * * */ public class ProxyTest { public static void main(String[] args) { Server server = new Server(); //1.把真实服务器交给代理类 ProxyServer proxyServer = new ProxyServer(server); //2.让代理类联网,实质上就是让真实服务器联网 proxyServer.browse(); } } interface NetWork{ public void browse(); } //被代理类 class Server implements NetWork{ @Override public void browse() { System.out.println("服务器访问网络"); } } //代理类 class ProxyServer implements NetWork{ private NetWork work; public

Charles抓包工具的使用

孤者浪人 提交于 2020-01-04 01:45:44
1、工具导航栏 Charles 顶部为菜单导航栏,菜单导航栏下面为工具导航栏。视图如下图所示: 工具导航栏中提供了几种常用工具: :清除捕获到的所有请求。 :红点状态说明正在捕获请求, 灰色状态说明目前没有捕获请求。 :灰色状态说明是没有开启网速节流, 绿色状态说明开启了网速节流。 :灰色状态说明是没有开启断点, 红色状态说明开启了断点。 :编辑修改请求,点击之后可以修改请求的内容。 :重复发送请求,点击之后选中的请求会被再次发送。 :验证选中的请求的响应。 :常用功能,包含了 Tools 菜单中的常用功能。 :常用设置,包含了 Proxy 菜单中的常用设置。 2、主界面视图 Charles 主要提供两种查看封包的视图,分别名为 Structure 和 Sequence 。 Structure : 此视图将网络请求按访问的域名分类。 Sequence : 此视图将网络请求按访问的时间排序。 使用时可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。 对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果请求内容是 POST 的表单,Charles 会自动帮你将表单进行分项显示。如果响应内容是 JSON 格式的,那么 Charles

手写Spring事务框架,阿里架构师一文详解Spring-SpringAOP原理

筅森魡賤 提交于 2020-01-03 17:38:29
本文转载自: 手写Spring事务框架,阿里架构师一文详解Spring-SpringAOP原理 一、Spring核心知识 Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。 为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。 WEB层:SpringMVC 业务层:Spring的IoC 持久层:Spring的JDBCTemplate(Spring的JDBC模板