java基础刷题知识点总结_第1页
java基础刷题知识点总结_第2页
java基础刷题知识点总结_第3页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基础1. object类的方法有哪些cione() protect创建并返回一个对象的副本equals()用来比较某个对象是否与调用此方法的对象相等fin alize() protectgetClass()返回一个对象的运行时类hashCode()返回一个对象的hash值notify()唤醒在此对象监听器上等待的单个线程。如果有多个,则随机唤醒一个notifyAII()唤醒在此对象监听器上等待的所有线程registerNatives()本地私有方法,在类初始化是会调用此方法 toString()返回当前对象的字符串表示wait()使当前线程处于等待直到其他线程调用这个对象的notify或not

2、ifyAII方法或者超过指定的时间量2. 接口和抽象类的区别1首先描述接口和抽象类的特性 抽象类:是子类通用特性的集合 接口 :是抽象方法的集合I 从某种意义上说抽象类包含了接口的所有功能。但是通过实现接口可以实现多继承F面列出接口和抽象类的区别参数抽象类接口默认的实现方法可以有默认的实现方法接口是完全抽象的,根本不存 在默认的实现方法实现子类使用extends关键字来继 承抽象类。如果子类不是抽象 类,他必须提供抽象类中所有 申明的方法的实现子类使用implements关键字 来实现接口。子类必须提供接 口中所有申明的方法的实现接口还有可以继承子接口构造器可以有构造器,但是不能实例 化不能有

3、构造器与正常java类的区别除了不能实例化,没什么区别不是通一个概念访问修饰符抽象方法可以有public,protected,default 这些修饰符接口只能是publicma in方法抽象类可以有main方法,并 且可以运行接口没有多继承不能实现通过实现接口可以实现多继承添加新方法如果你抽象类中增加新的方 法,你可以提供默认的实现, 没有必要改变继承该抽象的 类的子类如果往接口中添加新的方法, 子类必须在原来的基础上修 改并实现新的方法什么时候用抽象类和接口1如果一些方法必须提供默认的实现,就必须用抽象类,比如在dao层,每个类都有增删查改这几个操作,我们可以把这些操作写在抽象类里,并让抽

