java面试题集总结(四)

记录一下上周六面试遇到的题以及被面试官问到的问题

一、xml解析方式

总共有四种方式,1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。

1.DOM解析。文档对象模型。DOM分析器会把整个xml文档转化成DOM树放在内存中,如果xml文档很大的话,对内存的需求就很高了,而且对于结构复杂的树的遍历也是非常消耗时间的,所以DOM解析对机器性能要求高,效率低。鉴于随机访问比较方便,所以DOM解析还是有它的优点的。

优点:

      1、形成了树结构,有助于更好的理解、掌握,且代码容易编写。

      2、解析过程中,树结构保存在内存中,方便修改。

    缺点:

      1、由于文件是一次性读取,所以对内存的耗费比较大。

      2、如果XML文件比较大,容易影响解析性能且可能会造成内存溢出。

2.SAX解析。xml简单应用程序接口。提供一个顺序模式,快速读写xml数据。SAX分析器对xml文档解析时,触发一系列时间,激活相应的事件处理函数,应用程序通过事件处理访问xml文档。

优点:

      1、采用事件驱动模式,对内存耗费比较小。

      2、适用于只处理XML文件中的数据时。

    缺点:

      1、编码比较麻烦。

      2、很难同时访问XML文件中的多处不同数据。

3.JDOM解析。

特征:

      1、仅使用具体类,而不使用接口。

      2、API大量使用了Collections类。

4.DOM4J解析。

  特征:

      1、JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

      2、它使用接口和抽象基本类方法。

      3、具有性能优异、灵活性好、功能强大和极端易用的特点。

      4、是一个开放源码的文件。

Final:比较总结

  DOM4J性能最好,连Sun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J。
      JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM。虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。
      SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。


二、json对象创建及使用

JSONObject jsonObject = new JSONObject();

然后使用对象点,方法就出来了,想用什么方法,就看源码内容或者百度。 

三、jdbc连接数据库

package com.winter.springbootmybatisdemo.test;
import java.sql.*;
/**
 * Created by czb on 2018/4/2.
 */
public class Test {
    public static void main(String[] args){
        String url = "jdbc:mysql://localhost:3306/testdb";
        String user = "root";
        String password = "root";
        Connection con = null;
        Statement statement = null;
        ResultSet rs = null;
        try {
            //1.加载驱动,反射机制通过类的全路径名生成该类的对象,这一步会报找不到类异常
            Class.forName("com.mysql.jdbc.Driver");
            //2.连接数据库,会报数据库连接异常
            con = DriverManager.getConnection(url,user,password);
            //3.创建Statement的对象来执行SQL语句
            statement = con.createStatement();
            String sql = "select * from test";
            //执行查询,ResultSet对象存放查询的结果集
            rs = statement.executeQuery(sql);
            while (rs.next()){
                //做一些业务逻辑处理
                String id = rs.getString("id");
                String name = rs.getString("name");
                System.out.println(id+"---"+name);
            }
        } catch (ClassNotFoundException e) {
            //这地方可以用log打印日志
            System.out.print("加载驱动失败");
            e.printStackTrace();
        } catch (SQLException e){
            System.out.print("数据库连接失败");
            e.printStackTrace();
        } finally {//不管程序抛不抛异常,finally里面总会执行
            //先开的资源最后关闭
            if (rs != null) {   // 关闭记录集   
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {   // 关闭声明   
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con != null) {  // 关闭连接对象   
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

四、数据库连接池有哪些

DBCP、C3P0、tomcat内置数据源(DBCP)



这里记录一下记不住的东西:

jdk提供的java.util工具类中,有关于数组排序,打印等方法。

int[] a = {15,2,12,1,2,5,...}

Arrays.sort(a);//将数组从小到大排序

Arrays.toString(a);//打印数组


五、类名.class

一个类在被加载的时候虚拟机就会自动的生成一个这个类的一个Class类型的“类对象”,每个类都对应着一个这样的类对象,通过这个Class类型的类对象,我们就能够使用“内省与反射”机制,访问一个类的信息,比如:对应类中的方法有哪些,成员域有哪些等等;获取一个类的“类对象”的方法之一就是通过使用   类名.class  这个方式返回一个Class类型的对象,其他的获取这个Class对象的方法如下:

1). 利用对象调用getClass()方法获取该对象的Class实例

2). 使用Class的静态方法forName(),用类的名字获取一个Class实例

3). 运用.calss的方式获取Class实例,对基本数据类型的封装类,还可以采用.TYPE来获取对应的基本数据类型的Class实例。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我就是那个大头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值