
Java高级技术及框架部分
Ailsa Zhang
知命不惧,日日自新。
展开
-
模拟RMI远程方法调用
RMI(Remote Method Invocation)远程方法调用客户端向服务器端发送一个“请求“,服务器端处理该请求并将结果返回给客户端。如果把请求看成是一个”本地方法“,在客户端执行该方法,而实质上,在服务器端存在该方法的”本体“。如上图所示,客户端通过代理,获取”代理对象“,执行相关方法,实质上是向服务器发送请求,请求客户端原本要执行的方法。服务器端维持一个”方法池“,将”远程对象“存储在池子中,起着RMI中注册表的作用。客户端连接服务器,网络发送请求需要将方法名称,参数类型,参数的值等信息原创 2020-07-03 10:01:06 · 279 阅读 · 1 评论 -
模拟Spring AOP之拦截器链
AOP (Aspect Oriented Programming)面向切面编程-----不修改源代码的情况下给程序动态统一添加功能.比如说,一个方法作为"切入点","切面"类中可以提供拦截方法分别对"切入点"方法之前和之后进行拦截,即不修改源程序,动态添加功能.本篇主要是模拟拦截器链的实现,相应实现的功能主要有:1.用户可以选择代理模式(JDK代理或者CGLIB代理);2.用户可以选择类和方法,进行拦截(通过映射关系);3.对于一个类的同一个方法,是允许形成拦截器链的;4.允许"前置拦截",原创 2020-06-27 20:11:40 · 408 阅读 · 0 评论 -
动态代理之JDK代理和CGLIB代理
代理模式为其他对象提供一个代理以控制对某个对象的访问。动态代理利用反射机制在运行时创建代理类。举个例子,首先产生一个接口:public interface ISomeInterface { String doSomething(String arg);}被代理的实际对象(接口的实现类):public class TargetClass implements ISomeInterface { public TargetClass() { } @Override public原创 2020-06-27 17:16:53 · 195 阅读 · 0 评论 -
编写一个简单的线程池
实现一个简陋的线程池本篇并不是对线程池的源码的模拟,而是基于线程池的基本思想实现的一个简陋的线程池。线程池的基本目的线程存在基本的三个过程(状态),即创建,运行,销毁。在C/S模式下(长连接),服务器端侦听客户端连接,每侦听到一个客户端连接请求,就需要产生一个线程,负责维护与客户端的通信。那么,若存在很多的客户端,就会产生大量的线程。再者,RMI(远程方法调用),RMI服务器每侦听到客户端的请求,就需要产生一个线程,完成对特定方法的调用,这个过程本质上是对一个方法的调用,所以线程会很快结束掉。若存原创 2020-05-15 17:20:26 · 410 阅读 · 0 评论