数据结构 AVL树
定义:Avl树在二叉查找树的基础上加了一个平衡条件:对于任意节点,其左右子树的高度差最多为1。
定义:Avl树在二叉查找树的基础上加了一个平衡条件:对于任意节点,其左右子树的高度差最多为1。
前面介绍线性数据结构时提到,如果数据本身有序,那么可以用二分法来降低查找的时间复杂度,但是在线性结构上实现二分法总有一些局限,比如链表不好定位中间元素,而数组又免不了拷贝成本。
因此,有人提出了树这种结构,树本身也是一种链式数据结构,但它巧妙地解决了链式数据只能从头或者从尾开始查找的问题,而是从中间开始向两边查找。不管是下文要介绍的二叉树,还是后面的Avl树、红黑树或者B树,其基本思想都是二分法,区别只在于通过不同的规则来维持树的平衡,以便使查找的复杂度更接近于二分法。
从百科中可以找到定义:数据结构即计算机存储、组织数据的方式,它的目标是反映数据元素之间的逻辑关系,其中的逻辑关系是指数据元素之间的前后关系,而与他们在计算机中的存储位置无关。
常见的数据结构可以分为四种:
Spring Boot被设计用来简化spring应用的搭建和开发,其使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。这里主要介绍下springBoot的启动和自动化配置,以及如何集成Tomcat服务的。
对于web应用,spring提供了springmvc。其基于Servlet实现,通过DispatchServlet
来封装核心功能,对请求进行分派,并提供可配的处理程序映射、试图解析等。
事务一般指数据库事务,是由一系列对系统中数据进行访问或更新操作组成的一个执行单元。主要是当发生并发操作时,事务可以起到一个隔离作用,即避免各个操作相互影响,另外为数据库提供了一个从失败中恢复到正常状态的方法,同时保证了数据库即使在异常状态下仍能保持数据的一致性。
以上可以概括成事务的四个特性,简称ACID
原子性:即事务是原子性操作,要么不执行,要么全部执行成功;
一致性:事务的执行不能破坏数据的完整性和一致性,即事务的执行没有中间状态,数据只有事务执行前的状态或执行后的状态;
隔离性:在并发场景下,事务之间应该是相互隔离的,如果不同的事务同时访问相同的数据,则每个事务应该有各自完整的数据空间,即一个事务内部的操作及使用的数据对于其它事务是隔离的。在标准SQL规范中,定义了4种事务隔离级别,spring分别提供了对应的设置: