Kmp算法

KMP算法 [TOC] 1.应用场景 字符串匹配问题。 demo:现在有主串S、模式串P,判断模式串P是否是主串S的子串。如果是,找出P在S中第一次出现时的下标。 2.从暴力求解到KMP算法 2.1暴力求解 思路:从左到右一个个匹配,如果这个过程中有某个字符不匹配,将子串向右移动一位,继续从左到右一一匹配。 (0)主串的0号元素和模式串的0号元素匹配成功 (1)主串的1号元素和模式串的1号元素匹配成功 (2)主串的2号元素和模式串的2号元素匹配成功 (3)主串的3号元素和模式串的3号元素匹配失败 (4)重新开始,主串从1号元素位置开始,从新检测与模式串P是否匹配 (5)重新开始,主串从2号元素位置开始,从新检测与模式串P是否匹配 (6)重新开始,主串从3号元素位置开始,从新检测与模式串P是否匹配,主串从3号元素和模式串的0号元素匹配成功...

3 minute read

算法 概述

算法-概述 1.算法思想 穷举法 递推法:有明显公式规律 递归法 分治法:把大问题划分成小问题 概率法:将问题转化为面积问题,然后随机撒点 2.常见算法 排序算法 查找算法 顺序查找 折半查找 int binarySearch(int R[],...

3 minute read

数据结构 概述

数据结构-概述 1.数据结构 数据结构是数据之间的相互关系,即数据之间的组织形式。数据结构包括三方面内容: 数据的逻辑结构:数据之间的逻辑关系,比如线性表,树、图 数据的存储结构(又叫数据的物理结构):数据元素及其逻辑关系在计算机存储中的表示形式,比如顺序存储、链式存储、索引存储、散列存储 数据的运算:对数据施加的操作,数据的运算以数据的逻辑结构为基础。比如建立、插入、删除、查找、更新、排序 注意: 1.一个逻辑结构可以有不同的存储结构,比如线性表+顺序存储=顺序表,线性表+链式存储=链表,线性表+散列存储=散列表 2.一个逻辑结构会有不同的运算集合,比如线性表+只能在一端插入,另一端删除=队列,线性表+只能在一端插入、删除=栈。 数据的逻辑结构、数据的存储结构、数据的运算三者共同定义一个数据结构。有一个发生变化都会出现全新的数据结构 数据项?数据元素?数据结构? 数据项是数据记录中的最小单位,不可再分割。比如,字段、属性 数据元素有若干数据项组成,是数据的基本单位 数据结构是数据之间的组织形式 1.1.数据的逻辑结构...

1 minute read

数据结构 树

数据结构-各种二叉树 树形结构:树是一种非线性的结构。它是由若干个节点构成的集合,它有唯一的根和若干棵不相交的子树组成,其中每一颗子树又是树。 树的术语 树形结构分类 1.二叉树 二叉树是有以下两点限制的树: (1)每个节点最多只有两颗子树;(2)子树有左右之分,不能颠倒 1.1 有平衡性质的二叉树 一棵二叉树中的任何一个节点,该节点的左右子树的高度差的绝对值不超过1 满二叉树 :除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树 完全二叉树(完全二叉树仅仅是一种结构,与值无关,节点之间没有大小关系) 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树 https://www.cnblogs.com/myjavascript/articles/4092746.html...

1 minute read

数据结构 排序

数据结构-排序 排序算法分类: 交换类排序 每一趟排序都通过,一系列的交换动作,让一个记录排到它最终的位置上 冒泡排序 快速排序 选择类排序 每一趟排序都选出一个最值,并把它和序列中第一个或最后一个记录交换,这样最值就记录到位了 简单选择排序 堆排序 插入类排序 在一个已经有序的序列中,插入一个新的记录,从而包含这个新纪录的整体也是有序的 直接插入排序 希尔排序 折半插入排序...

10 minute read

Jvm内存分配举例

JVM内存分配举例 我们从变量的作用域角度去分析这个问题。 按作用域划分变量 局部变量 全局变量(又叫成员变量) 类变量(静态变量) 实例变量 局部变量 在方法中声明的变量,即该变量是局部变量,每当程序调用方法时,系统都会为该方法建立一个方法栈,其所在方法中声明的变量就放在方法栈中,当方法结束系统会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束,这就局部变量只能在方法中有效的原因。 在方法中生明的变量可以是基本类型的变量,也可以是引用类型的变量 (1)当声明是基本类型变量的时,其变量名及值(变量名及值是两个概念)是放在方法栈中 (2)当声明的是引用变量时,所声明的变量(该变量实际上是在方法中存储的是内存地址值)是放在方法的栈中,该变量所指向的对象是放在堆内存中的,如果该变量所指向的是字面量就放到方法区的运行时常量池中 全局变量 在类中声明的变量是成员变量,也叫全局变量,放在堆中的。 同样在类中声明的变量即可是基本类型变量...

2 minute read

File文件转发

File文件转发 项目中,采用的是基于Spring Cloud微服务架构,消费者需要转发请求参数到生产者,但是,要转发的文件是MutipartFile类型。 MutipartFile是spring里面定义的接口,封装了用户在上传图片时所包含的所有信息。直接用restTemplate转发会抛异常。 有两个解决思路:1.把MutipartFile写到本地,然后restTemplate上传。2.不用restTemplate,用HttpClient发送字节数组(生产者仍然可以用file接收),省去写文件和读文件的开销 出于性能考虑,选择后者。 1.HttpClien模拟表单转发请求参数 @RequestMapping(value = "addContactByExcel", method = RequestMethod.POST) public String...

3 minute read

图片上传业务

图片上传业务 1.docker搭建FastDFS 下载镜像 docker pull mypjb/fastdfs 创建fastdfs容器 docker run --add-host fastdfs.net:xxx.xxx.xxx.xxx --name fastdfs --net=host -e...

6 minute read