版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java基础刷题知识点总结基础1 . object类的方法有哪些clone() protect创建并返回一个对象的副本equals()用来比较某个对象是否与调用此方法的对象相等tectgetClass()返回一个对象的运行时类hashCode()返回一个对象的 hash值notify()唤醒在此对象监听器上等待的单个线程。如果有多个,则随机唤醒一个notifyAll()唤醒在此对象监听器上等待的所有线程registerNatives()本地私有方法,在类初始化是会调用此方法toString()返回当前对象的字符串表示wait()使当前线程处于等待直到其他线程调用这个对象
2、的notify或notifyAll方法或者超过指定的时间量2 .接口和抽象类的区别1.首先描述接口和抽象类的特性抽象类:是子类通用特性的集合接口 :是抽象方法的集合l从某种意义上说抽象类包含了接口的所有功能。但是通过实现接口可以实现多继承卜面列出接口和抽象类的区别参数抽象类接口默认的实现方法可以有默认的实现方法接口是完全抽象的,根本/、存 在默认的实现方法实现子类使用extends关键字来继 承抽象类。如果子类不是抽象 类,他必须提供抽象类中所有 申明的方法的实现子类使用implements关键字 来实现接口。子类必须提供接 口中所有申明的方法的实现接口还后可以继承子接口构造器可以有构造器,但
3、是不能实例 化不能有构造器与正常java类的区别除了不能实例化,没什么区别不是通一个概念访问修饰符抽象方法可以有public,protected,default 这些 修饰符接口只能是publicmain方法抽象类可以有main方法,并 且可以运行接口没有多继承不能实现通过实现接口可以实现多继承添加新方法如果你抽象类中增加新的方 法,你可以提供默认的实现, 没有必要改变继承该抽象的 类的子类如果往接口中添加新的方法, 子类必须在原来的基础上修 改并实现新的方法什么时候用抽象类和接口1 .如果一些方法必须提供默认的实现,就必须用抽象类,比如在 dao层,每个类都有增删查 改这几个操作,我们可以把
4、这些操作写在抽象类里,并让抽象类提供默认的实现。否则的话用接口2 .假如要实现多继承,则必须要用接口 ,java不支持多继承但是可以通过实现多个接口来解决3 .如果基本功能在不断改变,那么就用抽象类。如果不断改变基本功能并且使用接口,子类就必须不停的更改03.抽象类是否有构造方法抽象类有构造方法只是抽象类不能够实例化4 .Final finally finalize。方法的区别5 .Sleep(沐口 wait()的区别 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的slee
5、p方法, 实际上还是a去睡觉,要让b线程睡觉要在 b的代码中调用 sleep。锁:最主要是sleep方法没有释放锁,而 wait方法释放了锁,使得其他线程可以使用 同步控制块或者方法。sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU 一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用 notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt。强行打断。Threa
6、d.sleep(0)的作用是“触发操作系统立刻重新进行一次 CPU争”。使用范围:wait , notify 和notifyAll只能在同步控制方法或者同步控制块里面使用,配合synchronized 实现等待通信机制,而 sleep可以在任何地方使用。synchronized(x) x.notify() / 或者 wait() 2 / 27java 基础刷题知识点总结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.O
7、verload 和 override 的区别Overload 是重载,它是一个类中多态性的一种表现。Override 是重写,它是子类与父类多态性之间的一种表现。重载是指在定义多个名字相同的方法。 但这些方法的返回值类型, 参数类型, 参数顺序,参数个数必须有一个不同,但是不能只是返回值类型不同的,因为这会使得 jvm 在调用方法时,不知道该调用谁重写是覆盖掉父类的方法并重新定义一个新的方法, 新的方法的返回值类型, 参数类型,参数个数,参数顺序都必须跟父类中的方法保持一致。以下是这两种定义的具体注意事项( 1 ) Overload 重载1. 方法的返回值类型,参数的类型,个数,顺序存在不同2
8、. 但不能只有返回值类型3. 是针对一个类而言的( 2) override 重写1. 方法的返回值类型,参数的类型,个数,顺序必须一致2 是针对父类与子类而言的3 .定义为 final 的方法不能重写4 .重写的方法不能缩小包的访问权限5 .包访问权限为private 的方法不能重写,否则只是在子类中定义一个新的方法8.Java中 hashtable 和 hashmap 的区别1 Hashtable 不允许插入空的键值对,否则报错2 Hashtable 是线程安全的,所有方法均是同步的 ;HashMap 是线程是线程不安全的。3 . HashTable 效率比 hashmap 低9.throw
9、 和 throws 的区别1 .throw 表示一种抛出的动作 ,throws 表示一种状态,代表方法可能列出的抛出异常2 .throw 用于方法体 ,throws 用于方法头3 .throw 只能抛出一个异常.throws 后申明多个异常3 / 27java基础刷题知识点总结10 .内存溢由和内存泄漏的区内存溢出(out of memory),是指程序在申请内存时,没有足够的内容供其使用.例如要申请一个 对象却已经没有能够容纳这个对象的内存内除泄露(memory leak)是指程序在申请内存后,无法释放掉已经申请的内存.如果频繁的出现内存泄露,最后内存会用尽而导致内存溢出11 .String
10、, StringBuffer 和 StringBuilder 的区另可变/不可变?String是不可变的,因为其内部的字符数组是final的,所以长度是固定的,连接字符串时实际上是创建了新的字符串对象StringBuilder,StringBuffer 是可变的,因为都继承了 abstractStringBuilder ,而 abstractStringBuilder其内部是动态数组,长度不够时会自动扩容StringBuilder 是线程不安全的,StringBuffer 是线程安全的,stringBuilder 的效率比 Strin gBuffer 高12 .抽象类和接口类中方法的访问权限有
11、哪些?在jdk1.8中,抽象类的成员变量,抽象方法和非抽象方法默认都是default的,意味着抽象方法的访问权限可以为default,protected,public 。据说以前都是 protected接口类的成员变量永远都是public static final成员方法永远都是public13 .Class.forname(灯 ClassLoader.loadClass()Class.forname():是一个静态方法,最常用的是Class.forname(String className);根据传入的类的 全限定名返回一个 Class对象.该方法在将Class文件加载到内存的同时,会执行类
12、的初始化.如:Class.forName("com.wang.HelloWorld");ClassLoader.loadClass(庭是一个实例方法,需要一个ClassLoader对象来调用该方法,该方 法将Class文件加载到内存时,并不会执行类的初始化,直到这个类第一次使用时才进行初始 化.该方法因为需要得到一个ClassLoader对象,所以可以根据需要指定使用哪个类加载器.如:ClassLoader cl=;cl.loadClass("com.wang.HelloWorld");14 .char口如何仓I建16 .关于类的修饰符对于外部类 pub
13、lic default默认final abstract对于成员内部类public protected default默认private static final abstract对于局部内部类default默认final abstract17标识符的组成Java标识符由数字、字母、下划线()、美元符号(&或人民币(耳组成,首位不能是数字并且Java关键字不能作为标识符17线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间, 线程的切换不由线程本身来决定(协同式调度)。这就是平 台独立的原因。18 .接口类中 可以有静态万法,但是不能
14、有静态的抽象万法19 .抽象方法一定是类的成员方法,不能是类方法20 .分母和分子只要一个是浮点数算由来的结果也为浮点数21 .向上转型和向下转型子类转型成父类是向上转型,反过来说,父类转型成子类就是向下转型22 .local variable=M部变量23 .方法的重写(override)两同两小一大原则:方法名相同,参数列表相同子类返回类型小于等于父类方法返回类型(子类重写方法的返回值类型必须为父类方法的返回值类型 或父类方法返回值类型的子类类型),子类抛出异常小于等于父类方法抛出异常(子类重写方法抛出的异常类型只能是父类方法抛出的类型或父类方法抛出的异常类型的子类类型),子类访问权限大于
15、等于父类方法访问权限( 父类方法是用protected修饰的子类就只能用public修饰而不能用private修饰)。24 .finally语句块在什么时候不会执行当try/catch语句块中有 System.exit(0)时,不会执行 finally语句块25 .如果finally和try/catch中都有return语句怎么办?首先会执行try/catch中的return语句中的表达式,但是不一定直接从此处返回,要看情 况。执行完try/catch中return语句中的表达式后会执行finally语句块;如果finally中有return ,就从finally中的return直接返回,此日
16、try/catch中的return会忽略,但是finally中没有return 的话,就会先执行 finally语句块,再从try/catch中的return返回26 .在类的静态方法内部可以通过创建一个本类对象来访问私有成员已知有下列Test类的说明r则下列哪个语句是正确的?()public classiest(private float f = 1.ofint m = 12static int n = 1public static void main (String argsO)(Testt = new Test();)® f ;14 / 271. public class Ha
17、s5tatic2. private static int ;3. public static void mainfStrlng args)HasStatic hsl=new HasStatict5; hsl.x+;HasStatic hs2-new HosStaticO h52.x+;8.9.10,11.hsl=new HasStaticO; hsl.x+;HasStatic.x一;System.out.pnntlnC'x- i-x);2 12.)3 13.程序通过编怪A愉出结果为:H二二日工口行不曾施过编译F因为塌私有静态变量5行不能通过编注,因为引用了私有静态变量程序通过编语,输出
18、结果为!目1A1.1 importjava.util.*; 和 import java.util.concurrent.*;的区另Uimport java.util.*; 导入的是uti直接子包下的所有类;不会导入 util.concurrent.*下的类。import java.util.concurrent.*;导入的是 util.concurrent 直接子包下的所有类28 .关系模型到对象模型的匹配关系表对应类表中的字段对应类的属性表中的记录对应类的实例对象29 .匿名内部类不能够私自定义构造方法30 .接口可以有静态方法,但是静态方法不能是抽象的31 .Super和this关键字可以
19、随便用,但是如果用来调用构造 方法,必须放在构造方法的第一行。但是都不能在static方法和static代码块内使用32.构造方法只能被访问权限修饰符修饰,不能被其他关键字修饰33.Intege门01 =59;int i02 =59;=>i01=i02 为 true34 .类可以实现多个接口,接口可以继承(或扩展)多个接口|15161718interface D implements a|) interface A);interface B(;interface C);interface D extendsinterface A;interface B;interface C;35 .J
20、S仇大内置对象Request,response,application,config,session,page,pageContext,out,exception36 .Java一维数组有两种初始化方法1 .静态初始化int array口 = new int1,2,3,4,5或者int array = 1,2,3,4,5需要注意的是,写成如下形式也是 错误的int array口 = new int51,2,3,4,52.动态初始化int array口 = new int5;array0 = 1;array1 = 2;array2 = 3;array3 = 4;array4 = 5;37 .对于
21、JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3,其最小内存值和 Survivor区总大小分别是()解析:-Xmx10240m :代表最大堆- Xms10240m :代表最小堆- Xmn5120m :代表新生代- XXSurvivorRatio=3 :代表 Eden:Survivor = 3根据 Generation-Collection 算法(目前大部分JVM采用的算法),一般根据对象的生存周期将堆内存分为若干不同的区域,一般情况将新生代分为 Eden ,两块 Survivor ; 计算Survivor大小,Eden:S
22、urvivor = 3 ,总大小 为 5120,3x+x+x=5120x=1024答:最小内存值为 10240m,Survivor 区总大小为2x=2048m38 .静态包含,动态包含静态包含:<includefile="/>动态包含: <jsp include page= "/>39 .默认使用Unioncode编码,即不论什么语言都是一个字符 占两个字节40 .Java的class文件编码为 UTF-8,而虚拟机 JVM编码为 UTF-1641 .在向上转型的过程中,父类引用了子类的对象,子类不能够重写父类的静态方法,加 ©Overri
23、de注解会报错。如果子 类还是申明了 一个和父类一样的静态方法,只能说是子类中明了一个新的方法,把父类的隐藏了,但不意味着这是重写。 当父类的引用调用静态方法时,调用的还是父类的的。所以 静态方法和普通方法在调用上是存在区别的。例:阅读以下程序并写出运行结果:class a (dcuble f(double x double y't ( return 乂 * h尔国ic mt g(int n) return n ' n;)Jclass B extends A double f(duublt- x doublt- y» double rn = supei .Hx., v
24、 j, return m x " y;Jstatic ini 90nt n) IML rn - A.(n ), return m + n;public class PdntMetrioiJ puoiic static void main(fc>tringj args) A a = new B():S),tem cut pirinlln( f( W O S O)system.out pnmn(a g(3D结果:98.0 941 .虽然double类型大于int,但是double类型接收int值,会报错。因为它们属于两个不同的类型,一个浮点型,一个整形B面贬值百句中正确的是() d
25、ouble d=5-3612;Double cD=3;42 .垃圾回收算法43创建线程的3种方法Thread,Runnable,Callable。Callable需要实现call方法,并且线程执行结束会有返回值44 .静态内部类可以访问外部类的静态成员(数据+方法),包括私有的,但是不能访问外部类的实例成员。非静态内部 类可以访问外部类的所有成员,包括私有的public 匚1日55 Test ( private int i-0;private static int j=0private uoid methodl( ) J- private static void method2()static
26、 class irinerL(public void method()System.out.println();System.out.printlnfj); inethocll(;method2();)classpublic void netboc2() System.out.println(i); System.out.println(J); inethodl();inethcd2(;45 .构造方法想要调用当前类的另外一个构造方法,必须用 this关键字,其必须写在构造方法的第一行46 .violatile,synchronized 的区另U47 .|,&没有短路效果,| , &a
27、mp;&有短路效果48 .子类可以继承父类所有的成员变量和方法,只是子类无法访问其私有的方法和属性而已49 .Error Exception 的区别Error, Exception 者B是 Throwable 的子类。Error,他代表和虚拟机相关的问题。比如应用程序崩溃,虚拟机错误,内存空间不足,方法 调用栈溢出。从而导致应用程序中断运行,而这些错误都不是应用程序自身所能解决和恢复 的,所以建议终止程序运行。Exception,是指应用程序能够自己解决并能使程序恢复运行的错误。例如 ClassCastException, ,IOException,ArrayOutIndexExcep
28、tion,SQLException 等。这种异常推荐捕获50检查异常和非检查时异常1 .UnCheckExcpetion 就是 RuntimeException 类及其子类以及 Error。比如 NullPointerException, ClassCastException,IllegalArgumentException, IndexOutOfBoundsException 异常等 对于这类异常可以不捕获2 .CheckException 就是除了 RuntimeException 及其子类 的其他 Exception 实 现类。如 IOException,ClassNotFoundExc
29、eption,SQLException 等等。这类异常必须捕获51 .常见的对称加密,非对称加密,单向散列函数加密算法对称力口密算法:DES,3DES,RC2,RC4,AES非对称加密算法:RSA,DSA,ECC单向散列函数加密算法:md5,shaRSA是非对称加密,在运行速度上是低于对称加密的它的安全性是基于大素数分解,在TLS/SSL协议中,RSA的公钥长度一般为 1024位/2048位java基础刷题知识点总结52 .什么是对称加密,非对称加密答:对称加密算法是一个简单的加密算法, 加密和解密的秘钥是一样的, 但是这种加密算法虽然简单但是比较高效。秘钥越长,加解密的时间越长。缺点就是如何
30、将秘钥通过网络发送给需要解密消息的人, 有很大的风险被截获。 所以在这种场景下衍生出了非对称加密算法非对称加密算法是一个非常安全的加密方法。 他采用了一对密码, 私钥和公钥。 公钥是可以对外公开的, 消息是通过公钥加密, 只有私钥才能解密。 只要不把私钥泄露出去就一切安全53 .synchronized 和 Lock 的区别答 :Lock 实现了 synchronized 的同步功能,并且还包含了中断锁等候和定时锁等候。意思就是线程A获得又象Obj的锁后,线程B在等待指定的时间后依旧没获得锁,会自动放弃该锁。由于 synchronized 是 jvm 层面实现的,所以系统可以监控锁的释放与否。
31、而lock 是代码层面实现的, 系统无法自动释放锁, 需要我们自己在 finally 子句中显示的释放锁lock.unlock()。 Lock 锁的范围具有局限性,块范围;而synchronized 可以锁住类,对象,块加锁54.object 类拥有一组对象监视器方法, wait(),notify(),notifyAll() ,他们配合synchronized 关键字来实现等待通信机制。在Condition 接 口 中 也 提 供 了 类 似 Object 的 监 视 器 方 法await(),singnal(),singnalAll(床配合lock实现等待通信机制55 .泛型及泛型擦除泛型指
32、的是集合的参数化类型, 就是集合中的元素类型, 指定了参数化类型使得在对集合操作时只能够使用指定的类型。类型擦除,是指在编译阶段,编译器会把 java 代码中的参数化类型擦除。56 .Object clone()方法57.Java中隐藏和覆盖覆盖指示的是父类的实例方法被子类重写后,导致父类的实例方法被子类覆盖。隐藏是相对于父类的属性 (静态和普通) 和静态方法而言。 子类如果申明了和父类一样的成员变量, 父类的成员变量只是隐藏了。 当父类的引用指向的是子类对象时, 调用的成员变量还是父类的;子类如果申明了和父类一样的静态方法,即方法名相同,参数列表相同,同上调用的还是父类的。注意方法重写和覆盖
33、的格式:重写是针对父类成员方法和子类成员方法之间。隐藏是指父类静态成员方法和子类静态成员方法之间以及属性之间原因:如果父类方法是 static,子类方法是成员的,或者父类方法是成员的,子类方法是static,这是错误的写法,编译就会报错,说明表示的既不是重写也不是覆盖。58.Java中对字段(静态和普通)属性,final,static,private方法 是静态绑定,成员方法是动态绑定59.System.out.println 默认调用的是 String.valueOf()方法该方法判断传入对象,如果是 null则直接输出null否则调用toString()方法String.valueOf 源
34、码return (objpublic static String valueOf(Object obj) null ) ? "null" : obj.toString();60 .类的继承和多态创建子类会调用父类构造方法但是不会创建父类对象? a.子类方法不能缩小父类方法的访问权限(可以扩大),而且子类不能抛出比父类方法更多的异常,其必须抛出和父类方法抛出的 相同的异常,或者子类方 法抛出的异常类是父类方法抛出的 异常类的子类。? b.父类的静态方法不能被子类覆盖为非静态方法。同样,父类的非静态方法不 能被子类覆盖为静态方法? c.子类可以定义与父类的静态方法同名的静态方法
35、,以便在父类中隐藏父类的 静态方法。子类覆盖静态方法和覆盖一般方法的区别是,运行时,JVM把静态方法和所属类绑定,而将一般方法和所属实例绑定。? d.父类的私有方法不能被子类覆盖 。虽然不会出现编译错误,但是实际上子类 并没有从父类继承这个方法,所以,其并没有覆盖关系。? e.父类的抽象方法通过子类实现父类的抽象方法或者子类重新声明父类的抽象 方法来实现覆盖。abstract class fath&rpublic abstract Collection riane(lnt 日); 的abstract sqm extends fathergOvcrridepublic abstract
36、ArrayLi5t nane(int a)j? f.父类的非抽象方法可以被覆盖为抽象方法abstract class father public void nane(intdabstract class son extends fatherOverridepublic abstract void nanie(.int a);I61 .null1 .在编译和运行时期,将 null强制转换成任何引用类型都是可行的,在运行时期都 不会抛出空指针异常。2 .当你直接将null赋值给基本类型,会出现编译错误。但是如果将 null赋值给包装 类object ,然后将object赋给各自的基本类型,编译器不
37、会报,但是你将会在运 行时期遇到空指针异常。这是Java中的自动拆箱导致的3 .任何含有null值的包装类在Java拆箱生成基本数据类型时候都会抛出一个空指针4 .如果使用了带有null值的引用类型变量,instanceof 操作将会返回false62.访计和clinit方法区别? <clinit> :在jvm第一次加载class文件时调用,包括静态变量初始化语句和静 态块的执行? <init> :在实例创建出来的时候调用,包括调用new操作符;调用 Class或Java.lang.reflect.Constructor 对象的 newInstance()方法;调用任何
38、现有对 象的 clone()方法;通过 java.io.ObjectlnputStream 类的 getObject() 方法反 序列化。(1) <clinit> ()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块(static )中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序所决定的,静态语句块只能访问到定义在静态语句块之前的变量,点贵在他之后的变量, 在前面的静态语句块中可以赋值但不能访问。public class Test statici = 0;/给变量赋值可以正常通过System.out.println(i); /这句编译器会提示“非法向前
39、引用”static int i = 1;(2) <clinit> ()方法与类的构造函数(或者说实例构造器中的()方法)不同, 它不需要显示的调用父类构造器,虚拟机会保证在子类的()方法执行之前,父类的<clinit> ()方法已经执行完毕。因为在虚拟机中第一个被执行的<clinit> ()方法的类肯定是java.lang.Object 。(3)由于父类的<clinit> ()方法先执行,也就意味着父类中定义的静态语句块要优先于 子类类的变量赋值操作。(4) <clinit> ()方法对于类或者接口来说并不是必须的,如果一个类没有静态
40、语句块, 也就没有变量的赋值操作,那么编译器可以不为这个类生成<clinit> ()方法。(5)接口中不能使用静态语句块,但仍然可以有变量初始化的赋值操作,因此接口与 类一样都会生成<clinit> ()方法。但接口与类不同,执行接口的 <clinit> ()方法不需要 先执行父接口的<clinit> ()方法。只有当父接口中定义的变量使用时,父接口才会初始 化。另外,接口的实现类在初始化时也一样不会执行接口的<clinit> ()方法。(6)虚拟机会保证一个类的<clinit> ()方法在多线程环境中被正确地加锁、同步,
41、如果多个线程同时去初始化一个类,那么只有一个线程去执行这个类的<clinit> ()方法中有耗时很长的操作,就可能造成多个线程阻塞。设计模式:1 .说由你知道的设计模式有哪些?2 .单例模式:懒汉(懒加载),饿汉(立即加载),双重锁校验,枚举,静态内部类 懒汉:public class Factory -private static Factory feetrn=null;private Fctory():j lie synchronized static Factory getBean() if (beannull)&eor?-new Fattory ();)return
42、 bean)俄汉:puhli r class Factory private static Factory bec?r7=new Factory() jprivate Factory()ni static Factory getBean() return bean;)双重锁校验:26 / 27public class Factory private static volatile Factory bean-null;private Factory() static Factory getBean;) if (£rean=null) synchronised (Factopy.匚355
43、)(if (beoji=null) £jecrn=new Factony();)t"ettirr bean;)枚举:口口卜1正 门g55 Factory )enum Singleton 加css ;有几个枚举娈量就会实例化几次private Factory bean;Singleton() bear - hem Factory();)public Factory getInsta nee() return bean;)public static void mainfString ares)fcFactory ban = Singleton.J/istffnce.getlns
44、tance(); )静态内部类public class Factory (private static class Singleton Hol de r-f static final Factory instunce-ne Factory();private Pactory()-)jul:11 _ static Factory getBan() return SinglctonHolder.instancejI 框架:1.怎么理解spring ioc容器 2.Spring的核心是什么依赖注入和aop3.spring事务传播特性事务属性的种类:传播行为、隔离级别、只读和事务超时a)传播行为定义了
45、被调用方法的事务边界。PROPERGATION_MANDATORY表示方法必须运行在一个事务中,如果当前事务不存在,就抛出异常PROPAGATION_NESTED表示如果当前事务存在,则方法应该运行在一个嵌套事务中。否则,它他来和PROPAGATION_REQUIRED他来没什么俩样PROPAGATION_NEVER表示方法不能运行在一个事务中,否则抛出异常PROPAGATION_NOT_SUPPORTED表示方法不能运行在一个事务中,如果当前存在一个事务,则该方法将 被挂起PROPAGATION_REQUIRED表示当前方法必须运行在一个事务中,如果当前存在一个事务,那么该 方法运行在这个事
46、务中,否则,将创建一个新的事务PROPAGATION_REQUIRES_NEW表示当前方法必须运行在自己的事务中,如果当前存在一个事务,那么 这个事务将在该方法运行期间被挂起PROPAGATION_SUPPORTS表示当前方法不需要运行在一个是事务中,但如果有一个事务已经存 在,该方法也可以运行在这个事务中b)隔离级别在操作数据时可能带来 3个副作用,分别是脏读、不可重复读、幻读。为了避免这3中副作用的发生,在标准的SQL语句中定义了 4种隔离级别,分别是未提交读、已提交读、可重复读、可序列化。而在 spring事务中提供了 5种隔离级别来对应在SQL中定义的4种隔离级别,如下:隔离级别意义I
47、SOLATION_DEFAULT使用后端数据库默认的隔离级别ISOLATION_READ_UNCOMMIIIED允许读取未提交的数据(对应未提交读),可能导致脏读、 不可重复读、幻读ISOLATION_READ_COMMITTED允许在一个事务中读取另一个已经提交的事务中的数据 (对应已提交读)。可以避免脏读,但是无法避免/、可重复读和幻读ISOLATION_REPEATABLE_READ一个事务不可能更新由另一个事务修改但尚未提交(回滚) 的数据(对应可重复读)。可以避免脏读和不可重复读, 但无法避免幻读ISOLATION_SERIALIZABLE这种隔离级别是所有的事务都在一个执行队列中,
48、依次顺 序执行,而不是并行(对应可序列化)。可以避免脏读、 不可重复读、幻读。但是这种隔离级别效率很低,因此, 除非必须,否则不建议使用。c)只读如果在一个事务中所有关于数据库的操作都是只读的,也就是说,这些操作只读取数据库中的数据,而并不更新数据,那么应将事务设为只读模式(READ_ONLY_MARKER ),这样更有禾U于数据库进行优化。因为只读的优化措施是事务启动后由数据库实施的,因此,只有将那些具有可能启动新事务的传播行为 (PROPAGATION_NESTED 、PROPAGATION_REQUIRED 、PROPAGATIO N_REQUIRED_NEW) 的方法的事务标记成只读才
49、有意义。如果使用Hibernate作为持久化机制,那么将事务标记为只读后,会 将Hibernate 的flush 模式设置为 FULSH_NEVER, 以告诉 Hibernate 避免和数 据库之间进行不必要的同步,并将所有更新延迟到事务结束。d)事务超时如果一个事务长时间运行,这时为了尽量避免浪费系统资源,应为这个事务设置一个有效时间,使其等待数秒后自动回滚。与设置 只读”属性一样,事务有效属性也需要给那些具有可能启动新事物的传播行为的 方法的事务标记成只读才有意义。网络:1.Iso 7层模型物理层,数据链路层,网络层,传输层,会话层,表现层,应用层2 .TCP; udp的区别3 .TC唯接
50、和断开,3次握手,4次挥手的过程数据库:1.索引的理解索引可以提高查询速度。为某个字段添加索引,其实就是为某个字段添加一种特殊的数据结构,它包含了字段的值,并且字段的值是经过排序的,以及字段所对应的行的地址。当通过索引进行查找时,数据库搜索引擎可以估算出记录的大概位置,然后再根据二分查找的思想向左或向右移动来查找出对应的记录,比通常的全表扫描效率高很多。那是不是每个字段都该加索引呢?不对。首先a.创建索引和维护索引都需要花费一定的时间,而且这个时间是随着记录数的增加而增加的b.索引需要占用物理空间,除了数据表占物理空间外,索引还要占,如果是聚簇索引所占用的空间会更多 c.每次insert,update,delete ,索引都要重新计算,增加了维护的时 间,降低了性能 那该给哪些字段加索引?A.给经常需要搜索的列创建索引B.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开展119消防宣传日活动总结
- 感恩父母亲演讲稿(9篇)
- 开展119消防安全宣传月活动总结7篇
- 十万个为什么知识竞赛
- 公共卫生服务卫生监督协管
- 基于双端行波法的架空线-电缆混合线路故障定位研究
- 二零二五年度公路货物运输与智能仓储管理系统合同3篇
- 基于特征模理论的机载阵列天线研究
- 二零二五年度个人临时借款合同范本3篇
- 不同封装形式的锂离子电池串联电弧故障热电特征研究
- 乳腺癌的综合治疗及进展
- 【大学课件】基于BGP协议的IP黑名单分发系统
- 2025年八省联考高考语文试题真题解读及答案详解课件
- 乡镇卫生院2025年工作计划
- 信息安全意识培训课件
- 2024年山东省泰安市初中学业水平生物试题含答案
- 美的MBS精益管理体系
- 中国高血压防治指南(2024年修订版)解读课件
- 冠心病课件完整版本
- 2024年卫生资格(中初级)-中医外科学主治医师考试近5年真题集锦(频考类试题)带答案
- 中国大百科全书(第二版全32册)08
评论
0/150
提交评论