自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清风一阵吹我心

自从厌倦于追寻,我已学会一觅即中。 自从一股逆风袭来,我已能抗御八面来风,驾舟而行。

  • 博客(129)
  • 资源 (2)
  • 收藏
  • 关注

原创 Docker安装ElasticSearch

前言上一个项目刚刚结束,准备摸几天鱼学点新东西。但是在这空隙间,就被领导抓住了,让我从硬盘上拷一个项目,说是这个项目上有新的需求要改动,让我把环境搭一下,然后跑起来。万般无奈之下,我只能答应了。但是我也很疑惑,为毛还要从硬盘上拷项目?虽然公司没用Git,但是SVN也是家常便饭了,从同事处得知,原来管SVN权限的人现在休年假去了。最最重要的是,这个项目还不是我参与的,这就意味着,我又要在别人的代码...

2019-08-22 18:56:02 24685 5

转载 Tomcat在SpringBoot中是如何启动的

来自:掘金(作者:木木匠)原文链接:https://juejin.im/post/5d3f95ebf265da039e12959e前言我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以把web程序打包成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动。本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学...

2019-08-18 13:27:44 16082 2

原创 Spring Boot(三):JSON数据交互

相信大家做项目的时候,遇到最多的就是后端返回数据到前端了,一般我们返回JSON格式的数据,在步入正题之前,我们先讲一下什么是JSON?使用JSON有什么好处?JSON知识讲解JSON的定义JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程...

2018-12-01 16:26:19 1999

原创 spring+websocket+quartz实现消息定时推送

websocket简单的说,websocket是真正实现了全双工通信的服务器向客户端推的互联网技术。全双工与单工、半双工的区别? 1. 全双工:简单地说,就是可以同时进行信号的双向传输(A->B且B->A),是瞬时同步的。 2. 单工、半双工:一个时间段内只有一个动作发生。推送和拉取的区别?1. 推:由服务器主动发消息给客户端,就像广播。优势在于,信息的主动性和及时性...

2018-11-13 09:14:08 6014 6

原创 排序—插入排序

