自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CoderJu的博客

一个学习、交流、共同进步的程序员博客

  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring中@Autowired自动装配总结

自动装配spring利用依赖注入(DI),完成对IOC容器中各个组件依赖关系的赋值。@Autowired(Spring独有的)默认优先按照类型去容器中找对应的组件,也就是 applicationContext.getBean(Person.class);如果找到多个相同类型的组件,再使用属性名称作为组件id去容器中查找也就是 applicationContext.getBean(“per...

2020-04-12 18:01:07 542

原创 Spring中Bean的生命周期自定义销毁和初始化方法实现详解

生命周期所谓的生命周期就是bean从创建到初始化到销毁的一个过程,而spring中bean的生命周期都是交给容器进行管理的。因此我们可以自动以初始化和销毁方法,容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法,下面就演示下如何自定义初始化方法和销毁方法的几种方式。通过@Bean是定destroyMethod和initMethod,这种方式相当于在之前的配置文件中编写i...

2020-04-12 16:20:17 539

原创 Spring容器中注入组件的几种方式

包扫描+注解针对我们自己开发的类,一般采用包扫描+注解的方式注入,类似@Controller @Service…等等这些注解。实例如下:@Configuration@ComponentScans(value = { //定义扫描的包 @ComponentScan(basePackages = {"Spring"} })})public class ...

2020-04-11 21:43:52 487

原创 Spring中@Conditional注解的说明

@Conditional它的作用是按照一定的条件进行判断,满足注解中的条件就给容器注册bean。其他则不注入。这个注解既可以写在方法上也可以写在类上。这个注解被大量的使用在spring Boot中。实现condition首先定义一个配置类@Configuration//定义在类上@Conditional(WindowCondition.class)public class MyC...

2020-04-11 20:49:27 201

原创 Spring中FilterType的说明

说明我们在使用spring配置文件或者是注解的时有时会看到以下内容:配置文件: <!--包扫描 扫描后注入@Controller @Service @Component @Repository到容器中--> <context:component-scan base-package="Spring" > <!--<context:e...

2020-04-11 16:42:58 3571

原创 二叉排序树删除节点

/** * @Description 二叉排序树的节点 * @auther Eleven * @create 2020-04-09 20:43 **/public class Node { int value; Node left; Node right; public Node(int value) { this.value = val...

2020-04-09 22:09:19 951

原创 二叉排序树

二叉排序树二叉查找树、二叉搜索树 BST;对于二叉树中的任何非叶子节点 要求左子节点比当前节点值小,右子节点比当前节点值大。实现/** * @Description 二叉排序树的节点 * @auther Eleven * @create 2020-04-09 20:43 **/public class Node { int value; Node left; ...

2020-04-09 21:01:37 175

原创 赫夫曼编码进行压缩和解码

package com.eleven.binaryTree.huffman.code;import java.util.*;/** * @Description 用赫夫曼编码进行压缩和解码 * @auther Eleven * @create 2020-04-07 23:12 **/public class HuffManCodeCus { public static ...

2020-04-08 21:47:50 152 1

原创 数据压缩之使用赫夫曼编码

/** * @Description 用赫夫曼编码进行压缩 * @auther Eleven * @create 2020-04-07 23:12 **/public class HuffManCodeCus { public static void main(String[] args) { HuffManCodeCus huffManCodeCus = ne...

2020-04-08 00:24:56 91

原创 创建简单的赫夫曼树

概述赫夫曼树是一种最优二叉树,权值越大的节点离根节点越近的二叉树才是最优二叉树。创建赫夫曼树/** * @Description 赫夫曼树中的节点 * @auther Eleven * @create 2020-04-06 15:31 **/public class Node implements Comparable{ int value; Node lef...

2020-04-06 16:22:15 97

原创 堆排序

/** * @Description 堆排序 * 对排序是将集合转化成二叉树的一种排序方式 其中有大顶堆(每个结点的值都大于或等于其左右孩子结点的值)和 * 小顶对(每个结点的值都小于或等于其左右孩子结点的值),一般升序用大顶堆,降序用小顶堆 * @auther Eleven * @create 2020-04-05 21:57 **/public class HeadSort {...

2020-04-05 22:35:11 66

原创 二叉树的遍历、查找和删除

/** * @Description 定义一个二叉树 * @auther Eleven * @create 2020-04-05 19:27 **/public class BinaryTree { TreeNode rootNode; public void setRootNode(TreeNode rootNode) { this.rootNode...

2020-04-05 20:54:26 142

原创 基数排序

/** * @Description 基数排序 * 就是先将对应的数据的从最低位的数据往最高位排序 * 一次将对应的数据放到对应的容器中 * @auther Eleven * @create 2020-04-05 15:22 **/public class RadixSort { public static void main(String[] args) { ...

2020-04-05 16:39:21 71

原创 归并排序

/** * @Description 归并排序 * 递归排序就是在逻辑上将一个数组分成两个数组,再将两个数组再各自拆分成两个数组, * 以此类推,然后再进行排序 * @auther Eleven * @create 2020-04-05 14:02 **/public class MergeSort { public static void main(String[] ar...

2020-04-05 14:54:55 142

原创 简单的选择排序

/** * @Description 选择排序,就是设定某个元素为当前集合的最小值,然后将当前元素所在位置的后面的所有 * 元素与这个元素比较,如果后面某个元素比这个元素小,就将当前元素和后面一个元素替换位置 * @auther Eleven * @create 2020-04-05 13:11 **/public class SelectSort { public stati...

2020-04-05 13:22:19 114

原创 希尔排序

public class ShellSort { public static void main(String[] args) { ShellSort shellSort = new ShellSort(); int[] arr = new int[]{1,9,5,2,6,7,10,11}; System.out.println(Array...

2020-04-05 10:56:33 100

原创 简单的插入排序

/** * @Description 插入排序 * 插入排序是从前往后分段排序的算法,已经经过排序部分都是有序的 * @auther Eleven * @create 2020-04-04 21:58 **/public class insertSort { public static void main(String[] args) { int[] arr ...

2020-04-04 22:44:53 154

原创 简单的快速排序

/** * @Description 简单的快速排序 * @auther Eleven * @create 2020-04-04 20:46 **/public class QuickSort { public static void main(String[] args) { int[] arr = new int[]{8,9,5,2,6,7,10,11}; ...

2020-04-04 21:54:10 102

原创 简单的冒泡排序算法

/** * @Description 实现一个简单的冒泡排序算法 * 所谓的冒泡排序就是指集合中的元素两两比较,如果前面的比后面的大就交换彼此的位置,交换后继续比较 * @auther Eleven * @create 2020-04-04 20:24 **/public class BubbleSort { public static void main(String[] a...

2020-04-04 20:35:09 177

原创 简单的斐波那契数列和汉诺塔游戏

斐波那契数列指的是这样一个数列:这个数列从第3项开始,每一项都等于前两项之和。汉诺塔游戏汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘/** *...

2020-04-04 19:26:07 596

原创 简单的双向循环列表

/** * @Description 实现一个简单的双向循环列表 在改列表中,每个node都会记录前一个元素和后一个元素的地址 * @auther Eleven * @create 2020-04-03 23:08 **/public class DoubleLoopNode { //记录前一个元素 DoubleLoopNode pre; //记录下一个元素 ...

2020-04-03 23:16:50 329

原创 简单的循环链表

/** * @Description 定义一个循环链表 * @auther Eleven * @create 2020-04-03 21:33 **/public class LoopNode { //用于存储链表里面的数据 int data; //这里如果是定义一个单独的node时,要将这个指向自身 LoopNode next = this; ...

2020-04-03 22:39:39 100

原创 简单的单链表

/** * @Description 定义一个单链表 * @auther Eleven * @create 2020-04-03 21:33 **/public class Node { //用于存储链表里面的数据 int data; //用于存储连接表中下一个node的地址 Node next; //用于初始化的时候给node中保存数据 ...

2020-04-03 22:26:26 131

原创 基于数组实现简单的队列

/** * @Description 基于数组实现简单的队列(先进先出) * @auther Eleven * @create 2020-04-02 23:40 **/public class MyQueue { int[] elements; public MyQueue() { //初始化的时候定义数组长度为0,防止下面调用的时候报空指针异常 ...

2020-04-03 00:08:03 121

原创 简单的栈结构

/** * @Description 实现一个简单的栈结构,(先进后出) * 包括压栈操作、弹出栈、查找栈顶的数据、判断栈是否为空 * @auther Eleven * @create 2020-04-02 23:04 **/public class MyStack { int[] elements; public MyStack() { //初始化的...

2020-04-02 23:36:26 135

原创 二分法查找的实现

/** * @Description 二分法查找的实现 * 简单的解释就是说把要查找的目标对象首先和数字最中的数字对,如果比这个数字大,则查找左侧,如果比这个数字小则查找右侧 * 再按照以上逻辑进行从中间切分判断查找左边还是右边从而缩小查找范围 * @auther Eleven * @create 2020-04-02 22:40 **/public class BinarySear...

2020-04-02 22:59:14 160

原创 tomcat访问本地服务器上的图片

JAVA开发SSM为架构的的系统时,把图片直接存储到tomcat/webapps下的某个文件中后,启动tomcat后,直接通过URL访问报404错误。后来查询相关资料后发现需要做以下配置:由于使用的idea,所以导致该错误,需要修改下idea的配置即可:勾选上这个选项后,直接用URL就可以访问该图片。...

2019-05-13 23:29:35 2415

原创 JAVA8新特性之stream(一)

StreamJAVA8新增了一个抽象,称之为流,可以以一种声明的方式来处理数据。一般用来处理集合,我们可以认为是一种高级集合。这个方式是将数据集合看做是一种流,在管道中传输,经过中间各种操作后,最终得到前面处理的结果。流的特点只能遍历一次采用内部迭代的方式(这个需要和传统集合的遍历方式作对比,外部迭代是指需要我们手写代码进行处理。而内部迭代只需要告诉他我们需要什么,具体处理则交给流的内...

2019-04-10 23:42:40 108

原创 JAVA8新特性之默认方法

默认方法默认方法允许您添加新的功能到现有库的接口中,并能确保与采用旧版本接口编写的代码的二进制兼容性。JAVA8新增了接口的默认方法,简单的说就是在接口中可以有实现方法,而不仅仅是方法的声明,默认方法的实现也比较简单,只要在方法名字前面加个default关键字就可以了。增加该特性的原因在1.8之前接口的好处是让JAVA面向抽象而不是具体编程,缺陷就是如果接口里面的方法声明发生了变化,就需...

2019-04-10 00:04:25 146

原创 JAVA8新特性之函数式接口(四)

JAVA8中的函数式接口如下表: 序号 接口 & 描述 1 BiConsumer<T,U> 代表了一个接受两个输入参数的操作,并且不返回任何结果 2 BiFunction<T,U,R> 代表了一个接受两个输入参数的方法,并且返回一个结果...

2019-04-07 23:56:13 140

原创 JAVA8新特性之函数式接口(三)

LongUnaryOperator:接受一个参数同为类型long,返回值类型也为long。 public static void main(String[] args) {System.out.println("------LongUnaryOperator------"); LongUnaryOperator longUnaryOperator = (wt)->{...

2019-04-02 23:42:06 270

原创 JAVA8新特性之函数式接口(二)

DoubleSupplier:代表一个double值结构的提供方 public static void main(String[] args) { System.out.println("------DoubleSupplier------"); DoubleSupplier doubleSupplier=()->8.0; doubl...

2019-04-01 23:08:37 283

原创 JAVA8新特性之函数式接口(一)

函数式接口是整个Lambda表达式的根源,也就是说,只有理解了函数式接口才能更好的掌握Lambda表达式。函数式接口就是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。也就是说他还可以有默认方法和静态方法。默认方法在接口中的定义使用关键词default。一般来说满足一下几点的都是函数接口:一个接口有且只有一个抽象方法,(Object的public方法除外)那么该接口就是一个函数式接...

2019-03-31 23:53:09 271

原创 JAVA8新特性之方法引用

方法引用实际上是lambda表达式的一种特殊形式,也就是说是对已经存在的lambda表达是的简化。方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法,方法引用提供了一种引用而不执行方法的方式,需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。方法引用的标示一般是双冒号“::"。所以方法引用的标准形式为:类名::方法名 (方法名不需要加括号)。一般...

2019-03-27 23:59:51 251 1

原创 JAVA8新特性之Lambda表达式

Lambda(Lambda 是希腊字母 λ 的英文名称)表达式本质上是一个匿名方法.也可以称之为闭包。该方法允许把函数作为一个方法的参数(函数作为参数传递进入方法中)。使用该表达式可以使JAVA代码变得更加简洁。Lambda表达式的语法(parameters) -> expression 或 (parameters) ->{ statements; }特征可选类型声明:不需要...

2019-03-24 21:28:57 132

原创 JAVA23种设计模式总结

目录一.对象设计的六大原则二、设计模式的三个分类三、JAVA2种设计模式源码一.对象设计的六大原则: 组合复用原则:多用组合,少用继承。找到变化的部分进行抽象封装。区分是Has-A与Is-A 依赖倒置原则:依赖:成员变量、方法参数、返回值,要依赖与抽象,不要依赖于具体,高层模块不应该依赖于底层模块,二者都应该依赖其抽象类。抽象不应该依赖具体,具体应该依赖抽象。...

2019-03-20 23:39:42 172

原创 JAVA23种设计模式之模板模式

模板模式:是类的行为模式, 定义一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法迫使子类实现剩余逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同实现。(其实这种定义生涩难懂了!!!)。换白话文说就是,系统定义一个抽象类,这个抽象类是用来干嘛的呢?用来定义系统的的步骤,而且这个步骤是不可改变先后顺序的。类似于泡茶,你首先要准备开水,然后冲...

2019-03-20 00:17:15 197

原创 JAVA23种设计模式之适配器模式

1. 适配器模式:将一个类的接口转换成用户希望的另外一个接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式就类似一个桥梁的作用,把原本不兼容的接口进行合并成为一个类。2. 适配器模式的类别:类适配器模式:通过继承来实现适配器功能。对象适配器模式:使用类的组合来实现适配器功能。接口适配器模式(缺省适配器模式):增加一个桥梁,来减少工能类中的方法体。(...

2019-03-19 00:44:54 133

原创 JAVA23种设计模式之外观模式

外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得子系统更加容易调用。从外观模式的定义中可以了解到,其实外观模式相当于一个中间人,比如说你要去酒店吃饭,你并不需要知道菜的做法,不需要知道菜的清洗过程,也不需要知道菜的来源。你只需要喊上服务员和他说我要吃什么就可以了,这里的服务员其实就相当于一个外观角色,也就是一个更高层的接口。而饭店中的各种菜就相当于一...

2019-03-17 23:39:01 88

原创 JAVA23种设计模式之访问者模式

访问者模式访问者模式是对象的行为模式,访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改,接受这个操作的数据结构则保持不变。换句话说就是把数据结构和需要对该数据结构进行的操作分离处理,当需要对当前数据结构做新的操作时,只需要修改操作部分而不需要修改数据结构的代码。访问者模式的示意图访问者模式所包含的角色抽象访问者角色: 一般是抽象类或者是接口,为系统中每个...

2019-03-15 23:58:45 135

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除