4、象类提供默认的实现。否则的话用接口2假如要实现多继承,则必须要用接口 java不支持多继承但是可以通过实现多个接口来解决3如果基本功能在不断改变,那么就用抽象类。如果不断改变基本功能并且使用接口,子类 就必须不停的更改03抽象类是否有构造方法抽象类有构造方法只是抽象类不能够实例化4.Final finally finalize。方法的区别5.Sleep(和 wait()的区别 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法, 实际上还是a去睡觉,要让b线程睡觉

5、要在 b的代码中调用 sleep。 锁:最主要是sleep方法没有释放锁,而 wait方法释放了锁,使得其他线程可以使用 同步控制块或者方法。sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用 CPU 一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用 n otify/notifyAII唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseco nds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。Thread.sleep(0)的作用是触发

6、操作系统立刻重新进行一次 CPU竞争”。 使用范围:wait, notify 和notifyAII只能在同步控制方法或者同步控制块里面使用,配合synchronized 实现等待通信机制,而sleep可以在任何地方使用。synchroni zed(x)x. notify()/ 或者 wait()6.short s=1;s=1+s会报错吗?short s=1;s+=1 会报错吗(1) 报 incompatible types 错误。不相容的类型错误(2) 不报错。因为s+=1相当于s=(E)(s+1)其中E为s的类型7.Overload 和 override 的区别Overload 是重载,它是

7、一个类中多态性的一种表现。Override 是重写,它是子类与父类多态性之间的一种表现。 重载是指在定义多个名字相同的方法。 但这些方法的返回值类型, 参数类型,参数顺序, 参数个数必须有一个不同,但是不能只是返回值类型不同的,因为这会使得jvm 在调用方法时,不知道该调用谁重写是覆盖掉父类的方法并重新定义一个新的方法, 新的方法的返回值类型, 参数类型, 参数个数,参数顺序都必须跟父类中的方法保持一致。以下是这两种定义的具体注意事项(1 ) Overload 重载1. 方法的返回值类型,参数的类型,个数,顺序存在不同2. 但不能只有返回值类型3. 是针对一个类而言的( 2 ) overrid

8、e 重写1. 方法的返回值类型,参数的类型,个数,顺序必须一致2是针对父类与子类而言的3. 定义为 final 的方法不能重写4. 重写的方法不能缩小包的访问权限5. 包访问权限为 private 的方法不能重写,否则只是在子类中定义一个新的方法8. Java中 hashtable 和 hashmap 的区别1 Hashtable 不允许插入空的键值对,否则报错2Hashtable 是线程安全的,所有方法均是同步的 ;HashMap 是线程是线程不安全的。 3HashTable 效率比 hashmap 低9. throw 和 throws 的区别1. throw 表示一种抛出的动作 ,thro

9、ws 表示一种状态 , 代表方法可能列出的抛出异常2. throw 用于方法体 ,throws 用于方法头3. throw 只能抛出一个异常 .throws 后申明多个异常10. 内存溢出和内存泄漏的区内存溢出(out of memory),是指程序在申请内存时,没有足够的内容供其使用.例如要申请一个 对象却已经没有能够容纳这个对象的内存内除泄露(memory leak)是指程序在申请内存后,无法释放掉已经申请的内存.如果频繁的出现 内存泄露,最后内存会用尽而导致内存溢出ll.String,StringBuffer 和 StringBuilder 的区别可变/不可变?String是不可变的,因

10、为其内部的字符数组是final的,所以长度是固定的,连接字符串时实际上是创建了新的字符串对象StringBuilder,StringBuffer 是可变的,因为都继承了 abstractStringBuilder ,而 abstractStringBuilder 其内部是动态数组,长度不够时会自动扩容StringBuilder 是线程不安全的,StringBuffer 是线程安全的,stringBuilder 的效率比 Strin gBuffer 高12. 抽象类和接口类中方法的访问权限有哪些?在jdk1.8中,抽象类的成员变量,抽象方法和非抽象方法默认都是default的,意味着抽象方法的访

11、问权限可以为 default,protected,public。据说以前都是 protected接口类的成员变量永远都是public static final成员方法永远都是 public13. Class.forname(与 ClassLoaderoadClass?)Class.forname():是一个静态方法,最常用的是Class.forname(String className);根据传入的类的 全限定名返回一个 Class对象该方法在将Class文件加载到内存的同时,会执行类的初始化.如:Class.forName(com.wa ng.HelloWorld);ClassLoader.

12、loadClass(这是一个实例方法,需要一个ClassLoader对象来调用该方法,该方 法将Class文件加载到内存时,并不会执行类的初始化,直到这个类第一次使用时才进行初始 化.该方法因为需要得到一个ClassLoader对象,所以可以根据需要指定使用哪个类加载器.如:ClassLoader cl=;cl.loadClass(com.wa ng.HelloWorld);14. char叩如何创建16. 关于类的修饰符对于外部类 public default默认final abstract对于成员内部类public protected default默认private static fin

13、al abstract对于局部内部类default默认final abstract17. 标识符的组成Java标识符由数字、字母、下划线()、美元符号($)或人民币(号组成,首位不能是数字并且Java关键字不能作为标识符17.线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间, 线程的切换不由线程本身来决定(协同式调度)。这就是平 台独立的原因。18. 接口类中 可以有静态方法,但是不能有静态的抽象方法19. 抽象方法一定是类的成员方法,不能是类方法20. 分母和分子只要一个是浮点数算出来的结果也为浮点数21. 向上转型和向下转型子类转型成

14、父类是向上转型,反过来说,父类转型成子类就是向下转型22ocal variable=W 部变量23. 方法的重写(override)两同两小一大原则:方法名相同,参数列表相同子类返回类型小于等于父类方法返回类型(子类重写方法的返回值类型必须为父类方法的返回值类型 或父类方法返回值类型的子类类型),子类抛出异常小于等于父类方法抛出异常(子类重写方法抛出的异常类型只能是父类方法抛出的类型或父类方法抛出的异常类型的子类类型),子类访问权限大于等于父类方法访问权限( 父类方法是用protected修饰的子类就只能用public修饰而不能用private修饰)。24. finally语句块在什么时候不会

15、执行当try/catch语句块中有 System.exit(0)时,不会执行 fin ally语句块25. 如果finally和try/catch中都有return语句怎么办?首先会执行try/catch中的return语句中的表达式,但是不一定直接从此处返回,要看情况。执行完try/catch中return语句中的表达式后会执行 fin ally语句块;如果fin ally中有return, 就从fin ally中的return直接返回,此时try/catch中的return会忽略,但是fin ally中没有return的话,就会先执行fin ally语句块,再从try/catch中的ret

16、urn返回26. 在类的静态方法内部可以通过创建一个本类对象来访问 私有成员已珈有下列TM类的说明r则下列鄢个语旬是正礎的?()public classiestprivate float f = 1.ofint m = 12static int n = Ipublic static void main (String argsO)Testt = new Test(); 匸 f;七jri m . n;二亡Nt.mTest f.5. 匕f .B.9.10,11.12.13.public class HasStaticprivate static int x=100;public st

17、a七it void mainfString argsE)!HasStatic hsl=-new HasStatict; hsl.x+;HosStatic hsZ-new HosStaticO; hs2.x+;hsl=f)ew HasStat-icO;hsl.x;HasStatic.x-;System. out pnntlnCx- 1;程库通过编译谕岀结果为:5t=-门行不能通过编译,因为唸私有靜态銮重市不能逋过编谨,因対引用了私有静态变量程瘁通过编译j输出结果知沪227.importjava.util.*; 和 import java.util.concurrent.*;的区另Uimport

18、java.util.*; 导入的是uti直接子包下的所有类;不会导入util.concurrent.*下的类。import java.util.concurrent.*;导入的是 util.concurrent 直接子包下的所有类28. 关系模型到对象模型的匹配关系表对应类表中的字段对应类的属性表中的记录对应类的实例对象29. 匿名内部类不能够私自定义构造方法30. 接口可以有静态方法,但是静态方法不能是抽象的31.Super和this关键字可以随便用,但是如果用来调用构造 方法,必须放在构造方法的第一行。但是都不能在static方法和static代码块内使用32.构造方法只能被访问权限修饰符

19、修饰,不能被其他关键字修饰33nteger i01 =59;int i02 =59;=i01=i02 为 true34. 类可以实现多个接口,接口可以继承(或扩展)多个接口315161718interface interface interface interfaceD implements AkA;BO;C;interface D extendsinterface A;interface B; interface C;35. JSP九大内置对象Request,resp on se,applicati on,con fig,sessi on, page,pageC on text,out,ex

20、cepti on36. Java维数组有两种初始化方法1. 静态初始化int array = new in t1,2,3,4,5或者int array = 1,2,3,4,5需要注意的是,写成如下形式也是 错误的int array = new in t51,2,3,4,52. 动态初始化int array = new in t5;array0 = 1;array1 = 2;array2 = 3;array3 = 4;array4 = 5;37对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn 5120m -XXSurvivorRatio=3,其最小内存值和 Survi

21、vor区总大小分别是()解析:-Xmx10240m :代表最大堆-Xms10240m :代表最小堆-Xmn5120m :代表新生代算法(目前大 一般情况3 ,总大小-XXSurvivorRatio=3 :代表 Ede n:Survivor = 3 根据 Gen eratio n-Collecti on 部分JVM采用的算法),一般根据对象的生存周期将堆内存分为若干不同的区域, 将新生代分为 Eden,两块 Survivor ; 计算Survivor大小,Eden:Survivor 为 5120,3x+x+x=5120x=1024答:最小内存值为 10240m,Survivor 区总大小为2x=

22、2048m38. 静态包含,动态包含静态包含:动态包含: tnngj args) A a = new B():S),tem cut pirinlln( f( W 0 S 0) system.out pnnin(a g(3D结果:98.0941.虽然double类型大于int,但是double类型接收int值,会报错。因为它们属于两个不同的类型,一个浮点型,一个整形42. 垃圾回收算法43. 创建线程的3种方法Thread,R unn able,Callable。Callable需要实现call方法,并且线程执行结束会有返回值44. 静态内部类可以访问外部类的静态成员(数据+方法),包括私有的,

23、但是不能访问外部类的实例成员。非静态内部 类可以访问外部类的所有成员,包括私有的public clas Test private int i-0;prlva 1:e static zLrrt j=0 private wold methodl( ) J- private static void method?()static class irinerl public void methad()System.out.println(i);System, aut.;methodi();method(、cLasspublic void method2() System.out.pnintln(i);

24、System out.println(J); methodlO;method2();45构造方法想要调用当前类的另外一个构造方法,必须用 this关键字,其必须写在构造方法的第一行46. violatile,synchronized 的区另U47. |,&没有短路效果,|,&有短路效果48. 子类可以继承父类所有的成员变量和方法,只是子类无法访问其私有的方法和属性而已49. Error Exception 的区别Error, Exception 都是 Throwable 的子类。Error,他代表和虚拟机相关的问题。比如应用程序崩溃,虚拟机错误,内存空间不足,方法 调用栈溢出。从而导致应用程序

25、中断运行,而这些错误都不是应用程序自身所能解决和恢复 的,所以建议终止程序运行。Exception,是指应用程序能够自己解决并能使程序恢复运行的错误。例如 ClassCastException, ,IOException,ArrayOutIndexException,SQLException 等。这种异常推荐捕获50. 检查异常和非检查时异常1. UnCheckExcpetion 就是 RuntimeException 类及其子类以及 Error。比如 NullPointerException, ClassCastException,lllegalArgumentException, Inde

26、xOutOfBoundsException 异常等对于这类异常可以不捕获2. CheckException 就是除了 RuntimeException 及其子类 的其他 Exception 实 现类。如 lOExceptio nQassNotFo un dExceptio n,SQLException 等等。这类异常必须捕获51. 常见的对称加密,非对称加密,单向散列函数加密算法对称加密算法:DES,3DES,RC2,RC4,AES非对称加密算法:RSA,DSA,ECC单向散列函数加密算法:md5,shaRSA是非对称加密,在运行速度上是低于对称加密的它的安全性是基于大素数分解,在TLS/SS

27、L协议中,RSA的公钥长度一般为 1024位/2048位52. 什么是对称加密,非对称加密答:对称加密算法 是一个简单的加密算法, 加密和解密的秘钥是一样的, 但是这种加密算法虽然 简单但是比较高效。秘钥越长,加解密的时间越长。缺点就是如何将秘钥通过网络发送给需要解密消息的人, 有很大的风险被截获。 所以在这种 场景下衍生出了非对称加密算法非对称加密算法 是一个非常安全的加密方法。 他采用了一对密码, 私钥和公钥。 公钥是可以 对外公开的, 消息是通过公钥加密, 只有私钥才能解密。 只要不把私钥泄露出去就一切安全53. synchronized 和 Lock 的区别答 :Lock 实现了 sy

28、nchronized 的同步功能,并且还包含了中断锁等候和定时锁等候。意思就是线程A获得对象Obj的锁后,线程B在等待指定的时间后依旧没获得锁,会自动放弃该锁。由于 synchronized 是 jvm 层面实现的,所以系统可以监控锁的释放与否。而 lock 是代码 层面实现的, 系统无法自动释放锁, 需要我们自己在 finally 子句中显示的释放锁 lock.unlock() 。 Lock 锁的范围具有局限性,块范围;而 synchronized 可以锁住类,对象,块加锁54.object 类拥有一组对象监视器方法, wait(),notify(),notifyAll() , 他们配合 s

29、ynchronized 关键字来实现等待通信机制。在 Condition 接 口 中 也 提 供 了 类 似 Object 的 监 视 器 方 法 await(),singnal(),singnalAII(来配合lock实现等待通信机制55.泛型及泛型擦除泛型指的是集合的参数化类型, 就是集合中的元素类型, 指定了参数化类型使得在对集合操 作时只能够使用指定的类型。类型擦除,是指在编译阶段,编译器会把 java 代码中的参数化类型擦除。56.Object clone()方法57.Java中隐藏和覆盖覆盖指示的是父类的实例方法被子类重写后,导致父类的实例方法被子类覆盖。 隐藏是相对于父类的属性

30、(静态和普通) 和静态方法而言。 子类如果申明了和父类一样的成 员变量, 父类的成员变量只是隐藏了。 当父类的引用指向的是子类对象时, 调用的成员变量 还是父类的;子类如果申明了和父类一样的静态方法,即方法名相同,参数列表相同,同上调用的还是父类的。注意方法重写和覆盖的格式:重写是针对父类成员方法和子类成员方法之间。隐藏是指父类静态成员方法和子类静态成 员方法之间以及属性之间原因:如果父类方法是 static,子类方法是成员的,或者父类方法是成员的, 子类方法是static, 这是错误的写法,编译就会报错,说明表示的既不是重写也不是覆盖。58.Java中对字段(静态和普通)属性,final,s

31、tatic,private方法是静态绑定,成员方法是动态绑定59.System.out.println 默认调用的是 String.valueOf()方法该方法判断传入对象,如果是null则直接输出null否则调用toString()方法Stri ng.valueOf 源码public static StringvalueOf(Objectobj) return(obj =null ) ? null:obj.toString();60. 类的继承和多态创建子类会调用父类构造方法但是不会创建父类对象? a.子类方法不能缩小父类方法的访问权限(可以扩大),而且子类不能抛出比父类方法更多的异常,其必

32、须抛出和父类方法抛出的 相同的异常,或者子类方 法抛出的异常类是父类方法抛出的 异常类的子类。? b.父类的静态方法不能被子类覆盖为非静态方法。同样,父类的非静态方法不 能被子类覆盖为静态方法? c.子类可以定义与父类的静态方法同名的静态方法,以便在父类中隐藏父类的静态方法。子类覆盖静态方法和覆盖一般方法的区别是,运行时,JVM把静态方法和所属类绑定,而将一般方法和所属实例绑定。? d.父类的私有方法不能被子类覆盖 。虽然不会出现编译错误,但是实际上子类 并没有从父类继承这个方法,所以,其并没有覆盖关系。? e.父类的抽象方法通过子类实现父类的抽象方法或者子类重新声明父类的抽象 方法来实现覆盖

33、。abstract class fath&rpublic abstract Collection nan日); 卡abstract & son extends fatherOvcpridepublic abstra匚t ArrayLi5t nane(int a)j? f.父类的非抽象方法可以被覆盖为抽象方法abstract class father public void nane(int;9labstract class son extends father Overridepublic abstra匚 1: void nanie(.int aj;i61. null1. 在编译和运行时期,将

34、n ull强制转换成任何引用类型都是可行的,在运行时期都不会抛出空指针异常。2. 当你直接将null赋值给基本类型,会出现编译错误。但是如果将null赋值给包装类object ,然后将object赋给各自的基本类型,编译器不会报,但是你将会在运行时期遇到空指针异常。这是Java中的自动拆箱导致的3. 任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针 异常4. 如果使用了带有null值的引用类型变量,instanceof 操作将会返回false62. 和 方法区别java基础刷题知识点总结:在jvm第一次加载class文件时调用,包括静态变量初始化语句和静态块的执行

35、 :在实例创建出来的时候调用,包括调用new操作符;调用 Class或Java.la ng.reflect.Co nstructor对象的 new In sta nce()方法;调用任何现有对象的 clone()方法;通过 java.io.ObjectlnputStream类的 getObject() 方法反序列化。(1) ()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static )中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序所决定的,静态语句块只能访问到定义在静态语句块之前的变量,点贵在他之后的变量, 在前面的静态语句块中可以赋值但不能访问。publ

36、ic class Teststatici = 0;/给变量赋值可以正常通过System.out.pri ntl n(i);static int i = 1;/这句编译器会提示“非法向前引用”(2) ()方法与类的构造函数(或者说实例构造器中的()方法)不同, 它不需要显示的调用父类构造器,虚拟机会保证在子类的()方法执行之前,父类的()方法已经执行完毕。因为在虚拟机中第一个被执行的 ()方法的类肯疋是javaan g.Object 。(3) 由于父类的 ()方法先执行,也就意味着父类中定义的静态语句块要优先于 子类类的变量赋值操作。(4) ()方法对于类或者接口来说并不是必须的,如果一个类没有

37、静态语句块,也就没有变量的赋值操作,那么编译器可以不为这个类生成 ()方法。(5) 接口中不能使用静态语句块,但仍然可以有变量初始化的赋值操作,因此接口与类一样都会生成()方法。但接口与类不同,执行接口的()方法不需要先执行父接口的()方法。只有当父接口中定义的变量使用时,父接口才会初始化。另外,接口的实现类在初始化时也一样不会执行接口的 ()方法。(6) 虚拟机会保证一个类的 ()方法在多线程环境中被正确地加锁、同步,如果多个线程同时去初始化一个类,那么只有一个线程去执行这个类的 ()方法中有耗时很长的操作,就可能造成多个线程阻塞。设计模式:1说出你知道的设计模式有哪些?2单例模式:懒汉(懒

38、加载),饿汉(立即加载),双重锁校验,枚举,静态内部类 懒汉:publicFactory -private static Factory feetrn=null;private Fctory():j- li匸 synchronized static Factory getBean() if (beanniull)teof?-new Fattory ();return bean饿汉:puhli r class Factory private stati匚 Factory bean=pieh Factory() jprivate Factory()九:Hi static Factory getBe

39、an() return bean)双重锁校验:public class Factory private static volatile Fb匚tary t?ean-null;private Factory() static Fjctoiry getBean;) if (fjean=null) synchronised (Factopy.class) if (beoji=null) jecrn=new Feutony();return bnn;)枚举:pjhlir eJess Factory enurn Singleton 功我皿;有几个枚举变量就会实例化几次 private Factory b

40、ean;Singleton() bear = nei Factory();public Factory getInstance()return bean;public static void mainfString 日嘗)|Factory bean Singleton.getlntance(); )静态内部类public class Factory m七己 s七m七5.匸 clss SingleorHolder static final Factory iritunce-new Factory();nnivate Pactory()-ju_:li - static Factory gtBean