基本介绍插入排序(Insertion Sort)是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增 1 的有序表。代码实现public class InsertSort { public static void insert(int[] arr) { int insertIndex = 0; int insertVal = 0; for (int i = 1; i < arr.length; i++) {

2020-09-14 23:24:51 46

原创 排序—选择排序

基本介绍选择排序(Selection Sort)通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录。并和第 i 个记录交换。代码实现public class SelectSort { public static void select(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int min = i; for (int j =

2020-09-14 23:23:18 30

原创 排序—冒泡排序

基本介绍冒泡排序(Bubble Sort)的基本思想是:两两比较待排序中相邻元素的值,若发现逆序则交换。优化:排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换。就说明序列有序,所以在排序的过程中,设置一个标志(flag)判断元素是否进行过交换。从而减少不必要的比较。代码实现public class BubbleSort { public static void bubble(int[] arr) { // 定义一个变量,记录每轮遍历是否发生了交换

2020-09-14 23:21:33 39

转载 八皇后问题

八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即: 任意两个皇后都不能处于同一行 、同一列或同一斜线上,问有多少种摆法?答案是(92)种。思路分析第一个皇后先放第一行第一列。第二个皇后放在第二行第一列、然后判断是否 OK, 如果不 OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适的。继续第三个皇后,还是第一列、第二列……直到第 8 个皇后也能放

2020-09-14 23:18:30 44

转载 迷宫问题

设置 找路策略 (上下左右)的相关顺序,使用递归、回溯的方法。让小球可以找到一条走出迷宫的通路。代码实现public class MaZeTest { public static void main(String[] args) { // 初始化 int[][] map = initArray(); // 输出地图 System.out.println("地图初始化为:"); for (int i = 0; i &

2020-09-14 23:14:57 23

转载 逆波兰计算器

逆波兰表达式又叫做后缀表达式,逆波兰表达式把运算量写在前面,把算符写在后面。我们平时书写的表达式都是中缀表达式,这个表达式更加方便我们进行计算。但是相对于计算机而言,逆波兰表达式运算更加方便。只需要入栈和出栈两种操作就可以搞定所有运算,遇到操作数就入栈,遇到运算符就出栈,然后将栈顶的两个操作数进行相应运算。所以,要想用代码实现计算器的首要步骤,就是将 中缀表达式 转为 后缀表达式。中缀表达式转后缀表达式步骤如下:初始化两个栈:运算符栈 s1 和储存中间结果的栈 s2;从左至右扫描中缀.

2020-08-30 14:24:14 38

原创 数据结构与算法—栈

栈的介绍栈不同于队列,栈是一个先进后出(FILO)的有序列表。栈是一种特殊的线性表。它限制了线性表中元素的插入和删除只能在线性表的同一端进行。允许插入和删除的一端,称为 栈顶,另一端为固定的一端,称为栈底。最先放入栈中的元素在栈底,最后放入的元素在栈顶。删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用类似,只是除了储存下一个

2020-08-30 14:12:16 31

转载 链表—约瑟夫问题

单向环形链表应用场景约瑟夫问题:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理 约瑟夫 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从 1 开始计数,直到最后

2020-08-30 13:57:10 39

原创 链表—从尾到头打印单链表

为了不改变链表原本的顺序,这里使用 栈 的“先进后出”的特点,完成单链表的逆序打印。 public static void reversePrint(HeroNode head) { if (head.next == null) { return; } HeroNode temp = head.next; // 创建一个栈 Stack<HeroNode> stack = new Sta

2020-08-08 17:44:49 35

原创 链表—将单链表反转

/** * TODO 将单链表反转 * 1.先定义一个结点 * 2.从头到尾遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表的最前端 * * @param head */ public static void reverse(HeroNode head) { // 如果当前链表为空,或者只有一个结点,无需反转,直接返回 if (head.next == null || head.next.n...

2020-08-08 17:43:55 31

原创 链表—查找单链表中倒数第k个结点

要想获取链表中的倒数第k个结点,需要经过下面的几个步骤:①. 接收head结点,接收 index②. index 表示倒数第 index个结点③. 先把链表从头到尾遍历,得到链表的总长度: getLength():获取单链表中结点的个数④. 得到size后,从链表的第一个开始遍历(size - index)个⑤. 如果找到,则返回 此 结点,否则返回 null /** * @param head 头结点 * @param index 第 index 个结点

2020-08-08 17:42:58 40

原创 链表—获取单链表中结点的个数

如果是带头结点的链表,不统计头结点。 public static int getLength(HeroNode head) { // 判断链表是否为空 if (head.next == null) { return 0; } int length = 0; // 不统计头结点 HeroNode currentNode = head.next; while (curr

2020-08-08 17:41:26 268

原创 数据结构与算法—队列

基本介绍队列是一个有序列表,可以使用数组或链表来实现。队列遵循先进先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。数组模拟队列因为队列的输入、输出分别是从前后两端来处理的,所以定义两个变量front、rear来分别表示队列的前后端的下标。下面就用代码来实现简单的队列。代码实现数组模拟队列因为这里涉及到了两种不同结构的队列,普通的队列与环形队列。所以这里编写一个抽象类(AbstractQueue),记录队列的公共方法。队列都有添加数据(入队列)、获取数据(出队列)、打印数据(显

2020-08-06 22:11:51 41

原创 Python中的文件操作

文件读操作读取文件,要先判断文件是否存在。import osdef read_file(filename): if os.path.exists(filename) is False: raise FileNotFoundError('%s not exists' % (filename,)) f = open(filename, encoding='utf-8') content = f.read() f.close() return co

2020-07-28 21:28:35 71

原创 Python中使用正则表达式

使用正则表达式处理字符串,能更加高效和简介。 首先,需要导入模块reimport re常用的元字符:. 匹配除 “\n” 和 “\r” 之外的任何单个字符。^ 匹配字符串开始位置。$ 匹配字符串中结束的位置。***** 前面的原子重复 0 次、1 次、多次。? 前面的原子重复 0 次或者 1 次。+ 前面的原子重复 1 次或多次。{n} 前面的原子出现了 n 次。{n,} 前面的原子至少出现 n 次。{n,m} 前面的原子出现次数介于 n-m 之间。( ) 分组,输出需要的部分。

2020-07-28 21:22:14 69

原创 Python中的字符串操作

字符串是Python中很常见的数据类型,当然对字符串的操作也是常见的。反转字符串str1 = 'hello world'print(''.join(reversed(str1)))print(str1[::-1])输出结果:dlrow ollehdlrow olleh字符串切片操作subject = 'html5,java,python'# [start: stop] print(subject[1:])print(subject[:3])print(subject[0:8]

2020-07-28 21:15:51 34

原创 Python中的类对象及属性

classmethod修饰符对应的函数不需要实例化,不需要 self 参数。第一个参数需要是表示自身类的 cls 参数,能调用类的属性、方法、实例等。class Person: def __init__(self, name, age): self.name = name self.age = age def instance_method(self): print('实例方法...') return self

2020-07-27 21:33:17 37

原创 Python中的类型函数

bool([x])测试一个对象是 True,还是 False。print(bool([0, 0, 1]))print(bool([]))print(bool((10,)))输出结果:TrueFalseTruebytes([source[, encoding[, errors]]])将一个字符串转换成字节类型。st1 = 'apple'b1 = bytes(st1,encoding='utf-8')print(b1)输出结果:b'apple'str(object=’’)

2020-07-27 21:31:14 58

原创 Python中的内置函数

数学运算len(s)返回对象内元素的个数。dic = {'a': 1, 'b': 3}s = {1, 3, 4, 5}lst = [2, 3, 4, 5, 6, 6]print(len(dic))print(len(s))print(len(lst))输出结果:246max(iterable,*[, key, default])返回最大值。max_1 = max(3, 1, 2, 6)max_2 = max((), default=1)max_3 = max({'a'

2020-07-27 21:28:10 51

原创 Dict字典、Set集合的练习

下面写一些使用 Dict字典 和 Set集合 的常用例子,编辑器使用IDLE。Dict字典数据的批量插入a = {'a':1,'b':2}# 方法一a.update({'c':3,'d':4})print(a)# 方法二a.update([('e',5),('f',6)])print(a)# 方法三a.update([('g',7)],h=8)print(a)输出结果:{'a': 1, 'b': 2, 'c': 3, 'd': 4}{'a': 1, 'b': 2, 'c'

2020-07-27 21:26:43 35

原创 Python中Set集合的学习

集合(set)是一个无序的不重复元素序列。可以使用大括号 { }  或者 set()  函数创建集合,注意:创建一个空集合必须用 set() 而不是 { } ,因为 { } 是用来创建一个空字典。创建集合a = {1, 2, 3}b = set([1,3,5,7])print(type(a))注意:集合内的元素必须是可哈希类型,这意味着List,Dict不可哈希的对象不能作为集合的元素。基本操作求并集a = {1,3,5,7}b, c = {3,4,

2020-07-27 21:23:55 31

原创 Python中Dict字典的学习

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中,格式如下:dict = {key1 : value1, key2 : value2 }创建字典创建字典的方法有很多,下面提供 五种 方法:手动创建dict = {}a = {'a':1,'b':2,'c':3}使用构造函数创建dict(a=1,b=2,c=3)键值对 + 关键字参数a = dict({'a'

2020-07-27 21:21:23 44

原创 List列表、Tuple元组的练习

下面写一些使用 List列表 和 Tuple元组 的常用例子,编辑器使用 IDLE判断 List 列表对象中有无重复元素遍历List 列表,分别判断每个元素出现的次数,如果大于1,则返回True,如果没有重复的元素,返回 False 。# 定义函数def is_repeat(lst): for x in lst: if lst.count(x) > 1: return True return False# 调用函数a = [1,-

2020-07-27 21:18:42 50

原创 Python中Tuple元组的学习

元组是另一个数据类型,类似于 List(列表)。元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表,所以没有增加、删除元素的方法。创建 Tuplea = () # 空元组对象b = (1,5,'hello',52.30)c = ('this is tuple',[1,2,3])注意:一个整数加一对括号返回的是整数,必须加一个逗号 (10, ) 才会返回元组对象。基本操作访问元组tup1 = ('123', 'abc', 1997, 2000)tup2 = (

2020-07-27 21:13:41 154 4

原创 Python中List列表对象的学习

List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。列表是写在方括号 [ ] 之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。列表(list)作为 Python 中最常用的数据类型之一,是一个可增加、删除元素的可变容器。创建Listlist1 = [] # 创建空的listlist2 = [1,'这是lis

2020-07-27 21:10:34 63 2

原创 Python数据类型

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型,Python 中的数据皆是对象。数值型一、整数(int):i = 0x69 # 十六进制的整数i = 100 # 正整数i = -100 # 负整数二、浮点数(float):f = 15.20f = -32.54e100容器型一、list 列表对象使用一对中括号 [ ],创建一个 list 型变量。list = [2,4,6]可以向容器中增加和删除元素。二、t

2020-07-27 21:02:26 35

原创 初始Python

Python 语言使用率越来越高,使用 Python 不仅可以做 GUI 开发、Web 开发,还能进行数据预处理、数据探索性分析(EDA),更是进行数据挖掘、机器学习、深度学习等的首选语言。正因为Python有这么多的优势,所以,博主在业余时间也进行了Python的学习。这个系列就是对博主学习中的知识点进行总结。基本语法特点易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。易于阅读:Python代码定义的更清晰。可扩展:如果你需要一段运行很快

2020-07-27 20:52:50 45

原创 数据结构与算法—链表(单向链表)

基本介绍链表是有序的列表,只包含一个指针域、由n个结点链接形成的链表,就称为线型链表或者单向链表。如图:通过上图,可以总结出链表的特点:①. 链表是以结点的方式来存储的,是链式存储的。②. 每个结点包含data域,next域:指向下一个结点。③. 链表的各个结点不一定是连续的。④. 链表有带头结点和不带头结点的。那么带头结点和不带头节点的区别是什么?带头结点 插入和删除,不需要修改 head 值。更好地处理链表为空和非空。链表结构示意图代码实现博主作为一个英雄联盟的老粉,从S

2020-06-08 09:51:01 76

原创 数据结构与算法—稀疏数组

基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。实际需求相信大家都知道 “五子棋”,或者类似这种棋牌类游戏。它的棋盘就能看成一个二维数组,并且都有一个默认的值,当选手进行下棋操作的时候,会对此二维数组的某行某列的值进行修改。棋盘与二维数组的对应关系如下图:从上图可以看到,棋盘对应的二维数组中,没有进行操作的地方,默认值是0,如果程序把这种数据都记录上,是没有意义的。因此,这里就需要将上面的二维数组转换为 “稀疏数组”。二维数组 转 稀疏数组这张图就

2020-06-01 15:06:14 88

原创 Windows常用快捷键

前言开发的日常“C V大法好”。这里的C和V当然就是复制(Ctrl C)粘贴(Ctrl V)了,那么作为程序员只会C和V就可以了吗?答案肯定是不行的,如果你上班想要摸个鱼,刷刷LeetCode;看看某某学习视频。正当你全神贯注做某事的时候,领导还有 三秒钟就要抵达战场,此时,你想要通过 小鼠标去关闭你打开的“各种网页”,那肯定是来不及的,除非,你单身足够久,手速惊人;不然肯定被领导看见,给你小鞋穿。既然想要在工作中顺顺利利的摸鱼,又不被发现,只有Win能帮你解决这个问题,在工作之余,带给你足够的安全感。

2020-05-28 09:55:57 124

原创 MyBatis中使用PageHelper遇到的坑

本篇博文记录博主在使用MyBatis的PageHelper分页插件时遇到的坑。问题:项目使用的前后端分离,前端VUE抽取的分页组件,用于每一个分页展示列表。博主查看其他页面,分页效果都是正常的,只有其中一个页面分页失效,后台通过Debug跟代码,发现分页需要的参数都已经传进来了,那为什么执行查询方法的 SQL 语句没有 Limit 关键字呢?不知道原因的我,又一次Debug调试代码,发现在需要分页展示的 查询语句之前,其他同事增加了一个新的查询方法,当执行完这个方法之后,通过 MyBatis Log P

2020-05-27 10:34:53 116

转载 Java字节码指令列表

最近博主在学习Java虚拟机的知识,在看.class字节码文件的时候,遇到很多指令。单看这些指令并不明白什么意思。所以就查了一下‘Java字节码指令集’,发现有其他博主总结的很好的文章,就收藏了。所以在这里就分享给大家。也希望这篇文章对各位读者,学习Java虚拟机有所帮助,同时也感谢原文博主的整理。作者:上善若水原文:https://blog.csdn.net/github_35983163/article/details/52945845收藏:https://www.qfcwx.com/202

2020-05-20 14:11:42 79

转载 MyBatis插入数据后返回自增主键

场景介绍开发过程中,我们经常性的会用到许多的中间表,用于数据之间的对应和关联。这个时候我们关联最多的就是ID,在一张表中插入数据后级联增加到关联表中。我们熟知的MyBatis在插入数据后返回的是插入成功的条数,那么这个时候我们想要得到相应的这条新增数据的ID,该怎么办呢?例如:用户和角色的对应关系,在新增一个用户的时候就给他分配一个默认的角色。此时,需要先增加用户,获取新增完返回的用户id;然后根据角色id,一起插入到对应的用户角色表中(sys_user_role)。编码实现一、通过XML的形式,获

2020-05-19 17:15:08 161

转载 每日一题 - JVM内存区域是如何划分的?

随着Java版本的不断更新迭代,目前最新版是 Java13,在Java8及之后的版本,彻底移除了持久代(Permanent Generation),而使用Metaspace来进行替代。但是大体上,比较重要的内存区域是固定的。JVM内存区域划分如图所示,从图中可以看出:1. JVM堆中的数据是共享的,是占用内存最大的一块区域。我们常说的垃圾回收,操作的对象就是堆。2. 可以执行字节码的模块叫...

2020-03-22 16:57:58 41

转载 每日一题 - String、StringBuffer、StringBuilder有什么区别?

String: 是 Java 语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。StringBuffer:是为解决上面提到拼接产生太...

2020-03-12 16:30:20 52

原创 每日一题 - final、finally、finalize有什么不同?

final:可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。finally:是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlo...

2020-03-11 20:24:50 54

QRCode.jar

QRcode是一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。可以使用QRCode.jar生成与解析二维码。

2020-08-12

elasticsearch-analysis-ik-7.4.0.rar

压缩文件中包含了elasticsearch-analysis-ik-7.4.0(ik分词器)、logstash-7.4.0。因为es的版本需要和ik分词器版本对应,所以,使用高版本的朋友请自取。

2019-10-20

空空如也

空空如也

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

TA关注的人 TA的粉丝

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