一、JSP中静态include指令与动态include指令
1、使用方法
1 | <%@ page language="java" contentType="text/html; charset=gb2312"%> |
2、区别
- 表达式的支持
- 静态导入(include指令)通过file属性指定被包含的文件,且file属性不支持任何表达式
- 动态导入(include动作)通过page属性指定被包含的文件,且page属性支持JSP表达式
- 编译方式
- 使用静态导入(include指令)时,被包含的文件内容会原封不动的插入到包含页中,然后JSP编译器再将成后的文件最终编译成一个Java文件
- 使用动态导入(include动作)包含文件时,当该标识被执行时,程序会将请求转发(不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以JSP编译器会分别对这些文件进行编译
- 命名冲突
- 静态导入使用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含、包含文件中不能有重名的变量或方法
- 动态导入使用include动作包含文件时,由于每个文件是单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的
- 导入方式
- 静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet,因此被导入页面甚至不需要是一个完整的页面
- 动态导入则在Servlet中使用include方法来引入被导入页面的内容
- 编译指令
- 静态导入时被导入页面的编译指令会起作用
- 动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容
二、Java基本语法
1、抽象类与接口的区别
抽象类
特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。
5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
接口
1.在接口中只有方法的声明,没有方法体。
2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
public static final
3.在接口中的方法,永远都被public来修饰。
4.接口中没有构造方法,也不能实例化接口的对象。
5.接口可以实现多继承
6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。
2、关于final的重要知识点;
- final关键字可以用于成员变量、本地变量、方法以及类。
- final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
- 不能够对final变量再次赋值。final方法不能被重写。final类不能被继承。
- 本地变量必须在声明时赋值。
- 在匿名类中所有变量都必须是final变量。
- 没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化”。
3、数据类型转换
当使用 +、-、*、/、%、运算操作是,遵循如下规则:
- 只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型。
- 如果两个操作数中有一个是float类型的,另一个将会被转换为float类型,并且结果也是float类型
- 如果两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型
- 否则(操作数为:byte、short、int 、char),两个数都会被转换成int类型,并且结果也是int类型。
另外在Java中,给double类型的幅值直接写小数就可以,给float类型的幅值则需要加一个f:
1 | float f=3.0f; |
1 | int a=1/3;//结果为int型,不需要转换 |
4、方法的重写(override)两同两小一大原则:
- 方法名相同,参数类型相同
- 子类返回类型小于等于父类方法返回类型
- 子类抛出异常小于等于父类方法抛出异常
- 子类访问权限大于等于父类方法访问权限
5、重载
重载的概念是:
方法名称相同,参数个数、次序、类型不同
因此重载对返回值类型没有要求,可以相同,也可以不同
但是如果参数的个数、类型、次序都相同,方法名也相同,仅返回值类型不同,则无法构成重载
6、操作符优先级
优先级 | 运算符 | 结合性 | ||
---|---|---|---|---|
1 | () [] . | 从左到右 | ||
2 | ! +(正) -(负) ~ ++ – | 从右向左 | ||
3 | * / % | 从左向右 | ||
4 | +(加) -(减) | 从左向右 | ||
5 | << >> >>> | 从左向右 | ||
6 | < <= > >= instanceof | 从左向右 | ||
7 | == != | 从左向右 | ||
8 | &(按位与) | 从左向右 | ||
9 | ^ | 从左向右 | ||
10 | \ | 从左向右 | ||
11 | && | 从左向右 | ||
12 | \ | \ | 从左向右 | |
13 | ?: | 从右向左 | ||
14 | = += -= *= /= %= &= \ | = ^= ~= <<= >>= >>>= | 从右向左 |
三、虚拟机参数配置
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3,其最小内存值和Survivor区总大小分别是()答案:10240m,2048m
- -Xmx10240m:JVM最大可用内存为10240M。
- -Xms10240m:JVM初始内存为10240M
- -Xmn5120m:代表新生代
- -XXSurvivorRatio=3:代表Eden:Survivor = 3。Eden:Survivor=3:1
计算Survivor大小, Eden:Survivor = 3,总大小为5120,3x+x+x=5120 x=1024
四、磁盘
1、磁道,扇区,柱面和磁头数
磁道:
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44MB的3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。
扇区:
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44MB3.5英寸的软盘,每个磁道分为18个扇区。
柱面:
硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量
硬盘的容量=柱面数*磁头数*扇区数*512B。
2、簇
“簇”是DOS进行分配的最小单位。当创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。DOS视不同的存储介质(如软盘,硬盘),不同容量的硬盘,簇的大小也不一样。簇的大小可在称为磁盘参数块(BPB)中获取。簇的概念仅适用于数据区。
- 簇是DOS进行分配的最小单位。 扇区是磁盘最小的物理存储单元。前者是逻辑上的概念
- 每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。
- 不同的存储介质,不同容量的硬盘,不同的DOS版本,簇的大小也不一样。
- 簇的概念仅适用于数据区。
- 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍 ;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。