【18-Ⅰ】Head First Java 学习笔记

HeadFirst Java

本人有C语言基础,通过阅读Java廖雪峰网站,简单速成了java,但对其中一些入门概念有所疏漏,阅读本书以弥补。

第一章 Java入门
第二章 面向对象
第三章 变量
第四章 方法操作实例变量
第五章 程序实战
第六章 Java函数库
第七章 继承与多态
第八章 深入多态
第九章 构造器与垃圾收集器
第十章 数字与静态
第十一章 异常处理
第十二章 GUI(内部类)
第十三章 Swing
第十四章 保存对象
第十五章 网络与线程
第十六章 数据结构
第十七章 程序发布
第十八章 分布式计算


前言

上一章,介绍了组织、包装、部署java程序。具体学习了可执行的jar。通过jar工具将java程序打包JAR文件交给用户使用。还学习了Java Web Start,JWS,简言之,通过Web发布的可执行JAR。

所有类在同一计算机的同一JVM上的堆空间执行是最便捷的情形。但如安全情境下,只允许服务器程序存取数据库,而客户端程序则在用户计算机上执行。这需要RMI技术,实现Java的远程程序调用。同时,会简要学习Servlet、EJB、Jini技术,了解其如何运用RMI,最后我们创建一个服务端浏览器。
在这里插入图片描述

Remote Method Invocation

同一机器上JVM只会知道自有堆的引用,方法调用时,两个对象都是在同一个堆上。

JVM无法知道其他机器上JVM信息,不同机器上,程序的运行,JVM的调用不同,但功能是一样的
在这里插入图片描述
在这里插入图片描述

调用不同机器上对象的方法

在第十五章,我们知道可以通过Socket链接,从一台机器取得另一台机器的数据,那如果要调用另一个机器上JVM堆上对象的方法呢?

可以自定义通信协议,通过Socket将结果传回

但如果能直接获取引用就方便多了,不妨设计某种机制,使用Socekt的I/O表达意图(调用另一台机器对象的方法),实现远程调用对象,但又如同本机的方法调用——RMI。
在这里插入图片描述

RMI的设计

在这里插入图片描述

helper 的任务

中间桥梁的作用

Cilent helper 连接 Server,传送调用信息(方法名、参数)
Server helper 通过Socket 连接 Cilent helper,解析信息。Service对象调用方法后,其helper将返回值传回
Cilent看似调用远程对象,实际调用本地处理 Socket和串流细节的 代理 helper。
在这里插入图片描述

调用方法的过程

在这里插入图片描述

Java RMI

Java中,RMI已提供helper,使用RMI,无需编写网络的I/O程序,客户端调用远程方法,如同本机方法的调用。

与一般调用区别,本质仍是通过网络发出调用,那就存在抛出异常的风险(涉及Socket与串流)
helper会将调用转成远程,信息的传递与采用的协议有关:JRMP或IIOP
在这里插入图片描述

创建远程服务

简要概括为5个步骤,具体介绍在此图之后。
在这里插入图片描述

创建远程接口
在这里插入图片描述
实现远程接口
Remote是客户端调用的对象,是真正执行方法的类

前三步是设计具体的远程服务(Service),这里第四步执行前,其实必须先执行RMI registry,即后面的步骤4
步骤之所以在后面,只是代码设计的逻辑顺序,但实际执行,向rmi注册stub对象,就是先执行rmi registry。
在这里插入图片描述后续步骤
rmic的具体过程可另外搜索了解
在这里插入图片描述
完整实现代码如下
在这里插入图片描述

实现Remote后,客户端如何取得对应的stub对象

RMI registry

客户端需要stub对象 与 Skelton 对象 交换信息,解传回的序列化数据。
在这里插入图片描述在这里插入图片描述

思考:客户端如何取得stub的类呢?

stub类文件直接给用户
dynamic class downloading:为stub对象加上URL标记,使用HTTP的GET获取类文件,这需要Web服务器提供类文件。

