java期末考试知识点总结(范文模版)

第一篇:java期末考试知识点总结(范文模版)
java知识点总结
应同学要求,特意写了一个知识点总结,因比较匆忙,可能归纳不是很准确,重点是面向对象的部分。
java有三个版本:JAVA SE 标准版JAVA ME移动版JAVA EE企业版 java常用命令:java, javac, appletview java程序文件名:.java,.class java的两类程序:applet, application;特点,区别,这两类程序如何运行 java的主方法,主类,共有类;其特征
java的数据类型,注意与C++的不同,如字符型,引用型,初值 java与C++的不同之处,期中已总结 java标记符的命名规则
1)标识符有大小写字母、下划线、数字和$符号组成。
2)开头可以是大小写字母,下划线,和$符号(不能用数字开头)3)标识符长度没有限制
4)标识符不能使关键字和保留字 面向对象的四大特征 抽象、封装、继承、多态
封装,类、对象,类与对象的关系,创建对象,对象实例变量
构造函数,默认构造函数,派生类的构造函数,构造函数的作用,初始化的顺序,构造方法的重载 构造函数:创建对象的同时将调用这个对象的构造函数完成对象的初始化工作。把若干个赋初值语句组合成一个方法在创建对象时一次性同时执行,这个方法就是构造函数。是与类同名的方法,创建对象的语句用new算符开辟了新建对象的内存空间之后,将调用构造函数初始化这个新建对象。构造函数是类的特殊方法: 构造函数的方法名与类名相同。构造函数没有返回类型。
构造函数的主要作用是完成对类对象的初始化工作。构造函数一般不能由编程人员显式地直接调用。
在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。类的修饰符:public类 VS 默认;abstract类;final类;1)类的访问控制符只有一个:public,即公共的。公共类表明它可以被所有其他类访问和引用。
若一个类没有访问控制符,说明它有默认访问控制特性,规定该类智能被同一个包中的类访问引用(包访问控制)。2)abstract类:用abstract修饰符修饰的类被称为抽象类,抽象类是没有具体对象的概念类,抽象类是它所有子类的公共属性集合,用抽象类可以充分利用这些公共属性来提高开发和维护效率。
3)final类:被final修饰符修饰限定的,说明这个类不能再有子类。所以abstract与final不能同时修饰一个类。域和方法的定义
1)域:定义一个类时,需要定义一组称之为“域”或“属性”的变量,保存类或对象的数据。可以是java任意的数据类型,其中包括简单类型、类、接口、数组等。一个类中域名应该是唯一的。
2)方法是类的动态属性,标志了类所具有的功能和操作。方法由方法头和方法体组成: 修饰符1 修饰符2 „返回值类型方法名(形式参数列表)throw(异常列表){ 方法体个语句; } static域和方法,特点,本质,与普通域和方法区别,初始化问题
1)静态域:用static修饰符修饰的域是仅属于类的静态域。特点是:它们是类的域,不属于任何一个类的具体对象。保存在类的内部区域的公共存储单元,任何一个类的对象访问它都是相同的数值,任何一个类的对象去修改它,都是在对同一个内存单元操作。2)静态方法:用static修饰的方法,是属于整个类的方法;(1)调用静态方法时,应该使用类名做前缀,而不是使用某个具体对象名。非静态方法属于某个对象的方法,在这个对象创建时,对象的方法在内存中拥有自己专用代码段;而静态方法属于整个类,它在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有。
由于static方法是属于整个类的方法,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,static方法只能处理static域。final关键字,final类,final域,final方法
1)final类:一个类如果被final修饰符修饰限定,说明这个类不再能有子类
2)final域:final是用来修饰修饰常量的修饰符,一个类的域如果被声明为final,那么它的值在程序的整个执行过程中都不能改变。用final修饰符说明常量是注意:1.需要说明常量的数据类型;2.需要同时指出敞亮的具体取值;3.因为所有类对象的常量成员,其数值固定一致,为了节省空间,常量通常声明为static.3)final方法:不能被当前类的子类重新定义的方法。被private限定为私有方法,以及final类中的方法,都是默认为最终方法。访问控制符
是一组想定类、属性、方法是否可以被程序中的其他部分访问和调用的修饰符,其他部分指这个程序中这个类之外的类。1)类的访问控制:
类的访问控制符只有一个Public,公共的。一个类被声明为公共类,表明它可以被所有的其他类访问和引用,程序其他部分可以创建这个类的对象,访问这个类内部可见的成员变量和调用它的可见方法。
如果类没有访问控制符public说明它是默认访问控制,规定该类只能被同一个包中的类访问和引用,不可被其他包中的类使用(包访问)。2)类成员的访问控制:
Public:公共。一个方法或者域被声明为公共的,表明它可以被所有的类访问。
默认访问控制符:类的定义中,域和方法没有指定访问控制符,则域和方法具有包访问性,即可以被同一个包中的所有类(的方法)访问。Protected:保护访问控制符,类中限定为protected的成员可以被这个类本身、它的子类(包括同一个包和不同包中的子类)以及同一个包中的其他类来访问。Private:私有访问控制符,被private修饰的域和方法只能被同一个类中的成员方法所访问,而不能被任何其他类(包括该类的子类)访问。它们也被称之为私有域和方法。类的继承,继承的特性可给面向对象编程带来哪些好处?什么是单继承,什么是多重继承? 继承:是存在于面向对象程序中的两个类之间的一种关系,当一个类获取另一个类的所有非私有的数据和操作的定义作为自己的一部分或全部成分时,就称两个类之间是继承关系。继承能够使程序结构清晰,降低编码和维护工作量。可以提高程序抽象程度,使之更接近人的思维方式,同时也可以提高程序开发效率,降低维护工作量。单继承:只任何一个类都只有一个单一的父类; 多重继承:只一个类可以有一个以上的父类,它的静态的数据属性和操作从所有这些父类中继承。Java处于安全性可靠性考虑,仅支持单继承。域的继承与隐藏
在子类中重新定义一个与从父类哪里继承来的域变量完全相同的变量,导致子类中有两个同名变量,一般情况,子类的方法所操作的是子类自己定义的变量,而从父类继承的变量为不可见,即被子类同名变量隐藏,成为域的隐藏。方法的继承与覆盖,与方法重载有什么不同?
子类可以重新定义与父类同名的方法,实现对父类方法的覆盖(overload),与域的隐藏不同在于:子类隐藏父类的域只是使之不可见,父类同名域在子类对象中仍然占有自己的独立内存空间;子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不复存在。注意:子类重新定义父类已有方法时,应保持与父类完全相同的方法头声明,即应与父类具有完全相同的方法名,返回值和参数列表。
重载(override)是在一个类中定义同名方法的情况。由于重载发生在同一个类里,不能再用类名来区分不同的方法,所以一般采用不同形式参数列表,包括形式参数个数、类型和顺序不同来区分重载方法。super
this super调用父类构造函数:严格来说子类并不继承父类构造函数。但子类构造函数与父类构造函数存在一定关系并遵循以下原则:
如果子类自己没有定义任何构造函数,那么创建子类对象时将调用父类无参数构造函数。如果子类自己定义了构造函数,则在创建子类对象时,系统将首先隐含执行父类无参数的构造函数,然后再执行子类自己的构造函数。
如果在子类自己定义的构造函数中,利用super关键字显式地调用父类的构造函数,系统将不再隐含调用父类的无参数的构造函数。super的显式调用语句必须是子类构造函数的第一个可执行语句。(P126有例子)
this:一个类的不同构造函数之间可以互相调用。一个构造函数需要另一个构造函数时,应使用关键字this,同时这个调用语句应该是整个构造函数的第一个可执行语句。当使用this并给他一个参数列表时,this显式调用参数匹配的另一个构造方法。(P125例子)。多态:重载,覆盖,对象引用多态(兼容性原则)
多态,指一个程序中同名的不同方法共存的情况。突出Java语言的继承性。面向对象程序中多态可以表现在:1)子类对父类方法的覆盖;2)一个类中方法的重载;3)将子类对象作为父类的对象实现多态。父类与子类对象的转换
子类继承了父类所有的非私有的成员(属性和方法),父类成员也就是子类成员。我们可以通过父类变量让一个子类对象做父类对象可做的全部事情(P115).如果父类变量指向的实际是一个子类对象,即早先曾将子类对象的引用赋值给这个父类变量,那么可以用强制类型转换将这个父类变量引用转换为子类对象的引用,也就是将作为父类对象看待的子类对象转变为作子类对象看待。Employee emp = new Manager(…)Manager mgr;mgr =(Manager)emp;最后结果相当于:
Manager mgr = new Manager(…)
包,package
import, 简单知道作用和使用 接口,会定义,有何特点?作用,会实现,会使用
接口是用来实现类间多重继承功能的结构。Java中接口在语法上有些相似与类,它定义了若干个抽象方法和常量,形成一个属性集合,属性集合通常对应了某一组功能,主要是可以帮助实现类似于类的多重继承功能。声明接口:
[public] interface 接口名 [extends 父接口名列表] { //接口体
// 常量域声明
[public] [static] [final] 域类型域名 = 常量值;
//抽象方法声明
[public] [abstract][native] 返回值方法名(参数列表)[throw 异常列表]; } 实现接口:
在类的声明部分,用implements关键字声明该类将要实现那些接口。如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有方法定义方法体,方法头部分应该与接口中的定义完全一致。如果实现接口类是abstract类,它可以不实现该接口的所有的方法。一个类在实现某接口的抽象方法时,必须使用完全相同的方法头。
接口的抽象方法的访问限制符都已指定为public,所以类实现方法时候,必须显式地使用pubic修饰符。
4-1什么是抽象?什么是过程抽象?什么是数据抽象?面向对象软件开发如何实现?
抽象:即去除掉被研究对象中与主旨无关的次要部分,或暂时不考虑的部分,而仅抽取与研究工作有关的性质的内容加以考察。
过程抽象:将整个系统的功能划分为若干部分,强调功能完成的过程及步骤。数据抽象:把系统中需要处理的数据和数据上的操作结合在一起,根据功能性质和作用等因素抽象成为不同的抽象数据类型。
面向对象软件开发采用数据抽象的方法构建程序的类,对象及方法。4-2什么是封装?面向对象程序如何实现封装? 封装是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部,系统的其他部分只有通过包裹在数据外面的被授权操作,才能够与这个抽象数据类型交流和交互。
抽象数据类型用“类”这个面向对象工具可理解和操纵的结构来代表的,每个类封装了相关数据和操作。
4-3使用抽象和封装有哪些好处? 抽象可以帮助人们明确工作重点,理清问题的脉络。封装特性使抽象数据类型的可重用性大为提高,利于构建,开发大型标准化的应用软件系统,大幅提高生产效率,缩短开发周期和降低各种费用。
4-4Java程序中使用的类分为哪两种?什么事系统定义的类?什么事用户自定义类?
1)系统定义的类及用户自定义类2)Java类库是一组由开发人员或软件供应商编写的Java程序模块,每一个模块通常对应一种特定的基本功能和任务可以直接利用这些类库无需从头编写。3)用户自己根据需要定义的类。
4-6 使用已经存在的类(包括类库中系统类和用户类)有哪三种主要方法?如何在程序中引入已经存在的类?
第一、继承系统类或继承已经定义好的类。第二、创建已经定义好的类的对象。第三、直接使用类。2)利用import语句引入它所用的类所在的包。4-15 什么事静态初始化器?它有什么特点?与构造函数有什么不同?
静态初始化器:由static引导的一对大括号括起的语句组,作用与类的构造函数相似,都完成初始化工作。与构造函数的不同:
构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。
构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器是在它所属的类加载入内存时由系统调用执行。
不同于构造函数,静态初始化器不是方法,没有方法名、返回值、和参数列表。4-16 最终域和易失域各有有何特点?如何定义?
(1)最终域:一个类的域如果被声明为final,那么它的值在程序的整个执行过程中是不能变的。final修饰常量时注意:1)说明常量的数据类型2)需要同时指出常量的具体值。3)所有类对象的常量成员,其数值固定一致,为了节省空间,常量通常声明为static.例:static final String phoneNum =”123”。
(2)易失域:一个域被volatile修饰符修饰,说明这个域可能同时被几个线程控制修改,即这个域不仅被当前程序掌握,运行过程中可能存在其他未知程序,操作来影响和改变域的取值。
4-17 如何定义方法?在面向对象程序设计中方法由什么作用? 方法名后面的小括号()是方法的标志。程序用方法名调用方法。定义方法的目的:是定义具有相对独立和常用功能的模块,使程序结构清晰也利于模块在不同场合重复利用。
4-18 什么事抽象方法?它有何特点?如何定义、如何使用?
由abstract 修饰符修饰的抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法。例如:abstract void performDial();
注意:所有抽象方法,都必须存在抽象类中,一个非抽象类中出现抽象方法时非法的。一个抽象类的子类若不是抽象类,它必须为父类中所有的抽象方法写方法体,不过抽象类不一定只能拥有抽象方法,它也可以包括非抽象方法。
4-22修饰符是否可以混用?混合使用应该注意什么问题?
修饰符可以混合使用。例如:public abstract final 三者之间并非互斥。Public abstract class „ Abstract不能与final 并列修饰一个类。
Abstract 不能与private、static、final、native修饰同一个方法。Abstract 类不能有private域和方法。Abstract方法必须在abstract类中。Abstract方法不能处理非static属性。
5-2 子类的域和方法数目一定大于等于父类的域和方法数目,说法是否正确? 不正确,子类并不能继承父类的私有域和私有方法。5-7构造函数是否可以被重载?试举例。
可以被重载。构造函数的重载指同一个类中存在若干个具有不同参数列表的构造函数 例:D200_Card(){} / /无形式参数,无任何操作的构造函数
D200_Card(long cn){ cardNumber = cn;} //一个参数的构造函数
D200_Card(long cn,int pw;){ cardNumber = cn;password = pw;} //两个参数的构造函数 简答题new1 1 什么是静态变量?什么是静态方法?各自有何特点?
被static修饰的变量叫静态变量,被static修饰的访问静态方法。静态变量最主要特点是它们是类的域(变量),不属于任何一个类的具体对象,它不保存在对象空间,而是保存在类的内存区域的公共存储单元,任何类的对象访问它时,取到的都是相同的数值,修改它时,都是对同一个内存单元进行操作。静态方法是属于整个类的的类方法,不是属于某个具体对象的方法。Java中对变量和成员方法的访问控制主要有哪四种?有何区别?
a)Private:私有访问属性,被private修饰的变量或方法只能被同一个类的成员方法访问,而不能被任何其他类访问。Private访问控制符提供最高的成员保护级别,使它们不为其他类所见,体现了类的封闭和信息隐藏。b)默认访问控制符:如果在类的定义中,域和方法前没有指定访问控制符,则具有包访问性,即被同一包的所有类所访问,称之为“包友元”成员。c)Protected保护访问控制符:被portected修饰的成员可以被类本身、它的子类、以及同一个包中所有类访问。d)Public公共访问控制符:成员可以被所有类访问。填空:
1.创建类的对象时,使用运算符__new______给对象分配内存空间。2.若有定义:float[] b={1.1f, 3.5f, 6.8f};,则b.length()的值是_3____ 3.在子类中使用关键字__super_____做前缀可调用被子类覆盖的父类中的方法
4.Java语言中, 通常把可能发生异常的方法调用语句放到try块中,并用紧跟其后的_catch____块来捕获和处理异常
5.程序中实现多线程的方法有两种:继承_Thead____类和实现Runnable接口 6.面向对象的三大特征是()()()封装性、继承性、多态性
第二篇:java知识点总结(定稿)
目录
目录................................................................................................................................................1 基础篇............................................................................................................................................4
一、JDK常用的包................................................................................................................4
二、Get和Post的区别.......................................................................................................4
三、Java多态的具体体现...................................................................................................4
四、StringBuffer StringBuilder String 区别.......................................................................5
五、Hashtable与HashMap的区别....................................................................................5六、九大隐式对象...............................................................................................................5
七、Forword(请求转发)与Redirect(重定向).....................................................................6
八、JQurey总结....................................................................................................................6
九、XML和Json的特点....................................................................................................6
十、request.getSession()、reqeust.getSession(false)和
request.getSession(true)7
十一、Page和PageContext的区别....................................................................................7
十二、Ajax总结..................................................................................................................7
十三、JSP9大隐视对象中四个作用域的大小与作用范围................................................7
十四、List,Set,Collection,Collections..................................................................................8
十五、java的基本数据类型...............................................................................................8
十六、冒泡排序...................................................................................................................8 十七、二分查找法.................................................................................................................9
十八、时间类型转换.............................................................................................................9
十九、阶乘.......................................................................................................................10
二十、UE和UI的区别....................................................................................................10 二
十一、osi七层模型.......................................................................................................10 二
十二、线程和进程的区别.............................................................................................11 二
十三、jvm的内存结构.................................................................................................11 二
十四、内存泄露和内存溢出.........................................................................................11 二
十五、单例.....................................................................................................................11 二
十六、解析xml文件的几种技术.................................................................................13 二
十七、项目的生命周期.................................................................................................14
1
二十八、OSCache的判断.................................................................................................14 二
十九、经常访问的技术网站.........................................................................................15 三
十、项目团队中交流的工具.........................................................................................15 三
十一、平时浏览的书籍.................................................................................................15 三
十二、java Exception体系结构....................................................................................15 三
十三、session和cookie的区别....................................................................................16 三
十四、字节流与字符流的区别.....................................................................................16 三
十五、final,finally,finalize 三者区别...........................................................................17 三
十六、Io流的层次结构................................................................................................17 三
十七、JAVA:..................................................................................................................18 三
十八、JavaSE JavaEE JavaME区别........................................................................18 三
十九、JDK JRE JVM的区别:.............................................................................19 四
十、报错的状态码:.....................................................................................................20 四
十一、协议以及默认的端口号.....................................................................................20 四
十二、抽象类与接口的区别.........................................................................................20 四
十三、修饰符的作用.....................................................................................................20 框架篇........................................................................................................................................21
一、Struts1的运行原理..................................................................................................23
二、Struts2的运行原理..................................................................................................23
三、struts2的体系结构...................................................................................................23
四、Spring MVC运行原理.............................................................................................24
五、Struts1.x与Struts2.x的区别...................................................................................25
六、Spring MVC、struts1和struts2区别......................................................................25
七、Struts2中result中的type类型...............................................................................25
八、Struts2标签..............................................................................................................26
九、SSI整合....................................................................................................................26
十、SSH整合..................................................................................................................26
十、Spring MVC整合.....................................................................................................27
十一、Hibernate 中get 和 load的区别.........................................................................28
十二、Hibernate、Ibatis、Jdbc三者的区别..................................................................28
十三、Hibernate的运行原理..........................................................................................28
十四、Hibernate五大核心(类/接口)简述.................................................................28
十五、Hibernate与JDBC的区别..................................................................................29
十六、Hibernate中的两大配置文件................................................................................29
十七、Hibernate事务处理..............................................................................................29
十八、Hibernate的三种状态以及状态的转换..............................................................29
十九、分页步骤...............................................................................................................30
二十、hibernate缓存概述.................................................................................................30 二
十一、Ssh的概述:.....................................................................................................30 二
十二、防止表单重复提交.............................................................................................31 二
十三、JSP标签:........................................................................................................31 二
十四、过滤器.................................................................................................................32 二
十五、拦截器的理解.....................................................................................................32 二
十六、Spring融入框架................................................................................................33
2
数据库篇.....................................................................................................................................33
一、JDBC连接数据库步骤(以MYSQL为例).............................................................33
二、数据库连接池...........................................................................................................34
三、mysql的数据库导入导出........................................................................................35
四、jdbc分段批量提交的时候出现异常怎么处理?.....................................................35
五、jdbc批量处理数据...................................................................................................35
六、Oracle分页...............................................................................................................36
七、Oracle的基本数据类型...........................................................................................36
八、id、rowid、rownum的区别....................................................................................37
九、主键和唯一索引的区别?.......................................................................................37
十、Preparedstatement和statement的区别...................................................................37
十一、数据库三范式.......................................................................................................38
十二、视图概述...............................................................................................................38
十三、存储过程概述.......................................................................................................38
十四、索引概述...............................................................................................................39
十五、必背的sql语句....................................................................................................41 业务场景篇.................................................................................................................................44
一、Spring的概述...........................................................................................................44
二、事务概述...................................................................................................................45
三、权限概述...................................................................................................................46
四、OSCache业务场景...................................................................................................46
五、线程概述...................................................................................................................47
六、Ajax请求Session超时问题....................................................................................47 七:java线程池概述.........................................................................................................48
八、OSCache概述...........................................................................................................49
九、OSCache+autocomplete+单例业务场景..................................................................49
十、缓存概述...................................................................................................................50
十一、实现页面静态化业务场景...................................................................................50
十二、servlet线程安全描述...........................................................................................51
十三、(jbpm4)工作流引擎描述:.....................................................................................51
十四、JPBM业务场景....................................................................................................52
十五、Ant描述................................................................................................................52
十六、FreeMarker描述...................................................................................................53
十七、webService描述...................................................................................................53
十八、oracle索引概述....................................................................................................55
十九、oracle存储过程....................................................................................................56
二十、Junit 业务场景.......................................................................................................56 二
十一、Apache+Tomcat 实现负载均衡及seesion复制...............................................56 二
十二、Ant业务场景......................................................................................................57 二
十三、maven业务场景.................................................................................................57 二
十四、Servlet的概述:................................................................................................58 优化篇........................................................................................................................................64
一、代码优化...................................................................................................................64
二、业务优化...................................................................................................................64
3
三、sql优化.....................................................................................................................65
四、防sql注入................................................................................................................68
基础篇
一、JDK常用的包
java.lang: 这个是系统的基础类,比如String、Math、Integer、System和Thread,提供常用功能。
java.io: 这里面是所有输入输出有关的类,比如文件操作等
java.net: 这里面是与网络有关的类,比如URL,URLConnection等。java.util : 这个是系统辅助类,特别是集合类Collection,List,Map等。java.sql: 这个是数据库操作的类,Connection, Statememt,ResultSet等
二、Get和Post的区别
1.get是从服务器上获取数据,post是向服务器传送数据,2.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
3.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
4.在进行文件上传时只能使用post而不能是get。
三、Java多态的具体体现
面向对象编程有四个特征:抽象,封装,继承,多态。
多态有四种体现形式:
1.接口和接口的继承。2.类和类的继承。3.重载。4.重写。
其中重载和重写为核心。
重载:重载发生在同一个类中,在该类中如果存在多个同名方 法,但是方法的参数类型和个数不一样,那么说明该方法被重 载了。
重写:重写发生在子类继承父类的关系中,父类中的方法被子 类继承,方法名,返回值类型,参数完全一样,但是方法体不 一样,那么说明父类中的该方法被子类重写了。
4
四、StringBuffer StringBuilder String 区别
String
字符串常量
不可变
使用字符串拼接时是不同的2个空间
StringBuffer 字符串变量
可变
线程安全
字符串拼接直接在字符串后追加 StringBuilder 字符串变量
可变
非线程安全
字符串拼接直接在字符串后追加
1.StringBuilder执行效率高于StringBuffer高于String.2.String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象,StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方
法,在原来的基础上进行追加,所以性能比String要高,又因为StringBuffer 是
线程安全的而StringBuilder是线程非安全的,所以StringBuilder的效率高于
StringBuffer.3.对于大数据量的字符串的拼接,采用StringBuffer,StringBuilder.五、Hashtable与HashMap的区别
HashMap不是线程安全的,HashTable是线程安全。
HashMap允许空(null)的键和值(key),HashTable则不允许。
HashMap性能优于Hashtable。
Map 1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.3.HashMap允许键或值为空,而HashTable不允许键或值为空.六、九大隐式对象
输入/输出对象:
request
response
out 作用域通信对象: session application pageContext Servlet 对象:
page
config 错误对象:
exception
5
七、Forword(请求转发)与Redirect(重定向)
1、从数据共享上
Forword是一个请求的延续,可以共享request的数据
Redirect开启一个新的请求,不可以共享request的数据
2、从地址栏
Forword转发地址栏不发生变化
Redirect转发地址栏发生变化
八、JQurey总结
jquery是一个轻量级的js框架,具有跨浏览器的特性,兼容性好,并且封装了很多工具,方便使用。
常用的有: 选择器,dom操作,ajax(ajax不能跨域),特效,工具类
九、XML和Json的特点
Xml特点:
1、有且只有一个根节点;
2、数据传输的载体
3、所有的标签都需要自定义
4、是纯文本文件
Json(JavaScript Object Notation)特点:
json分为两种格式:
json对象(就是在{}中存储键值对,键和值之间用冒号分隔,键 值 对之间用逗号分隔);
json数组(就是[]中存储多个json对象,json对象之间用逗号分隔)(两者间可以进行相互嵌套)数据传输的载体之一
区别:
传输同样格式的数据,xml需要使用更多的字符进行描述,流行的是基于json的数据传输。
xml的层次结构比json更清晰。
共同点:
xml和json都是数据传输的载体,并且具有跨平台跨语言的特性。
6
十、request.getSession()、reqeust.getSession(false)和
request.getSession(true)
getSession()/getSession(true):当session存在时返回该session,否则新建一个
session并返回该对象
getSession(false):当session存在时返回该session,否则返回null
十一、Page和PageContext的区别
Page是servlet对象;使用this关键字,它的作用范围是在同一页面。PageContext是作用域通信对象;通常使用setAttribute()和getAttribute()来设置和获取存放对象的值。
十二、Ajax总结
AJAX 全称: 异步JavaScript及 XML(Asynchronous JavaScript And XML)Ajax的核心是JavaScript对象XmlHttpRequest(XHR)。
Ajax的优点:
提高用户体验度(UE)
提高应用程序的性能
进行局部刷新
AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
2.通过 AJAX,我们的 JavaScript 可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。通过这个对象,我们的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即可局部刷新。
3.AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面,减轻服务器的负担,提升站点的性能。
AJAX 可使因特网应用程序更小、更快,更友好,用户体验(UE)好。5.Ajax是基于标准化并被广泛支持的技术,并且不需要插件和下载小程序
十三、JSP9大隐视对象中四个作用域的大小与作用范围
四个作用域从大到小:appliaction>session>request>page application:全局作用范围,整个应用程序共享.生命周期为:应用程序启动到停止。
7
session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记
住这个会话状态。
request:请求作用域,就是客户端的一次请求。
page:一个JSP页面。
以上作用范围使越来越小,request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward)。
十四、List,Set,Collection,Collections
1.List和Set都是接口,他们都继承于接口Collection,List是一个有序的可重复的集合,而Set的无序的不可重复的集合。Collection是集合的顶层接口,Collections是一个封装了众多关于集合操作的静态方法的工具类,因为构造方法是私有的,所以不能实例化。
2.List接口实现类有ArrayList,LinkedList,Vector。ArrayList和Vector是基于数组实现的,所以查询的时候速度快,而在进行增加和删除的时候速度较慢LinkedList是基于链式存储结构,所以在进行查询的时候速度较慢但在进行增加和删除的时候速度较快。又因为Vector是线程安全的,所以他和ArrayList相比而言,查询效率要低。
十五、java的基本数据类型
数据类型 大小 byte(字节)1(8位)shot(短整型)2(16位)int(整型)4(32位)long(长整型)8(32位)float(浮点型)4(32位)double(双精度)8(64位)char(字符型)2(16位)boolean(布尔型)1位 附加:
String是基本数据类型吗?(String不是基本数据类型)String的长度是多少,有限制?(长度受内存大小的影响)
十六、冒泡排序
public class Sort { public static void sort(){
8
} Scanner input = new Scanner(System.in);int sort[] = new int[10];int temp;System.out.println(“请输入10个排序的数据:”);for(int i = 0;i < sort.length;i++){
sort[i] = input.nextInt();} for(int i = 0;i < sort.lengthi1)* num;
} } public static void main(String[] args){
System.out.println(multiply(10));} }
二十、UE和UI的区别
UE 是用户体验度
UI 界面原型(用户界面)(相当于买房时用的模型)
设计UI的作用:
1、帮助程序员工作(界面已由美工设计完成)
2、提前让用户对项目有个宏观的了解,知道效果是什么样子。
二十一、osi七层模型
第一层:物理层
第二层:数据链路层
第三层:网络层
第四层:传输层
第五层:会话层 第六层:表示层 第七层:应用层
10
二十二、线程和进程的区别
1.线程(Thread)与进程(Process)
进程定义的是应用程序与应用程序之间的边界,通常来说一个进程就代表一个与之对应的应用程序。不同的进程之间不能共享代码和数据空间,而同一进程的不同线程可以共享代码和数据空间。
2.一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。3.实现线程的两种方式:继承Thread类,实现Runable接口
二十三、jvm的内存结构
java虚拟机的内存结构分为堆(heap)和栈(stack),堆里面存放是对象实例也就是new出来的对象。栈里面存放的是基本数据类型以及引用数据类型的地址。
对于所谓的常量是存储在方法区的常量池里面。
二十四、内存泄露和内存溢出
内存泄露(memory leak),是指应用程序在申请内存后,无法释放已经申请的内存空间.一次内存泄露危害可以忽略,但如果任其发展最终会导致内存溢出(out of memory).如读取文件后流要进行及时的关闭以及对数据库连接的释放。
内存溢出(out of memory)是指应用程序在申请内存时,没有足够的内存空间供其使用。
如我们在项目中对于大批量数据的导入,采用分段批量提交的方式。
二十五、单例
单例就是该类只能返回一个实例。单例所具备的特点: 1.私有化的构造函数 2.私有的静态的全局变量 3.公有的静态的方法
单例分为懒汉式、饿汉式和双层锁式
11
饿汉式: public class Singleton1 {
private Singleton1(){};
private static Singleton1 single = new Singleton1();
public static Singleton1 getInstance(){
return single;
} }
懒汉式:
public class Singleton2 {
private Singleton2(){}
private static Singleton2 single=null;
public tatic Singleton2 getInstance(){
if(single == null){
single = new Singleton2();
}
return single;
} } 线程安全:
public class Singleton3 {
private Singleton3(){}
private static Singleton3 single;
public static Singleton3 getInstance(){
if(null == single){
synchronized(single){
if(null == single){
single = new Singleton3();
}
}
}
return single;
} }
参考:
通过双重判断来保证单列设计模式在多线程中的安全性,并且它在性能方面提高了很多。
12
synchronized在方法上加锁(同步锁)
synchronized在代码块内部加锁(同步代码块)
synchronized(同步锁)
使用synchronized如何解决线程安全的问题? 1.synchronized在方法上加锁 2.synchronized在代码块内部加锁
1.懒汉
2.饿汉
3.双重判断
二十六、解析xml文件的几种技术
1、解析xml的几种技术
1.dom4j
2.sax
3.jaxb
4.jdom
5.dom 1.dom4j
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。
2.sax
SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。
13
3.jaxb
JAXB(Java Architecture for XML Binding)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
2、dom4j 与 sax 之间的对比:【注:必须掌握!】
dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml
也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性
所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j
二十七、项目的生命周期
1.需求分析
2.概要设计
3.详细设计(用例图,流程图,类图)4.数据库设计(powerdesigner)5.代码开发(编写)
6.单元测试(junit 白盒测试)(开发人员)svn版本管理工具(提交,更新代码,文档)7.集成测试(黑盒测试,loadrunner(编写测试脚本)(高级测试))
8.上线试运行(用户自己体验)
9.压力测试(loadrunner)
10.正式上线
11.维护
二十八、OSCache的判断
Object obj = CacheManager.getInstance().getObj(“oaBrandList”);//从缓存中取数据 if(null == obj){
obj = brandDao.getBrandList();
//如果为空再从数据库获取数据
//获取之后放入缓存中
14
CacheManager.getInstance().putObj(“oaBrandList”, obj);}
return(List
二十九、经常访问的技术网站
1.csdn(详细步骤的描述)2.iteye(详细步骤的描述)3.oschina(开源中国获取java开源方面的信息技术)
4.java开源大全 下载完毕,并且已经解析为DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用Jquery 中另一个关于页面加载的方法---load()方法。Load()方法会在元素的onload 事件中绑定一个处理函数。如果处理函数绑定给window 对象,则会在所有内容(包括窗口、框架、对象和图像等)加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。Jquery 代码如下: $(window).load(function(){ // 编写代码 });等价于JavaScript 中的以下代码 Window.onload = function(){ // 编写代码 } 四
十五、switch默认接受的几种数据类型
Short, int, byte, char
21
四
十六、request 跟session的区别
1.他们的生命周期不同,request对应的是一次请求,session对应的是一次会话
2.request占用资源比较少,相对来说缺乏持续性, 而session资源消耗比较大,所以通常使用request来保存信息
四
十七、找到解决svn冲突方法
对于svn冲突,可以采用手工处理将冲突的部分进行整合,之后备份最新整合后的文件,采用覆盖更新的方式处理完 冲突之后,再把最新整合后的文件进行提交。
四
十八、反射的描述
通过字符串可以动态创建java对象,并且可以动态访问方法,属性等。
我们在项目中的时候封装过数据库jdbc的持久层,其中就利用反射这项
技术来达到通用
和灵活的目的。
22
框架篇
一、Struts1的运行原理
在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器ActionServlet接收,ActionServlet在用户请求时将请求参数放到对应的ActionForm对象中的成员变量中,然后ActionServlet则会根据struts-config.xml中的映射关系找到相应的Action中的方法,将对应的ActionForm一并传给这个Action中的方法里,然后执行相应的业务逻辑操作,最后就根据ActionMapping的findforward方法返回一个ActionForward,之后在struts-config.xml中找到与之对应的forward标签,根据它的配置路径找到对应的jsp页面。
二、Struts2的运行原理
1、tomcat 启动的时候会加载 web.xml、核心控制器 FilterDispatcher 会加载并解析 struts.xml
2、客户端会发送一个请求到 action、FilterDispatcher 会根据后缀名进行拦截
3、FilterDispatcher根据 struts.xml 的配置文件信息 找到 某个action 对应的某个类里的指定方法
4、执行相关的业务逻辑最后返回 一个String
5、 里配置
三、struts2的体系结构
1、客户端向Servlet容器(例如Tomcat)发送一个请求;
2、这个请求经过一系列的过滤器(Filter);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是jsp或者FreeMarker的模版。(体系结构图见下一页)
23
四、Spring MVC运行原理
整个处理过程从一个HTTP请求开始:
1.Tomcat在启动时加载解析web.xml,找到spring mvc的前端总控制器DispatcherServlet,并且通过DispatcherServlet来加载相关的配置文件信息。
2.DispatcherServlet接收到客户端请求,找到对应HandlerMapping,根据映射规则,找到对应的处理器(Handler)。
3.调用相应处理器中的处理方法,处理该请求后,会返回一个ModelAndView。
4.DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器),根据视图解析器的配置,DispatcherServlet将要显示的数据传给对应的视图,最后显示给用户。
24
五、Struts1.x与Struts2.x的区别
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,struts1严重依赖于servletAPI, 属于侵入性框架,struts2不严重依赖于servletAPI,属于非侵入型框架。线程模型方面:
Struts1的Action是单实例的, 一个Action的实例处理所有的请求。
Struts2的Action是一个请求对应一个实例(每次请求时都新new出一个对象), 没有线程安全方面的问题 封装请求参数:
Struts1中强制使用ActionForm对象封装请求的参数。
Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。struts1的前端总控制器(核心总控制器)为ActionServlet, struts2的前端总控制器(核心总控制器)为FilterDispather
六、Spring MVC、struts1和struts2区别
1.spring mvc 单例 非线程安全
struts1单例 非线程安全
struts2线程安全对每个请求都产生一个实例 2.spring mvc的入口是servlet,而struts2是filter
spring 的前端总控制器为 DispatcherServlet
struts2 的前端总控制器为 FilterDispatcher
struts1 的前端总控制器为 actionServlet 3.参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。springmvc 用方法来接受参数
4.spring mvc是基于方法的设计,而sturts是基于类
七、Struts2中result中的type类型
1.dispatcher:它是默认的,用来转向页面,通常处理JSP 2.redirect:将用户重定向到一个已配置好的URL 3.redirectAction:将用户重定向到一个已定义好的action 4.chain:将action和另外一个action链接起来 5.freemarker:呈现Freemarker模板
6.httpheader:返回一个已配置好的HTTP头信息响应
7.stream:向浏览器发送InputSream对象对下载的内容和图片非常有用 8.velocity:呈现Velocity模板
25
9.xslt :该XML可以通过XSL模板进行转换
10.plaintext:显示原始文件内容,例如文件源代码
八、Struts2标签
首先需要引用 <%@taglib prefix=“s” uri=“/struts-tags”%> 1.
3.
个页面中
4.
5.
6.
7.
8.
9.
最常用的是:
判断
循环
输出
九、SSI整合
1、Action继承于Actionsupport
2、引入struts-spring-plugin.jar包,从而完成struts和spring的整合
3、在struts2的action中注入service,保证service的名字和配置文件中的一致,并生成get,set方法
4、Dao层继承于SqlMapClientDaoSupport
5、在dao层的配置文件中注入sqlMapClient
十、SSH整合
1.首先在web.xml中通过ContextLoaderListener来融入spring,并加载spring的相关配置文件
2.同样配置sturts2的前端总控制器filterDispatcher来过滤相关的 请求并且加载struts.xml
26
3.action继承ActionSupport,然后通过引入struts-spring-plugin.jar 包并且根据配置文件中service的id生成get,set方法来注入service层。
4.dao层继承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory.5.通过spring中的配置文件加载hibernate.cfg.xml文件从而融入hibernate.在ssh框架中是怎么整合spring? 首先在web.xml中通过ContextLoaderListener来融入spring,并加载spring的相关配置文件
在ssh框架中是怎么整合hibernate? 通过spring中的配置文件加载hibernate.cfg.xml文件从而融入hibernate dao层继承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory
在ssh框架中是怎么整合struts2? 配置sturts2的前端总控制器filterDispatcher来过滤相关的 请求并且加载struts.xml
十、Spring MVC整合
1.首先,要在web.xml里面配置SpringMVC的核心控制器,DispatcherServlet,对指定的后缀请求进行拦截。
2.Controller层要加 @Controller注解,表明该类是MVC的控制层。
3.创建Service接口,给接口加上注解 @Component或者 @Service 表明这是Service业务处理层
4.在Controller层声明Service变量(属性),给变量(属性)加上 @Autowired注解,通过自动绑定机制将Service注入到Controller。(注:@Autowired默认是ByType,如果想根据属性名注入,那么就再加上注解 @Resource(name=“属性名”))5.在Controller层的方法上加上注解 @RequestMapping(“requestAddress”)表明该方法的请求地址
6.Dao层要加上注解 @Repository 表明这是数据库持久层 7.同样将dao实例注入到service层中。
8.配置视图解析器 “InternalResourceViewResolver”,对处理后的跳转进行统一配置。
27
十一、Hibernate 中get 和 load的区别
加载方式:
load为延迟加载(返回的是一个只有id属性的代理,只有使用该对象属性时,才
发出sql语句);
get为立即加载(执行时,会立即向数据库发出sql语句)返回结果:
load检索不到记录时,会抛ObjectNotFoundException异常
get检索不到记录时,会返回null
十二、Hibernate、Ibatis、Jdbc三者的区别
Hibernate属于全自动,Ibatis属于半自动,Jdbc属于手动,从开发效率上讲hibernate较高,ibatis居中,jdbc较低,从执行效率上讲hibernate较低,ibatis居中,jdbc较高,因为jdbc是手工写sql语句,程序员对sql的控制能力更大,可以根据业务需要进行优化,而ibatis虽然也可以对sql进行优化,但是他里面将resultset封装为实体的过程中采用了反射机制所以一定程度上影响了性能,而hibernate因为高度封装所以开发效率相对较高,但正因为这个原因,所以程序员在对sql语句的控制和优化方面相对比较弱,而且在将resultset封装成实体的过程中也采用了反射机制,所以在性能方面较低
十三、Hibernate的运行原理
首先通过configuration去加载hibernate.cfg.xml这个配置文件,根据 配置文件的信息去创建sessionFactory,sessionFactory是线程安全的,是一个session工厂,用来创建session,session是线程不安全的,相当于
jdbc的connection,最后通过session去进行数据库的各种操作,在进行操作 的时候通过transaction进行事务的控制。
十四、Hibernate五大核心(类/接口)简述
1.Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。(加载 hibernate.cfg.xml)并创建一个SessionFactory对象。2.SessionFactory接口
SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。SessionFactory是线程安全的。3.Session接口
Session(会话)接口是Hibernate应用使用的主要接口。Session接口负责执行被持久化对象的CRUD操作(增删改查)。Session对象是非线程安全的。Sess
java期末考试知识点总结(范文模版)
本文2025-01-29 01:11:07发表“合同范文”栏目。
本文链接:https://www.wnwk.com/article/263560.html
- 二年级数学下册其中检测卷二年级数学下册其中检测卷附答案#期中测试卷.pdf
- 二年级数学下册期末质检卷(苏教版)二年级数学下册期末质检卷(苏教版)#期末复习 #期末测试卷 #二年级数学 #二年级数学下册#关注我持续更新小学知识.pdf
- 二年级数学下册期末混合运算专项练习二年级数学下册期末混合运算专项练习#二年级#二年级数学下册#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册年月日三类周期问题解题方法二年级数学下册年月日三类周期问题解题方法#二年级#二年级数学下册#知识分享 #关注我持续更新小学知识 #家长收藏孩子受益.pdf
- 二年级数学下册解决问题专项训练二年级数学下册解决问题专项训练#专项训练#解决问题#二年级#二年级数学下册#知识分享.pdf
- 二年级数学下册还原问题二年级数学下册还原问题#二年级#二年级数学#关注我持续更新小学知识 #知识分享 #家长收藏孩子受益.pdf
- 二年级数学下册第六单元考试卷家长打印出来给孩子测试测试争取拿到高分!#小学二年级试卷分享 #二年级第六单考试数学 #第六单考试#二年级数学下册.pdf
- 二年级数学下册必背顺口溜口诀汇总二年级数学下册必背顺口溜口诀汇总#二年级#二年级数学下册 #知识分享 #家长收藏孩子受益 #关注我持续更新小学知识.pdf
- 二年级数学下册《重点难点思维题》两大问题解决技巧和方法巧算星期几解决周期问题还原问题强化思维训练老师精心整理家长可以打印出来给孩子练习#家长收藏孩子受益 #学霸秘籍 #思维训练 #二年级 #知识点总结.pdf
- 二年级数学下册 必背公式大全寒假提前背一背开学更轻松#二年级 #二年级数学 #二年级数学下册 #寒假充电计划 #公式.pdf


