如何根据接口文档,写一个接口类(举例说明)

直接先贴图(文中的url做了修改):

代码如下:

@FeignClient(name = "Z_KPI_API",url = "${Z.KPI.url:http://11.11.111.111:8080}",fallback = ZApiClientFallback.class)
public Interface ZApiClient{
    @PostMapping(path = "a/b",produces = "application/json")
    ZQueryResult query( @RequestParam("hostName")String hostName,
                        @RequestParam(name = "hostType",defaultValue = "ne")String hostType,
                        @RequestParam("fromTime")String fromTime,
                        @RequestParam("endTime")String endTime,
                        @RequestParam(name = "cpllectType",defaultValue = "Zabbix")String collectType,
                        @RequestParam(name = "history",required = false)Integer history); 


}

通过接口文档,需要弄清楚下面几条信息:

1、确定请求方式——post

2、拿到URL:http://11.11.111.111:8080

3、接口的路径:/a/b

4、请求参数

hostName,hostType,fromTime,endTime,collectType,history

5、返回形式:JSON

6、并且需要知道,返回值表示的意思

 

技术总结:

1、@FeignClient

本次例子,用到的参数是name,url,fallback

2、@RequestParam

本次例子,用到的参数是name,required

可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传 ,此处history不一定要传。不传的话会给参数赋值为null。

注意:GET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上

3、@PostMapping

本次例子,用到的参数是path,produces

关于PostMapping和GetMapping有