小结

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/689238.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Nginx 服务器部署并推流

环境 开发环境:windows 开发工具:ffmpeg、nginx、nginx-rmtp-module、vlc media player Nginx Nginx是一个高性能的HTTP和反向代理web服务器,并且支持rtmp,不过rtmp是作为一个nginx的一个模块。 对于linux系统,需要另…

Spring MVC分页示例

Spring MVC分页示例 分页用于在不同部分显示大量记录。在这种情况下,我们将在一页中显示10、20或50条记录。对于其余记录,我们提供链接。 我们可以在Spring MVC中简单地创建分页示例。在此分页示例中,我们使用MySQL数据库来获取记录。 创建…

Django性能之道:缓存应用与优化实战

title: Django性能之道:缓存应用与优化实战 date: 2024/5/11 18:34:22 updated: 2024/5/11 18:34:22 categories: 后端开发 tags: 缓存系统Redis优点Memcached优缺点Django缓存数据库优化性能监控安全实践 引言 在当今的互联网时代,用户对网站和应用…

Java --- 集合(2)--- 这篇文章让你学会如何使用List集合

本期文章来自黑马程序员以及Java入门到精通,希望各位大佬发现文章的瑕疵及时表出,另外也感谢您的收看。话不多说,直接进入正题...... 目录 一.List集合的使用: 二.三种遍历List方式: 首先还是给大家呈现这幅图&#x…

IDEA创建SpringBoot项目仅支持JDK17及以上版本的解决方案

背景 IDEA创建SpringBoot项目仅支持JDK17及以上版本的解决方案 原因 由于SpringBoot3.x.x版本的到来,官方称将来17及以上版本将成为主流,但是大多数的项目仍然使用JDK8。 1.解决方案一 将https://start.spring.io/或者http://start.springboot.io/替…

Java医院绩效考核系统源码B/S+avue+MySQL助力医院实现精细化管理 医院综合绩效核算系统源码

Java医院绩效考核系统源码B/SavueMySQL助力医院实现精细化管理 医院综合绩效核算系统源码 医院绩效考核系统目标是实现对科室、病区财务指标、客户指标、流程指标、成长指标的全面考核、分析,并与奖金分配、学科建设水平评价挂钩。 具体功能模块包括收入核算、成本…

快递物流查询:如何实现快递批量查询?这些技巧助你轻松应对

在日常生活和工作中,我们经常需要查询快递物流信息,尤其是当面对大量的快递包裹时,逐一查询无疑会耗费大量的时间和精力。这时,实现快递批量查询就显得尤为重要。本文将为你介绍办公提效工具一些实现快递批量查询的技巧&#xff0…

《十日终焉》中的定律整理-向虫队学习(举例+持续更新)

1、二八定律 二八定律,又称帕累托法则,也叫巴莱多定律。 是19世纪末20世纪初意大利经济学家巴莱多发明的。其中指出,约仅有20%的因素影响80%的结果。也就是说:所有变因中,最重要的仅有20%,虽然剩余的80%占…

2.2、Gitea忘记密码重置密码

忘记密码后,管理员可以使用gitea的主程序输入命令重置密码。 gitea admin user change-password --username myname --password asecurepassword

基于RFID的博物馆藏品管理系统

传统的博物馆藏品管理主要依赖人工记录和物理检查,这样的管理方式耗时耗力,并且容易出现记录错误。另外,对于藏品的定位和监控也存在一定的局限性。 RFID是一种无线通信技术,通过无线电频率识别标签上存储的信息,实现物…

计算机字符集产生的历史与乱码

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

Verlog-串口发送-FPGA

Verlog-串口发送-FPGA 引言: ​ 随着电子技术的不断进步,串口通信已成为嵌入式系统和计算机外设中一种广泛使用的异步通信方式。串口通信因其简单性、可靠性以及对硬件资源的低要求,在数据传输领域扮演着重要角色。在FPGA(现场可编…