我将军

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 

 

 
Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。
(1)、运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:
ClassCastException(类转换异常)
ClassNotFoundException
IndexOutOfBoundsException(数组越界异常)
NullPointerException(空指针异常)
ArrayStoreException(数组存储异常,即数组存储类型不一致)
还有IO操作的BufferOverflowException异常
(2)、非运行异常需要程序员手动去捕获或者抛出异常进行显示的处理,因为Java认为Checked异常都是可以被修复的异常。常见的异常有:
IOException
SqlException
 
2、
 
 
 

 

String, StringBuffer,StringBuilder的区别

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。

1.可变与不可变

String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。

private final char value[];

      String 为不可变对象,一旦被创建,就不能修改它的值. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.

StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。

char[] value;

     StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象 它只能通过构造函数来建立,  如: StringBuffer sb = new StringBuffer();

不能通过赋值符号对他进行付值. , 如 sb = "welcome to here!";//error 
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中赋值的时候可以通过它的append方法.     sb.append("hello");

2.是否多线程安全

String中的对象是不可变的,也就可以理解为常量, 显然线程安全 

AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是 线程安全的 。看如下源码:

 

  public   synchronized  StringBuffer reverse() {

      super .reverse();

      return   this ;

 }

 

  public   int  indexOf(String str) {

      return  indexOf(str, 0);         //存在 public synchronized int indexOf(String str, int fromIndex) 方法

 }

 

StringBuilder并没有对方法进行加同步锁,所以是 非线程安全的 

 3.StringBuilder与StringBuffer共同点

StringBuilder与StringBuffer有公共父类AbstractStringBuilder( 抽象类 )。

抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

 

效率比较String < StringBuffer < StringBuilder,但是在String S1 =“This is only a”+“simple”+“test”时,String效率最高。

3、

多道程序执行(分为顺序执行 和 并发执行)。
如果是顺序执行: 可在现   
如果是并发执行(伪并行):不可在现。
4、数据库事务必须具备ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性或独立性)和Durability(持久性)的英文缩写。 1、原子性: 指整个数据库事务是不可分割的工作单位。只有使据库中所有的操作执行成功,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该退回到执行事务前的状态。2、一致性: 指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

3、隔离性 (或独立性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。

4、持久性: 指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

事务的(ACID)特性是由关系数据库管理系统(RDBMS,数据库系统)来实现的。数据库管理系统采用日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库所做的更新,如果某个事务在执行过程中发生错误,就可以根据日志,撤销事务对数据库已做的更新,使数据库退回到执行事务前的初始状态。

数据库管理系统采用锁机制来实现事务的隔离性。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。

5、

文件的物理结构与外存的组织方式有关。常用的外存组织方式有:连续组织方式、链接组织方式、索引组织方式。而连接组织方式有分为隐式链接和显示链接两种形式。显式链接将指针存放到一张链接表中,该表又称为文件分配表(FAT),而MS-DOS采用的是FAT技术。

6、

A.在A类地址中,10.0.0.0到10.255.255.255是私有地址。所以应该是私有地址。
B.10.2.255.255的粗体字部分为主机号,主机号全为1的才是广播地址,10.255.255.255是广播地址。
C.对的这个地址主机号既不全为1,也不全为0,网络号也属于ABC类里的A类,所以是有效的。
D.10的2进制是0000 1010,所以是A类地址。
答案选CD。

 

posted on 2018-11-06 16:02  我将军  阅读(153)  评论(0)    收藏  举报