自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 马踏棋盘算法 - 备忘录

马踏棋盘算法也被称为骑士周游问题将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则(马走日字)进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。

2023-01-27 22:52:21 88

原创 弗洛伊德算法 - 备忘录

和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径;弗洛伊德算法中每一个顶点都是出发访问点,所以需要将每一个顶点看做被访问顶点,求出从每一个顶点到其他顶点的最短路径。

2023-01-20 22:13:41 116

原创 迪杰斯特拉算法 - 备忘录

迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。

2023-01-19 22:17:11 101

原创 克鲁斯卡尔算法 - 备忘录

克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。基本思想:按照权值从小到大的顺序选择n-1条边,并保证这n-1条边不构成回路具体做法:首先构造一个只含n个顶点的森林,然后依权值从小到大从连通网中选择边加入到森林中,并使森林中不产生回路,直至森林变成一棵树为止。

2023-01-15 00:46:49 103

原创 普利姆算法 - 备忘录

普利姆(Prim)算法求最小生成树,也就是在包含n个顶点的连通图中,找出只有(n-1)条边包含所有n个顶点的连通子图,也就是所谓的极小连通子图普利姆的算法如下:1.设G=(V,E)是连通网,T=(U,D)是最小生成树,V,U是顶点集合,E,D是边的集合2.若从顶点u开始构造最小生成树,则从集合V中取出顶点u放入集合U中,标记顶点v的visited[u]=1。

2022-10-30 00:41:59 78

原创 贪心算法 - 备忘录

贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。

2022-10-19 00:07:32 92

原创 KMP算法 - 备忘录

KMP算法应用场景-字符串匹配问题暴力匹配算法KMP算法介绍代码示例

2022-10-03 21:06:07 118

原创 动态规划算法 - 备忘录

1.动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法2.动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。3.与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )4.动态规划可以通过填表的方式来逐步推进,得到最优解.

2022-10-02 21:15:54 365

原创 分治算法 - 备忘录

分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

2022-09-25 19:34:12 102

原创 ElasticSearch - 备忘录

ElasticSearch安装IK中文分词插件ElasticSearch基本操作Springboot集成Elasticsearch

2022-09-25 00:23:26 286 1

原创 图 - 备忘录

所谓图的遍历,即是对结点的访问。一个图有那么多个结点,如何遍历这些结点,需要特定策略,一般有两种访问策略: (1)深度优先遍历 (2)广度优先遍历。

2022-09-19 21:39:19 80

原创 多路查找树(B树,B+树,B*树) - 备忘录

B-tree树即B树,B即Balanced,平衡的意思。树通过重新组织节点,降低树的高度,并且减少i/o读写次数来提升效率。如图B树通过重新组织节点,降低了树的高度.文件系统及数据库系统的设计者利用了磁盘预读原理,将一个节点的大小设为等于一个页(页得大小通常为4k),这样每个节点只需要一次I/O就可以完全载入将树的度M设置为1024,在600亿个元素中最多只需要4次I/O操作就可以读取到想要的元素,B树(B+)广泛应用于文件存储系统以及数据库系统中。......

2022-07-25 22:58:42 98

原创 二叉排序树(BST)&平衡二叉树(AVL) - 备忘录

