- 博客(71)
- 收藏
- 关注

原创 冒泡排序算法(BubbleSort)
快速排序算法(QuickSort)冒泡排序以其“在排序过程中相邻元素不断交换,一些元素慢慢被换到最后,看起来就像是元素在冒泡一样”而得名,它是最简单的一种排序算法,通常被用来对于计算机程序设计入门算法讲解。Definition该算法的实现分以下几步:每次从头开始依次比较相邻的两个元素如果后面一个元素比前一个要小,说明顺序不对,则将它们交换循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,不断地重复以上两个过程,直到全部有序例如有一需要排序的数组为:5,8,6,3,9,2,1,7(从
2021-03-08 16:49:25
606

原创 快速排序算法
快速排序算法(QuickSort)最近开始重新学习算法,先从快速排序开始。Definition该算法的实现分以下几步:在排序的数组中选择一个基准数(通常是第一个)将数组中小于基准数的移到基准数左边,大于基准数的移到右边对于基准数左右两边的数组,不断地重复以上两个过程,直到全部有序例如有一需要排序的数组为:23,45,17,11,13,89,72,26,3,17,11,13(从小到大排序):将数组第一个数23赋给temp变量,指针 i 指向数组第一个元素,指针 j 指向数组最后一个元素
2021-03-08 14:38:17
235
3

原创 JAVA设计模式 - 装饰者(Decorator)
装饰者(Decorator)从名字上看“装饰”,就是让被装饰者更加丰富,即为对象动态添加功能。Definition为对象动态的添加功能,使用装饰着模式生成子类的方法让功能的扩充现得更灵活。设计的初衷:回想一下在我们以前的学习中如何去拓展一个功能,答案是:继承。但是当需要扩展的子类很多的时候,继承就会变得十分复杂。Implementation同样用Iphone11和12来做例子。 购买Iphone12不会赠送充电器,然而以前都是会附带有充电器的,这时候厂商就有必要支持动态添加随机赠送配件(这是继承
2020-12-15 14:50:59
234
1

原创 JAVA设计模式 - 适配器(Adapter)
适配器(Adapter)我们学习一个模式,首先从名字理解。生活中常见的适配器就是电源适配器。作用是将电压,电流转换成电器需要的电压电流。我们只需要记住一句话,适配器就是把类接口转换成另一个用户需要的接口(转换接口)。在iphone11,iphone12拥有不同的通信技术。现在想让11调用5G信号接口,就给它加上一个适配器。public interface Iphone12 { void communicateBy5G();}public interface Iphone11 {
2020-12-14 21:17:37
234

原创 JAVA设计模式 - 抽象工厂(Abstract Factory)
抽象工厂(Abstract Factory)前面我们说了工厂模式,抽象工厂相较于工厂模式,突出了“家族”的概念。在针对每个产品族都提供一个接口,可以创建一个产品族里的多个对象。我又举个栗子,假设随着手机市场的逐步壮大,苹果的客户有部分流向华为,小米等品牌。为了留住客户,高层决定以后售出的每台手机都送对应型号的手机透明壳。这里苹果13和13的透明手机壳就是一个对象家族,他们之间是配套的。这时候,工厂模式就派不上用场了,毕竟只能创建一个对象。一个对象家族对应一个工厂(这个工厂可以创建多个对象,例如iph
2020-12-04 17:04:39
146

原创 JAVA设计模式 - 工厂方法(Factory Method)
工厂方法(Factory Method)和简单工厂方模式的不同之处在于,工厂方法把工厂类也抽象出来一个接口(抽象类),每一种产品都有自己对应的工厂类。前面就说到了简单工厂模式,现在设想一下,如果我们新出一款产品iphone13,需要怎么改动代码。1)首先我们要创建一个新的手机产品类Iphone13实现Apple接口2)在工厂类修改代码,加上新手机的逻辑代码。我在这里举得代码是十分简单的,但在实际项目是十分复杂(层次深)的结构。所以在工厂类修改代码会很冗杂。这时候工厂模式来了!它来了!把工厂类定义
2020-12-04 17:02:01
144

原创 JAVA设计模式 - 简单工厂(Simple Factory)
简单工厂(Simple Factory)在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。1)我举个栗子,没有工厂的时候,我们想要一个苹果手机,我们需要自己new创建一个出来。(这时候我们想创建一个手机需要很多零件(参数),每当我们想要一个手机就要准备很多零件来创造一个手机,这就很麻烦了,那么有没有可以我想要手机就能拿到,不管它需要什么零件,这就是为什么工厂类的由来)2)现在有了工厂模式,想要手机直接到工厂取就好了。(零件的思想我没有在案例中体现出来)/** * 苹果系列
2020-12-04 16:59:22
187

转载 JAVA设计模式 - 单例模式(Singleton)
单例(Singleton)我一直觉得学习死记硬背是没什么用的,下面让我们用理所当然的视角来学习设计模式之一—单例模式。所谓单例模式,如其名,全局只能有一个实例。我们都知道,平时创建实例都是通过构造函数new出来,因此我们想要保证单例就必须把构造函数私有,变量私有且静态(防止被修改和通过.访问)。Ⅰ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance在类加载的时候不会 被实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。(这就
2020-12-03 16:09:59
172
原创 2021-07-23
将二进制转换为十进制:栈实现/** * @Author RunXin * @Date 2021/7/23 16:21 * @description 将字符串二进制转换为十进制数 */public class Binary2Des { public static void main(String[] args) { String a = "1111101"; binary2DesMethod(a); } public static int
2021-07-23 16:58:35
217
原创 Docker离线安装MINIO
Docker离线(升级)安装MINIO1.查看版本登录minio网页,右上角点击About2.本地安装登录一台有网而且安装了Docker的Linux#拉取镜像docker pull minio/minio#在当前目录生成镜像的tar包docker save -o minio.tar minio/minio3.把包上传到服务器方式一(命令行):#scp方式上传scp [filename] [user]@[ip] 远程传输文件scp -r ./* root@8.134.50.
2021-07-14 15:23:31
2034
1
原创 双向循环链表:移位输出26位字母
双向循环链表:移位输出26位字母实现用户输入一个数使得26个字母的排列发生变化,例如用户输入3,输出结果:-D E F G H I J K L M N O P Q R S T U V W X Y Z A B C同时支持用户负数输出,例如输入-3,输出结果:-X Y Z A B C D E F G H I J K L M N O P Q R S T U V W算法:/** * @Author RunXin * @Date 2021/7/14 9:28 * @description */
2021-07-14 15:19:44
425
原创 循环链表:魔术师发牌问题
循环链表:魔术师发牌问题/** * @Author RunXin * @Date 2021/7/12 9:42 * @description 魔术师现在有13张黑桃扑克,现在要完成下面这个魔术: * 将扑克整理好后,翻开第一张为黑桃1(黑桃A)并放在桌上(牌堆剩余12张), * 然后将剩余牌的第一张放置在牌堆最底部,翻开第二张是黑桃2并放在桌上(牌堆剩余11张), * 再将剩余扑克的第一张,第二张一次放到牌堆底,第三张亮出是黑桃3并放在桌上, * 以此类推,是黑桃几就抽到第几张并亮出,直到所
2021-07-12 10:31:39
149
原创 循环链表:约瑟夫问题
循环链表:约瑟夫问题/** * @Author RunXin * @Date 2021/7/9 14:20 * @description 约瑟夫环问题 约瑟夫环问题的起源来自犹太历史学家约瑟夫和他的朋友以及39其余的犹太人,总共41人为了躲避敌人,藏在一个山洞中, * 39个犹太人决定宁愿死也不被敌人抓到,于是决定自杀,所有人排成一个圈,由第一个人开始报数,每当数到3,就自杀。 * 这个游戏接着从自杀的位置开始,还是从1数到3。依次类推,约瑟夫将朋友和自己安排在了16和31的位置,最后顺利逃过了
2021-07-09 16:34:39
151
原创 压力测试工具-JMeter
1.Window10下载2.配置在目录下直接解压压缩文件a.双击jmeter.bat文件b.新建一个线程组在右边配置c.新建HTTP请求默认值写上默认的域名,端口d.新建HTTP请求填入请求路径,端口和域名都是用默认请求配置的e.添加监听器f.加入请求参数g.头部信息写入token和参数类型json类型头部信息对应值为Content-Type application/json;charset=UTF-8h.点击绿色小三角跑起来...
2021-07-07 11:02:25
142
原创 CentOS7下载Git并集成Coding
CentOS7下载Git并集成Coding1.安装Git方法一(Yum)版本旧,简单直接:yum install git 方法二(Git)安装所需安装包yum install curl-devel expat-devel gettext-devel openssl-devel zlib-develyum install gcc-c++ perl-ExtUtils-MakeMaker下载Gitwget https://www.kernel.org/pub/software/scm/
2021-05-27 01:08:42
207
原创 CentOS7安装Docker
CentOS7安装Docker1.配置防火墙#查看所有开放的接口firewall-cmd --list-ports --zone=public#将23001端口也开放,这里这个端口是storage节点端口firewall-cmd --zone=public --add-port=23001/tcp --permanent#重启防火墙firewall-cmd --reload#关闭防火墙systemctl stop firewalld##如果docker容器内部无法访问局域网或者外网。
2021-05-27 01:02:59
439
1
原创 Centos7 上安装 FastDFS
Centos7 上安装 FastDFS第一步:找到需要下载的fastdfs插件fastdfs-5.11.tar.gzfastdfs-nginx-module-1.20.tar.gzlibfastcommon-1.0.39.tar.gznginx-1.15.8.tar.gz第二步:把他们移动到/usr/local 目录并解压tar -zxvf fastdfs-5.11.tar.gztar -zxvf fastdfs-nginx-module-1.20.tar.gztar -zxvf l
2021-05-27 01:00:49
454
1
原创 最小的k个数 - Java
最小的k个数 - Java题目描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例1输入[4,5,1,6,2,7,3,8],4 返回值[1,2,3,4]方法一(排序后,再取前k个值)这个没什么好讲的,肯定不是最优解。import java.util.*;public class Solution { public ArrayList<Inte
2021-04-19 19:58:11
161
原创 二叉搜索树与双向链表 - Java
二叉搜索树与双向链表 - Java题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}思路二叉搜索树的中序遍历是有
2021-04-19 00:05:21
221
原创 栈的压入、弹出序列 - Java
栈的压入、弹出序列 - Java题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)输入[1,2,3,4,5],[4,3,5,1,2]返回值false思路看到题目思考一下解题思路,哦嚯,实例通过了!自信满满上去提交,结果就只是通过了示
2021-04-17 16:53:07
107
原创 Vue实现兄弟组件间的方法调用及回调
Vue实现兄弟组件间的方法调用及回调看兄弟间数据传递的看我写的这篇文章:vue实现兄弟组件间的实时通信先说说我遇到的情况:点击左侧树tree,需要调用右侧houseInfo组件中的新增方法,弹出新增窗口。还需要拿到门牌号的回调(有可能删掉对话框,实际开发我还判断了用户按了确定才回调,比较复杂这里就不说了)演示图:点击houseInfo的新增效果点击tree的新增效果实现Implementation1.首先在父组件引入子组件tree和houseInfo,在method定义方法han
2021-04-01 00:39:13
2109
原创 vue实现兄弟组件间的实时通信
vue实现兄弟节点间的实时通信在毕设使用vue实现点击左侧树tree,右侧信息会随之改变。我使用的tree和info属于不同组件演示图:实现Implementation1.首先在父组件引入子组件tree和houseInfo,在data定义要通信的值(id),再定义要调用的方法clickTree2.tree组件调用父组件方法3.响应组件监听父组件传过来值的变化,向后台请求数据father.vue<template> <el-row :gutter="20">
2021-03-31 17:03:31
825
原创 反转链表 - Java
反转链表 - Java题目描述输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}思路这道题花费了我蛮长时间的,刚开始想用新建一个链表每次转换前后顺序实现,后来发现这种做法忽略了修改的也是原本链表,导致死循环。(当然用栈做这个思路一开始就想到了,不过没必要,因为更优的解法肯定存在)看完题解发现跟我的做法有点相似,不过是使用了两个指针。大家看着图对着代码一下子就懂了,总的来说就是pre往后走,head也往后走。让a->next = nul
2021-03-26 20:58:55
187
原创 数值的整数方次 - Java
数值的整数方次 - Java题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0示例1输入2,3返回值8.00000思路:解题方法就是很简单的累乘(数学算法),但是需要注意指数有可能是负数,也有可能是0;实现Implementationpublic class Solution { public double Power(double base, int expone
2021-03-25 13:43:41
189
原创 链表中倒数第k个结点 - Java
链表中倒数第k个结点 - Java题目描述输入一个链表,输出该链表中倒数第k个结点。如果该链表长度小于k,请返回空。输入{1,2,3,4,5},1 返回值{5}思路看到这题,脑子就会不由自主想到栈,先把链表全部压入栈,再计数出栈就能解决。相信聪明如在座各位也能想到。需要想的只是还有没有更优解。实现Implementation方法一(栈实现)import java.util.*;public class Solution { /** * 代码中的类名、方法名、参
2021-03-25 13:42:19
169
原创 二进制中1的个数 - Java
二进制中1的个数 - Java题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。输入10返回值2思路:看到这种题,第一时间想到的就是规律个位数中,偶数需要一位1,奇数需要两位1(奇数的二进制最后一位必须是1)十位数中,偶数需要两位1,奇数需要三位1…后面才发现并不是这样,这个规律不行,哦嚯,完蛋,思路全无。看了题解,wcao,还能这样解啊!一个整数只要不为0,二进制就存在1;如果把这个数减1,那么原来整数最右边的1就变成0,而右边的0又会变成
2021-03-24 11:40:26
222
原创 矩形覆盖 - Java
矩形覆盖 - Java题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:输入4返回值5思路:这题实际上跟前道题《跳台阶》一样,本质都是斐波那契数列,不清晰的去看看我这篇:斐波那契数列(Fibonacci) - 这就是算法吗?爱了爱了实现Implementationpublic class Solution { public int JumpFloo
2021-03-24 09:51:52
93
原创 跳台阶 - Java
跳台阶 - Java题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。这题本质上就是斐波那契数列。解法一样方法一(递归)public class Solution { public int JumpFloor(int target) { if(target <= 3){ return target; } return JumpFloor(
2021-03-23 19:51:40
168
原创 重建二叉树 - Java
重建二叉树 - Java做这题一定要知道二叉树的几种遍历,不懂得可以看我的上一篇博客:一起学习二叉树的几种遍历题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}思路:根据题目的要求,输入一个二叉
2021-03-23 17:23:17
252
原创 一起学习二叉树的几种遍历
一起学习二叉树的几种遍历深度遍历包含(前序,中序,后序)三种遍历方式,广度遍历就是常说的层次遍历。四种主要的遍历思想:前序遍历:根结点 —> 左子树 —> 右子树【根左右】中序遍历:左子树—> 根结点 —> 右子树【左根右】后序遍历:左子树 —> 右子树 —> 根结点【左右根】层次遍历:只需按层次遍历即可【左右】图片来源:(网图)前序遍历:1 2 4 5 7 8 3 6中序遍历:4 2 7 5 8 1 3 6后序遍历:
2021-03-23 15:20:39
356
原创 二叉搜索树的第k个结点 - Java
二叉搜索树的第k个结点 - Java题目描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。输入{5,3,7,2,4,6,8},3返回值{4}说明按结点数值大小顺序第三小结点的值为4 思路首先先了解二叉搜索树的定义,二叉搜索树又称二叉查找树,二叉排序树它是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(
2021-03-23 02:52:00
390
原创 数组中重复的数字 - Java
数组中重复的数字 - Java题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1示例1输入[2,3,1,0,2,5,3]返回值2或3看完题目就知道怎么做的一道题(因为有在LeeCode做过,当时看题解也是惊为天人),但是做出来后总是不过,显示超出范围
2021-03-20 23:06:53
190
原创 Jquery绕过认证(校验)
有时候在自动填写,或者js自动赋值的时候,jquery会判定失败。实现:// 遍历出所有的单选框var list = $('input[type="radio"]');for(var i = 0; i < choose.length; i++){ list[choose[i]].checked = true; // 设置值已经校验 list[choose[i]].click() // 模拟点击选择值}// 遍历出所有的多选框var list1 = $('input[t
2021-03-20 17:00:14
696
原创 自动填写问卷星 - js
自动填写问卷星今天女朋友叫给她填100份问卷,这不是要了我的老命嘛。。。!程序员是不可能老老实实填问卷的,这辈子都不可能的。效果由于是原生js写的代码,所以基本上不会失效,除非改源代码了。自己做的效果也很完美实现了想要的功能。程序可以根据自己的需求来选择想要的答案,注意这个是不能随机生成答案的。实操首先打开chrome浏览器(其它浏览器同理),按F12调出控制台,很显然,问卷星也做了一点手段(只要我们出来控制台就不停地budugger),我们点右边的断点跳过。在控制台中输入代码:代码:
2021-03-20 16:48:31
4188
2
原创 不用加减乘除做加法 - Java
不用加减乘除做加法 - Java题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。输入1,2返回值31、一位数加法普通加法异或1 + 1 = 01 ^ 1 = 0(错误)1 + 0 = 11 ^ 0 = 1(正确)0 + 1 = 10 ^ 1 = 1(正确)0 + 0 = 00 ^ 0 = 0(正确)可以看到在一位数的运算中,会出现进位丢失的问题。而其他都是正常的。那么怎么解决进位的问题呢?
2021-03-17 12:36:43
136
原创 平衡二叉树 - Java
平衡二叉树 - java题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。示例1输入{1,2,3,4,5,6,7}返回值true平衡二叉树的左右子树也是平衡二叉树,那么所谓平衡就是左右子树的高度差不超过1.我们只需要递归每个节点,判断子树平衡(左右子树的高度差不
2021-03-17 11:49:21
145
原创 二叉树的深度 - Java
二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。输入{1,2,3,4,5,#,6,#,#,7}返回值4一看到题目其实我就想到要用递归了,但是一直想怎么也想不出来。真的,打代码最忌空想,其实你开始敲,思路就慢慢出来了。以后真就要改掉这个坏习惯。方法一(递归,代码量很少,最重要的是解决思路)/**public class TreeNode { int val = 0; TreeNo
2021-03-17 11:28:44
169
原创 第一个只出现一次的字符 - Java
第一个只出现一次的字符题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)输入"google"返回值4第一时候都会想到暴力解法,全部遍历一遍出现次数。但是复杂度会很高。在自己做了一遍而且思考后,我看完题解其实还不是特别懂,卡在了arr[‘字符’]这块,然后我就去Idea过一遍。然后就是perfect!尽管解不出来,看了题解就没有我琢磨不透的…这就是我女朋友常
2021-03-16 15:25:29
162
原创 连续子数组得最大和 - Java
连续子数组得最大和题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).示例1输入[1,-2,3,10,-4,7,2,-5]返回值18说明输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为{3,10,一4,7,2},因此输出为该子数组的和 18。 思路有了只要左边得负数大于左边得正数,就从负数右边开始。能懂我意思吧??想想这样一个数组{3,4,-8,10,1,4,3},现
2021-03-12 17:09:44
232
原创 数组中出现次数超过一半的数字 - Java
数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。输入[1,2,3,2,2,2,5,4,2]返回值2看到代码直觉就是用map做,遍历存放数值和出现次数。没多大困难可以做出来,但是占用内存也很高啊。想点办法优化。方法一(easy,easy。不会吧不会吧,你不会做不出来吧)import java.
2021-03-12 16:12:42
184
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人