- 浏览: 533029 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (231)
- 一个操作系统的实现 (20)
- 汇编(NASM) (12)
- Linux编程 (11)
- 项目管理 (4)
- 计算机网络 (8)
- 设计模式(抽象&封装) (17)
- 数据结构和算法 (32)
- java基础 (6)
- UML细节 (2)
- C/C++ (31)
- Windows (2)
- 乱七八糟 (13)
- MyLaB (6)
- 系统程序员-成长计划 (8)
- POJ部分题目 (10)
- 数学 (6)
- 分布式 & 云计算 (2)
- python (13)
- 面试 (1)
- 链接、装载与库 (11)
- java并行编程 (3)
- 数据库 (0)
- 体系结构 (3)
- C++ template / STL (4)
- Linux环境和脚本 (6)
最新评论
-
chuanwang66:
默默水塘 写道typedef void(*Fun)(void) ...
C++虚函数表(转) -
默默水塘:
typedef void(*Fun)(void);
C++虚函数表(转) -
lishaoqingmn:
写的很好,例子简单明了,将观察者模式都表达了出来。
这里是ja ...
观察者模式——Observer
因为我本科毕业设计中大量采用RMI实现分布式,且使用了Eclipse中用于开发RMI的插件,这里主要阐述以下几点:
一、注意;
二、代码;
三、如何手工编写RMI应用。
一、注意
1)RMI产生stub的改进
P128. Earlier versions of the JDK constructed separate (stub) files for use on the client and server machines. As of 1.2, the RMI compiler("rmic" command) creates a single stub file that both the client and server machines need.
2)RMI的好处——远程代理的好处
P131 The benefit of RMI is that it lets client programs("ShowRocket Client") interact with a local object("RocketImpl_Stub") that is a proxy for a remote object("RocketImpl")!!!
“本地的代理”代理了“远程真正实现服务的对象”
二、代码
接口Rocket.java
package com.oozinoz.remote; import java.rmi.*; public interface Rocket extends Remote { void boost(double factor) throws RemoteException; double getApogee() throws RemoteException; double getPrice() throws RemoteException; }
接口实现RocketImpl.java
package com.oozinoz.remote; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class RocketImpl extends UnicastRemoteObject implements Rocket { protected double price; protected double apogee; public RocketImpl(double price, double apogee) throws RemoteException { this.price = price; this.apogee = apogee; } public void boost(double factor) { apogee *= factor; } public double getApogee() throws RemoteException { return apogee; } public double getPrice() throws RemoteException { return price; } }
在网络上某个节点注册一个对象RegisterRocket.java
package com.oozinoz.remote; import java.rmi.*; public class RegisterRocket { public static void main(String[] args) { try { Rocket biggie = new RocketImpl(29.95, 820); Naming.rebind("rmi://localhost:5000/Biggie", biggie); System.out.println("Registered biggie"); } catch (Exception e) { e.printStackTrace(); } } }
在网络上另一个节点查询这个对象ShowRocketClient.java
package com.oozinoz.remote; import java.rmi.*; public class ShowRocketClient { public static void main(String[] args) { try { Object obj = Naming.lookup("rmi://localhost:5000/Biggie"); Rocket biggie = (Rocket) obj; System.out.println("Apogee is " + biggie.getApogee()); } catch (Exception e) { System.out.println("Exception while looking up a rocket:"); e.printStackTrace(); } } }
三、手工编写RMI应用
1、编译
rmi>dir
Rocket.java
RocketImpl.java
RegisterRocket.java
ShowRocketClient.java
rmi>javac -d . *.java --> 编译java文件,指定存放生成类文件的位置
rmi>dir
Rocket.java
RocketImpl.java
RegisterRocket.java
ShowRocketClient.java
com\oozinoz\remote
Rocket.class
RocketImpl.class
RegisterRocket.class
ShowRocketClient.class
2、生成Stub,这个Stub在客户端和服务器端都要使用
rmi>rmic com.oozinoz.remote.RocketImpl
--> 为RocketImpl生成Stub,这个Stub需要被放到客户端和服务器两端
rmi>dir
Rocket.java
RocketImpl.java
RegisterRocket.java
ShowRocketClient.java
com\oozinoz\remote
Rocket.class
RocketImpl.class
RegisterRocket.class
ShowRocketClient.class
RocketImpl_Stub.class
3、运行效果
发表评论
-
(第十章)一个xml解析器和构造器
2013-03-10 16:40 897本章的前两节“10.1 状态机”、“10.2 ... -
享元模式——Flyweight
2012-02-17 13:10 1014享元模式——Flyweig ... -
工厂方法和抽象工厂——Factory Method & Abstract Factory
2012-01-04 17:14 2049一、使用抽象工厂和工厂方法 Factory Me ... -
单例模式——Singleton
2012-01-04 17:08 975public class Singleton { ... -
观察者模式——Observer
2012-01-04 16:25 1280观察者模式—— Observer ... -
适配器模式——Adaptor(Adapter)
2012-01-01 18:23 1368适配器模式 —— Adapto ... -
状态模式——State (更好的实现状态机)
2011-12-28 14:10 655801. 概述 The intent o ... -
装饰者模式——Decorator
2011-12-25 11:11 1141装饰者模式—— Decorator ... -
组合模式——Composite
2011-12-24 14:27 9741. Composite 定义 : ... -
构造者模式——Builder
2011-08-10 13:59 1030构造者模式——Builder 本文是《Java设计模 ... -
责任链模式——Chain of Responsibility
2011-08-10 11:26 893一、总结《Java设计模式》Chapter12 Chain o ... -
代理模式Dynamic Proxies(四、Struts2.0拦截器Interceptor)
2011-08-01 11:31 1379一、概念和注意点: Once you write a d ... -
代理模式Image Proxies(二、最朴素实现)
2011-07-31 11:55 955在前面《 代理模式Image Proxies(一、最朴素实现) ... -
命令模式——Command
2011-06-10 10:31 912偷懒一下,直接用JavaEye上chjavach老兄的文章了, ... -
代理模式Image Proxies(一、最朴素实现)
2011-06-03 09:27 1023A Classic Example: Image Prox ... -
策略模式——strategy
2011-06-02 12:36 847Strategy Pattern ...
相关推荐
NULL 博文链接:https://chuanwang66.iteye.com/blog/1069268
NULL 博文链接:https://chuanwang66.iteye.com/blog/1136589
如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求: import requests proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } requests.get(...
Laravel开发-laravel-valid-proxies Laravel有效代理
代理ip池(自动采集ip地址 从网站获取ip地址,检测是否可用,并实时更新,存入数据库中) 代理ip池(自动采集ip地址 从网站获取ip地址,检测是否可用,并实时更新,存入数据库中)
资源分类:Python库 所属语言:Python 资源全名:proxies_l-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
该项目是RMI中用于智能代理和拦截器的轻量级框架。 使用简单,只需要修改服务器端代码。 适用于在分布式应用程序中实现安全性,日志记录,客户端缓存和QoS。
$ npm install koa-proxies --save 选件 http-proxy活动 options . events = { error ( err , req , res ) { } , proxyReq ( proxyReq , req , res ) { } , proxyRes ( proxyRes , req , res ) { } } 日志选项 //...
代理人 Tokio堆栈的代理协议。 用法 查看服务器和客户端示例的examples/目录。 地位 http 服务器端 客户端 袜子5 服务器端 客户端
* OutputFilecheck proxies.json valid_proxies.jsonfilter valid_proxies.json <HTTP> output.json例如: 搜寻所有受支持的网站并将代理保存到proxies.json crawl proxies.json爬网并将代理保存到proxies.json: ...
Trusted Proxies GeoSet工具栏允许您快速连接到Trusted Proxies帐户上的任何代理服务器。 使用“受信任的代理” GeoSet工具栏,您可以在“受信任的代理”帐户上的所有地理位置代理之间无缝切换。 还没有Trusted ...
A simple source code to explain how to scrape proxies in Delphi.
java动态代理,j-dynproxies-source
weird_proxies:反向代理备忘单
'''01_普通代理示例.py''' import requests url = "http://www.baidu.com/" proxies = {"http":"http://183.129.207.82:11597"} headers = {"User-Agent":"Mozilla/5.0"} res = requests.get(url,proxies=proxies,...
'''02_私密代理示例.py''' import requests url = "http://httpbin.org/get" headers = {"User-Agent":"Mozilla/5.0"} proxies = {"http":"http://309435365:szayclhp@123.206.119.108:16817"} res = requests.get...
另一个代理客户端源码,基于c#,.net框架,代码相交简单。比较实用
一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 最后一个代理服务器 ...
安装pip install scrapy-rotating-proxies用法将带有代理列表的ROTATING_PROXY_LIST选项添加到settings.py: ROTATING_PROXY_LIST = [ 'proxy1.com:8000', 'proxy2.com:8031', # ...]或者,您可以指定一个ROTATING_...