对方法进行性能监控,在方法调用时统计出方法执行时间. 原始做法:在内个方法的开头获取系统时间,然后在方法的结尾获取时间,最后把前后台两次分别获取的系统时间做一个减法,即可获取方法执行所消耗的总时间. 项目中大量的方法,如果对每个方法开头结尾都加上这些代码,工作量会很大.现在不用修改现有代码,在另一个地方做性能监控,AOP(Aspect Oriented Programming,面向方面编程)就是我们寻找的解决方案. 在AOP中,我们需要定义一个Aspect(切面)类来编写需要横切业务逻辑的代码,…
开发AOP框架 借鉴SpringAOP的风格,写一个基于切面注解的AOP框架.在进行下面的步骤之前,确保已经掌了动态代理技术. 定义切面注解 /** * 切面注解 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Aspect { /*注解*/ Class<? extends Annotation> value(); } 通过@Target(ElementType.TYPE)来设…
MVC(Model-View-Controller,模型-视图-控制器)是一种常见的设计模式,可以使用这个模式将应用程序进行解耦. 上一章我们使用Servlet来充当MVC模式中的Controller.这样做虽然可以实现基本功能,但Servlet的数量会随着业务功能的拓展而不断增加.因此有必要减少Servlet的数量,将某类业务交给Controller来处理,它负责调用Service的相关方法,并将返回值放入Request或Response中.此外,Service不是通过new 的方式来创建的,…
什么是Shiro Shiro是Apache组织下的一款轻量级Java安全框架.Spring Security相对来说比较臃肿. 官网 Shiro提供的服务 1.Authentication(认证) 2.Authorization(授权) 3.Session Management(会话管理) 4.Cryptography(加密) 5.Web Integration(web集成) 6.Integrations(集成) 首先,她提供了Authentication(认证)服务,也就是说,通过她可以完成身…
Servlet API解耦 为什么需要与Servlet API解耦 目前在Controller中是无法调用Servlet API的,因为无法获取Request与Response这类对象,我们必须在Dispatcher中将这些对象传递给Controller的Action方法才能拿到这些对象,这显然会增加Controller对Servlet API的耦合.最好能让Controller完全不使用Servlet API就能操作Request与Response对象. 最容易拿到Request与Respon…
什么是ThreadLocal? ThreadLocal直译为“线程本地”或“本地线程”,如果真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,应该叫ThreadLocalVariable(线程局部变量)才对. 早在JDK1.2的时代,java.lang.ThreadLocal就诞生了,它是为了解决多线程并发问题而设计的,只不过设计得有些难用而已,所以至今没有得到广泛的应用. 一个序列号生成器的程序可能同时会有多个线程并发访问它,要保证每个线程得到的序列号都是自增的,而补鞥呢互相…
PS:Struggle for a better future 学习内容: 1.PullToRefrech下拉刷新的实现...   不得不说AndBase这个开源框架确实是非常的强大..把大部分的东西都进行了封装..提供给我们去使用..有些框架其实也被封装了起来...就拿PullToRefrech下拉刷新,还有SlidingMenu来说滑动菜单的实现都被完整的封装在了AndBase内部...提供给我们方便去实现更好的效果...   PullToRefrech,下拉刷新..这个效果在绝大多数使用a…
1.AOP介绍 即:面向切面编程,在不改变原有方法的定义与使用.也不改变原程序流程的情况下,可以改变原有方法的功能{增加一些附加的功能,在指定的地方添加其他函数方法:} 2.其他的方法:[需要的四个接口,且需要实现相应的接口] 1).在此方法运行前,执行指定的其他方法,并且返回:---------------------------------MethodBeforeAdvice 2).在此方法运行完后,执行指定的其他方法,并返回:--------------------------------…
内容提要 <架构探险--从零开始写Java Web框架>首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA.Maven.Git 等开发工具搭建 Java Web 应用:接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求分析与系统设计开始,带领读者动手完成该 Web 应用,完善相关细节,并对已有代码进行优化:然后基于传统 Servlet 框架搭建一款轻量级 Java Web 框架,一切都是从零开始,逐个实现类加载器.Bean 容器.IoC 框架.MVC 框架,所…
1.0.0 Summary Tittle:[EatBook]-NO.3.EatBook.3.JavaArchitecture.2.001-<架构探险:从零开始写Java Web框架>- Style:JavaArchitecture Series:Architecture Publishing House:电子工业 Author: 黄勇 Page Number:349 Since:2017-04-06 End:ing... Total Hours:ing... Degree Of Diffcul…
使用 Shiro,从架构谈起,到框架集成! 一.架构 1.使用用户的登录信息创建令牌 2.执行登陆动作 3.判断用户 4.两条重要的英文 二.实现Realm 1.缓存机制 2.散列算法与加密算法 3.用户注册 4.匹配 5.获取用户的角色和权限信息 6.会话 三.与SpringMVC集成 1.配置前端过滤器 一.架构 Shiro的应用不依赖任何容器,它也可以在JavaSE下使用.但是最常用的环境还是JavaEE.下面以用户登录为例: 1.使用用户的登录信息创建令牌 UsernamePasswor…
本文是整理的关于优酷.YouTube.Twitter及JustinTV几个视频网站的架构或笔记,对于不管是视频网站.门户网站或者其它的网站,在架构上都有一定的参考意义,毕竟成功者的背后总有值得学习的地方,虽然有些文章的发表时间有点久了,但是看看对开阔视野还是有帮助的. 优酷视频网站架构 一.网站基本数据概览据2010年统计,优酷网日均独立访问人数(uv)达到了8900万,日均访问量(pv)更是达到了17亿,优酷凭借这一数据成为google榜单中国内视频网站排名最高的厂商.硬件方面,优酷网引进的戴…
Spring框架之AOP源码完全解析 Spring可以说是Java企业开发里最重要的技术.Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programming面向切面编程).IOC技术我们在上一篇文章"Spring框架之beans源码完全解析"中进行了分析,本文对Spring框架的AOP源码进行分析. AOP面向切面编程是通过预编译方式和运行其动态代理,实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,…
1.Spring 框架的 AOP 2.Spring 中基于 AOP 的 XML架构 3.Spring 中基于 AOP 的 @AspectJ 1.Spring 框架的 AOP Spring 框架的一个关键组件是面向方面的编程(AOP)框架.面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点.跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑.有各种各样的常见的很好的方面的例子,如日志记录.审计.声明式事务.安全性和缓存等. 在 OOP 中,关键单…
参考来自:<架构探险>黄勇 著 1 使用IDEA搭建MAVEN项目 1.1 搭建java项目 (1)创建java项目 为了整个书籍的项目,我创建了一个工程,在这个工程里创建了每个章节的module.创建过程见随笔<待定>. 创建完成后,项目结构如下: ps:对maven项目而言,classpath是java和resources两个根目录. (2)调整pom配置 统一源代码的编码方式 统一源代码和编译输出所用的JDK版本 打包时跳过单元测试(可选) <?xml version=…
Sping框架的IOC特性 IOC(Inversion of Control):控制反转 以下以课程与老师的安排来介绍控制反转. 一个合理的课程编排系统应该围绕培训的内容为核心,而不应该以具体的培训老师为核心,这样才能在正常授课时可以随意选取合适的老师来上课,而非绑定到一个老师身上. 一.探索IOC 1.最紧耦合度的编法 public class JavaTrad { public void JavaCourse(){ Bill bill=new Bill();//引入讲师,使讲师直接侵入培训…
Executor执行已提交的 Runnable 任务的对象.此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节.调度等)分离开来的方法.通常使用 Executor 而不是显式地创建线程.例如,可能会使用以下方法,而不是为一组任务中的每个任务调用 new Thread(new(RunnableTask())).start(): 实例化Executor对象时,通常使用Executors中的静态方法返回Executor的子接口ExecutorService:这里主要介绍Execut…
承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(Atomicity) 由Java内存模型来直接保证原子性变量操作包括read.load.assign.use.store.write,大致可以认为基本数据类型的访问读写是具备原子性的.如果应用场景需要一个更大的原子性保证,Java内存模型还提供了lock和unlock,尽管虚拟机没有把lock和unlo…
前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习. 一, AspectJ的概述: AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件. Spring为了简化自身的AOP的开发,将AspectJ拿过来作为Spring自身一个AOP的开发.…
转载请注明出处,本文地址:http://www.cnblogs.com/ajiangg/p/6552855.html 以下是CentOS6.8下MySQL MHA架构搭建笔记 IP资源规划: 192.168.206.139 master 192.168.206.140 slave01(备用master) 192.168.206.141 slave02 192.168.206.142 manager 192.168.206.145 VIP 一.准备工作: 1.关闭Selinux [root@loc…
go语言,golang学习笔记2 web框架选择 用什么go web框架比较好呢?能不能推荐个中文资料多的web框架呢? beego框架用的人最多,中文资料最多 首页 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/ GitHub - astaxie/beego: beego is an open-source, high-performance web framework for the Go programming language.https://g…
1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * spring-aop-4.2.4.RELEASE.jar * com.springsource.org.aopalliance-1.0.0.jar * aspectJ的开发包 * com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar * spring…
1. Srping框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种 1. 基于JDK的动态代理 * 必须是面向接口的,只有实现了具体接口的类才能生成代理对象 2. 基于CGLIB动态代理 * 对于没有实现了接口的类,也可以产生代理,产生这个类的子类的方式 2. Spring的传统AOP中根据类是否实现接口,来采用不同的代理方式 1. 如果实现类接口,使用JDK动态代理完成AOP 2. 如果没有实现接口,采用CGLIB动态代理完成AOP…
原文地址:http://chengxu.org/p/401.html Instagram 架构分析笔记 全部 技术博客 Instagram团队上个月才迎来第 7 名员工,是的,7个人的团队.作为 iPhone 上最火爆的图片类工具,instagram 用户数量已经超过 1400 万,图片数量超过 1.5 亿张.不得不说,这真他妈是个业界奇迹. 几天前,只有三个人的 Instagram 工程师团队发布了一篇文章:What Powers Instagram: Hundreds of Instance…
Service Oriented Architecture 面向服务架构 学习笔记(一) 1.业务自由 1.1  在很多企业中,业务和IT技术是各自独立的,无法使用通用的统一语言进行管理. 1.2  没有一家企业的运转的统一语言进行管理. 2.技术自由 2.1  利用SOA,业务和IT互相妥协,达到相互平衡的状态. 3.SOA可以改变企业业务,IT文化,流程和语言 3.1  克服对SOA的恐惧,我们恐惧的只是恐惧本事. 3.2  提高服务质量 I.安全性. II.正确性. III.可预见性. 3…
mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目. mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql语句 mybatis可将向prparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象.(输出映射) SqlMapConfig.xml(是mybatis的全局配置文件,名称不固定) 配置了数据源/事务等mybatis运行环境 配置映射文件(配置sql语句) m…
Spring中提供两种AOP支持:   1.基于代理的经典AOP   2.Aspectj注解配置AOP    首先我们先了解什么是AOP,AOP(Aspect Oriented Programming)面向切面编程!AOP采用了横向抽取机制(可能有人会说啥叫横向抽取机制,在这里先引入一个纵向继承的概念),取代了纵向继承的重复性代码(例如权限控制.性能监视.缓存)   spring AOP使用纯Java实现,主要通过代理方式向目标类(被代理的类织入增强代码)   Aspectj 是一个基于Java…
EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展.就在EJB技术止步不前的时候,Spring框架在合适的时机出现了,Spring框架和EJB不同,Spring框架的学习成本非常低,它是一个轻量级的开发框架,更多强调面向对象的设计,而不是让现有的技术变得更复杂,它使用JavaBean替代了复杂的EJB,并且为JavaBean提供了简单易用的应用配置框架. 一个JavaBean就是一个公共类,它可以被其它JavaBean类作为组件来使用,并且JavaBea…
Spring 框架的 AOP Spring 框架的一个关键组件是面向方面的编程(AOP)(也称为面向切面编程)框架. 面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点. 跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑. 有各种各样的常见的很好的方面的例子,如日志记录.审计.声明式事务.安全性和缓存等. 在 OOP(面向对象编程) 中,关键单元模块度是类,而在 AOP 中单元模块度是方面. 依赖注入帮助你对应用程序对象相互解耦和 AOP 可…
aop编程 之使用spring框架实现方法调用前日志输出 使用spring框架实现AOP编程首先需要搭建spring框架环境: 使用Spring框架实现AOP工程编程之后,不需要我们去写代理工厂了,工厂的实例化由spring框架完成. spring框架生成代理对象的秘密: 1. 如果面向接口编程,那么底层采用jdk动态代理生成目标对象 2. 如果没有面向接口编程,那么底层采用cglib动态代理生成目标对象 由于spring的封装,使得我们实现AOP编程变得简单. 搭建Spring环境:引入Jar…