- 博客(29)
- 收藏
- 关注
原创 golang链表操作
package func_masterimport "fmt"// Node 链表节点type Node struct { Value interface{} Next *Node}type List struct { headNode *Node // 头结点}// IsEmpty 判断链表是否为空func (list *List) IsEmpty() bool { if list.headNode == nil { return true } return fal
2021-07-01 10:22:32 312
原创 数据结构与算法——2-3-4树详解java
2-3-4树的介绍在二叉树中,每个节点有一个数据项,最多有两个子节点,当每个节点有多个数据项和更多的节点的话这就是多叉树,这里我说的2-3-4树就是一个多叉树,它的每个节点最多有三个数据项和四个节点,它和红黑树一样是讲究平衡的,它的效率比红黑树稍微差一些。但是编程比红黑树容易,其实最重要的是通过红黑树更容易了解B树,B树是另外的一种树,B树的节点可以有几十个或者几百个。下面是一个小的2-3-4...
2019-01-06 20:40:17 876 1
原创 数据结构与算法——红黑树详解java
我另一篇文章讲了什么是二叉树,二叉树就是对于某一个节点来说,它的左子树要比它小,右子树的值要比它大,二叉树搜索树作为一种数据结构,其查找,插入还有删除的时间复杂度都是O(logn)底数是2,但是我们说的这个时间复杂度是指在二叉平衡数上面体现的,也就是说数据时随机的,则效率很好,但是如果顺序从小到大或者从大到小就会发生另一种情况,如图:从大到小及时全部在左边,这就和链表没有任何区别了,这种情况下...
2018-12-27 23:28:13 451 2
原创 数据结构与算法——二叉树详解java
我们有序数组查找快,可以通过二分查找快速的查找到数据,但是要在有序数组中插入一个数的话,就必须先找到插入数据项的位置,然后将所有插入位置后面的数据项后移以为,给新的数据腾出空间,同时删除数据也是一样的道理,可以知道这样的话是很浪费时间的,同时另外的一种数据结构——链表,链表的插入和删除很快,我们只需要改变一些引用,但是查找数据就会很慢,因为我们无论查找到什么数据,都需要从链表的第一个数据开始,遍...
2018-12-23 23:06:39 1003 2
原创 数据结构与算法——快速排序详解java
快速排序的思想先从数列中去一个数的基准数(1)取基准数的方式有几种 一种是取数组中的第一个数,第二种是取数组中的最后的一个数 ,第三种是取第一个和最后一个以及数组中间三个数的中间数在分区过程,将这个数大的数全部放到它的右边,小于这个数的数放到它的左边在对左右分区重复第二步,直到各区间只有一个数快速排序有三种实现方式 挖坑法,左右指针法,以及前后指针法左右指针法选取一个关键字做枢...
2018-12-17 23:54:27 200
原创 java算法详解——希尔排序
希尔排序通过加大插入排序元素之间的间隔,并在这些有间隔的元素中进行插入排序,从而使数据项能够大幅度移动,当这些数据项过一趟序之后,希尔排序算法减少数据项的间隔再进行排序。依次进行下去,进行这些排序时数据项之间的间隔被称为增量。假设增量为d下面采用图解 就可以知道具体的详解图片采用知乎上面的图片假设数组是第一趟希尔排序,设增量d=5第一趟就有了 五个数组 【11,16,31】,【23,...
2018-12-10 10:56:22 487
原创 java递归算法(二) ——详解消除递归以及经典示例
消除递归一个算法作为一个递归的方法通常的概念理解是很容易的,但是递归的使用在方法的调用和返回都会有额外的开销,通常情况下,用递归能实现的,用循环都可以实现,而且循环的效率更高,所以实际运用中,把递归算法转换为非递归算法是很有用的,这种转换通常会运用到栈,递归和栈递归和栈有着紧密的联系,而且大多数编译器都是用栈来实现递归的,当调用一个方式时,编译器会把这个方法的所有参数和返回地址都压入栈中,然...
2018-12-06 14:11:17 1718
原创 java递归算法(一)——详解以及几个经典示例
什么是递归递归就是一个程序或函数在其中定义或说明有之间或者间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合,一般来说,递归需要边界条件,递归前进段和递归返回段,当边界条件不满足时,递归前进,当边界条件满足时,递...
2018-12-06 00:12:12 33626 2
原创 java数据结构——双向链表详解
双向链表提供了向前遍历,也可以向后遍历整个链表,其中的问题关键就在每个链结点有两个指向其他链结点的引用。而不是一个,第一个像普通链表一样指向下一个链结点,第二个指向前一个链结点,如图:借用算计算法与结构书中的图片双向链表的缺点是每次插入或者删除一个链结点的时候,要处理四个链结点的引用,而不是两个;两个链接前一个链结点,两个链接后一个链结点,由于多了两个引用,链结点的占用空间也变得大了一些插入...
2018-12-04 16:19:50 377
原创 java数据结构——有序链表
在有序链表中,数据时按照关键值排序的,有序链表的删除常常是只局限于删除在链表头部的最大(或最小)链结点。一般,在大多数需要使用有序数组的场合也可以使用有序链表,有序链表优于有序数组的地方是插入的速度(因为元素不需要移动),另外链表可以扩展到全部有效的使用内存,而数组只能局限一个固定的大小,但是,有序链表的实现确实比数组难一些。 public class Link { ...
2018-12-04 11:08:00 2156
原创 java——单链表
我们都知道数组有一定的缺陷,在无序数组中,搜索效率低下,在有序数组中,存在着插入效率低,而且创建一个数组后,它的大小是不可能改变的。单链表的概述单链表是链表中结构最简单的,一个单链表的节点(node)分两部分,第一部分(data)保存或显示有关节点的信息,另一部分存储了下一个节点的地址,最后一个节点存储地址的部分指向空值。单向链表只可以项一个方向遍历,一般查找一个节点的时候需要从第一个节点开始...
2018-11-30 17:05:27 286
原创 java——优先级队列详解
简述优先级队列允许访问最小(有时最大)的数据项优先级队列的重要操作是有序地插入新数据项和移除关键字最小的数据项优先级队列是比栈,队列更专用的数据结构在很多的情况下都很有用。像普通队列一样,优先级队列有一个列头和一个列尾,并且也是从对头移除数据项不过在优先级队列中,关键词是有序的数据项插入的时候会按照顺序插入到合适的位置保存队列的顺序举例就好比处理文件的时候,当文件堆积了很久了,...
2018-11-30 10:29:50 1243
原创 java队列详解
队列的简述队列是一种数据结构,有点类似于栈,只是在队列中第一个插入的数据项会最先被移除,而在栈中,最后插入的数据项最先被移除,队列的作用就像电影院前的人们站成排的一样,第一个进入队尾的人最先拿到票,最后的人最后才能买到票如图- 在计算机的操作系统里,有各种队列在安静的工作着,打印作业在打印队列中等待订单,当键盘敲击时,也有一个存储建入内容的队列,同样,使用文字处理程序敲击一个键,而计算机又...
2018-11-29 20:56:36 646
原创 java中的栈详解
概念栈是一种只允许在一端进行插入或删除的线性表栈的操作端通常被称为栈顶,另一端被称为栈底栈的插入操作称为进栈,栈删除操作被称为出栈示例就比如同学交作业的时候 ,从第一个交作业一次交到最后,第一个交作业的时候是最下面的,然后一次叠加,直到最后一个学生交完作业,我们可以知道当老师修改作业的时候会从上面一次修改,修改的过程就可以成为出栈存储的结构顺序存储的栈成为顺序栈,链式存储的栈称...
2018-11-29 18:14:02 817
原创 简单排序之插入排序
插入排序算法仍然需要O(N²)的时间,但是在一般的情况下,它要比冒牌排序快一倍,比选择排序还要快一些,尽管它比冒牌排序还有选择排序都更要麻烦一些,但是它并不复杂,他经常被用在比较排序算法的最后阶段原理将指针指向某个元素,假设该元素的左边都是有序的然后将当前元素的取出来存入临时变量然后从他左边的数从右向左依次比较当比较到它是最左边的数或者遇到比它小的数据时结束循环进入循环时发现小于...
2018-11-28 22:36:14 360
原创 选择排序算法
选择排序是改进了冒泡排序,将交换次数从O(N²)减少到O(N),不幸的是比较次数还是O(N)²,然而选择排序仍然为打记录量的排序提供了一个非常重要的改进,因为这些大量的记录需要在内存中移动,这就使交换的时间和比较的时间相比起来,交换的时间更为重要(一般来说 java语言中不是这种情况,java只是改变了引用的位置,而实际对象的位置并没有发生改变)选择排序算法的简述通俗的说法就是把数组里面最小的...
2018-11-28 00:12:21 129
原创 冒泡排序算法
冒泡排序算法运行起来非常的慢,但是在概念上它是排序算法中最简单的,因为冒泡排序算法在刚开始研究排序技术时是一个非常好的算法使用冒泡排序对一个班的学生进行排序如果人近视的像计算机程序一样,只能看到站在他面前两个相邻的同学,在这种困难的情况下,如何对同学进行排序呢?假设n个学生,并且按照从左到右分别编号,从0-n-1。冒泡排序的流程如下,从最左边的同学,也就是0号同学开始比较,最开始比较的...
2018-11-27 23:00:37 137
原创 二分查找算法
有序数组 与二分查找算法的理解有序数组是指数组里的数是按照规定次序排序的,虽然仍然是一些书,但是排列次序不同,看作是不同的数组同时有序数组的优点会比无序数组快得多但是不好的方面是在插入操作中由于所有靠后的数据都需要移动以腾开空间,所以速度比较慢有序数组和无序数组中的删除操作都很慢,这是因为数据项必须向前移动来填补已删除数据项的洞有序数组在查找频繁的情况下十分有用,但是若插入与删除较为...
2018-11-26 22:41:12 1477
原创 数组
数组数组是应用最广泛的数据存储结构,它被植入到大部分编程语言中,由于数组十分易懂,所以它被用来作为介绍数据结构的起步点,并展示面向对象编程和数据结构之间的相互关系。声明数组变量 int[] arr ; //首选方法 int ints[] ;//效果相同 但不是首选方法创建数组arr = new int[10];或者 arr = new int[]{...
2018-11-26 21:39:57 120
原创 java1.8新特性(Lambda与方法引用)
java 8新特性java 8 是java语言开发的一个主要版本, Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。新特性Lambda 表达式 是指允许把函数作为一个方法的参数(函数作为参数传递到方法中)方法引用 是指用提供了非常有用的语法,可以直接引用已有...
2018-11-26 14:41:49 324
原创 数据结构的概念
数据结构的理解 以及作用我问过以为前辈我当时问他 数据结构和算法看了能做什么,他当时给我说的,可能对开发的时候的帮助很小,因为它只是存储方式以及对数据结构的了解,其实学习的是一种新的思想如何把现实问题转化为计算机语言的表示。先来几个经常所见的数据存储一条人事档案记录描述了一位真事人的信息一条存货记录描述了一个真实存在的商品信息一条财务交易描述了一笔支付交易实际填写的支票等等…...
2018-11-25 23:35:52 131
转载 linux 安装redis
1.1 redis 下载 官网地址 点击打开链接 下载地址 点击打开链接 1.2 redis 的安装 安装redis需要c语言的编译环境,如果没有gcc需要在线安装。如下命令 yum -y instal
2018-11-06 15:39:35 98
转载 Linux安装mysql
linux centos7下源码 tar安装mysql5.7.22或mysql5.7.20 图文详解现在用tar包安装5.7.22和5.7.20一样的 5.7.20之后的和之前的版本还是有点不一样的1. cd /usr/local/src wget https://cdn.mysql.com//Down...
2018-11-05 21:18:04 99
原创 linux端口开放指定端口的两种方法
重要的事情说三遍,强烈建议使用第二种方法!第二种方法!第二!;开放端口的方法:方法一:命令行方式1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT2.保存:/etc/rc.d/init.d/iptables save3.重启服务:/etc/init.d/iptables restart4.查看端口是否开放:/...
2018-11-05 20:57:47 297
原创 linux 安装jdk
作为Java开发人员,在Linux下安装一些开发工具是必备技能,本文以安装jdk为例,详细记录了每一步的操作命令,以供参考。1.下载jdk8登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应jdk版本下载。(可在Windows下下载完成后,通过文件夹共享到Li...
2018-11-04 15:58:46 117
原创 MyBatis - Plus条件构造器
说明以下出现的第一个参数 boolean condition 表示该条件是否加入最后生成的sql中以下代码块的多个方法均为从上往下补全个别boolean类型的为入参,默认为true以下出现的泛型This均使用Wrapper的实例以下方法出现的R为泛型,在普通的warapper中是String,在LambdaWrapper的函数(例:Entity::getId,Entity为实体类,get...
2018-10-26 14:24:14 12553 2
原创 Mybats -Plus CRUD 接口
说明通用 CRUD 封装BaseMapper 接口,为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器泛型 T 为任意实体对象参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键对象 Wrapper 为 条件构造器Mapper CRUD操作insert/*...
2018-10-26 10:53:28 3147
原创 MyBatis-Plus 配置
配置springBoot工程配置 MapperScan 注解@SpringBootApplication@MapperScan("mapper文件位置")public class Application { public static void main(String[] args) { SpringApplication.run(QuickStart...
2018-10-25 16:39:16 22301 2
原创 MyBatis-Plus 入门
简介MyBatis-Plus(简称MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表...
2018-10-25 15:17:00 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人