牛客错题总结 2月 18日 10点22分

目录

1、抛InterruptedException的代表方法有:

2、抽象类中的方法是可以有方法体的;JDK1.8之后,接口中的方法也可以有方法体,用default关键字修饰方法;

3、Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作;

4、File类

5、Servlet 与 CGI 的比较

6、方法重载

7、java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式;

8、Java的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)

9、Map集合类键值对是否可以为NULL


1、抛InterruptedException的代表方法有:

  • java.lang.Object 类的 wait 方法

  • java.lang.Thread 类的 sleep 方法

  • java.lang.Thread 类的 join 方法

 

2、抽象类中的方法是可以有方法体的;JDK1.8之后,接口中的方法也可以有方法体,用default关键字修饰方法;

 

3、Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作;

 

4、File类

File类是对文件整体或者文件属性操作的类,例如创建文件、删除文件、查看文件是否存在等功能,不能操作文件内容;文件内容是用IO流操作的;

 

5、Servlet 与 CGI 的比较

和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象CGI程序一样,收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误);

然而,Servlet的机制并不仅仅是这样简单的与用户表单进行交互。传统技术中,动态的网页建立和显示都是通过CGI来实现的,但是,有了Servlet,您可以大胆的放弃所有CGI(perl?php?甚至asp!),利用Servlet代替CGI,进行程序编写;

对比一:当用户浏览器发出一个Http/CGI的请求,或者说 *调用一个CGI程序的时候,服务器端就要新启用一个进程* (而且是每次都要调用),调用CGI程序越多(特别是访问量高的时候),就要消耗系统越多的处理时间,只剩下越来越少的系统资源,对于用户来说,只能是漫长的等待服务器端的返回页面了,这对于电子商务激烈发展的今天来说,不能不说是一种技术上的遗憾; *而Servlet充分发挥了服务器端的资源并高效的利用。每次调用Servlet时并不是新启用一个进程* ,而是在一个Web服务器的进程敏感词享和分离线程,而线程最大的好处在于可以共享一个数据源,使系统资源被有效利用;

对比二:传统的CGI程序,不具备平台无关性特征,系统环境发生变化,CGI程序就要瘫痪,而Servlet具备Java的平台无关性,在系统开发过程中保持了系统的可扩展性、高效性;

对比三:传统技术中,一般大都为二层的系统架构,即Web服务器+数据库服务器,导致网站访问量大的时候,无法克服CGI程序与数据库建立连接时速度慢的瓶颈,从而死机、数据库死锁现象频繁发生。而我们的Servlet有连接池的概念,它可以利用多线程的优点,在系统缓存中事先建立好若干与数据库的连接,到时候若想和数据库打交道可以随时跟系统"要"一个连接即可,反应速度可想而知;

 

CGI(Common Gateway Interface),通用网关接口

通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处理很多的并发请求。另外CGI程序都是与操作系统平台相关的,虽然在互联网爆发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。

Servlet

Servlet最初是在1995年由James Gosling 提出的,因为使用该技术需要复杂的Web服务器支持,所以当时并没有得到重视,也就放弃了。后来随着Web应用复杂度的提升,并要求提供更高的并发处理能力,Servlet被重新捡起,并在Java平台上得到实现,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机(JVM)当中。与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力。另外因为Java Servlet是运行在虚拟机之上的,也就解决了跨平台问题。如果没有Servlet的出现,也就没有互联网的今天。 在Servlet出现之后,随着使用范围的扩大,人们发现了它的一个很大的一个弊端。那就是 为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术产生了JavaServet Pages技术,也就是JSP。Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。 Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。

 

6、方法重载

方法重载的定义:在一个类中有两个方法,他们具有相同的名字,但有不同的参数列表;

也就是说,方法名(等同于函数名)可以相同,只要保证形参类型不同就可以了,无关返回值;

 

7、java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式;

例如平时有这样的用法:

for(int i=0;i<10;i++){

  a[i+1]=a[i]

}

这个i+1就是整数型表达式 或者a[5+3]就是a[8];

 

8、Java的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)

栈区:

  1. 每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中;

  2. 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问;

  3. 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令);

堆区:

  1. 存储的全部是对象实例,每个对象都包含一个与之对应的class的信息(class信息存放在方法区);

  2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,几乎所有的对象实例和数组都在堆中分配;

方法区:

  1. 又叫静态区,跟堆一样,被所有的线程共享。它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;

方法区和堆都是线程共享的,其他的都是线程隔离的;

 

9、Map集合类键值对是否可以为NULL

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值