发表于: 2017-11-25 21:33:02

1 629


任务进展

       今天本来准备面试的,结果大佬约时间草船云的人不在,不仅今天没时间,明天也没时间,改到周一了。那就只能继续刷基础了,看了Java别的学员讲的小课堂,有些自己也不怎么懂,尤其是一些扩展的内容点。

       1)RMI底层实现原理。

       远程方法调用(RMI)顾名思义是一台机器上的程序调用另一台机器上的方法,其主要目的就是要使运行在不同的计算机中的对象之间的调用表现得像本地调用一样。从而可以实现分布式计算。

       RMI应用程序通常包含两个单独的程序,一个服务器和一个客户机。典型的服务器程序创建一些远程对象,使对这些对象的引用可访问,并等待客户端调用这些对象上的方法。典型的客户端程序获取对服务器上的一个或多个远程对象的远程引用,然后调用它们上的方法。RMI提供了服务器和客户端来回传递信息的机制。这种应用有时被称为分布式对象应用。

       在 RMI 中, 远程服务的定义是存放在继承了 Remote 的接口中。远程服务的实现代码存放在实现该定义接口的类中。RMI 支持两个类实现一个相同的远程服务接口: 一个类实现行为并运行在服务器上, 而另一个类作为一个远程服务的代理运行在客户机上。客户程序发出关于代理对象的调用方法, RMI 将该调用请求发送到远程 JVM 上, 并且进一步发送到实现的方法中。实现方法将结果发送给代理, 再通过代理将结果返回给调用者。

       java.rmi.Naming类提供存储和获得“远程对象注册表”上远程对象的引用的方法。Naming类的每个方法都使用URL格式的参数,一个//ip:port/name可以唯一定位一个RMI服务器上的发布了的对象。服务端运行public static void bind(String name, Remote obj)这个方法会传入一个实现类的引用作为第二参数,此时Naming会使用getClass来获取类的名字,并构建成stub(Impl_stub)。运行public static Remote lookup(String name)方法的时候,会传入name作为参数,RMIRegistry就会返回stub给客户端调用。从实体类中获取RemoteRef对象,这个对象中就封装了服务端的细节,包括服务端的hostname、port。RMIRegistry会储存stub对象,并提供给客户端使用。

       2)Java Enum枚举类型

       值类型枚举 (enumeration),是值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。所使用的语言给每个字段都分配一个基础类型的特定值。

       java中的枚举类可以有构造函数、可以实现接口,但不能继承任何类,其在编译以后默认继承jdk内部的枚举类。当我们对于一些比较固定的常量的时候,使用枚举是很好的方法。

遇到问题

       无

明日计划

       继续刷基础

收获

       学习了几篇Java小课堂的扩展内容点

进度

       任务开始时间:2017.09.15

       demo时间:2017.11.20

      是否有延期风险:已demo通过,进真实项目评审已完成,计划约面试,真实项目未开始。

       禅道:http://task.ptteng.com/zentao/project-task-359.html


返回列表 返回列表
评论

    分享到