自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (3)
  • 问答 (5)
  • 收藏
  • 关注

原创 二叉树的最大宽度(BFS)

给你一个二叉树,返回它的最大宽度。二叉树的某一层宽度指的是在那一层,最右边结点和最左边结点之间的结点个数(如果中间存在空结点,也包括在内)

2022-09-08 10:58:48 801 1

原创 排序算法汇总(四)快速排序法

#之前的那个快速排序法符号太难看,不好理解,现在修正一下def quickSort(arr, start, end): tmp = arr[start] #把列表的第一个元素用一个指针指着 p1 = start #p1,p2分别在一头一尾 p2 = end if(start < end): while(p1 < p2): while(p1 < end and arr[p1] <= tmp):#找到.....

2022-07-05 23:38:07 176

原创 部署pxe网络的工作总结

部署pxe网络的工作总结如果我的文章对您有帮助,请点个赞哦~

2021-11-23 19:30:11 625

转载 Git 遇到了 early EOF index-pack failed 问题

Git 遇到了 early EOF index-pack failed 问题 weixin_33817333 2016-01-29 09:16:00 ...

2021-09-14 19:11:58 298

原创 顺时针打印矩阵

题目:输入一个矩阵, 按照从外向里以顺时针的顺序依次打印出每一个数字.例如, 如果输入以下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则会依次打印出数字:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10.分析:顺时针打印矩阵是从矩阵的左上角(0,0)开始,按照从左到右,从上到下,从外到内的顺序打印矩阵每个位置的元素.如果我们将每一次打印作为一个循环,每一次是按照里外划分的.如果这么划分

2021-09-12 14:09:13 152

转载 关于linux输入grep ‘temporary password‘ /var/log/mysqld.log无法查询到数据库的初始密码的解决方案

centos7通过yum装完mysql,找不到root密码,网上文章都说了一条指令 grep 'temporary password' /var/log/mysqld.log 1 但是我的mysqld.log中根本没有tem...

2021-04-24 22:16:20 6890 5

原创 java泛型笔记4-擦除的补偿

