- 博客(24)
- 收藏
- 关注
原创 Spring部分源码浅析
BeanPostProcessor:bean的后置处理器,创建对象初始化前后进行拦截工作。通过实现BeanPostProcessor接口在bean的初始化前后进行一些操作。// 将后置处理器加入到容器@Componentpublic class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean,.
2022-01-13 14:44:21
141
原创 SpringBoot自动配置源码浅析
废话不多话说,直接从 @SpringBootApplication注解开始。众所周知,被该注解标注的类为主程序类,标注这个类是一个SpringBoot的应用。而该注解又由三个另外的注解合成:@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan。由于@SpringBootConfiguration和@ComponentScan的作用读者们应该了解不少,所以我们直接从@EnableAutoConfiguration注解开始。我们
2021-12-22 16:33:38
305
原创 Servlet
servlet定义:Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。如果我们想使用servlet,那么我们可以实现servlet接口,如果实现此接口的
2021-10-19 20:54:57
111
原创 SpringMVC
SpringMVC特点:高效,基于请求响应的MVC框架,与spring兼容性好,无缝结合…HelloSpringMVC1.新建模块,添加web的支持2.确定导入了springmvc的依赖3.配置web.xml,注册DispatcherServlet遇到的error:访问首页出现404:导入的jar包没有关联项目。解决:在projectstructure–artifacts–在该项目的web-inf下建立lib目录,导入依赖springmvc执行原理:用户提交请求,因为我们在we
2021-10-12 21:19:07
240
原创 Mybatis
第一个mybatis程序前提:了解maven依赖还有jdbc和mysql。一:搭建环境导入数据库驱动和mybatis和junit依赖二:创建子模块编写mybatis核心配置文件,在模块的resources文件夹下<configuration> <environments default="development"> <environment id="development"> <transactio
2021-09-06 21:29:36
114
原创 Spring
spring优点Spring是一个开源的免费的框架(容器)。Spring是一个轻量级的,非入侵式的框架。控制反转(IOC),面向切面编程。支持事务的处理,对框架整合的处理。Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。组成IOC理论测试1.UserDao接口2.UserDaoImpl实现类3.UserService业务接口4.UserServiceImlm业务实现类//利用set进行动态实现值的注入!public void setUse
2021-09-06 21:29:16
151
原创 数据结构与算法---AVL树
AVL树定义当我们在一个平衡二叉树上插入一个结点时,有可能导致失衡,即出现平衡因子绝对值大于1的结点。则必须重新调整树的结构,使之恢复平衡。当失衡结点不止一个时,则找失衡子树最小的根结点。上图中的失衡结点应找16结点。平衡调整平衡调整的四种类型:LL型,插入结点在失衡结点左子树的左子树上LR型,插入结点在失衡结点左子树的右子树上RL型,插入结点在失衡结点右子树的左子树上RR型,插入结点在失衡结点右子树的右子树上调整原则:1)降低高度 2)保持二叉排序树性质—左边子树比根结点小
2021-09-06 11:09:11
125
原创 数据结构与算法---队列
数据结构之队列思路:使用数组实现有关队列的描述1.队头与队尾: 允许元素插入的一端称为队尾,允许元素删除的一端称为队头。2.入队:队列的插入操作。3.出队:队列的删除操作。public class Arrayqueue { private int front; private int rear; private int arr[]; private int Maxsize; public Arrayqueue() { } public Arrayqueue(int Max
2021-09-06 09:01:50
149
原创 数据结构与算法---二叉排序树
二叉排序树-BST二叉排序树:对于二叉排序树的任何一个非叶子结点,要求左子结点的值比当前结点小,右子结点的值比当前结点的值大。若相同则可以放在左子结点或右子结点。二叉排序树的创建和遍历 /** * 递归的添加结点 * * @param node */ public void add(Node node) { if (node == null) { return; }// 判断传入的值与当前子树的根结点值的关系 if (node.value < thi
2021-08-19 14:38:12
223
原创 数据结构与算法---单链表
单链表单链表的逻辑结构:单链表在内存中的存储:小结:1)链表是以结点的方式来存储,是链式存储2)每个结点包括data域和next域(指向下一个结点)3)链表的各个结点不一定是链式存储,逻辑结构上连续,物理结构上不一定连续4)根据实际需求来确定链表是否需要头结点单链表的创建和遍历添加操作:// 添加结点到链表(直接添加到链表的最后) public void add(HeroNode heronode) {// 因为头结点不能动,辅助指针帮忙遍历 HeroN
2021-08-16 23:50:15
207
1
原创 数据结构与算法---线索二叉树
线索化二叉树什么是线索化二叉树:n个结点的二叉链表中含有n+1[ 公式 2n-(n-1)= n +1 ]个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针的指针(这种附加的指针称为“线索”)这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二叉树可分为前序线索二叉树,中序线索二叉树和后序线索二叉树。一个结点的前一个结点称为前驱结点一个结点的后一个结点称为后继结点代码实现...
2021-08-16 10:33:39
175
原创 数据结构与算法---顺序存储二叉树
顺序存储二叉树顺序存储二叉树的特点:1.顺序存储二叉树通常只考虑完全二叉树2.第n个元素的左子结点为 2 * n + 13.第n个元素的右子结点为 2 * n + 24.第n个元素的父节点为(n-1)/ 2注:n表示二叉树中的第几个元素(按0开始编号)...
2021-08-13 15:15:17
340
原创 数据结构与算法---二叉树
二叉树的查找和遍历树的定义:树是n个结点的有限集。若n = 0,称为空树;若n > 0,则有且仅有一个特定称为根的结点,其余结点可以称为根的子树。基本术语:根结点:非空树中无前驱结点的结点(A)。结点的度:结点拥有的子树数(A结点的度为3)。树的度:树内各结点的度的最大值。叶子结点(终端结点):度为0。分支结点(非终端结点):度不为0,且根结点以外的分支结点称为内部结点。孩子和双亲:结点的子树的根称为该结点的孩子,该结点称为孩子的双亲(A结点有三棵子树,三棵子树的根结点分别为B,C
2021-08-12 16:29:26
308
原创 数据结构与算法---希尔排序
希尔排序由插入排序可以知道当插入的数是较小的数时,后移的次数明显增多,对效率有影响。什么是希尔排序:希尔排序也是一种插入排序。它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。基本思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件被分成一组,算法便终止。希尔排序在排序的过程中按从小到大或从大到小的原则(我们选择),将小(大)的数往左边靠,避免了特别小(大)的数出现在最后导致需要移动
2021-08-11 15:30:25
190
原创 数据结构与算法---插入排序
插入排序什么是插入排序:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。排序规则:代码实现:
2021-08-10 15:07:42
54
原创 数据结构与算法---选择排序
选择排序什么是选择排序 :选择排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。
2021-08-10 14:58:10
87
原创 数据结构与算法---冒泡排序
二.队列使用数组实现队列:因为队列的输入和输出是分别从前后端来处理,因此需要两个变量front和rear分别记录队列的前后端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变。...
2021-08-10 10:02:11
78
原创 JavaIO
流的分类:1.操作数据单位:字节流(8bit),字符流(16bit)2.数据的流向:输入流,输出流3.流的角色:节点流和处理流四个基类:所有的流都是从这四个基类派生出来的。InputStream,OutputStream,Reader,Writer访问文件流:FileInputStream作用:用于读取诸如图像数据的原始字节流,一般用于读取非文本文件,读取文本文件使用FileReader。构造方法:FileInputStream(File file):通过打开与实际文件的连接创建
2021-06-19 15:46:34
68
原创 DAO设计模式
javadao设计DAO是Data Access Object数据访问接口。首先我们先创建一个包命名为dbc,此包下有连接不同数据库的类。此处我们连接的是MySQL,所以我们在此包下创建一个操作MySQL数据库的类。package dbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/** * @author 达达尼昂 本类负责数据库的连接与关闭操作 在本类的
2021-06-16 16:13:27
709
原创 Java基础部分
java基础一.对象java是一门面向对象语言,所以我们从对象讲起。类是具有共同的属性名称和行为的一组对象的抽象,而对象则是一个类的真实的例子。让我们来看看一个例子1.创建对象System.out.println(new String("hello"));//此操作将刚创建的对象传递给一个方法String s = new String("helloworld");在上面的例子中,我们可以知道String就是一个类,这是java自定义的类,我们会经常使用到它。要想使用对象,就必须首先构造对象
2021-06-02 15:29:29
180
原创 数据结构与算法---稀疏数组
一.稀疏数组假如有一个棋盘,棋盘上面0表示无棋子,1表示黑棋子,2表示蓝棋子。我们使用一个二维数组来记录棋盘上面棋子的位置。所以可能会出现很多为(0,0)的元素。这时我们就可以使用稀疏数组来记录棋盘中的有效元素,即该位置上存在棋子的情况。稀疏数组:存放的是原二维数组的行,列数和有效元素的个数,有效元素的索引和值。比如我们有一个11*11的二维数组,数组上面有两个棋子,假定第二行第三列有一颗蓝棋,第三行第四列有一颗黑棋。那么此二维数组的第一行保存的即为二维数组的大小和有效元素个数,第二行保存的是蓝棋的
2021-04-22 19:28:22
47
原创 C语言---输出九九乘法表
C语言输出九九乘法表观察九九乘法表,我们可以发现一个规律,数字是有重复的出现,所以我们可以用循环来解决这个问题,而且要用到嵌套的循环。在写的过程中要理解每个循环的作用,循环的条件等。不同的循环和循环条件可以形成很多种结果。现在我们从直接输出相乘的结果开始,不考虑形状。可以看到,第一个循环中的i从1开始,经过判断条件后进入里面的循环,j从1开始,经过判断后打印结果(11),然后自增1。通过内层循环会输出从11到19,此轮循环结束后出来外层,i自增1变为2,然后继续此前的循环。但是乘法口诀表的输出格式是
2021-01-03 15:10:13
7966
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人