首页 > 代码库 > javaoo总结二
javaoo总结二
51、awt和swing有什么区别?
awt是利用操作系统的风格定义组件的风格,所以跨平台时,组件显示可能不一致。swing有自己独立的显示功能,跨平台时,显示风格一致。swing是在awt基础上扩展的
52、如何进行事件的添加?;
1、确定事件源;2、书写监听器,实现监听接口;3、注册,建立事件源和监听器的联系。
53、流按照输入输出方向分有几种?相对于什么而言?
输入流和输出流
以内存为参照物,如果从数据源中将数据读取到内存,那么就是输入流,也叫读取流。如果从内存中,将数据写入数据源,那就是输出流,也叫写入流。
54、流按照传输内容分有几种?各自的父类是什么?
三种:字节流、字符流、对象流。但是无论是哪种流,底层部分都是以字节传输的,所以本质都是字节流。只不过,为了方便对字符数据和对象数据进行操作,所以在字节流基础上进行了一层封装,形成字符流和对象流
字节流的父类:InputStream、OutputStream
字符流的父类:Reader、Writer
55、操作流时,如果文件不存在会出现什么情况?如果流不关闭会出现什么情况?
写入流时,但文件不存在时,会创建新文件,但前提是文件所在目录必须存在,否则会抛出FileNotFoundException。
如果流不关闭,不但浪费资源,而且写入流有可能写不进数据。
56、如何判断一个文件是否存在?如何创建一个目录?如何知道一个目录中有多少文件?
判断文件是否存在:File对象.exists();
创建目录:File对象.mkdir();
得到文件列表:File对象.listFiles();
57、静态块在什么时候执行?
静态块在类加载时执行,只执行一次。
58、什么是关系型数据库?
关系型数据库是以表作为实体,以主键和外键作为表间联系的数据库结构。
59、什么是一对一、一对多、多对多?
1、一对一:一条主表记录对应一条从表记录,同时一条从表记录也对应一条主表记录。
2、一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录。
3、多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录。多对多一般有中间表描述这样的关系
60、数据库完整性有哪些?
1、实体完整性。保证一行数据是有效的。表中的一行数据如果与它所代表的实体完全一致,则具备实体完整性。
保证每行所代表的实体能相互区别,不能存在两条一摸一样的记录。
实现方法:--主键约束。主键不能为空,也不能重复,一个表中只能有一个主键
-- 唯一约束。指定给列的所有值必须唯一,该列在表中每一行的值必须唯一。它和主键约束的唯一区别在于该列可以为空,并且可以在一张表中给多个列设置唯一约束
2、域完整性。保证一列数据是有效的
域完整性是指定列的输入有效性
实现方法:--非空约束:NOT NULL
--默认约束:Default
--检查约束:check(MySQL不支持)
3、引用完整性。保证引用的主键是有效的,由外键约束实现
4、用户自定义完整性。保证自定义规则
61、什么是主键,主键有什么特点?
主键是一条记录在整个表中的唯一标识。可以利用主键区分不同的记录
主键的特点:非空和不能重复
62、什么是外键,它和外键约束有什么区别
外键是指从表的某列与主表的主键存在依附关系
外键约束是指在外键关联主键上强制加上一个约束,如果违反该约束则不允许该条数据的修改。
注意:没有外键约束不表示没有外键
63、如何添加外键约束。
alter table 从表名 add constraint fk_1 foreign key(外键列名)references 主表名(主键名)
64、如何删除主表记录?
由于主表记录有可能有从表记录进行引用,所以如果直接删除删除主表记录时,由于有外键约束存在,可能无法删除。
删除主表记录有两种方式:1、先删除主表记录对应的从表记录,再删除主表记录;2、将主表记录对应的从表记录的外键设置为null,再删除主表记录
65、增、删、改、查的基本SQL语句
增:insert into 表名(字段列表)values(值列表)
删:delete from 表名 where 条件
改:update 表名 set 列名=新值 where 条件
查:select * from 表名
66、DELETE和TRUNCATE的区别
delete会记录日志,意味着删除后的数据还可以恢复,但是效率低,而且可以只删除部分数据。
truncate不会记录日志,删除后的数据不能恢复但是效率高,只能删除全部数据。
67、排除重复记录用什么关键字?如何限制查询数据的返回限定行数?
排除重复记录用distinct
限制查询数据的返回限定行数使用limit 0,3
68、如何查询null值
不能直接用=,要用is null 或者is not null
69、SQL语句的聚合函数有哪些?
count:统计行的数量
sum:获取单个列的合计值
avg:计算某个列的平均值
max:计算列的最大值
min:计算列的最小值
70、在分组语句中,查询的列可以有哪些?
只能是分组列和聚合函数
71、where和having的区别
where执行在分组之前,所以不能跟聚合函数
having 执行在分组之后,是对分组结果的筛选,只能跟聚合函数
72、描述SQL查询语句执行顺序
第一步:执行from
第二步:where条件过滤
第三步:group by 分组
第四步:执行select投影列
第五步:having条件过滤
第六步:执行order by排序
73、内连接和外连接区别
内联接只能查询主表和从表有对应记录的数据
外联接可以查询一个表中的所有记录,无论这些数据是否有对应记录
74、什么是JDBC
JDBC是java连接数据库的一套标准,该标准提供了大量的接口,这些接口由厂商根据自身数据库的特点做实现,由用户做方法调用,用户根据接口调用方法,可以屏蔽不同数据库的差异,这样无论连接什么数据库都是一套API。
75、JDBC开发流程
1、加载驱动,建立连接
2、执行SQL语句
3、增、删、改需要更新数据库,查询需要得到结果集,并通过遍历结果集,得到查询数据。
4、关闭连接
76、什么是SQL注入
SQL注入:采用字拼接符串方式,拼SQL语句时,如果值中有SQL语句的关键字或特殊字符,可能导致运行结果不正确,或SQL语句的语法错误。
77、 Statement和PreparedStatement的区别
statement是preparedstatement的父接口。采用statement执行SQL语句时,由于SQL语句的值一般由用户提供,所以只能采用拼接字符串的方式设置。这样随着值的不同,系统会做多次SQL语句的编译操作,所以效率低,而且容易引起SQL注入
preparedstatement提供占位符机制,将需要设置值的地方都用占位符表示,这样无论什么值都是一个SQL语句。不会进行多次编译操作,效率高。而且无论什么值,都会做字符串处理,不会引起SQL注入。
78、什么是三层架构
1、表现层:作为数据的展示和数据的提供
采用MVC模式。
M:表示模型。也就是实现类。作为数据存储和传输的介质
V:表示视图,也就是GUI 窗体。作为数据展示和收集的平台
C:表示控制。也就是事件处理。负责调用业务组件完成业务处理
2、业务层:业务逻辑处理。
采用事务脚本模式。将一次请求中所有的业务操作封装成一个方法。保证这些业务操作中,数据库更新操作同时成功,同时失败。不允许出现部分成功部分失败,这样引起数据混乱的操作。
3、持久层:主要目的是完成内存数据和磁盘数据的转换。
采用DAO模式。建立实体类和数据库表做映射,也就是哪个表对应哪个类,哪个列对应哪个属性,而持久性的目的就是完成对象数据和关系数据的转换。
79、项目开发的流程:
可行性分析--需求分析--设计--编码--测试--维护
80、什么是反射?
反射:在编译时并不知道应该加载哪个类,类的加载是在运行期间进行的。通过反射可以对类进行加载、探知、自审。
81、如何得到Class对象?如何利用Class对象产生该类的对象?
1、类名.class;
2、对象.getClass();
3、Class.forName("类全路径");
Class对象.newInstance();调用该类无参构造方法产生对象
82、线程和进程的区别?
进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。
线程是进程内部单一的顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。
基于进程的特点是允许计算机同时运行两个或更多的程序
基于线程的多任务处理环境中,线程是最小的处理单位
83、创建线程有几种方式?如何启动线程?调用start()和调用run()的区别?
创建和启动线程
通过两种方法创建Thread对象:
--声明一个Thread类的子类,并覆盖run()方法
class myThread extends Thread{
public void run();//覆盖该方法
}
-- 声明一个实现Runnable接口的类,并实现run()方法
class myThread implement Runnable{
public void run();//实现该方法
}
启动线程,调用start();
start()方法是启动线程的方法,会在主线程基础上开启一个子线程,两个线程同时执行。线程启动后会调用run()。
而直接调用run(),不会在主线程之外创建新的子线程,是普通方法调用
84、线程有几种状态?
新建-就绪-运行-死亡
休眠、挂起、等待、阻塞
85、什么是线程优先级?分为几级?
当两个或两个以上的线程同时处于就绪状态时,优先级高的线程,会优先执行
分为10级,数字越大,优先级越高
86、什么是线程同步?同步会造成什么结果?
线程同步(线程安全):当两个或两个以上的线程,同时访问一个对象时,为了避免数据混乱,同一时间只允许一个线程进行访问。另外线程进行等待。
同步带来的后果:
1、数据安全;2、效率低下。
87、什么是XML?XML声明是怎样的?XML注释是怎样的?
XML可扩展的标记语言,以标记和子标记方式描述对象数据
注释:<!-- 注释 --> 注释不能嵌套
声明:<?xml version="1.0" encoding="UTF-8" ?>
88、一个格式良好的XML有哪些规定?
-- 必须有XML声明语句<?xml version="1.0" encoding="utf-8"?>
-- 必须有且仅有一个根元素
-- 标记大小写敏感
-- 属性值用引号
-- 标记成对
-- 空标记关闭<a/> <a> </a>
-- 元素正确嵌套
89、格式良好的XML和有效的XML有什么区别?
有效的XML除了满足XML规范外,还要满足相应DTD和Schema定义的元素规则
有效的XML一定是格式良好的,但格式良好的XML不一定是有效的
90、DOM和SAX有什么区别?
DOM和SAX是解析XML的两种方式
DOM解析:1、基于树状结构的API。2、可读取、可写入。3、随机访问元素。4、大型文档则会造成内存紧张。
SAX解析:1、基于事件模型的API。2、占用内存小。3、只能读取不能写入。4、文档只能遍历一次,也不能随机访问元素
91、TCP/IP协议分为几层?
4层。应用层、传输层、网络互联层、网络接口层
92、什么是端口?常见端口有哪些?
端口:就是应用程序用于数据交互的通道,用于实现程序间的通信。每个应用程序都有固定的端口。如果两个应用程序端口一样会造成端口冲突。
常用的端口:
1、协议:Telnet协议tel 端口:23
2、协议:简单邮件传输协议smtp 端口:25
3、协议:文件传输协议 ftp 端口:21
4、协议:超文本传输协议http 端口:80
93、TCP和UDP的区别是什么?
TCP协议:
1、较可靠的双向流协议
2、三次握手机制
3、提供消息确认、错误检测和错误恢复等服务。如果数据在传输过程中有损耗,有遗失,会要求发送方重新发送。从而保证数据的完整性。
UDP协议:比较不可靠。如果数据在传输中有损耗,不会要求重新发,优点是速度快。
javaoo总结二