https://blog.csdn.net/linjpg/article/details/76927075

 

 

 

 

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses
在项目开发过程中,应该按要求编好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。   ◇ 可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。   ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。   ◇ 软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。   ◇ 概要设计说明书:该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。   ◇ 详细设计说明书:着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。   ◇ 用户操作手册:本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解,为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。   ◇ 测试计划:为做好集成测试和验收测试,需为如何组织测试制订实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。   ◇ 测试分析报告:测试工作完成以后,应提交测试计划执行情况的说明,对测试结果加以分析,并提出测试的结论意见。   ◇ 开发进度月报:该月报系软件人员按月向管理部门提交的项目进展情况报告,报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。   ◇ 项目开发总结报告:软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力,此外,还需对开发工作做出评价,总结出经验和教训。   ◇ 软件维护手册:主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护过程的说明,便于软件的维护。   ◇ 软件问题报告:指出软件问题的登记情况,如日期、发现人、状态、问题所属模块等,为软件修改提供准备文档。   ◇ 软件修改报告:软件产品投入运行以后,发现了需对其进行修正、更改等问题,应将存在的问题、修改的考虑以及修改的影响作出详细的描述,提交审批。 可行性分析报告 1 引言 1.1 编目的:阐明编可行性研究报告的目的,提出读者对象。 1.2 项目背景:应包括   ● 所建议开发软件的名称   ● 项目的任务提出者、开发者、用户及实现软件的单位   ● 项目与其他软件或其他系统的关系。 1.3 定义:列出文档中用到的专门术语的定义和缩词的原文。 1.4 参考资料:列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括   ● 项目经核准的计划任务书、合同或上级机关的批文   ● 与项目有关的已发表的资料   ● 文档中所引用的资料,所采用的软件标准或规范 2 可行性研究的前提 2.1 要求:列出并说明建议开发软件的的基本要求,如   ● 功能   ● 性能   ● 输入/输出   ● 基本的数据流程和处理流程   ● 安全与保密要求   ● 与软件相关的其他系统   ● 完成日期 2.2 目标:可包括   ● 人力与设备费用的节省   ● 处理速度的提高   ● 控制精度或生产力的提高   ● 管理信息服务的改进   ● 决策系统的改进   ● 人员工作效率的提高 2.3 条件、假定和限制:可包括   ● 建议开发软件运行的最短寿命   ● 进行显然方案选择比较的期限   ● 经费来源和使用限制   ● 法律和政策方面的限制   ● 硬件、软件、运行环境和开发环境的条件和限制   ● 可利用的信息和资源   ● 建议开发软件投入使用的最迟时间 2.4 可行性研究方法 2.5 决定可行性的主要因素 3 对现有系统的分析 3.1 处理流程和数据流程 3.2 工作负荷 3.3 费用支出:如人力、设备、空间、支持性服务、材料等项开支 3.4 人员:列出所需人员的专业技术类别和数量 3.5 设备 3.6 局限性:说明现有系统存在的问题以及为什么需要开发新的系统 4 所建议技术可行性分析 4.1 对系统的简要描述 4.2 与现有系统比较的优越性 4.3 处理流程和数据流程 4.4 采用建议系统可能带来的影响   ● 对设备
计算机网络课程学习心得   计算机网络学习心得1:   通过参加教育部全国高校教师网络培训中心举办的《计算机网络》骨干教师高级研修班的三天学习,听取冯博琴教授以及李波副教授、陈文革副教授和程向前副教授的深入介绍经验和讲解,对这门课程有了进一步的认识,下面对学习笔记总结如下几点:   一、学习笔记总结   1、参考先进的课程教学模式   《计算机网络》被列为计算机专业和信息类专业的核心基础课程之一,其教学目标是为以后计算机网络及其应用的专题学习和研究打下坚实基础,培养未来的网络设计人员和高级治理、维护人员。冯博琴教授展示了西安交大精品课程的网络教学平台,展示了一种先进的课程教学的模式,学生可以通网络教学平台向教师提出问题和提交作业,教师也可以在线为学生答疑和批改作业。为学生自主性学习计算机网络课程,传送电子化作业提供了条件。这种网站式的教学资源,首先经过富有丰富经验的教师的精心设计,再配合音频、视频等多媒体效果,动态网页与读者独特的互动性,确实可以满足不同层次学生的自主性、研究性学习的需要。   2、精选教学内容,构建先进完善的课程体系   针对李波副教授的介绍和总结,发现了目前传统计算机网络课程中存在的一些弊端。在以往的多数高校中,课堂教学内容大体是这样的:介绍数据通信的基本原理;介绍计算机网络的体系结构、OSI模型和TCP/IP协议、分层结构中各层应该完成的基本功能;介绍一些具体的组网技术或局域网络操作系统。实验教学内容一般情况下是组建一个小型的局域网络,利用服务器操作系统配置和治理这个网络;或者利用串形接口一个点对点通信的实验。   以往课堂与实验教学内容的缺陷是:对计算机网络内部的工作原理介绍得不够透彻;实验教学内容与课堂教学内容不吻合,没有体现出分层结构中层间接口、服务以及协议的概念;以往课堂与实验教学内容的脱节导致了所讲内容空洞、枯燥,不轻易被理解和把握。所以,应该对课堂与实验教学内容进行改革。   实验内容应和课堂教学内容紧密结合,尽力让学生体会、分析常用的网络协议,加强课堂教学的效果;针对不同层次的学生,为能力强的学生提供设计、实现协议的实验环境。   3、精选的课堂与实验教学应该坚持不断更新的原则,紧跟上计算机网络技术飞速发展的步伐。   传统的教学方法是讲授法。这种方法如运用不当,易造成以教师为中心,形成满堂灌、填鸭式,限制学生主体参与和主动创造的精神。   陈文革副教授对计算机网络课程整体教学过程进行总结和归纳,对此门课程教学过程中难、重点进行深入剖析,明确解决思路;进行了细致的案例分析和示范。使我认识到在教学过程中,教师应想方设法调动学生的各种感官,激发学生的思维,为学生创设一个有利于积极主动、创造性地进行学习的情境,并引导和组织他们进入这个情境。   二、本人经验总结   下面,将针对本人平时授课过程,总结一些了个人观点和经验,供同行参考和评论。   1.激发学生的学习兴趣   兴趣是最好的老师,学生在学习活动中,对自己感兴趣的现象、原理、规律等,总是主动、积极地去认识、探究。因此,在教学中,应设法激发学生的学习兴趣,以诱发学生的探究动机。   要让学生学好《计算机网络》这门课程,最重要的问题就是首先要激发学生对本课程的兴趣,把老师要求学生学的局面,改为学生主动要求学。在我第一次介绍这么课程时,首先介绍计算机网络的重要性和显示生活的具体应用,让同学对网络的宏观有个轮廓概念,明白网络的实用性,增加他们的兴趣。让同学举例说明他们自己使用网络的情况,觉得网络有什么用?然后根据他们的回答情况,来介绍整个教学内容的安排,给学生增加兴趣和动力,学生就会产生一种强烈的学好《计算机网络》这门课程的愿望。   教师在整个模式结构中总是起到导学的作用,教师的作用就是尽量激发学生对本课程的学习兴趣,提出问题、引导学生学习方向,让学生通过自主学习、网上协作学习、上机练习,最后对提出的问题进行评讲,检查学生的学习效果。   2.提出问题   利用各种方法选择出与当前学习主题密切相关的真实性事件或问题作为学习的中心内容。运用各种媒体把学生的注意力集中过来,达到教学目标。如果教师将所有问题都自问自答,学生很多时候还是不能真正称为学习的主人。就计算机网络这门课程而言,很多成人学生上班单位都能接触到一些网络设备和网络环境。因此结合教材内容给他们提一些问题,让他们下去搜集资料、寻找答案,能促进他们增加他们的兴趣和促进他们的学习。   3.创设情境   学习环境中的情境必须有利于学习者对所学内容的意义建构。计算机网络课程虽然都是围绕网络在进行介绍,但是课程内容概念比较多,抽象的介绍往往达不到很好的教学效果。因此作为教师结合计算机网络知识结合实际就是很重要工作了,整个教材的内容实际上可以以网络体系结构为框架进行展开。教学中直接给学生一个概念
计算机软件设计开发控制程序 计算机软件设计开发控制程序全文共14页,当前为第1页。 计算机软件设计开发控制程序全文共14页,当前为第1页。 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 计算机软件设计开发控制程序全文共14页,当前为第2页。 计算机软件设计开发控制程序全文共14页,当前为第2页。 计算机软件设计开发控制程序 目的 为使软件设计开发全过程得到有效的实施和控制,保证软件产品在开发过程中各个阶段的质量以及最终软件的功能、性能指标符合规定要求及适用于产品的法律、法规的要求,以增强顾客满意,特制定本程序。 范围 本程序涉及软件设计开发过程中的全过程的控制。 流程 可行性研究 在与客户签订合同之前,均应对将签项目进行资源、技术、市场的可行性分析,可行性分析通过后、签订合同前由公司组织相关人员对合同条款进行评审,评审通过后,公司组织进行立项工作。 立项 可行性分析评审通过后,有开发部门经理下达立项任务,制定相关人员填立项申请报告报批,报批通过后,由部门经理和技术负责人协商下达开发任务书,经技术负责人审核通过后报公司批准。批准立项后,项目进度应以立项申请报告中的阶段进度为准,如果进度需要调整,需要填进度调整申请报告报批。 需求分析 计算机软件设计开发控制程序全文共14页,当前为第3页。公司根据客户提出的技术要求和相应的软件任务书以及其他有关件,与客户协商确定详细的软件需求。 计算机软件设计开发控制程序全文共14页,当前为第3页。 开发策划 根据项目要求和软件需求,由配置人员配合项目经理编本项目的质量保证计划、配置管理计划和项目综合计划。在配置管理计划中应列明本项目需提交的各阶段文档的名称,在项目完成后项目组需列表说明需要移交的文档。在制定计划时,应为计划、设计、测试、修正、再测试、变更以及编制文档留出足够的时间。 设计 概要设计 根据软件需求说明建立软件总体结构和模块间的关系,确定各模块功能,定义各功能模块的接口,设计全局数据库和数据结构。 详细设计 在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。 编码实现 在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。 测试 软件单元测试 按详细设计的结构,根据软件单元测试计划,对软件进行测试。 计算机软件设计开发控制程序全文共14页,当前为第4页。组装测试 根据软件需求说明书中定义的全部功能和性能要求及组装测试计划,对软件进行组装测试,以确定整个软件是否满足软件需求,是否可以提交总装测试。 计算机软件设计开发控制程序全文共14页,当前为第4页。 验收交付 在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。   《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。  《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。 软件维护 对软件的维护包括针对软件运行过程中发现的问题而进行的改正性维护,以及可能出现的由于软件运行环境改变而进行的适应性维护。 职责和权限 软件产品设计开发小组职责 软件产品设计开发小组职责由项目经理、系统分析员、程序员和测试工程师组成,其职责如下: 项目负责人:是项目系统总负责人,根据经批准的《项目开发计划》(JL730112)组织设计和开发,负责项目技术方案的制定,负责项目设计和开发过程中的进度、成本和质量的跟踪和控制,组织设计和开发各阶段的设计评审,负责项目相关部门工作协调及相关信息的沟通,组织编《软件需求规格说明书》(JL730101)、《概要设计说明书》(JL730102) 。 系统分析员:是项目系统技术负责人,负责产品系统结构设计;负责项目子系统的技术方案的确定,对集成和系统测试中发现的问题负责组织整改,依据相关国家、行业和地方技术标准编制企业产品标准。 计算机软件设计开发控制程序全文共14页,当前为第5页。程序员:依据子系统(详细)设计,完成各模块的程序
<>boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。 对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、Collection 和 Collections的区别。   Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 12、final, finally, finalize的区别。   final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 方法的重Overriding和重载Overloading是Java多态性的不同表现。重Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 18、heap和stack有什么区别。 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 很详细的进销存系统文档

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值