java工程师面试题大全-100%公司笔试题你都能碰到几个
- 格式:doc
- 大小:850.00 KB
- 文档页数:72
javawb 秒传原理Java Web秒传原理是指在文件上传过程中,如果上传的文件已经存在于服务器上,则可以直接将服务器上已有的文件复制一份,而不需要再次上传整个文件。
这种方式可以大大节省时间和带宽资源,提高文件上传的效率。
实现Java Web秒传的原理是通过计算文件的MD5值来判断文件是否已经存在于服务器上。
MD5是一种常用的哈希算法,它可以将任意长度的数据转换成固定长度的唯一值。
对于同一份文件来说,无论文件的大小如何,其MD5值都是唯一的。
在文件上传的过程中,客户端会将文件分块进行传输,每个块的大小可以根据具体的需求进行设定。
在每个块上传完成后,服务器会对该块的数据进行MD5计算,并将计算结果与服务器上已有的文件的MD5值进行对比。
如果MD5值相同,则说明该块的数据与服务器上已有的文件完全一致,因此可以直接跳过该块的上传。
如果MD5值不同,则说明该块的数据与服务器上已有的文件不一致,需要继续上传该块。
为了实现Java Web秒传,服务器需要维护一个文件的MD5值与对应文件路径的映射关系。
当文件上传请求到达服务器时,服务器会首先计算出文件的MD5值,并根据该值在映射关系中查找对应的文件路径。
如果找到了对应的文件路径,则说明该文件已经存在于服务器上,可以直接返回秒传成功的响应。
如果没有找到对应的文件路径,则说明该文件是一个新的文件,服务器需要继续处理文件上传请求。
在处理文件上传请求时,服务器会将接收到的每个文件块进行保存,并计算块数据的MD5值。
如果计算出的MD5值与客户端传来的MD5值不一致,则说明该块的数据有误,服务器会返回上传失败的响应,要求客户端重新上传该块。
如果计算出的MD5值与客户端传来的MD5值一致,则说明该块的数据完整无误,服务器会将该块数据追加到已有的文件中,并继续处理下一个文件块。
直到所有的文件块都上传完成,服务器会返回上传成功的响应。
通过使用Java Web秒传,可以大大提高文件上传的效率。
JavaBean是描述java的软组件模型,有点类似microsoft的com组件。
Javabean组件是java类,这些类遵循一个接口的格式,以便于使用方法来命名,底层行为以继承或实现的行为能够把类看成标准的javabean组件进行构造。
Javabean具有以下特性:1.0可以实现代码的重复利用。
2.0易维护性,易使用性,易编写性。
3.0可以在支持java的任何平台上工作,而不需要重新编译。
4.0可以在类部,网内或者网络之间进行传输。
5.0可以以其它部件的模式进行工作。
Javabean分为可视化和非可视化,如AWT下的应用就是可视化领域。
现在,javabean更多的应用在非可视化领域,它在服务端应用方面表现出了越来越强的生命力。
非可视化javabean在jsp程序常用来封装事务逻辑,数据库操作等,可以很好的实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和稳定性。
Javabean在设计中,按照属性的不同作用有细分为4类:simple(简单的),Index(索引的),Bound(绑定的)与Constrained(约束的).1.0Simple(简单的)一个简单属性表示一个伴随有一对get()/set()方法的变量。
属性名和该属性相关的get/set方法名对应。
列:如果有一个setX()和getX()方法,则暗指有一个名为X的属性。
如果有一个方法名为isX(),则通常有publicclass BeanDem {private String name="tom";privateboolean active=true;public String getName() {return name;}publicvoid setName(String name) { = name;}publicboolean isActive() {return active;}publicvoid setActive(boolean active) {this.active = active;}}2.0Indexed(索引的)一个Indexed属性表示一个数组值。
JavaBean简单介绍及其应⽤Bean的中⽂含义是“⾖⼦”,顾名思义JavaBean是⼀段Java⼩程序。
JavaBean实际上是指⼀种特殊的Java类。
它通经常使⽤来实现⼀些⽐較经常使⽤的简单功能。
并能够⾮常easy的被重⽤或者是插⼊其它应⽤程序中去。
全部遵循⼀定编程原则的Java类都能够被称作JavaBean。
⼀. Java Bean技术概述Java Bean是基于Java的组件模型,由属性、⽅法和事件3部分组成。
在该模型中,JavaBean能够被改动或与其它组件结合以⽣成新组件或完整的程序。
它是⼀种Java类,通过封装成为具有某种功能或者处理某个业务的对象。
因此。
也能够通过嵌在JSP页⾯内的Java代码訪问Bean及其属性。
Bean的含义是可反复使⽤的Java组件。
所谓组件就是⼀个由能够⾃⾏进⾏内部管理的⼀个或⼏个类所组成、外界不了解其内部信息和执⾏⽅式的群体。
使⽤它的对象仅仅能通过接⼝来操作。
⼆. Java Bean编写规范Java Bean实际上是依据JavaBean技术标准所指定Bean的命名和设计规范编写的Java类。
这些类遵循⼀个接⼝格式。
以便于使函数命名、底层⾏为以及继承或实现的⾏为,其最⼤的长处在于可以实现代码的可重⽤性。
Bean并不须要继承特别的基类(BaseClass)或实现特定的接⼝(Interface)。
Bean的编写规范使Bean的容器(Container)可以分析⼀个Java类⽂件。
并将其⽅法(Methods)翻译成属性(Properties),即把Java类作为⼀个Bean类使⽤。
Bean的编写规范包含Bean类的构造⽅法、定义属性和訪问⽅法编写规则。
2.1. Bean组件的⼯作机制在JavaBeansVersion1.01 A规范中定义了该组件的5种重要机制:(1)内省(Introspection):组建能够发表其⽀持的操作和属性。
同⼀时候也⽀持在其它组件中发现反复利⽤的对象库,如⽤户权限控制和电⼦邮件⾃⼰主动回复等。
为什么是-100?下面这段程序,打印b3这个变量出来,是-100.为什么?要想明白这个问题,首先要搞明白什么是原码,反码,补码。
1什么是原码1.1在计算机中,二进制有三种表示法:原码、反码、补码。
1.2Java语言二进制数采用补码形式1.3原码:符号位在最高位,“0”表示正,“1”表示负,其数值部分用二进制形式表示。
2什么是反码2.1反码:正数的反码是原码本身,负数的反码为该数原码除符号位外各位求反2.2一个数的反码的反码是原码本身。
3什么是补码3.1补码:正数的补码是原码本身,负数的补码是该数的反码的最后一位加1。
3.2·一个数的补码的补码还是原码本身。
4原码,反码,补码十进制原码反码补码+50 00110010 00110010 00110010-50 10110010 11001101 11001110127 01111111 01111111 01111111-127 11111111 1000000 100000015Java整数进制转换5.1 正数进制转换5.1.1 十进制----二进制:除2取余、除尽为止用“除2取余”法,直至商为“0”,最先得的余数为最低位例如:十进制的500 转换为二进制:500 除以2 等于250 余0250 除以2 等于125 余0125 除以2 等于62 余162 除以2 等于31 余031 除以2 等于15 余115 除以2 等于7 余17 除以2 等于3 余13 除以2 等于1 余11 除以2 等于0余1就是1111101005.1.2 二进制----十进制:累加求和例如:将二进制的101101 转换为十进制:1 与2 的0 次方相乘,得10 与2 的1 次方相乘,得01 与2 的2 次方相乘,得41 与2 的3 次方相乘,得80 与2 的4 次方相乘,得01 与2 的5 次方相乘,得321+0+4+8+0+32=455.2 负数进制转换5.2.1 十进制----二进制:取绝对值转换为二进制逐位取反加15.2.2 二进制----十进制:减1逐位取反转换为十进制正数乘-16为什么是-1006.1 第一步67+89=1566.2 第二步,得到二进制156的二进制是多少呢?咱们采用“除2取余”法,直至商为“0”,最先得的余数为最低位156/2 78 078/2 39 039/2 19 119/2 9 19/2 4 14/2 2 02/2 1 01/2 0 1得到156的二进制。
MySQL和Java数据类型对照表Java MySQL数据类型对照类型名称显⽰长度数据库类型JAVA类型JDBC类型索引(int)描述VARCHAR L+N VARCHAR ng.String12CHAR N CHAR ng.String1BLOB L+N BLOB ng.byte[]-4TEXT65535VARCHAR ng.String-1INTEGER4INTEGER UNSIGNED ng.Long4TINYINT3TINYINT UNSIGNED ng.Integer-6SMALLINT5SMALLINT UNSIGNED ng.Integer5MEDIUMINT8MEDIUMINT UNSIGNED ng.Integer4BIT1BIT ng.Boolean-7BIGINT20BIGINT UNSIGNED java.math.BigInteger-5FLOAT4+8FLOAT ng.Float7DOUBLE22DOUBLE ng.Double8DECIMAL11DECIMAL java.math.BigDecimal3BOOLEAN1同TINYINTID11PK (INTEGER UNSIGNED)ng.Long4DATE10DATE java.sql.Date91TIME8TIME java.sql.Time92DATETIME19DATETIME java.sql.Timestamp93TIMESTAMP19TIMESTAMP java.sql.Timestamp9391YEAR4YEAR java.sql.Date对于bolb,⼀般⽤于对图⽚的数据库存储,原理是把图⽚打成⼆进制,然后进⾏的⼀种存储⽅式,在java中对应byte[]数组。
对Boolean类型的解释mysql不⽀持bool类型。
1 create table xs2 (3 id int primary key,4 bl boolean5 )这样可以创建成功,但检查表结构会发现mysql把它替换成tinyint(1)。
JavaBean的意义与特点1. JavaBean的概述JavaBean是一种特殊的Java类,它遵循特定的命名规范和规定的编程风格。
JavaBean主要用于封装数据,并提供公共的get和set方法来访问和修改数据的值。
JavaBean的出现使得Java编程更加灵活、可维护和可扩展。
2. JavaBean的意义JavaBean的主要意义在于封装数据和提供统一的访问接口。
它将数据与业务逻辑相分离,提供了一种简单且易于使用的方式来操作数据。
JavaBean的意义如下所述:2.1 封装数据JavaBean通过私有的成员变量来封装数据,提供get和set方法来访问和修改数据的值。
这种封装数据的方式可以提高程序的安全性,防止外部直接访问和修改数据,从而保证数据的完整性和一致性。
2.2 提供统一的访问接口JavaBean提供了统一的访问接口,使得客户端代码可以通过get和set方法来访问和修改数据的值。
这种统一的访问接口简化了客户端代码的编写,并且降低了代码的耦合度。
当需要修改JavaBean的内部实现时,客户端代码不需要改变,只需要修改对应的访问接口即可。
2.3 支持可视化编程JavaBean可以通过在图形界面编程工具中进行拖拽和放置来创建和配置。
这种可视化编程的方式使得JavaBean的使用更加方便,同时也减少了编码的工作量。
2.4 支持持久化操作JavaBean可以支持持久化操作,可以将JavaBean的状态保存到磁盘或数据库中,以便于后续的读取和加载。
这种持久化操作可以方便地将数据保存下来,避免数据的丢失,并且方便数据的共享和传输。
3. JavaBean的特点JavaBean具有以下几个特点:3.1 符合命名规范JavaBean的类名使用大驼峰命名法,如PersonBean。
属性名使用小驼峰命名法,如name、age。
方法名以get或set开头,后面跟上属性名,并且省略属性名的第一个字母,如getName()、setName(String name)。
java double 科学记数法Java是一种广泛使用的编程语言,它的数据类型之一是double,这是一种用于表示具有科学计数法数字的数值类型。
在本文中,我们将讨论Java Double科学记数法。
Java Double的科学计数法简述Double科学计数法是一种表示具有超大或超小值的数值的方式。
Java Double可以使用科学计数法来表示固定或浮点数字。
在JAVA中,double类型默认值是0.0,它主要用于执行其中一部分相当于在指数上使用与在底数上使用的运算。
Double科学计数法的表示方式Java Double的科学计数法使用数字,用字母E或e表示乘以10的幂。
例如,1.23E9表示1.23乘以10的9次幂,或者1230000000。
同样,1.23E-9表示1.23乘以10的负9次幂,或者0.00000000123。
在Java中,小写e可以代替E。
例如,1.23e6表示1.23乘以10的6次幂,或1230000。
科学计数法常用于处理非常大或非常小的数值,因为它可以使用更少的位数存储这些数字。
例如,在科学记数法中,1.23E9只需要7个数字,而使用数字格式需要10个数字。
Double科学计数法的格式化Double科学计数法输出可以在字符串格式化和System.out.printf方法中使用。
以下是一些演示如何格式化Double科学记数法输出的代码示例:```double d = 123456789.987654321;System.out.printf("%e\n", d); // prints 1.234568e+08System.out.printf("%E\n", d); // prints 1.234568E+08System.out.printf("%.2e\n", d); // prints 1.23e+08System.out.printf("%.2E\n", d); // prints 1.23E+08```在上面的示例中,"%e"和"%E"分别代表双精度科学计数法小写字幕和大写字母。
javawb 秒传原理Java Web秒传原理随着互联网的发展,文件上传和下载已经成为了日常生活中不可或缺的一部分。
然而,传统的文件上传方式存在着一些问题,比如上传速度慢、占用带宽等。
为了解决这些问题,Java Web应用中引入了秒传技术。
Java Web秒传是指在文件上传过程中,如果系统中已经存在相同文件,则可以直接跳过上传过程,实现文件的快速上传。
这种技术的实现原理主要依赖于文件的哈希算法和服务器端的文件存储机制。
在文件上传过程中,首先需要对文件进行哈希计算,生成唯一的文件指纹。
常用的哈希算法有MD5、SHA-1等。
生成文件指纹的目的是为了判断系统中是否已经存在相同的文件。
当用户选择要上传的文件时,系统首先会对该文件进行哈希计算,并将计算得到的文件指纹与已有的文件指纹进行比对。
如果系统中已存在相同的文件指纹,则可以判断为相同文件,从而实现秒传功能。
在实现秒传功能时,服务器端需要将上传的文件进行存储。
为了节省存储空间,可以使用文件的指纹作为文件的唯一标识,并将文件存储在指定的位置。
当用户再次上传相同文件时,服务器端可以通过文件指纹判断文件是否已经存在,并直接返回已有文件的地址,从而实现文件的秒传。
Java Web秒传技术的实现还需要考虑文件的完整性和安全性。
在文件上传过程中,可以通过校验文件的哈希值和文件大小来判断文件的完整性。
而为了保证文件的安全性,可以对文件进行加密处理,在存储和传输过程中对文件进行加密解密操作。
总结起来,Java Web秒传技术是通过文件的哈希算法和服务器端的文件存储机制实现的。
通过计算文件的哈希值和比对文件指纹,可以实现文件的快速上传。
这种技术不仅提高了文件上传的效率,还节省了存储空间,提升了用户体验。
通过对Java Web秒传原理的了解,我们可以更好地理解文件上传的过程,以及如何优化文件上传的性能和效率。
这对于开发者来说是非常重要的,同时也提高了用户在文件上传过程中的体验。
java-hibernate笔记(讲义)-【尚学堂马士兵老师】知识点终结:1 新建项目2 学习建立user-library-hibernate,并加入相应的jar包a项目右键-build path-configure build path-add libraryb选择user-library,在其中新建library,命命为hibernatec 在该library中加入hibernate所需要的jar包hibernate3.3.2/hibernate3.jar/lib/required目录下的所有包6个Sl4j-nop jar3 引入mysql的JDBC驱动包4 在MYSQL中建数据库和相应的表student(id,name,age)5 建立hibernate配置文件hibernate.cfg.xml参考文档中COPY,修改对应的数据库连接,6 建立student类7 建立映射文件Student.hbm.xml 参考相应文档8 将映射文件加到hibernate-cfg.xml中搭建日志环境并配置显示DDL语句slf的实现:slf4j nodep ,log4j ,jdk logging api ,apache common-log.slf4j.nop.jar是slf-api.jar其相应的接口实现把slf的接口对到log4j的实现,在user library中hibernate,把slf的实现slf4j-nop-1.5.8.jar去掉,添加log4j的实现log4j-1.2.15.jar,再添加一个slf-api和log4j转换器slf4j-log4j12-1.5.8.jar.把slf的接口转换成log4j的接口.最后添加一个log4j的配置文件log4j.properties利用HIBERNA TE导出数据库建表//读取配置文件hibernate.cfg.xmlConfiguration cfg=new AnnotationConfiguration().configure();(有注解时使用AnnotationConfiguration),configure()可以手动指定配置文件名称. Configuration cfg=new Configuration(),会默认读取hibernate.properties文件//创建schemaExport对象import org.hibernate.tool.hbm2ddl.SchemaExport;SchemaExport export=new SchemaExport(cfg);//创建数据库表export.create(true, true);对象映射(采用Annotation注解方式)1 建表Create table teacher(id int primary key,name varchar(20),title varchar(20));2 创建teacher类,并进行注解@import javax.persistence.Entity;import javax.persistence.Id;在bean中加注解@ Entity,@Id(加在getId()上面)3 在hibernate中加入annotation相应的jar包hibernate-annotations.jar/lib目录下加入相应的包ejb3-persistence.jar, hibernate-commons-annotations.jar注意:annotation文档中并没有提到hibernate-annotations.jar包4 参考annotation文档建立对应的注解5 在hibernate.cfg.xml中建立映射<mapping class=”com.xx.xx”/>6 示例//AnnotationConfiguration;Configuration cfg=new AnnotationConfiguration();SessionFactory sf=cfg.configure().buildSessionFactory();Session session=sf.openSession();session.beginTransaction();session.save(t);//session.getTransaction().commit();session.close();sf.close();对象映射(采用配置文件方式)1 在相应的类中建立对应的配置文件.例如Student类对应的配置文件Student.hbm.xml<hibernate-mapping package="com.model"><class name="Student" table=" Student" ><id name="id" column="id"></id><property name="name" column="name" /><property name="age" column="age" /></class></hibernate-mapping>2 在hibernate.cfg.xml中添加该映射文件Student.hbm.xml即可<!-- 建立对应的配置文件关联相应的数据库表 --><mapping resource="com/model/Student.hbm.xml"/>注意包名的写法3 示例//读取配置文件hibernate.cfg.xmlConfiguration cfg=new Configuration().configure();//创建SessionFactorySessionFactory sf=cfg.configure().buildSessionFactory();//创建sessionSession session=sf.openSession();session.beginTransaction();session.save(s);session.getTransaction().commit();session.close();sf.close();hibernate.cfg.xml配置hibernate.hbm2ddl.auto属性取值: validate | update | create | create-drop在sessionfactory创建时,自动检查数据结构,或者将数据库schema(表)的DDL导出到数据库,使用create-drop时,在显式关闭sessionfactory时,将drop掉数据库schema.validate 加载hibernate时,验证创建数据库表结构create 每次加载hibernate,重新创建数据库表结构create-drop 加载hibernate时创建,退出是删除表结构update 加载hibernate自动更新数据库结构表名和类名不同的情况时,对表名进行配置1 在注解中import javax.persistence.Table;@Table(name=”TableName”)2 在XML文件中<hibernate-mapping package="com.model"><class name="Teacher" table="Teacher" >配置对应的table属性为相应的表名<id name="id" column="id"></id>…</class></hibernate-mapping>字段名和属性名相同,默认为对于annotation,如果什么注解都不写的话,相当于加了注解@Basic实体bean中所有的非static非transient的属性都可以被持久化, 除非你将其注解为@Transient.所有没有定义注解的属性等价于在其上面添加了@Basic注解. 通过@Basic注解可以声明属性的获取策略(fetch strategy):对于XML文件中不用写column.字段名和属性名不同时Annotation:@column(name=”column_name”)加上相应的getXXX()方法上XML:column属性不需要persistence的字段import javax.persistence.Transient;@ Transient 意思是说这个属性是透明的,不进行持久化,存储的时候不存进去映射日期和时间类型,指定时间精度Annotation:import javax.persistence.Temporal;@Temporal(TemporalType.TIME)XML:指定type<class name="Teacher" table="Teacher" ><id name="id" column="id"></id><property name="name" type="time" />type=time或date</class>枚举类型的转换@Enumerated(EnumType.STRING)字段映射的位置推荐写在gexXXX方法上在程序中通过Hibernate 来保存java.sql.Clob 或者java.sql.Blob 实例时,必须包含两个步骤:1 在一个数据库事务中先保存一个空的Blob 或Clob 实例。
javabean的概念
JavaBean是指符合特定规范的Java类,用于在Java平台上实
现可重用组件。
它是一种简单的Java类,它的属性通过提供getter和setter方法对外访问,具有默认的无参构造方法,可
序列化等特点。
JavaBean的概念主要包括以下几个方面:
1. 具有无参构造方法:JavaBean必须提供一个无参构造方法,以便在使用反射创建对象时能够实例化。
2. 属性:JavaBean的属性通过私有变量实现封装,对外提供
公共的getter和setter方法,以便于其他程序可以访问和修改
属性的值。
3. 序列化:JavaBean可以实现Serializable接口,以便可以在
网络上传输或者保存到磁盘中。
4. 支持事件处理:JavaBean可以通过定义事件和事件监听器,实现对外部事件的处理。
JavaBean的设计目的是为可视化工具提供统一的组件模型,
可以使用可视化编辑器来访问和编辑JavaBean的属性,并能
够在组件之间传递数据。
因此,JavaBean的命名规范、属性
的getter和setter方法规范等都对可视化工具的使用有着重要
的影响。
1.hibernate中离线查询去除重复项怎么加条件??dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);2.http协议及端口,smtp协议及端口http:超文本传输协议端口 80smtp:简单邮件传输协议端口253.编写程序,完成文件复制功能4.Servlet创建过程及生命周期Servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制。
Servlet 的创建有两种方法。
1).客户端请求对应的 Servlet 时,创建 Servlet 实例;大部分Servlet 都是这种 Servlet 。
2).通过在web.xml 中设置load-on-startup来创建servlet实例,这种实例在Web 应用启动时,立即创建Servlet 实例Servlet 的运行都遵循如下生命周期:1).创建 Servlet 实例。
2).Web 容器调用 Servlet 的init() 方法,对Servlet 进行初始化。
3).Servlet 初始化后,将一直存在于容器中,用于响应客户端请求。
根据客户端的请求方式通过Servlet 中service()方法去相应的doXXX()方法;4).Web 容器销毁Servlet 时,调用 Servlet 的destroy() 方法,通常在关闭Web容器之时销毁Servlet。
5.用sql语句分页:Mysql数据库:SELECT TOP 页大小* FROM table1 WHERE id NOT IN (SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id) ORDER BY idOracle数据库:在ORACLE大数据量下的分页解决方法。
一般用截取ID方法,还有是三层嵌套方法。
截取ID的方法select * from emp a, (select empno,rownum as num from emp)b where a.empno=b.empno and b.num between5 and 7;三层嵌套SELECT * FROM ( SELECT A.*, rownum r FROM ( SELECT * FROM emp ) A WHERE rownum <=7 ) B WHERE r >5;6.list.map.set的存储特点?List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,value可多值7.final,finally,finaliz的区别final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。
因此一个类不能既被声明为 abstract的,又被声明为final的。
将变量或方法声明为final,可以保证它们在使用中不被改变。
被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改被声明为final的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。
如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在 Object 类中定义的,因此所有的类都继承了它。
子类覆盖;finalize() 方法以整理系统资源或者执行其他清理工作 finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
8.arraylist和vector的区别?1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半9.说出ArrayList,Vector, LinkedList的存储性能和特性?1).ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引但是缺点就是查找非常麻烦要丛第一个索引开始2).ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以索引数据快而插入数据慢.3).Vector使用了sychronized方法(线程安全),所以在性能上比ArrayList要差些.4).LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以索引数据慢,是插入数据时只需要记录前后项即可,所以插入的速度快.10.HASHMAP,HASHTABLE区别1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。
11..描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理Session用于保存每个用户的专用信息. 每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).Session中的信息保存在Web服务器内容中,保存的数据量可大可小.当 Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错的选择Cookie 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4K,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性session工作原理(1)当有Session启动时,服务器生成一个唯一值,称为Session ID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该Session ID。
(3)服务器再将该Session ID写入浏览器的cookie。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。
(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的Session ID。
(6)然后,服务检查该Session ID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。
12.String和stringbuffer进行字符串连接时的区别?String对项内容是不可改变的,StringBuffer是可以改变的,且高效;13.什么叫项目?用有限的资源、有限的时间为特定客户完成特定目标的一次性工作14..J2EE J是什么意思? 2是什么意思 EE是什么意思? Struts的拦截器你是怎么做的,是独立开发的,能够独立开发的到。
然后问有哪几种拦截?Java 2 Platform,Enterprise Edition继承AbstractInterceptor类,覆盖intercept()方法有struts自己的拦截器如timer ,i18n,scop,servletconfig,token还有自定义拦截器15.简单介绍下java?Spring的AOP,IOC的讲述对struts2的了解,1,2的比较 xml的了解 J2ee的webserviced的协议?Spring AOP:代理机制 Spring提供的自动代理机制Spring的IoC来实组件之间的依赖关系注入, 使控制层与业务实现分离,即客户通过调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护或升级困难。
由Spring为DAO生成代理对象来为DAO添加事务服务,由IoC容器DAO的代理实例注入到业务组件中,业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类,使得持久层更换或修改不影响上层组件。
16.Collections,collection的区别Collection是个java.util下的接口,它是各种集合结构的父接口。
Collections是个java.util下的普通类,它包含有各种有关集合操作的静态方法。
Collections是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作17.如何释放过度使用的undo表空间1. 启动SQLPLUS,并用sys登陆到数据库。
2. 查找数据库的UNDO表空间名3. 确认UNDO表空间;SQL>select name from v$tablespace; 4. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置; 5. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,如果有用户最好更换时间 6. 检查UNDO Segment 状态18.数据库里面游标,索引是怎么用的?在oracle数据库中,用get 和load方法这2个方法来查没有的数据那么分别会反馈什么样的结果?declare cur cursor keyset forget返回null,load classnotfoundException19..在Oracle中数据库中的一个表中,这个表没有主键id也没有特定标示来查数据,怎么查?rowid20.简述private、proteced、public、internal修饰符的访问权限同一个类同一个包不同包的子类不同包非子类private *default * *protected * * *public * * **21.概述反射和序列化Reflection 是Java被视为动态(或准动态)语言的一个关键性质。