8
回答
Java数据库基础问答
终于搞明白,存储TCO原来是这样算的>>>   

1.下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";?

答:对于如下代码:String s1="a";String s2=s1+"b";String s3="a"+"b";System.out.println(s2=="ab");System.out.println(s3=="ab");结果为false,true。这说明javac编译可以对字符串常量直接相加的表达式进行优化,不必等到运行期去进行加法运算处理,而是在编译期就去掉其中的加号,直接将其编译成一个这些常量相连的结果。故题目应该只创建了一个String对象。

2.List、Map、Set三个接口,存取元素时各有什么特点?

答:List和Set都是单列元素的集合,他们都有一个共同的父接口Collection。Set不允许有重复的元素,Set取元素时,没法说第几个,只能以Iterator接口取得所有的元素再逐一遍历各个元素。List表示有先后顺序的集合,即每调用add(E e),便将此元素放在集合最后一位,而add(int index, E e) 将指定元素插入此集合中的指定位置。List集合可以存储内容相同的元素,但是索引下标是不同的。List集合除了可以以Iterator接口取得所有的元素再逐一遍历各个元素之外,还可以调用get(index i)来明确说明取第几位元素。Map与List和Set不同,它是双列集合,存储Key-Value值(键值对)。其中Key是不能重复的。

3.数据库三个范式是什么?

答:第一范式:字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式。数据库表中的字段值都是单一属性的,不可再分,例如姓名字段,其中的姓和名必须作为一个整体,要想区分,必须设计成两个独立字段。第二范式:是在第一范式基础上建立起来的,要求数据库表中的每个实例或行必须可以被唯一地区分,通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键。第二范式要求实体的属性完全依赖于主关键字。第三范式:必须先满足第二范式,即第三范式要求一个数据库表中不包含已在其他表中包含的非主关键字信息。所以第三范式的特征是①每一列只有一个值;②每一行都能区分;③每一个表都不包含其他表已经包含的非主键信息;例如:帖子表中只能出现发帖人的id,而不能同时出现发帖人id和发帖人姓名,否则只要出现同一发帖人id的所有记录,它们中的姓名部分都必须严格保持一致,这样就造成数据冗余。

4.union和union all的区别?

答:区别在于对重复结果的处理。union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序处理。删除重复记录在返回结果。而union all只是简单的将两个结果合并后返回,如果有重复结果也不会删除。在效率上,union all要比union快很多。

5.大数据量下的分页解决方法?

答:最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。在sql语句无法实现分页的情况下,可以考虑对大的结果集通过游标定位方式来获取某页的数据。例如MySQL:String sql="select*from students order by id limit"+pageSize*(pageNumber-1)+","+pageSize;

6.用JDBC查询员工表,把主要代码写出来?

答:如下参考

7.数据连接池的工作机制是什么?

答:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,数量由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接标记为空闲,其他调用就可以使用这个连接。

8.为什么要用ORM?和JDBC有何不同?

答:ORM是一种思想,就是把object转变成数据库中的记录,或者把数据库中的记录转变成object。可以用JDBC来实现这种思想。现在有许多ORM工具,它们底层调用JDBC来实现ORM工作,我们直接使用这些工具就省去了直接使用JDBC的繁琐细节,提高了开发效率。现在使用较多的ORM工具是hibernate。

举报
皮皮尘啊
发帖于4个月前 8回/1K+阅
顶部