41、()r*Et urn SinglctcnHolder, in st 口刃匚 e ;框架:1. 怎么理解spring ioc容器2.Spring的核心是什么依赖注入和aop3. spring事务传播特性事务属性的种类:传播行为、隔离级别、只读和事务超时a)传播行为定义了被调用方法的事务边界。PROPERGATION_MANDATORY表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常PROPAGATION_NESTED表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它看起来和PROPAGATION_REQUIRED看起来没什么俩样PROPAGATION_NEVER表示方法不

42、能运行在一个事务中,否则抛出异常PROPAGATION_NOT_SUPPORTED表示方法不能运行在一个事务中,如果当前存在一个事务,则该方法将 被挂起PROPAGATION_REQUIRED表示当前方法必须运行在一个事务中,如果当前存在一个事务,那么该 方法运行在这个事务中,否则,将创建一个新的事务PROPAGATION_REQUIRES_NEW表示当前方法必须运行在自己的事务中,如果当前存在一个事务,那么 这个事务将在该方法运行期间被挂起PROPAGATION_SUPPORTS表示当前方法不需要运行在一个是事务中,但如果有一个事务已经存 在,该方法也可以运行在这个事务中b)隔离级别在操作数

43、据时可能带来 3个副作用,分别是脏读、不可重复读、幻读。为了避免这3中副作用的发生,在标准的SQL语句中定义了 4种隔离级别,分别是未提交 读、已提交读、可重复读、可序列化。而在 spring事务中提供了 5种隔离级别来 对应在SQL中定义的4种隔离级别,如下:隔离级别意义ISOLATION_DEFAULT使用后端数据库默认的隔离级别ISOLATION_READ_UNCOMMITTED允许读取未提交的数据(对应未提交读),可能导致脏读、 不可重复读、幻读ISOLATION_READ_COMMITTED允许在一个事务中读取另一个已经提交的事务中的数据 (对应已提交读)。可以避免脏读,但是无法避免