如果我们想要创建泛型数组,来看一下下面这个泛型类class Generic<T>{}如果我们要实例化一个Generic 的数组,比如static Generic<Integer>[] gia;编译器将接受这个程序,而不会产生任何警告.但是,永远都不能创建这个确切类型的数组.来看下面的例子:public class ArrayOfGeneric { static final int SIZE = 100; static Generic<Intege

2021-04-19 15:13:48 199

原创 关于tomcat闪退的问题的解决办法

无论是从目录中双击startup.bat,还是利用cmd命令又或者利用shell命令启动tomcat,若出现闪退,均归为此问题.解决办法:先检查是否有8080端口被占用,绝大多数情况都是这个原因.windows打开cmd,输入命令 netstat -ano | findstr8080,找到所有占用8080端口的进程,记住它们的pid序列号(最右边的数字).继续输入命令 taskkill [\f] \pid 要删除的pid号,如果不能结束进程,再输入\f在对应未知.输入命令 netst

2021-04-17 21:46:19 1198

原创 java随笔-多线程(3)

文章目录线程通信死锁线程通信为了更好地理解线程的api的用途,我们通过一个模型来实现线程通信,这便是著名的"生产者-消费者模型".它的基本实现原理是:有一个仓库类,用来存放商品,它有两个方法,一个是生产,一个是消费.有两个线程,分别是生产者线程和消费者线程.假设仓库类最大容量为10个商品.当商品数量达到10时,生产者线程停止生产,消费者线程开始消费;当商品数量达到0时,消费者线程停止消费,生产者线程开始生产.通过一个while true循环,让这个过程一直持续下去.由于这个过程涉及两个线程之间执行的选

2021-04-17 00:29:03 219

原创 泛型笔记3-下界通配符

上一节讨论了上界通配符的作用以及它的使用事项.今天将讨论下界通配符.下界通配符当我们需要动态地传入类对象及其超类类型的时候,由于擦除性质,编译器并不能确定所传入的对象是否是某一个对象的超类,而将它们都视作Object对象.当我们需要一个能使编译器识别这种关系的一种通配符,所以我们就有了下界通配符这一概念.它的格式为:<? super 类名>.它告诉编译器,你所要传入的参数类型只能是这个类及其超类类型.我们来看下面的一个关系图.如果我们以水果为基类(作为super后面的类名),那么水果

2021-04-15 16:12:09 319 2

原创 java泛型笔记2--上界通配符

在前面我们了解到上下界通配符可以让容器类之间存在诸如对象之间的继承关系.本次将详细解释这一点.擦除特性当我们声明两个List类型,同时声明其元素泛型为两个不同的包装类时,java并不能分辨它们.换句话说,如果仅仅是两个泛型不同的同类型集合对象,它们的类型其实是一样的.不仅仅是包装类是如此,任何类型的对象都是如此.public class GenericTest3 { public static void main(String[] args) { Class c1 = new

2021-04-15 01:59:45 574

原创 java泛型笔记

基本概念通常情况下集合可以存放不同类型的对象,是因为将所有对象多看作Object类型放入的.因此从集合中取出元素时它是Object类型.为了表达该元素真实的数据类型,则需要强制类型转换,而强制类型转换可能引发类型转换的异常.为了避免上述情况的发生,从Java5开始增加了泛型机制,也就是在集合名称的右侧使用<数据类型>的方式来明确要求该集合中可以存放的元素类型,若放入其他类型的元素,则编译报错.泛型只在编译时期有效,在运行时期不区分什么类型.这个特点可以通过反射机制以验证.packa

2021-04-14 22:00:12 151

转载 java泛型实践准则

Java之泛型——实践准则 简介 主要摘抄Efficient Java中关于泛型的实践准则。 准则 Don’t use raw types in new code 请不要在代码中使用原生态类型1 这个很容易理解,泛型给我们带来了类型上的安全检查机制,可以使得异常在编译器...

2021-04-14 17:02:26 141

原创 剑指offer--如何实现正则表达式的匹配

问题请你实现一个函数用来匹配包含’ . ‘和’ * ‘的正则表达式,模式中的字符’ .’ 表示任意一个字符,而’ * '表示它前面的字符可以出现任意次(包括0次).在本题中,匹配是指字符串的所有字符匹配整个模式.例如,字符串"aaa"与模式"abaca"匹配,但与"aa.a"和"aba"均不匹配.算法分析分别遍历模式串和字符串,其中模式串可能包含’.‘和’*'这两种特殊字符.对字符串来说,可以通过下标来找到某个位置的字符,所以可以不用设置指针(或者说下标就是指针).记模式串为p,待查串为s.我们通

2021-03-10 16:29:12 128

原创 java随笔-多线程(2)

文章目录1.线程池线程池的工作原理线程池的工作流程5种常用的线程池2.锁synchronizedsynchronized作用范围ReentrantLock1.线程池线程池的工作原理Java线程池主要用于管理线程组及其运行状态,以便Java虚拟机更好地利用CPU资源.其工作原理为:JVM先根据用户的参数创建一定数量的可运行的线程任务,并将其放入队列中,在线程创建后启动这些任务,如果正在运行的线程数量超过了最大线程数量,则超出数量的线程排队等候,在有任务执行完毕后,线程池调度器会发现有可用的线程,进而再次

2021-03-10 00:26:11 137

原创 java随笔-多线程(1)

本篇博客是对本人学习多线程的知识点的总结,这是第一部分.文章目录1.多线程的意义2.多线程的实现3.多线程的生命周期4.线程的基本方法sleep方法yield方法join方法5.终止线程的4种方式1.正常运行结束2.使用退出标志退出线程3.使用interrupt方法终止线程4.使用stop方法终止线程:不安全1.多线程的意义相对于传统的单线程,多线程能够在操作系统多核配置的基础上,能够更好地利用服务器的多个CPU资源,使得程序运行起来更加高效.Java通过提供对多线程的支持,在一个进程内并发执行多个线

2021-03-07 14:26:36 297 2

转载 数据库索引与自增序列

索引 文章目录 索引索引的优缺点主键,外键创建索引自动增长序列mysqloracle 创建视图 索引的优缺点 优点:创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之...

2021-03-05 13:43:43 405

转载 CSDN怎么转载别人的博客

在参考“如何快速转载CSDN中的博客”后,由于自己不懂html以及markdown相关知识,所以花了一些时间来弄明白怎么转载博客,以下为转载CSDN博客步骤和一些知识小笔记。 参考博客原址:http://blog.csdn.net/bolu1234/article/details/51867099 转载CSDN博客步骤: 1.CSDN博客页面右键,点击【检查】 点击检查后,页面右侧出现html代码,如下图 2.如果需要转载全文,则在html代码下侧点击选中articl...

2021-03-05 13:41:00 72

原创 关于问题“You must reset your password using ALTER USER statement before executing this statement“的解决办法

问题描述我在新的服务器上安装成功mysql以后,接下来的问题就是从黑窗登录mysql.输入命令mysql -u root这个命令是没有用的,原因是我是从网上下载的这个MySQL,它有默认的密码,要想修改,首先要利用默认的密码登录上这个mysql去才可以.输入以下命令获得默认的密码:grep password /var/log/mysqld.log回车,密码就在这个地方,复制下来.输入需要输入密码登录mysql的命令,回车:mysql -u root -p这个时候把刚才复制的密码

2021-01-27 20:54:21 11808 2

原创 判断子序列

问题描述给定字符串s和t,判断s是否为t的子序列?解法1:双指针法思路很简单,设计两个指针,分别用以遍历母字符串t和子字符串t.每一次遍历到子字符串的某个元素,开始遍历母字符串,直到母字符串也有相同的元素对应,这之后指向两个字符串的指针分别自增1.再进行如上判断.直到对于子串的某个元素母串没有对应的匹配或者子串遍历完毕为止.原理很简单,在此就不贴代码了(其实我也没写哈哈)解法2.动态规划法其实动态规划法特别适合求这种判断子串子序列的问题,之前的博客中曾经具体讨论过求两个字符串的公共子串和公

2020-08-11 23:26:33 1592

原创 动态规划求解子串问题

1.最长公共子串求两个字符串的最长公共子串,采用动态规划的算法求解.我们用一个二维数组dp[i][j]表示第一个字符串的前i个字符和第二个字符串的前j个字符的最长公共字符串的长度.需要确定初始值,也就是这个二维数组的边界值,显然,dp[i][0] = 0, dp[0][j] = 0.但是这没有意义,因为我们找公共子串的起点是比较两个字符串的第一个元素,如果相等,再继续向后遍历.所以dp[i][1] = 1, if s1[i-1] = s2[0], 否则为0,这才是真正的初始条件.这个时间复杂度为O(n1

2020-08-11 17:43:05 599

原创 剑指offer--旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素,例如数组{3, 4, 5, 1, 2}为数组{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1.我们采用二分法,就是设计两个指针,一个指向数组头部,一个指向数组尾部,因为这样的旋转数组在最小元素前面和最小元素的后面都是递增的.而且因为是旋转,所以最小元素前面的元素一定是大于包括最小元素在内的后面的元素的.当然,如果元素没有经过旋转,那么另当别论.根据二分法的思.

2020-08-02 21:21:03 93

原创 数据结构之队列(python实现)

计算机意义上的数据结构总的来说,分为以下两种,线性结构和非线性结构.对于线性结构,我们有时也叫做线性表,它的特点是它里面的任何元素(结点)都只有一个前驱(头结点除外)和一个后继(尾结点除外).二叉树之所以是非线性结构,就是因为它的每个结点只能有一个前驱,却可以有两个后继.而链表和顺序表就符合这个要求.并且,线性表按照存储方式的不同可以分为链表和顺序表这两种.按照种类的不同可以分为数组,栈,队列,字符串等.其中栈和队列都是属于受限的线性表.所谓受限,指的是他们在元素的增删上受到了额外的限制.栈的限制是只能在

2020-07-31 00:14:47 585

原创 用双指针方法寻找一个链表中的环的入口(较难)

问题描述:假设有一个链表有环,有环的意思是对这个链表遍历永远遍历不完,因为它会陷入一个循环,环的设计是令一个结点的next指针指向之前遍历到的某个结点(最短就是它本身).一个链表中只能设计出一个环结构.现在想要找到这个环的入口,并通过这个环入口距离头结点的大小来确定.(也就是这个环入口结点距离头结点有几个结点,或者说这个环入口是第几个结点)我把分析过程写在了python文件里,可以一读.#单链表有环指的是单链表中某个结点next域指向的是链表中在它之前的某一个结点,这样在链表的尾部形成一个环形结构.

2020-07-27 01:36:25 287

原创 java数据结构之---字符串

这篇文章试图总结一下字符串的重要知识点.1.字符串的创建在Java中,字符串类型String是java.lang下的子类,我之所以强调这一点是因为java.lang下的子类是可以直接使用而不需要进行导包的操作.字符串的构造器很多.一般来说分为这几种类型,根据byte[]字节数组的元素转ASCII码生成,根据字符数组char[]数组的元素生成,通过使用指定的charset解码指定的子string构造新的String....

2020-07-22 01:00:58 449

原创 java随笔--集合类(一)

java的集合类库分为两大模块,分别是Collection和Map.其中Collection是一切单值存储数据结构的集合,Map是一切键值对存储数据结构的集合.下面是我简单构造的组织结构图.集合Collection常用的方法有:add(), remove(), clear(), contains(), isEmpty(), size()和toArray(). List有序存储的可扩容数组结构  ArrayList &

2020-07-20 14:15:34 201

原创 利用双指针方法重建二叉树

这个问题花了我两天时间.所以我一定要总结一下.题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果都不含重复的数字.例如,输入前序遍历序列{1, 2, 4, 7, 3, 5, 6, 8}和中序遍历序列{4, 7, 2, 1, 5, 3, 8, 6},则重建如图所示的二叉树并输出它的头结点.题目来源_<<剑指OFFER>>第七题.我的思路乍一看我觉得是不难的.因为我自己曾经学过一点数据结构的皮毛,这一块前序中序后序我当时还重点背

2020-07-19 02:02:24 267

原创 如果两根柱子能接水?

问题描述:给你n个非负整数a1, a2, …, an,每个数代表一个柱子的高度,如果两根柱子跟x轴能够构成一个容器,那么用这个容器接水.试问选择哪两根柱子能够使得所接的水最多?算法思想:遍历这个高度数组,首先判断以某根柱子高度为所接水的高度的面积最大者,这个面积所对应的两个柱子(高度).判断过程是这样的:设计两个指针,固定一个指针指向当前的高度,将另一个指针遍历这个高度数组,但是这个指针是倒序遍历的.根据短桶原理,一个木桶所能接的最高水位是不高于最短的那个木板的.那么在这里如果水位要跟其中一个.

2020-07-12 22:53:00 246

原创 替换空格

题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如,输入"We are happy.", 则输出 “We%20are%20happy.”思路一:最直观的做法是从头到尾扫描字符串,每次碰到空格字符的时候进行替换.由于是把1个字符替换成3个字符,我们必须要把空格后面的所有的字符都后移2位,否则就有两个字符要被覆盖了.假设字符串的长度为n,对每个空格字符,需要移动后面的O(n)个字符,因此对于含有O(n)个空格字符的字符串而言,总的时间效率为O(n2)O(n^{2})O(n2).那么有没.

2020-07-11 20:41:10 116

转载 双指针求接雨水问题

https://mp.weixin.qq.com/s/7mvEsN1Kx66Z_triq1bPjQ

2020-07-10 23:06:32 136

原创 寻找数组中重复的数字(几个尽可能节省空间复杂度的做法)

题目一: 在一个长度为n的数组里的所有数字都在0 ~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7的数组{2,3, 1, 0, 2, 5, 3},那么对应的数字是重复的数字2或3.算法思想:对数组排序,令数组元素(数字)和其下标值相等.若无重复元素,则元素和下标一一对应.若有重复元素,则一定存在某个下标对应多个元素.但是根据规则,一个下标只能存放一个元素,这就必然存在某个下标,它对应的元素和下.

2020-07-10 22:04:23 1151

原创 java随笔--通信小结

关于通信的知识我在这两天做了一个总结,采用思维导图的方式.作为一个毫无基础的java小白,去理解计算机的通信网络基础还是很让人抓狂的.我现在只能够从我所学习到的皮毛,去试图将这些知识转化为我能够理解的意思,并保存下来方便今后改善和回忆.通信的三要素通信的三要素是协议,IP,和端口.TCP和UDP这是两种常见的协议,一般在视频,语音通话多采用UDP协议.它的特点是不建立连接,只管发送,速度快,但是不可靠,容易丢失数据.所以使用并不广泛,而TCP则弥补了这些.TCP采用socket管道建立客户端(或浏

2020-07-07 13:19:23 186

原创 java随笔之--Stream流

在Java8(JDK8)中.得益于Lambda表达式的发明,让Stream流开始大放异彩.本文主要讨论stream流引入的背景,stream的语法,以及它的实际应用小案例.Lambda是什么即使是完全的java小白也应该知道,java是完全面向对象的语言.对于执行一个动作,java实际上更关注如何执行而不是执行的目标.简单点说,任何一个方法都需要借助一个对象去调用,至于方法本身的内容,反倒不是java所真正关心的.这是典型的面向对象的思想.面向对象的思想,好处是很多的,比如它可以对事物进行分类,寻找.

2020-07-05 00:17:00 232

原创 每日温度的几种解题思路

问题描述请根据每日气温列表,重新生成一个列表,对应的位置的输出为:要想观测到更高的气温,至少需要等待的天数.如果气温在这之后都不再升高,则该位置用0代替.例如,给定一个列表[73, 74, 75, 71, 69, 72, 76, 73]你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0].这个问题的解法有很多.首先我们来用暴力法求解一下.1.暴力法暴力法的解题思路为:遍历一次列表,对于每个列表中的元素list[i],遍历它后面的元素list[j],直到出现list[j] > li

2020-06-22 23:05:05 322

原创 一篇文章带你读懂什么是编辑距离

问题描述编辑距离有称作Levenshtein距离,是指两个字符串之见由一个字符串转换成另一个字符串所需的最少操作次数.通常来说,比较两个字符串,将一个字符串修改成另一个字符串共有三个基本操作:增,删,改.其中增就是增加某个元素,删就是去掉某个元素,而改相当于将元素a替换成元素b.理论上,两个长度相等的字符串都可以通过"改"这个操作来实现,而长度不相等的时候就必须要有增或者删操作了.如果不考虑最少操作次数的话.对于任何一个字符串s1和s2,最多操作max{len(s1), len(s2)}次.我们举个栗子.

2020-06-16 19:51:41 584

原创 动态规划算法求解背包问题

问题描述假设有一个背包,它的最大承重为Nkg(N是整数),现有k个物品T1, T2, …,Tk,它们的重量分别为G1, G2, …Gk.它们的价格分别为P1, P2, …,Pk.问如何把这些物品装进背包(不能超过背包的承重),使得背包里的物品价格最高?最高价格是多少?分析假设为了简单理解,我们取N=4,共有三件物品,运动鞋,电饭锅和电风扇.它们的重量分别是1kg, 4kg, 3kg,价值分别是150, 300, 200元.动态规划的思想是设计一个二元函数dp,它返回的是当前条件下的最优解.然后我

2020-05-29 13:00:25 702 1

原创 关于条件数的两个简单不等式的证明

条件数的产生是为了度量一个线性方程组解对误差的敏感程度.我们知道在计算机做数值计算的时候,是没有我们的极限思想的,比如求导,计算机就是利用差分来近似.但说白了极限的存在也是为了刻画收敛性的有无,只要这个解具有收敛性,那么我们就可以经过一定的步数达到这个真解的收敛半径内,这样得到的解计算机近似为真解.由此可知,这样的解满足它与真解的距离足够小,也就是∥x−x′∥<ε\Vert x - x'\Vert < \varepsilon∥x−x′∥<ε.其中xxx表示数值解,x′x'x′表示真解,ε

2020-05-28 23:06:25 1356

原创 求字符串的全排列问题

给一个字符串,求这个字符串的全排列.可以采取递归的方法,将全排列的问题转换成一个个字符交换的子问题.思路我们先考虑字符串长度为2的情况,比如字符串"ab",它的全排列只有两个,分别是"ab"和"ba".只要做一次strs[0]和strs[1]的交换即可.当长度为3的时候,事实上它可以分解成两个子问题,即固定一个位置的字符,对剩余两个位置的字符做交换.比如"abc",首先固定"a"的位置,对"bc"做全排列,再交换"a",“b"的位置,固定b的位置,对"ac"做全排列,再交换"a”,“c”,对"c"位置

2020-05-19 18:38:49 292 2

原创 字典序排数

字典序相信大家都不会陌生,这是给字符串排序尤其是非数字的字符串排序的常用方法.在我之前的一篇博客如何求解字符串中字典序最大的子序列中就曾围绕着字典序问题解决过一个问题.这里我们的新问题是,给一个整数n,(n>0),试着打印出从1–n的所有数的字典序.要求解这个问题,我们首先要能够判断这个顺序是否是字典序,即我们是如何对一个自然顺序的数字按照字典序排序的呢?首先我们考虑n<10,比如n=9,那么它的字典序表示如何呢?显然是:1,2,3,4,5,6,7,8,9.也即自然序.如果这个时候n=10,

2020-05-19 11:13:05 1663

原创 消除字符串的嵌套括号

本来今天打算发两篇的,结果有一篇怎么也通不过,不是文章通不过,可能是我理解的还很肤浅,且待明日再集中解决.(另外明天再发表一篇类似的),这样的任务简单,程序简短的,有时真的不一定能转的过弯来,所以在我写博客的同时也是对自己的检验,这是好事这个问题比较简单,它的问题是:给定一个如下格式的字符串(1,(2,3,4),(5,6),7),括号内的元素随意,设计一个算法,消除除最外面括号的其他内嵌括号,例如把上面的字符串转换成(1,2,3,4,5,6,7),如果这个字符串的格式有误(这里的有误,指的是括号的对应.

2020-05-18 23:47:56 326

任务一 项目介绍与后台系统搭建.md

maven介绍

2021-03-08

我自己概括的集合类相关知识形成的一个组织结构图

这是我手写的集合类的xmind思维导图,查看请确保自己本地有安装Xmind,因为无法在博客内上传,只能后台上传.请结合我发布的文章(java随笔(集合(一)))查看.

2020-07-20

day05-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类 - 副本.md

这是为了方便大家了解集合类的相关知识所找的一个MarkDown文档,读者可以通过阅读了解各种子类集合的实现原理,红黑树的实现也会有所介绍.

2020-07-20

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

TA关注的人

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