事务
(Transaction)事务:访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。也可以说一系列的操作,不允许加塞。Transaction是交易的意思,unit是单元也有单位的意思,也可以说是一种访问时交易的单位。
事务的特性:事务是恢复和并发的基本单位。即每次出问题回滚一个事务(Transaction)。在并发的情况下,也就是并发多个事务,也就是同时处理多个事务,事务之间是并发。
事务具有的四个属性:原子性 atomicity,一致性 consistency,隔离性 isolation,永久性 durability。
原子性:一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。也就是原子不可分割,但单内部执行,还是一条一条指令去执行。
一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。在关系型数据库中都是强一致性,非关系数据库中弱一致性也就是最终一致性是可以接受的。
强一致性:当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值(可能是多个数据库节点,也有可能是单机)。这种是对 ...
CAS-乐观锁
锁在java中一般并发编程时候(多线程)才会用到锁,锁的作用就是保证数据的一致性,防止操作数据时出现脏数据。而加上锁就可以保证 共享资源 会被单个线程使用,保证了数据的一致性。(即不会出现多个线程操作同一个资源导致数据异常)。不过引入了锁就会导致一个问题,那就是死锁
死锁顾明思义,就是因为锁的缘故(共享资源)导致两个或两个以上线程互相等待(阻塞),和死循环类似。 也可以指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁的产生条件1、互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。2、请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。3、不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释 ...
HashMap
什么是hash
散列法(Hashing)或哈希法是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。==简单来讲就是将任意长度的二进制映射到固定长度的较小的二进制,而这个较小的二进制是由hash算法来生成。== 在简单点就是像是查字典,只不过是字典里的查询不是a,b,c,d而是hashcode。而这个hashcode就有是较短的二进制。
什么是mapmap即映射,也就是平时说的key-value键值对,entry:也是key,value的形式存储的,有了entry后从map里取值,赋值上更方便[对象操作对象](查了好多资料都是这样说的,而且好多实现都是把值存到entry中,在存到map里,而jdk8用的不是entry用的是node,而对hash算法,也是对entry或者是node的使用进行了hash而对map本身没有影响)
什么是hashMap,也就是使用了hash算法的map但是在代码实现就不是那么简单了。Java中的hashMap中的数据存储是由数组和链表实现的。
数组:组是在内存中开辟一段连续的空间,因此,只 ...
Java语法糖
Java语法糖(syntactic sugar),也称为糖衣语法,是由英国计算机科学家Peter.j.Landin发明的术语,指计算机语言中添加某种语法。(说白了就是对现有语法的封装)这种语法对语言是我功能并没有影响,但是方便程序员使用。Java中最常用的语法糖泛型,变长参数,条件编译,自动拆装箱,内部类,枚举类等。虚拟机其实并不支持这些语法,他们都是在编译期被还原成简单基础的语法结构。这个过程为语法糖。
泛型的实现1234567891011121314151617/*** 在源代码中存在泛型*/public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("hello","你好"); String hello = map.get("hello"); System.out.println(hello);}//当上述 ...