二叉排序树BST(BinarySort(Search)Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明如果有相同的值,可以将该节点放在左子节点或右子节点。.........

2022-07-20 23:38:32 101

原创 赫夫曼编码 - 备忘录

基本介绍1.赫夫曼编码也翻译为哈夫曼编码(HuffmanCoding),又称霍夫曼编码,是一种编码方式,属于一种程序算法2.赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。3.赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间4.赫夫曼码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,称之为最佳编码原理剖析通信领域中信息的处理方式1-定长编码注意。...

2022-07-18 22:44:21 242

原创 二叉树-备忘录

跳转到总目录数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 。示意图如下:链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)。 示意图如下:树存储方式的分析能提高数据存储,读取的效率, 比如利用 二叉排序树(

2022-06-21 23:26:25 148

原创 哈希表-备忘录

跳转到总目录文章目录哈希表基本介绍图解说明代码示例哈希表场景:要求不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。图解说明代码示例/** * @author haowu * @create 2022-05-09-22:13 *

2022-05-30 23:49:52 101

原创 查找算法-备忘录

跳转到总目录文章目录查找算法线性查找算法二分查找算法插值查找算法斐波那契(黄金分割法)查找算法查找算法在java中,我们常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】。思路:查找到全部符合条件的值。代码示例//线性查找public class SeqSearch { public static void main(Strin

2022-05-26 23:50:29 103

原创 排序算法-备忘录

跳转到总目录文章目录排序算法冒泡排序选择排序插入排序希尔排序快速排序归并排序基数排序常用排序算法总结和对比排序算法排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。常见的排序算法分类(见下图): 冒泡排序基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后

2022-04-22 00:21:06 160

原创 递归-备忘录

跳转到总目录文章目录递归递归介绍递归-迷宫问题递归-八皇后问题递归递归介绍简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归调用机制打印问题://输出什么? 可先思考输入4时输出顺序后在运行。public static void test(int n) {if (n > 2) { test(n - 1);}System.out.println("n=" + n);}打印问题图解:递归需要遵

2022-04-12 13:54:44 226

原创 栈-备忘录

跳转到总目录文章目录栈栈的介绍栈实现之综合计算器(中缀表达式)逆波兰计算器(后缀表达式) 带中缀转后缀表达式栈栈的介绍栈的英文为(stack)。栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和- 删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好

2022-04-12 10:26:19 115

原创 链表-备忘录

跳转到总目录文章目录链表单向链表双向链表环形链表(约瑟夫环)链表链表是有序的列表,但是它在内存中是存储如下:由上图小结:链表是以节点的方式来存储,是链式存储.每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定.单向链表举例示范: 使用带head头的单向链表实现 –水浒英雄排行榜管理.完成对英雄人物的增删改查操作.示例图如下:第一种方法在添加英雄时,直接添加到链

2022-04-12 10:24:12 130

原创 队列-备忘录

跳转到总目录文章目录队列数组模拟队列环形队列数组模拟环形队列队列队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出.队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随着数据输入而改变,如下图所示:

2022-04-12 10:22:40 70

原创 数据结构之数组-备忘录

跳转到总目录文章目录数组稀疏数组处理方法应用实例代码实现数组稀疏数组当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。处理方法记录数组一共有几行几列,有多少个不同的值.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模.第一行来记录原先二维数组的几行几列,有多少个不同的值.第二行开始记录原先数组中的所有值.应用实例使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等).把稀疏数组存盘,并且可以从新恢复原来的二维数组数

2022-04-12 09:58:07 117

原创 数据结构与算法-目录

数组,队列,链表,栈,递归,排序算法,查找算法,哈希表,二叉树,赫夫曼编码,二叉排序树,多路查找树,图,分治算法

2022-04-12 09:56:17 545

原创 Java8新特性-备忘录

跳转到总目录文章目录Java8新特性Lambda作为函数式接口的实例,举例:函数式接口方法引用构造器引用数组引用Steam APIStream执行流程实例化操作中间操作终止操作OptionalJava8新特性Lambda即匿名函数.作为函数式接口的实例,举例:Compartor comp = (o1 , o2) -> Integer.compare(o1, o2);上述中右边即为Lambda格式说明:->: Lambda操作符或箭头操作符.->左边: Lambda形参

2022-02-19 23:44:45 181

原创 设计模式之代理模式(静态代理+动态代理)

跳转到总目录设计模式之代理模式使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。文章目录设计模式之代理模式静态代理静态代理举例动态代理动态代理举例静态代理静态代理特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。最好可以通过一个代理类完成全部的代理功能。静态代理举例//静态代理举例,代理类和被代理类在编

2022-02-17 23:28:49 201

原创 反射-备忘录

跳转到总目录文章目录反射反射程序经过javac.exe(即编译)后,会生成一个或多个字节码文件(.class结尾).接着用java.exe命令对某个字节码文件进行解析,相当于将其加载到内存,此过程就是类的加载.加载到内存中的类,我们称为运行时类,这就是Class的一个实例,会缓存一段时间,期间我们可以进行反射操作.Class实例的常用获取方式 public void test1() throws ClassNotFoundException { //创建Class的四种方式

2022-02-16 23:42:17 239

原创 网络编程-备忘录

跳转到总目录文章目录网络编程OSI参考模型UDP协议TCP协议TCP三次握手TCP四次挥手在java中使用URL网络编程使用InetAddress类代表IP,IP+端口号=Socket(网络套接字).InetAddress.getByName(String),可以写ip也可以写域名.OSI参考模型UDP协议UDP协议:1.将数据源目的地封装成数据包,不需要建立连接.2.每个数据包的大小限制在64kb内.3.发送不管对方是否准备好,接收方收到也不确认,故不可靠.4.可以广播发送

2022-02-10 16:43:13 473

原创 IO流-备忘录

跳转到总目录文章目录IO流File类IO流分类:了解即可IO流File类相对路径: 相较于某个路径下,指明的路径.绝对路径: 包含盘符在内的文件或文件目录的路径.路径分隔符:Windows: \unix: /抽象基类:InputStreamOutputStreamReaderWriter以后缀判断父类是那个流常用方法:getAbsolutePath(): 获取绝对路径.getPath(): 获取路径.renameTo(File dest): 重命名为指定的文件

2022-02-10 14:35:02 413

原创 集合-备忘录

跳转到总目录文章目录集合-备忘录Collection集合List集合Set集合TreeSet类Map集合TreeMap类Properties类Collections类集合-备忘录Java 集合可分为Collection和Map两种体系.Collection接口:单列集合,用来储存一个一个的对象.List:存储有序的、可重复的集合.ArrayList,LinkedList,VectorSet:存储无序的、不可重复的集合.HashSet,LinkedHashSet,TreeSet

2022-02-07 23:12:37 574

原创 枚举与注解-备忘录

跳转到总目录文章目录枚举与注解-备忘录枚举注解枚举与注解-备忘录枚举需要定义一组常量,类的对象是有限的,确定的时推荐使用枚举(enum).参考Thread.State.自定义枚举有两种定义方式,所实现的接口的方式也不同.具体代码如下:public class EnumTest { //枚举 @Test public void test5(){ System.out.println(Season.SPRING); System.out.

2022-01-23 22:48:51 150

原创 多线程-备忘录

跳转到总目录文章目录多线程1. 创建方式2. 生命周期3. 常用方法4. 线程不安全解决方式5. synchronized和Lock异同6. 线程通信7. 经典例题:生产者/消费者问题8. sleep()与wait()异同9. 演示线程的死锁多线程分类: 用户线程和守护线程(GC垃圾回收就是),关系如同兔死狗烹,鸟尽弓藏.1. 创建方式继承Thread类让一个类继承(extands)Thread类,并重写run()方法,然后new 该类即可,start()启动线程.实现Runnall

2022-01-21 23:13:02 466

原创 设计模式之单例模式

跳转到总目录设计模式之单例模式单例模式(Singleton Pattern)属于创建型模式,可以确保只有单个对象被创建.文章目录设计模式之单例模式一、单例模式是什么?二、具体代码1. 饿汉式,线程安全:2. 懒汉式,线程不安全:3.懒汉式,线程安全:一、单例模式是什么?单例模式提供了一种创建对象的方式,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例

2022-01-21 22:59:49 222

原创 常用类-备忘录

跳转到总目录文章目录工具类-备忘录1. ArraysJDK8之前的时间API1. SimpleDateFormat2.CalendarJDK8中的时间API1.LocalDate,LocalTime,LocalDateTime(类似Calendar):2.Instant(类似Date):3.DateTimeFormatter(类似SimpleDateFormat):4. 附当月日历(用JDK8中的时间API)工具类-备忘录1. Arraysstatic List asList(T…a): 可以放

2022-01-05 23:50:34 290

原创 泛型标记符-备忘录

跳转到总目录文章目录泛型标记符具体代码1.Order类2.SubOrder类3.GenericTest类泛型标记符定义了泛型不使用,默认为Object.标记符 extends(限制上限)/super(限制下限) Xxx类E-Element: 在集合中使用,因为集合中存放元素.T-Type: Java类.K-key: 键, V-value 值, N-Nunber: 数值类型.R-return: 返回值?-表示不确定的Java类型(通配符)是标记符的父类.public static &l

2021-12-26 23:02:55 262

原创 Java基础-杂记

跳转到总目录文章目录面向对象1. 多态2. 静态接口BeanUtils视图对象嵌套循环面向对象1. 多态除非父类直接new子类,否则父类不能直接转子类.子类可以强转父类,但它本质还是子类对象,调用的都是子类重写过的的方法.重点: 方法:编译看左边,运行看右边. 属性:编译运行,都看左边.2. 静态静态代码块随着类的加载(加载在内存时)而执行,且只执行一次,早于对象的创建,存在方法区的静态域中.运行顺序: 由父及子,静态先行.接口一个类用父类方法写法为super.xxx

2021-12-26 22:58:14 207

原创 Java基础-目录

Java基础-目录本文主要用来记录一些Java知识点,用来当作备忘录,以后有忘了的知识点就可以来看看。当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。名称笔记地址多线程https://blog.csdn.net/haowu8888/article/details/122074904泛型标记符https://blog.csdn.net/haowu8888/article/details/122137

2021-12-26 22:54:36 437

原创 设计模式-目录

设计模式-备忘录用于记录设计模式的备忘录的目录.名称笔记地址设计模式之装饰者模式https://blog.csdn.net/haowu8888/article/details/121914793

2021-12-16 00:03:34 361

原创 设计模式之装饰者模式

设计模式之装饰者模式装饰者模式: 动态地给一个对象装饰些额外的功能.文章目录设计模式之装饰者模式一、装饰者模式是什么?二、具体代码1.Component类2.ConcreteComponent类3.Decorat类4.ConcretDecorat类5.DecoratTest类运行结果总结一、装饰者模式是什么?装饰者模式是动态地给一个对象装饰些额外的功能,若要扩展功能,装饰者提供了比继承更有弹性的替代方案,比生成子类更加灵活。通常在继承关系中,为了扩展功能需要新增子类进行扩展,而装饰者模式,可

2021-12-14 23:55:41 348

空空如也

空空如也

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

TA关注的人

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