自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cpp中auto, auto &和const auto &的区别

笔者初学cpp,如有纰漏,请见谅并指正。用在哪auto用于推断类型,具体可用于声明变量时根据初始化表达式自动推断该变量的类型,也就是可用在for循环。也可以用于声明函数返回值的占位符。怎么用这里主要讲for循环中三者的区别直接说结论autoauto用于copy一份集合中的数据,对于这种情况,在循环体中不论怎么修改copy的数据,是不会影响到原有集合中的数据的。举个简单的例子int arr[5] = {0, 1, 2, 3, 4};cout << "使用auto" <&

2021-12-09 18:46:42 2381 3

原创 远程连接MySQL报[1045]Access denied错误的解决方案

报错信息:通过ssh进入MySQLmysql -uroot -p依次输入指令use mysql;show tables;可以看见查看user表中的字段select user, host from user;root用户的host地址为host,仅限于本地使用,如果远程连接时,自然会被阻止。我们需要输入修改权限指令,让其实现无限制访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GR

2021-05-20 10:16:12 1758

原创 判断图是否有环——附带Leetcode 课程表的Java解

判断图是否有环附带Leetcode 课程表的Java解拓扑排序无向图求出图中所有顶点的度把图中所有度 <=1 的顶点放入队列Q中依次抛出队列Q中的顶点,将抛出的顶点相关联的顶点的度减1,并判断关联顶点的度是否<=1,如果是,则也放入队列Q。直到Q中无任何顶点时,判断Q中抛出的点的数量是否等同于图中所有顶点的数量,如果等于,则无环;如果不等于,则有环。Q中抛出的点的顺序即拓扑排序的顺序。有向图求出图中所有顶点的度把图中所有入度 =0 的顶点放入队列Q中依次抛出队列Q中

2021-03-22 20:51:40 1144

原创 面试题:如何实现一个简单的LRU缓存设计 Java解法

LRU缓存设计题(即Java中LinkHashMap实现原理)题表设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x,

2021-03-16 22:21:52 208

原创 Manacher算法模板