44、不可重 复读和幻读ISOLATION_REPEATABLE_READ一个事务不可能更新由另一个事务修改但尚未提交(回滚) 的数据(对应可重复读)。可以避免脏读和不可重复读, 但无法避免幻读ISOLATION_SERIALIZABLE这种隔离级别是所有的事务都在一个执行队列中,依次顺 序执行,而不是并行(对应可序列化)。可以避免脏读、 不可重复读、幻读。但是这种隔离级别效率很低,因此, 除非必须,否则不建议使用。c)只读如果在一个事务中所有关于数据库的操作都是只读的,也就是说,这些操作只读取数据库中的数据,而并不更新数据,那么应将事务设为只读模式(READ_ONLY_MARKER ),这样更有利

45、于数据库进行优化。因为只读的优化措施是事务启动后由数据库实施的,因此,只有将那些具有可能启动新事务的传播行为(PROPAGATION_NESTED 、PROPAGATION_REQUIRED 、PROPAGATION_REQUIRED_NEW) 的方法的事务标记成只读才有意义。如果使用Hibernate作为持久化机制,那么将事务标记为只读后,会将Hibernate 的flush 模式设置为 FULSH_NEVER, 以告诉 Hibernate 避免和数据库之间进行不必要的同步,并将所有更新延迟到事务结束。d)事务超时如果一个事务长时间运行,这时为了尽量避免浪费系统资源,应为这个事务设置一个有效

