zoukankan      html  css  js  c++  java
  • 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协议:比较不可靠。如果数据在传输中有损耗,不会要求重新发,优点是速度快。

  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/zzyytt/p/6006378.html
Copyright © 2011-2022 走看看