Java基础知识汇总

来源:互联网 发布:非备案域名的流程 编辑:程序博客网 时间:2024/06/07 06:34

(一) Java常见异常
1. java.lang.RuntimeException
2. java.lang.NullPointerException
3. java.lang.ArrayIndexOutOfBoundsException
4. java.lang.NumberFormatException
5. java.lang.ClassNotFoundException
6. java.lang.ClassCastException
7. java.lang.NoSuchMethodException
8. java.lang.ArithmeticException
9. java.io.IOException
10. java.io.FileNotFoundException
11. java.io.EOFException
12. java.lang.StackOverflowError


(二) Comparable与Comparator的区别
1. Comparable和Comparator都是用来实现集合中元素的比较、排序的接口
2. Comparable位于包java.lang下,而Comparator位于包Java.util下
3. 实现Comparable接口要覆盖compareTo方法,对象本身实现,比较方法:Collections.sort(list) 
4. 实现Comparator接口要覆盖compare方法,不影响对象原型,比较方法:Collections.sort(list, new XXComparator())
5. 用Comparable简单,只要实现Comparable接口的compareTo对象直接就成为一个可以比较的对象,但是需要修改源代码, 用Comparator的好处是不需要修改源代码, 而是另外实现一个比较器


(三) Java集合框架
比较相同点与不同点,其中不同点从子接口实现类、数据结构、线程安全性、性能、是否为空、是否有序、是否重复


(四) java中有23种设计模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。


结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。


行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。


1、 工厂方法模式分三类:
普通工厂方法:
定义一个接口,创建多个实现该接口的类,单独创建一个工厂类,提供方法,定义参数,传入参数返回对应的实现类,没有则返回空


多个工厂方法模式:
定义一个接口,创建多个实现该接口的类,单独创建一个工厂类,提供对应实现类的方法,一个方法对应一个实现类


静态工厂方法模式:
定义一个接口,创建多个实现该接口的类,单独创建一个工厂类,提供对应实现类的方法,一个方法对应一个实现类,并将方法修饰为静态


2、 抽象工厂模式:
定义一个接口,创建多个实现该接口的类,定义工厂接口,为每个实现类创建一个工厂实现类,只须实例对应的工厂类


3、 单例模式:
在JVM中,该对象只有一个实例存在


4、 建造者模式:
即流程不变,但每个流程实现的具体细节则是经常变化的。流程即不会增加、也不会遗漏或者产生流程次序错误
1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。


5、 原型模式:
将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象,复制对象是通过clone()实现的



(五) Java创建一个对象都在内存中做了什么事情
1. 先将硬盘上指定位置的class字节文件加载进内存
2. 在堆内存中开辟一个实体空间,分配了一个内存首地址值(即new操作)
3. 在该实体空间中进行属性的空间分配,并进行了默认初始化
4. 再对实体空间中的属性进行显示初始化
5. 进行实体的构造代码块初始化
6. 调用该实体对应的构造函数,进行构造函数初始化
7. 将首地址赋值给变量,变量就引用了该实体




(六) 数据库优化
1. 设计之初,对数据库进行分区分表(系统相关、业务相关、日志相关)
2. 避免频繁创建和删除临时表,以减少系统表资源的消耗,可以极大的提高系统性能
3. 在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免造成大量log
4. 在删除整表内容时,用truncate而不用delete,因为truncate会释放回滚段的资源,而delete没有释放,回滚段用来存放可以被恢复的信息
5. 常用状态位或标识位尽量用int而不用varchar或char
6. 如字符类型字段,尽可能的使用varchar/nvarchar代替char/nchar减少存储资源开销
7. 对于经常访问的表字段建议建立索引


(七) 在程序中,调整SQL语句查询的方式来优化SQL
1. 在查询列时,避免使用*号,因为这个工作是通过查询数据字典完成的,尽量写具体列名
2. count(*)效率优于count(column),前者表示整个结果集有多少条记录,后者表示结果集中有多少个column字段不为空的记录
3. 关于like的用法,%号通配符一般后置,前面用固定的搜索字符
4. 在子查询中慎重使用in或者not in语句,使用exists或者not exists的效果要好的多
5. 选择联合查询的联合次序,最小表(数量小)的表作为主表,紧放from后面
6. 慎重使用视图的联合查询,尤其是比较复杂的视图之间的联合查询。一般对视图的查询最好都分解为对数据表的直接查询效果要好一些


(八) 索引需要注意的地方
1. 应尽量避免在索引列上使用算术运算、数学函数、字符串函数及日期函数
2. 应尽量避免在索引列上对字段进行null值判断,尽量用not null
3. 应尽量避免在索引列上使用or来连接条件,考虑拆开,可以使用union合并查询
4. 应尽量避免在索引列上使用!=或<>(不等于)、||(连接符)、+(加号)及在“=”左边进行函数、算术运算或其他表达式运算
5. 使用索引情况有<,<=,=,>,>=,between、in以及某些时候的LIKE(不以通配符(%或_)开头的情形)

原创粉丝点击