java框架

 jdbcTemplate
1,Spring 框架对jdbc进行封装,使用jdbcTemplate方便实现对数据库操作
2,准备工作
引入相关jar包
在spring配置文件配置数据库连接池
3,配置jdbcTemplate对象,注入DataSource
4,创建service,dao类,在dao注入jdbcTemplate对象

Spring5 框架新功能
1,整个Spring5 框架的代码基于java8,运行时兼容jdk9,许多不建议的类和方法在代码库中删除
2,spring5 框架自带了通用的日志封装


Springmvc充当的就是servlet的角色,

持久化?
程序先进内存的,内存不可靠的,所以需要把数据永久的存储在硬盘上
持久化把数据存储在磁盘而不是内存
持久层?
dao层,就叫持久层
优缺点?
sql语句与代码分离,存放于xml文件中(最牛逼的地方)
动态sql语句: 通过逻辑标签代替编写逻辑代码,生成不同的sql

缺点 : 不能通过打断点的方式调试,但是可以通过日志来解决这个问题
=======
数据库中字段用下划线,java中用小驼峰
============
索引的分类?
单一索引: 给单个字段添加索引
复合索引: 给多个字段联合起来添加一个索引
主键索引: 主键上会自动添加索引
唯一索引: 有unique约束的字段会自动添加索引

索引什么时候失效?
模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的

===========================
B树与B+树?
1, 没有B-树,B-树就是B树
2,二叉查找树的时间复杂度是o(log N), 磁盘的IO操作效率很低,大量的数据不呢个直接加载到内存中,只能逐一
加载磁盘页,每个磁盘页对于树的结点,造成大量磁盘IO操作(最坏情况为树的高度),平衡二叉树由于树的深度
过大,进而导致效率低下,为了减少磁盘IO的次数,就必须降低树的深度,所以
  每个节点存储多个元素
  摈弃二叉树结构,采用多叉树

===============
B树和B+树的区别?
B树的节点上既有KEY也有数据
B+树的数据在叶子节点上
2, B树的叶子节点之间没有关系
B+树的叶子节点有连接,形成一个链表
3,查找数据的方式不同

为什么mysql使用b+树做索引而不是b树?
1,b+树内部节点么有指向关键字具体的指针,因此内部节点相对于B树更小,那么一个扇区就能存放更多的
关键字数量,相对IO的次数就降低了
2,b+数的查询效率更加稳定: 任何关键字的查找必须从根节点走到叶子节点,所有的查询路劲长度相同,导致每一个数据的
查询效率相当
3,b+数的数据都在叶子节点上,方便扫库,只需要扫一遍叶子节点就可以,而b树的分支节点同样存储数据,所以需要
进行一次中序遍历来扫库,所以b+树更加适合在区间查询的情况,所以b+树通常用作为数据库的索引
==================================================
什么是Serializable接口?
是一个对象序列化的接口,一个类只有实现类Serializable接口,它的对象才能被序列化
什么是序列化?
将对象状态转换为可保持或传输的格式的过程,与序列化相对的是反序列化,它将流转换为对象,这两个过程结合起来
,可以轻松的存储和传输数据。

finalize方法?
垃圾回收器在回收某个对象的时候,首先会调用该对象的finalize方法
finalize是object里的一个方法,当一个堆空间中的对象没有被栈空间变量指向的时候,这个对象会等待被java回收
======================
栈中存储的是当前线程方法的调用,基本数据类型和对象的引用,栈是有序的
堆中存储的是对象,堆是无序的
方法中的局部变量使用final修饰后,放在堆中,而不是栈中

1,在java中如何跳出当前的多重嵌套循环?
使用 break + 标签
使外层的循环条件受到内层语句的控制
使用方法的return

2, switch 语句作用类型?
byte,short,int,char,枚举
jdk7 之后增加String

3, == 是运算符,可以两侧都为null, 但是equals左侧的引用指向的对象不能空,不然会有nullpointerexception

====================================================
spring 
@Component 把对象放进IOC容器
使用@Component,对象没有初始状态
使用配置类,对象有从初始值

scope: 定义bean的作用域
   prototype : 原型 (每次从ioc容器中获取的对象都是新建的)
   singleton :单例的     (获取的对象都是同一个对象)
   request : 一次请求 
   session : 一次会话

ioc是什么?
inversion  of  control  即控制反转,是一种设计思想
对于Spring 来说,IOC就是由spring来负责控制对象的生命周期和对象间的关系,
所有在spring容器中登记的类,spring会在系统运行到适当的时候,给你所需要的东西,所有类的创建和销毁
都由spring来控制,Spring控制对象的生命周期

将设计好的对象交给容器控制,而不是在对象内部直接控制,与传统方式不同,ioc是有一个专门的容器
来创建这些对象,由ioc容器来控制对象的创建
容器帮我们查找及注入依赖对象,对象被动的接受依赖对象,把控制权交给容器就是反转
这种思想 能帮助我们设计出低耦合,更优良的程序

DI
dependency  injection  依赖注入
目的/优点:
 提升组件重用的频率,
 为系统搭建一个灵活,可扩展的平台
1, 应用程序依赖于Ioc容器
2, 应用程序需要ioc容器来提供对象需要的外部资源

ioc和di的关系?
同一个概念的不同角度描述
=======================================
AOP就相当于过滤器

稳定的排序算法有: 冒泡排序   插入排序等
不稳定的有 :  选择排序  希尔排序  组合排序  快速排序 
排序算法的稳定性?
如果在一个待排序的序列中,存在两个相等的数,在排序后这两个数的相对位置保持不变,那么该排序算法
就是稳定的,否则就是不稳定的
如果排序算法是稳定的,那么第一个键排序的结果可以为第二个键排序所用

mqtt协议:
消息队列遥测传输协议,是一种基于发布/订阅模式的“轻量级”通讯协议,该协议构建与tcp/ip协议上
 低开销,地宽带占用的即时通讯协议,在物联网,移动应用方面有广泛的应用

spring : 
非侵入式设计: 无需继承框架的任何一个类,更换框架,代码基本不用该
spring优势? 
低入侵/低耦合
声明式事务
方便基础其它的框架
提供了javaWeb三层的每一层的解决方案

你可能感兴趣的:(b树,java,数据结构)