[Java复习] 复习知识点

时间:2021-04-13 19:02:45

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现.

String 被设计成不可变(immutable)类, 所以它的所有对象都是不可变对象.

要被序列化的实例所对应的类必须实现 Serializable 接口.
然后你可以把实例传递给 ObjectOutputStream, 同时 ObjectOutputStream 也必须连接至 fileoutputstream. 这样就会把一个对象储存到一个文件里.

序列化忽略的静态字段

Java Virtual Machine Stacks - Java 虚拟机栈
线程私有,虚拟机栈描述的是 Java 方法执行的内存模型,每个方法在执行时会创建一个栈帧,栈帧中保存有局部变量表、操作数栈、动态链接和方法出口等。粗略来讲 Java 内存区分为堆和栈,实际上『栈』指的往往是虚拟机栈中的局部变量表部分。

局部变量表中存放了编译期可知的各种基本数据类型、对象引用类型和 returnAddress 类型。方法运行期间局部变量表大小不变。

Native Method Stacks - 本地方法栈
和虚拟机栈类似,不过区别在于虚拟机栈为 Java 方法(字节码)服务,而本地方法栈为 Native 方法服务(类似 C 语言中的栈)。具体实现可将这两者合二为一。

Heap - 堆
堆是被所有线程共享的一块内存区域。一般来说所有的对象实例和数组都要在堆上分配,但一些优化技术导致不一定所有对象实例都在堆上分配。

Method Area - 方法区
各线程共享的一块内存区域,和操作系统中进程中的『文本段』有些类似,用于存储虚拟机加载的类信息、常量、静态常量和即时编译器编译后的代码数据等。

Run-Time Constant Pool - 运行时常量池
这一部分是方法区的一部分,用于保存 Class 文件中编译期生成的字面值和符号引用。

直接内存
这一部分并不是虚拟机运行时的数据区域,用于 Native 函数分配堆外内存,提高性能用(不必在操作系统堆和 Java 堆复制数据)。

Java虚拟机区域:https://segmentfault.com/a/1190000002931555

servlet 生命周期?

读取 Servlet 类
创建 Servlet 实例
Web 容器调用 Servlet 的 init() 方法
响应客户端请求通过Servlet中service()方法中相应的doXXX()方法
调用 Servlet 的 destroy()

JSP 的生命周期?
编译
初始化
执行
清理

详细解释
编译:当浏览器请求JSP时,JSP引擎首先检查它是否需要编译页面。如果页面从未被编译过,或者JSP自从上次编译后被修改过,JSP引擎就编译这个页面。
编译的三个步骤:
解析JSP。
将JSP转换为servlet。
编译servlet。
初始化:当集装箱JSP调用jspinit()方法维修前的任何要求
执行:当浏览器请求一个JSP页面被加载和初始化,JSP引擎调用_jspservice()方法在JSP,JSP的_jspservice()方法被调用一次,每一个请求负责生成响应请求,这个方法也负责产生反应的七HTTP方法即得到,帖子,删除等。
清理:JSP的生命周期的破坏阶段代表当JSP是由使用的容器中取出,jspdestroy()方法是方法的破坏servlet JSP对等。

URI和URL区别
统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。标识出唯一
URL是以描述人的位置来唯一确定一个人的。
URI相当于人的身份证,独一无二的

spring框架有哪7个模块组成,分别列出各模块的名字和功能
Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Context。
1,Spring Core
Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC功能,Sprign的所有功能都是借助IOC实现的。
2,AOP
AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。
3,ORM
Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持,Spring支持常用的Hibernate,ibtas,jdao等框架的支持,Spring本身并不对ORM进行实现,仅对常见的ORM框架进行封装,并对其进行管理
4,DAO模块
Spring 提供对JDBC的支持,对JDBC进行封装,允许JDBC使用Spring资源,并能统一管理JDBC事物,并不对JDBC进行实现。
5,WEB模块
WEB模块提供对常见框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。
6,Context模块
Context模块提供框架式的Bean访问方式,其他程序可以通过Context访问Spring的Bean资源,相当于资源注入。
7,MVC模块
WEB MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。

你更倾向于哪种 DI

采用以设置注入为主,构造注入为辅. 对于依赖关系无须变化的注入, 尽量采用构造注入;而其他的依赖关系的注入, 则采用设置注入.

对于依赖关系无须变化的Bean,构造注入更有用处;因为没有setter方法,所有的依赖关系全部在构造器内设定,因此,不用担心后续代码对依赖关系的破坏.安全性高.

setter : 创建完对象之后再同过set()方法进行设定. 对于复杂的依赖关系, 如果采用构造注入, 会导致构造器过于臃肿, 难以阅读.

ApplicationContext 的实现都有哪些
FileSystemXmlApplicationContext

ClassPathXmlApplicationContext

WebXmlApplicationContext

Bean Factory 与 ApplicationContext 的区别?
http://blog.csdn.net/hi_kevin/article/details/7325554

什么是 Spring beans?

一个 bean 是被实例化,组装,以及由Spring IoC容器管理的对象.

都有哪些 bean scope?

singleton:单例:每一个Spring IOC容器返回一个bean实例
prototype:原型:每次请求时返回一个新bean实例
request:请求:每个HTTP请求返回一个bean实例
session:会话:每个HTTP会话返回一个bean实例
global-session:全局会话:每个全局HTTP会话返回一个bean实例

@Autowired @Inject @Resource
https://www.cnblogs.com/pjfmeng/p/7551340.html