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

news2024/9/20 20:45:44

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.coloradmin.cn/o/1666714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息检索(37):Query-as-context Pre-training for Dense Passage Retrieval

Query-as-context Pre-training for Dense Passage Retrieval 标题摘要1 引言2 初步:上下文监督预训练2.1 coCondenser2.2 CoT-MAE 3 查询即上下文预训练3.1 预训练3.2 微调 4 实验4.1 预训练4.2 微调4.3 基线4.4 主要结果4.5 域外评估 5 分析5.1 生成的查询数量的影…

【QuikGraph】C#调用第三方库实现迪杰斯特拉(Dijkstra)算法功能

QuikGraph库介绍 项目地址:https://github.com/KeRNeLith/QuikGraph QuikGraph为.NET提供了通用的有向/无向图数据结构和算法。 QuikGraph提供了深度优先搜索、广度优先搜索、A*搜索、最短路径、k最短路径,最大流量、最小生成树等算法。 QuikGraph最初…

【一支射频电缆的诞生】GORE 戈尔

工具连接: https://microwave-cablebuilder.gore.com/ 控制参数: 连接器: 欣赏

基于yolov8+gradio目标检测演示系统设计

YOLOv8与Gradio:开启目标检测的可视化新篇章 随着人工智能技术的飞速发展,目标检测作为计算机视觉领域的重要分支,已经广泛应用于安防监控、自动驾驶、医疗影像等多个领域。而YOLO(You Only Look Once)系列算法作为目…

力扣每日一题124:二叉树中的最大路径和

题目 困难 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root…

Python 将Excel转换为多种图片格式(PNG, JPG, BMP, SVG)

目录 安装Python Excel库 使用Python将Excel工作表转换为PNG,JPG或BMP图片 使用Python将Excel特定单元格区域转换为PNG,JPG或BMP图片 使用Python将Excel工作表转换为SVG图片 有时,你可能希望以图片形式分享Excel数据,以防止他…

视频封面一键提取:从指定时长中轻松获取您想要的帧图片

在数字媒体时代,视频已成为人们获取信息、娱乐和沟通的主要形式之一。而一个好的视频封面,往往能够吸引观众的眼球,增加视频的点击率和观看量。然而,对于很多视频创作者和编辑者来说,如何从视频中快速、准确地提取出合…

时序分解 | Matlab实现LMD局域均值分解

时序分解 | Matlab实现LMD局域均值分解 目录 时序分解 | Matlab实现LMD局域均值分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 时序分解 | Matlab实现LMD局域均值分解 Matlab语言 1.算法新颖小众,用的人很少,包含分解图 2.直接替换数据即可用…

进入泛型的世界

泛型的理解和好处 泛型的好处 编译时,检查添加元素的类型,提高了安全性减少了类型转换的次数,提高效率 不使用泛型 Dog-加入->Object-取出->Dog(向下转型) Dog放入到ArrayList 会先转成Object,在转…

数据分享—中国土壤有机质数据

土壤有机质数据是进行区域土地资源评价,开展自然地理研究常使用的数据,本期推文主要分享全国土壤有机质数据集。梧桐君会不定期分享地理信息数据,欢迎大家长期订阅。 数据来源 “万物土中生”,小编今天要分享的中国土壤有机质数…

通过mvn archetype 创建一个spring boot start 工程

mvn archetype https://maven.apache.org/archetype/index.html 遇到的问题 对于想自定义一个spring-boot-start的同学,比如 Springboot自定义Starter启动器 整个过程很繁琐。 定义属性开关增加 spring boot test start插件定义自动装载 spring.factories or org.springfra…

安装Ununtu后常见问题(无法远程连接、root密码等)

安装Ununtu后常见问题(无法远程连接、root密码、无法ifconfig等) 提示:安装完Ununtu系统后会遇到一些常见的问题,本文一次洗解决 文章目录 安装Ununtu后常见问题(无法远程连接、root密码、无法ifconfig等)一…

【全开源】排队叫号系统基于FastAdmin+GatewayWorker(源码搭建/上线/运营/售后/维护更新)

一款基于FastAdminGatewayWorker开发的多项目多场景排队叫号系统,支持大屏幕投屏,语音播报叫号,可用于餐厅排队取餐、美甲店排队取号、排队领取、排队就诊、排队办理业务等诸多场景,助你轻松应对各种排队取号叫号场景。 功能简介…

全国招标信息招标原文查询接口

招标信息招标原文查询接口 避开会员 全国招标投标查询API是解析商机的数据之门,它提供了一个高效、实时且定制化的方式来获取和分析招标投标信息。无论您是一家小型企业还是一家大型企业,都可以受益于这一强大工具,加速商业决策,…

音视频-H264编码封装- MP4格式转Annex B格式

目录 1:H264语法结构回顾 2:H264编码补充介绍 3:MP4模式转Annex B模式输出到文件示例 1:H264语法结构回顾 在之前文章里介绍过H264的语法结构。 传送门: 视音频-H264 编码NALU语法结构简介 2:H264编码补充介绍 H…

内存操作数及寻址方式

debug命令 debug命令,即DOS实用程序。DEBUG是一个DOS实用程序,是供程序员使用的程序调试工具,可以用它检查内存中任何地方的字节以及修改任何地方的字节。它可以用于逐指令执行某个程序以验证程序运行的正确性,也可以追踪执行过程…

新iPadPro是怎样成为苹果史上最薄产品的|Meta发布AI广告工具全家桶| “碾碎一切”,苹果新广告片引争议|生成式AI,苹果倾巢出动

Remini走红背后:AI生图会是第一个超级应用吗?新iPadPro是怎样成为苹果史上最薄产品的生成式AI,苹果倾巢出动Meta发布AI广告工具全家桶,图像文本一键生成解放打工人苹果新iPadPro出货量或达500万台,成中尺寸OLED发展关键…

牛客NC404 最接近的K个元素【中等 二分查找+双指针 Java/Go/PHP】

题目 题目链接: https://www.nowcoder.com/practice/b4d7edc45759453e9bc8ab71f0888e0f 知识点 二分查找;找到第一个大于等于x的数的位置idx;然后从idx开始往两边扩展Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、…

10分钟了解Golang泛型

泛型是Golang在1.18版本引入的强大工具,能够帮助我们在合适的场合实现简洁、可读、可维护的代码。原文: Go Generics: Everything You Need To Know 导言 可能有人会觉得Go泛型很难,因此想要借鉴其他语言(比如Java、NodeJS)的泛型…