Manacher算法模板该示例是返回字符串s中最长的回文字符串public String longestPalindrome(String s) { StringBuilder sb = new StringBuilder(); sb.append('#'); for (int i = 0; i < s.length(); i++) { sb.append(s.charAt(i)).append('#'); } int[] p = new i

2021-03-08 20:29:14 135

原创 初次连接注册远程Nacos遇到的问题

初次连接注册远程Nacos遇到的问题第一次学Nacos,直接就在阿里云服务器上用Docker整了个镜像,但是在注册的时候遇到了一堆问题,在此记录一下。Cloud必须用Bootstrap.yml来配置Nacos这个真的是大坑,我之前都是把配置放在application.yml中,但是一直报localhost:8848的错,我怎么想都觉得不对啊,明明配置了地址,怎么还去localhost找,后来在Google找到答案,原来要新建一个Boostart.yml来配置Nacos地址spring: clou

2020-12-08 22:49:51 1979 1

原创 在阿里云服务器上用Docker安装Mysql 8并配置Navicat远程连接

具体过程下载Mysql镜像docker pull mysql 启动Mysql镜像docker run --name mysql02 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql--name:镜像别名-p:服务器与docker的端口映射-e MYSQL_ROOT_PASSWORD:设置mysql密码-d:后台运行最后的mysql是启动的镜像名查询启动的镜像docker ps进入容器 docker container

2020-11-13 23:07:47 256

原创 记录Java编程小技巧——将存放Integer的List、Map等结构转化成int数组

方法很简单,这里举两个例子,套用即可。// ArrayList<Integer> --> int[]int[] nums = list.stream().mapToInt(Integer::intValue).toArray();// Map.keySet() --> int[]int[] arr = map.keySet().stream().mapToInt(Integer::intValue).toArray();...

2020-11-12 21:16:09 499

原创 Docker下载如何提速

使用国内阿里云镜像:1、使用vi编译器进入到/etc/docker/daemon.json文件,添加如下语句{ "registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]}保存退出2、重启docker服务systemctl restart docker3、成功尽情的下载吧。...

2020-11-11 22:31:58 224

原创 计数排序的原理及其Java实现

计数排序的原理及其Java实现计数排序是一种线性时间复杂度的排序算法,当输入的元素是n个0到k的整数时,时间复杂度为O(n + k)。计数排序的核心在于它会将输入的数据值转化为键存储在额外开辟的数组空间中,它要求排序的内容必须是有确定范围的整数。计数排序在排序过程中没有进行比较,排序的速度超过所有的比较排序方法。计数排序是用来排序0到100之间(小范围)的数字的最好的算法。通俗地理解,例如有 10 个年龄不同的人,统计出有 8 个人的年龄比 A 小,那 A 的年龄就排在第 9 位,用这个方法可以得

2020-10-26 21:22:50 189

原创 KMP算法实现思路——附带Leetcode 1392最长快乐前缀和28实现strStr()的KMP解法 Java语言

KMP算法实现思路——附带Leetcode 1392最长快乐前缀和28实现strStr()的KMP解法 Java语言文章目录KMP算法实现思路——附带Leetcode 1392最长快乐前缀和28实现strStr()的KMP解法 Java语言目标问题KMP算法创建部分匹配表滑动并剪枝目标问题KMP算法主要用于解决字符串匹配相关等问题,实施起来简单,但是过程精巧。如题在bacbababaabcbab字符串中寻找abababca字符串的位置。一般的思路会是从字符串头开始逐一匹配,再逐一滑动,如果不做任何剪

2020-09-19 23:37:45 186

原创 Java将一个目录下所有GBK格式文件转化成UTF-8格式文件

由于本人实验室前辈的代码都是GBK编码格式,而自己之前敲代码的工作环境都是UTF-8,因此写下这个GBK格式转UTF-8格式的小工具类。使用时只需要将main()函数中src值改成GBK文件目录,des值改成任意文件夹名即可。格式转变完成后,复制des文件夹中的新文件去覆盖GBK文件。使用前最好备份一份代码,以备万一。ConvertGBK2Utf8.javaimport java.io.*;import java.util.Arrays;/** * @Author Nino 2020/9/1

2020-09-01 13:33:10 339

原创 二叉树前序遍历、中序遍历、后序遍历的递归和非递归写法

二叉树前中后三种遍历方式的递归和非递归写法本文所用的二叉树节点定义如下public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = va

2020-08-19 20:23:44 280

原创 使用wget下载出现Unable to establish SSL connection问题的解决方案

原因:部分网站不允许非浏览器方式下载文件解决方案:在wget语句后添加以下参数--user-agent="Mozilla/5.0 (X11;U;Linux i686;en-US;rv:1.9.0.3) Geco/2008092416 Firefox/3.0.3" --no-check-certificate...

2020-03-14 12:42:07 5543

原创 阿里云服务器VNC连接Timed out waiting for a response from the computer报错解决方案

首先要说明一点,如果你是初学者,第一次使用阿里云服务器并想获得可视化界面过程中遇到连接问题,你可以参考以下方案。因为想要处理网页自动化测试的同时查看效果,所以我想搞个VNC Viewer来显示桌面。但是在输入公网ip地址和端口号后,VNC Viewer一直出现Timed out waiting for a response from the computer的错误,花了很多时间终于解决了问题。...

2020-03-13 13:51:15 23297 7

原创 最短路径问题——Dijkstra算法的理解

1、最短路径的概念从一个顶点到另一个顶点所经过的边的权重和最小的一条路径,即最短路径。Dijkstra算法通常用来解决无负权边的图的最短路径问题,算法复杂度O(Elog(V))。2、算法思路首先在图中任意选定好顶点,比如0。创建一个数组(最好是最小索引堆),其用来存储与顶点0相连的点的最短距离。由第一张图可以看出,目前除了0点本身距离为0,其他的顶点距离都还没记录。不急。第二步,我们从...

2020-02-26 18:26:01 488

原创 索引堆

什么是索引堆索引堆是对堆这个数据结构的优化。索引堆使用了一个新的int类型的数组,用于存放索引信息。我们将会对索引数组进行堆排序,而不对数据直接进行堆排序。相较于堆,优点如下:1、优化了交换元素的消耗如果堆中只放数字还好,但是如果存放的是大型字符串,经常交换会消耗很多资源。2、加入的数据位置固定,方便寻找比如我想在堆中给第七个进程提升优先级,那么我就需要直接去修改它。普通的堆因为要...

2019-11-25 22:48:11 326

原创 Mybatis使用方法的学习笔记总结

文章目录Mybatis概述Mybatis的入门使用1、创建maven工程并导入依赖2、创建实体类和dao的接口3、创建Mybatis的主配置文件SqlMapConfig.xmlIUserDao.xml测试用例标签学习propertiespackageMybatis的连接池、事务及动态SQL连接池事务(面试必考!)动态SQL含义where标签if 标签foreach标签抽取重复的SQL语句Mybat...

2019-11-21 23:31:44 142

原创 观察者模式小结

文章目录使用场景代码案例设计原则使用场景观察者模式应用在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会收到通知。状态会改变的对象被称为“Subject主题”,观察者们被称为“Observer”.一个主题可以不断地加入新的观察者,也可以剔除掉观察者。场景比如:1、根据天气变化,学校要决定是否上课,同时通知给所有的学生。学校可以新增学生,也可以开除学生。2、拍卖师在...

2019-11-16 10:51:38 220 1

原创 策略模式看这篇就懂啦

策略模式(Strategy Pattern)一、含义抽象地来说:策略模式定义了一个算法族,并对每个算法进行封装,使它们能够互换使用。策略模式可以使算法独立于使用算法的客户端。第一次看到这样定义难免会感到困惑,不急,让我们来通过一个案例来分析什么是策略模式。二、案例分析如果你要设计一个模仿各种汽车的类,那你可能会想到要先建立一个Car.java抽象类,后面再通过继承它来创建宝马、奔驰...

2019-11-14 19:22:19 147

原创 图的基础

文章目录简介图的存储方式图的连通性无权图的遍历和寻路简介图(Graph)是一种数据类型。主要包含顶点(Vertex)和边(Edge)。图G(V, E)是由一个非空有限顶点集合V和有限边集合E组成。本篇文章主要是对图的基础知识做一个学习总结。具体内容包括图的存储方式,图的连通性和无权图的遍历和寻路。图的存储方式图一般通过邻接矩阵或邻接表的方式存储。邻接矩阵顾名思义是将顶点间的连通关系存...

2019-11-08 20:44:58 164

原创 搭建一个最小堆05-树7 堆中的路径 Java解法

题目将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的...

2019-10-29 17:05:24 176

原创 构建一个完全二叉搜索树04-树6 Complete Binary Search Tree

题目Now given a sequence of distinct non-negative integer keys, a unique BST can be constructed if it is required that the tree must also be a CBT. You are supposed to output the level order traversal ...

2019-10-25 23:01:58 327

原创 Java网络编程之搭建聊天室

基于控制台的Java聊天室IDEA用户可以直接到我的github项目页面下载使用 https://github.com/yanghao1550/Chat-Room-Java该小项目主要使用Socket以及多线程入门知识完成。Chat.java是服务器端 Client.java是客户端使用时需要先打开服务器端,再打开多个客户端连接到服务器端进行交流。主要功能有:1、欢迎新用户并广播有新用...

2019-10-24 10:22:22 645

原创 Java网络编程之TCP编程

文章目录TCP编程介绍服务器的搭建客户端的搭建搭建聊天室TCP编程介绍TCP不同于UDP一对一的连接,TCP需要创建一个服务器,多个客户端连接到服务器上进行通信。一般来说,TCP上用户的通信都是通过服务器转发消息来完成。服务器的搭建服务器搭建需要做以下几个步骤:1、指定端口 使用ServerSocket创建服务器2、阻塞式等待连接 accept()3、操作:输入输出流操作4、释放...

2019-10-24 10:21:12 201

原创 Java网络编程之UDP编程

文章目录UDP通信编程方法详解发送端接收端实现教师和学生一对一网络聊天UDP通信编程方法详解发送端发送端需要做到以下几件事:1、使用DatagramSocket指定端口,创建发送端2、准备数据,转成字节数组3、封装成DatagramPacket包裹,需要指定目的地4、发送包裹5、释放资源简要的示例如下:public class UdpClient { public st...

2019-10-24 10:19:11 151

原创 IO流之封装文件复制

IO流之封装文件复制文章目录IO流之封装文件复制封装拷贝封装释放资源主程序Java7之后的try...with...resource方法实现两种功能的封装1、封装拷贝(基于IO流的InputStream和OutputStream)2、封装释放资源封装拷贝可以从文件到文件,也可以从文件到字节数组,或从字节数组到文件。示例代码如下:/*** 拷贝* 对接输入,输出流* @para...

2019-10-20 13:43:48 279

原创 IO流之字节数组输入输出流

IO流之字节数组输入输出流文章目录IO流之字节数组输入输出流相比文件输入输出流字节数组输入流字节数组输出流相比文件输入输出流Java虚拟机无权对文件直接进行读写操作,如果要做此操作需要向操作系统申请权限,使用完毕后需要关闭流,释放资源。对于字节数组(ByteArray)来说,它是走内存的读写,Java虚拟机可以自己完成这个任务。当流使用完毕后,Java虚拟机会启动gc机制,即垃圾回收机制,...

2019-10-20 13:43:19 500

原创 IO流之文件字节/字符输入输出流用法

IO流之文件字节/字符输入输出流用法文件字节输入流顾名思义,文件字节输入流即是将文件通过读取字节的方式输入,通过此方式可以读取绝大多数种类的文件。文件字节输入流主要做以下几件事情:1、创建源(File类)2、选择流(InputStream类)3、对字节操作4、释放资源示例代码如下:public class IOTest01 { public static void mai...

2019-10-19 19:13:34 339

原创 04-树4 是否同一棵二叉搜索树

题目略解题思路主要考察的是建树,遍历。本题只需要建树后对两颗树进行层序遍历,加以判断每层节点是否相等就可以了。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/** * @author Nino */p...

2019-10-19 18:45:25 108

转载 排序算法的比较

2019-10-05 12:51:36 126

原创 堆排序的分析与Java实现

堆排序的分析与Java实现基本原理堆是一颗完全二叉树(非整二叉树),可以用数组来实现。一般分为最大堆和最小堆最大堆的性质是堆中每一个节点的值都小于其父亲节点的值最小堆的性质是堆中每一个节点的值都大于其父亲节点的值具体关于堆的介绍,可以看我之前写过的二叉堆的数据结构。无序数组建立堆的直接方法是从左到右遍历数组进行上浮操作。用途最广泛的操作是从右至左使用下沉操作,称为Heapify。明...

2019-10-05 12:48:30 158

原创 快速排序的分析与Java实现

文章目录一、基本算法性能分析二、算法改进1、切换到插入排序2、三数取中3、三路快速排序三、基于切分思想的快速选择算法一、基本算法归并排序是将数组从中间切分为两个子数组分别排序,之后将两个子数组合并从而使得整个数组排序。快速排序虽然也是通过切分操作来进行排序,但它用不到合并操作。原因就在于,快速排序是通过一个切分元素来将数组切分为两个子数组,左子数组的元素都小于切分元素,右子数组的元素都大于切...

2019-10-04 13:46:02 170

原创 Java多线程入门

文章目录线程概念介绍何时需要多线程多线程的实现通过继承Thread实现通过实现Runnable的接口实现以上两种实现方法的对比使用多线程的优点Thread类有关的方法线程的优先级线程的生命周期线程的同步为什么要线程同步通过synchronized同步锁完成同步public synchronized void xxx()对代码块加入同步锁线程的死锁问题原因解决方法线程通信线程概念介绍CPU的核...

2019-10-03 22:10:34 85

原创 归并排序的Java实现

归并排序的Java实现归并排序的思想就是将数组拆分成两部分,分别进行排序,然后再归并起来。它运用了分而治之的思想。它的时间复杂度只有O(NlogN)O(NlogN)O(NlogN)由此引出两种归并排序方式:1、自顶向下归并排序,使用递归从上往下拆分可以完成2、自底向上归并排序,先归并微型数组,再归并得到的数组以此合并成排序好的数组。无优化版本以下的版本是没有做任何优化的归并排序方式i...

2019-10-03 11:52:37 244

原创 希尔排序

Java实现希尔排序希尔排序即插入排序的优化版插入排序当遇到大规模数组时,因它只能交换相邻的元素,所以排序速度很慢。希尔排序则使用插入排序的方式对间隔h的元素进行排序交换,即对下标分别为i, i+h, i+h+h ...的序列进行排序,通过不断地减小h,最后令h = 1,就可以实现整个数组的有序。通常h取值为(1,4,13…)即h=h∗3+1h = h*3 + 1h=h∗3+1希尔排序的运...

2019-10-02 22:15:54 134

原创 插入排序

Java实现插入排序插入排序(从小到大)方法:从左向右遍历,每次将元素插入左侧已经排好序的数组中,使得插入后左侧数组依然有序,具体插入方式是采用相邻元素逆序交换的方式。因此如果数组部分有序,逆序较少,时间复杂度会较低;而如果数组是倒序的,逆序较多,时间复杂度会很高插入排序的时间复杂度取决于数组的初始顺序:最好的情况下,数组原先是有序的,需要N−1N-1N−1次比较,O(n)O(n)O(n...

2019-10-02 20:41:32 96

原创 冒泡排序(改进版)

Java实现的冒泡排序改进版/** * 冒泡排序(从小到大) * 从左到右不断遍历,将相邻且逆序(大, 小)的元素交换(小, 大) * 一轮循环后,最大的元素被上浮到最右侧 * 除去最后一个元素,剩下的数组继续如上操作 * 如果有一轮循环没有发生交换操作,则说明数组已经有序,终止循环 * * @Author Nino 2019/10/2 */import java.util....

2019-10-02 19:43:51 314

原创 选择排序

选择排序代码:/** * 选择排序(从小到大) * 从数组中选择最小的元素,与数组中第一个元素交换位置。 * 再从数组剩下的元素中选择最小的元素,与第二个元素交换位置。 * 不断地进行这样的操作,直到整个数组排序结束。 * * @Author Nino 2019/10/2 */public class SelectionSort<E extends Comparable...

2019-10-02 19:10:25 100

原创 Git常用命令

0、安装Git在windows上安装Git只需要到这个网站即可。1、配置Git由于Git是分布式管理系统,安装完成后需要打开Git Bash输入主机的用户名以及email地址git config --global user.name "Your Name"git config --global user.email "[email protected]"2、新建Git仓库初始化:创...

2019-09-29 15:55:20 122

空空如也

空空如也

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

TA关注的人

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