46、时间,使其等待数秒后自动回滚。与设置 只读”属性一样,事务有效属性也需要给那些具有可能启动新事物的传播行为的 方法的事务标记成只读才有意义。网络:1.lso 7层模型物理层,数据链路层,网络层,传输层,会话层,表现层,应用层2. TCR udp的区别3. TCP连接和断开,3次握手,4次挥手的过程数据库:1. 索引的理解索引可以提高查询速度。为某个字段添加索引,其实就是为某个字段添加一种特殊的数据结构,它包含了字段的值,并且字段的值是经过排序的,以及字段所对应的行的地址。当通过索引进行查找时,数据库搜索引擎可以估算出记录的大概位置,然后再根据二分查找的思想向左或向右移动来查找出对应的记录,比通常的全表扫描效率高很多。那是不是每个字段都该加索引呢?不对。首先a创建索引和维护索引都需要花费一定的时间,而且这个时间是随着记录数的增加而增加的b.索引需要占用物理空间,除了数据表占物理空间外,索引还要占,如果是聚簇索引所占用的空间会更多c.每次insert,update,delete,索引都要重新计算,增加了维护的时间,降低了性能那该给哪些字段加索引?A.给经常需要搜索的列创建索引B给需要连接的列添加索引C需要经常分组和排序的列添加索引。D.给经常需要按某个指定范围的来查询的列添加索引Tip:对于那些存在大量重复值的字段没必要添加索引,没什么太大用处索引的分类:A.唯一索引 不允许

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论