`
文章列表
Spring AOP 的底层实现机制       2.  Spring AOP 中的 Pointcut   6.  扩展 Pointcut   如何前面的 Pointcut 类型都无法满足要求,这种情况下可以扩展 Spring AOP 的 Pointcut ,给出自定义的 Pointcut。   要自定义 Pointcut ,Spring AOP 已经提供了相应的扩展抽象支持,我们只需要继承相应的抽象父类,然后实现或者覆写   方法逻辑即可。   Spring AOP 的 Pointcut 类型可以划分为  StaticMethodMatch ...
在动态代理 和 CGLIB 的支持下, Spring AOP 框架的实现经过了两代。   从 Spring AOP 框架第一次发布,到 Spring 2.0 发布之前的 AOP 实现,是 Spring 第一代 AOP 实现。   Spring 2.0 发布后的 AOP 实现是第二代。   但是,Spring AOP 的底层实现机制一直没有变,唯一改变的,是各种 AOP 概念实现的表现形式以及 Spring AOP  的使用 方式。     Spring AOP 的底层实现机制     1. Spring AOP 中的 ...
Spring AOP 的实现机制     Spring AOP 的设计哲学也是简单而强大的。 它不打算将所有的 AOP 需求全部囊括在内,而是要以有限的 20% 的 AOP   支持,在满足 80% 的 AOP 需求。 如果觉得 Spring AOP 无法满足你所需要的那 80% 之外的需求,那么可以求助于   AspectJ 来完成, Spring AOP 对 AspectJ 提供了很好的集成。     Spring AOP 属于第二代 AOP, 采用动态代理机制和字节码生成技术实现 。与最初的 AspectJ 采用编译器将横切逻辑织入   目标对象不 ...
AOP  涉及到的几个基本概念   1. Joinpoint                  ---     可以在系统中织入横切逻辑的位置    2. Pointcut                   ---     用来描述系统中所有需要织入横切逻辑的 Joinpoint 的集合 3. Advice                      ---     将要被织入到 Joinpoint 中的横切逻辑 4. Aspect                      ---     对 以上三种概念 进行模块化的封装,相当于 ...
Java 平台上 AOP 的实现机制 1. 动态代理   JDK1.3之后,引入了动态代理 (Dynamic Proxy)机制,可以在运行期间,为相应的接口(Interface)动态生成对应的代   理对象,所以可以将横切关注点逻辑封装到动态代理的 Invocatio ...
软件开发的目的,最终是为了解决各种需求,包括业务需求和系统需求。使用面向对象的方法,可以对业务需求等普通关注点进行很好的抽象和封装,并且使之模块化。   但是对于系统需求一类的关注点来说,情况却有所不同。         1. 对于业务的需求而言,需求与其具体实现之间的关系基本上是一对一的。可以在系统中的某一个确定的点找到针对这种需求的实现,无论从开发还是维护的角度,都比较方便。   一个关于贷款业务的系统功能模块划分示意图   2. 对于系统需求,比如:为了对系统进行监控,需要为所有这些业务需求的实现添加日志记录功能,或者业务方法的执行需要一定的权限限制。 ...
在远端客户端连接RAC数据库时,通过统一的服务名连接时经常会出现ORA-12545错误。    SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。  SQL> CONN NDMAIN@nuagerac输入口令: ******  ERROR:ORA-12545: 因目标主机或对象不存在, 连接失败警告: 您不再连接到 ORACLE。  SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。  SQL> CONN NDMAIN@nuagerac输入口令: ******已连接。  SQL> CO ...
记录一下 Java 连接 Oracle RAC 集群时的 URL 部分的配置   String URL= "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=" + "(ADDRESS=(PROTOCOL=TCP)(HOST=ip1)(PORT=1521))" + "(ADDRESS=(PROTOCOL=TCP)(HOST=ip2)(PORT=1521))" + "(LOAD_BALANCE=yes)(F ...
Nginx + Tomcat集群部署时,后端Tomcat需要取得用户的IP,这时通过   request.getRemoteAddr()   取得的始终是 Nginx 所在的内网地址 由于用户请求经过Nginx,Nginx转发了请求到Tomcat后,Tomcat取得的始终是Nginx的Ip。   如果需要取得真实用户IP,需要在Nginx上做些配置。 location / 下设置    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header Host $host; 重启nginx. Java代码 ...
首先说明一下amoeba 跟 MySQL proxy在读写分离的使用上面的区别:   在MySQL proxy 6.0版本 上面如果想要读写分离并且 读集群、写集群 机器比较多情况下,用mysql proxy 需要相当大的工作量,目前mysql proxy没有现成的 lua脚本。mysql proxy根本没有配置文件, lua脚本就是它的全部,当然lua是相当方便的。那么同样这种东西需要编写大量的脚本才能完成一 个复杂的配置。而Amoeba只需要进行相关的配置就可以满足需求。   假设有这样的使用场景,有三个数据库节点分别命名为Master、Slave ...
 环境: Servers   Amoeba Server (Linux): 192.168.14.129 Mysql 1 Server  (Linux): 192.168.14.131 Mysql 2 Server  (Linux): 192.168.14.133   Clients   Mysql GUI Tools (Windows): 192.168.14.28 Java Programs  (Eclipse): 192.168.14.28   假设以上程序都已经安装好了。   1. Mysql数据库远程访问授权   mysql 1 server 和 m ...
  一个简单完整的 Mysql 主从复制,读写分离的示意图。   1. 首先搭建 Mysql 主从架构,实现 将 mater 数据自动复制到 slave   MySQL 复制的工作方式很简单,一台服务器作为主机,一台或多台服务器作为从机。主机会把数据 ...
之前写过一篇Linux下编译安装MySQL,但是在5.5版本之后MySQL自动化建构工具从GUN Autotools 换成了跨平台的Cmake 系统,编译和配置和原来有些不同,这里做一个简单的小结。   1. 安装CMake   Cmake是跨平台的工具,如果之前就尝试过在Windows上编译MySQL 的同学,就应该还记得CMake。   我的环境是不自带CMake(环境:RHEL5.4,YUM仓库里面没有CMake),所以需要自己安装。安装过程简单、顺利,没有遇到任何依赖问题......:)   $tar zxf cmake-2.6.4.tar.gz $cd cm ...
原文地址:http://www.orczhou.com/index.php/2010/06/compile-mysql-from-source/   使用rpm包,或者apt-get、yum等方式安装MySQL已经很方便了,不过我还是更喜欢编译安装。编译安装的好处:平台无关、安装的MySQL目录独立(方便清楚),据说有更 ...
  目标:同一台Linux主机上 安装 Nginx 和 两个 Tomcat 的集群   1.  下载安装 Nginx   地址:http://nginx.org/download/nginx-1.0.4.tar.gz   cd /usr/local/src/nginx wget http://nginx.org/download/nginx-1.0.4.tar.gz tar zxvf nginx-1.0.4.tar.gz cd nginx-1.0.4 ./configure make make install   2. Tomcat ...
Global site tag (gtag.js) - Google Analytics