自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【已解决】Maven更改本地默认仓库时遇到的问题。 No implementation for org.apache.maven.model.path.PathTranslator was bound

今天整理c盘发现快要爆满 了,于是想把maven仓库迁移到其他盘至于怎么更改,网上很多教程,这里就不详细说明了遇到下面问题按照提示去查看log日志2019-10-22 16:52:08,646 [ 161168] ERROR - #org.jetbrains.idea.maven - com.google.inject.CreationException...

2019-10-22 17:27:14 50826 17

原创 【已解决】mybatis查询对象时间属性为null,Date类型的变量为null

今天在spring+mybaits中遇到从mysql数据库中查询出来的时间属性为null,后来我尝试了只取出时间列表,发现不为null想了下是映射没有成功后来在mapper文件和数据库字段里把login_time改为create_time就可以成功了总结:写mapper的时候,创建POJO对象的时候要考虑和数据库里面的字段字符对应,以便配置的mybat...

2019-09-05 23:02:31 11937 1

原创 docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting cont

docker启动容器:docker run -dit --name elk -p 5601:5601 -p 9200:9200 -p 5044:5044 -v E:/spring/elk/opt/elk-data:/var/lib/elasticsearch -v E:/spring/elk/etc/localtime:/et c/localtime sebp/elk:740错误:docker: Error response from daemon: OCI runtime create failed

2020-07-14 16:26:06 4026

原创 selenium有界面下正常,无界面下报错:Message: element not interactable (Session info: headless chrome)

如题目所述解决方案:指定浏览器分辨率option.add_argument('window-size=1920x3000') # 指定浏览器分辨率配置 option = webdriver.ChromeOptions( ) option.add_argument('window-size=1920x3000') # 指定浏览器分辨率 option.add_argument('--headless') option.add_argument('

2020-07-13 23:31:48 5689

原创 Java对象的创建,new一个对象的过程

Java创建对象的过程总体上可分为四步:Java虚拟机遇到字节码new指令时①先看看这条指令对应的参数能否在常量池中定位到类的符号引用②若没有,则执行类加载的过程(加载,验证,解析,初始化)②若有,则为对象分配内存(防止并发情况下线程不安全的问题,采用CAS分配和TLAB方法)③接下来设置对象头(此对象时哪个类的实例,对象的哈希码,GC分代年龄等)④调用构造函数,初始化对象参看:《深入理解Java虚拟机,第三版》周志明著...

2020-07-03 19:54:59 1075

原创 Java虚拟机:类加载过程,类加载器

类加载过程Java虚拟机类加载的五个过程:①加载 ②验证 ③准备 ④解析 ⑤初始化①加载:获取类的二进制字节流—>转化为方法区的运行时数据结构—>在堆内生成java.lang.Class对象②验证:验证字节流是否符合规定(文件格式验证,元数据验证,字节码验证,符号引用验证)③准备:为静态变量分配内存—>初始化变量④解析:将符号引用替换为直接引用⑤初始化:初始化变量类加载器...

2020-07-02 23:35:59 197

原创 Netty粘包解决

首先来看简单的项目结构Netty5的Maven包 <!-- https://mvnrepository.com/artifact/io.netty/netty-all --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>5.0.0.Alpha1<

2020-06-23 23:02:52 305

原创 Docker图像化管理工具Portainer安装

安装Docker,并启动# 启动dockersudo service docker start下载Portainer镜像docker pull portainer/portainer运行Portainerdocker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name myportainer docker.io/portainer/portainer-d:debu

2020-06-22 22:38:41 245

原创 剑指offer—不用加减乘除做加法

剑指offer—不用加减乘除做加法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2 提示:a, b 均可能是负数或 0结果不会溢出 32 位整数思路题目要求不能用+,-,*,/,那么只能考虑位于运算:&,^,|,~,<<,>>首先我们知道 a ^ b(a 异或 b)是不进位的加法,而 (a & b) << 1 是进位那么

2020-06-21 23:13:44 109

原创 剑指offer—扑克牌中的顺子

剑指offer—扑克牌中的顺子题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True 示例 2:输入: [0,0,1,2,5]输出: True限制:数组长度为 5数组的数取值为 [0, 13]思路1:先把数组进行排序(小到大)2:遍历数组· 若 nums[i] == 0,zer

2020-06-21 20:48:56 124

原创 LeetCode—将有序数组转换为二叉搜索树

LeetCode—将有序数组转换为二叉搜索树题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5思路1:有序数组中间的数就是其二叉搜索树的根节

2020-06-20 16:59:51 121

原创 剑指offer—翻转单词顺序

剑指offer—翻转单词顺序题目描述输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能

2020-06-20 16:22:16 182 2

原创 剑指offer—和为s的两个数字,和为s的连续正数序列

剑指offer—和为s的两个数字题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]思路这道题可以利用双指针来解决,一个指针 iii 指向 0,一个指针 jj

2020-06-20 15:55:16 97

原创 剑指offer—平衡二叉树

剑指offer—平衡二叉树题目描述输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3

2020-06-20 15:14:07 96

原创 剑指offer—数组中数字出现的次数

剑指offer—数组中数字出现的次数题目描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]思路假如题目要求是找出一个只出现一次的数,而其他都出现两次,那么直接遍历数组进行互相异或\color{red}

2020-06-19 23:46:10 115

原创 剑指offer—数组中的逆序对

剑指offer—数组中的逆序对题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5思路取第一个数和它后面的数进行比较,若比后面的数大,则 count++,依次取第二个数…但是这样时间复杂度就是O(N2)O(N^2)O(N2)((n−1)+(n−2)+...+1=n(n−1)/2=O(N2)(n-1) + (n-2) + ... + 1=n(n-1)/2=O(N^2)

2020-06-19 23:17:40 126

原创 剑指offer—丑数

剑指offer—丑数题目描述我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。n 不超过1690。思路我们可以看出来每次都是前面某个数字乘以 2 或者 3 或者 5,取其中的最小者。我们定义三个指针 p2、p3、p5 分别指向要乘以 2、3、5 的数字。dp[i] 表示

2020-06-18 22:43:53 104

原创 剑指offer—数组中出现次数超过一半的数字

剑指offer—数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2思路这里不考虑排序后直接返回下标为size/2的数(时间复杂度logNlogNlogN)题目里说次数超过一半,也就是说剩下的数全部加起来的次数都有要找的数出现的次数多\color{#FF3030}{剩下的数全部加起来的次数都有要找的数出现

2020-06-18 21:29:02 88

原创 剑指offer—字符串的排列

剑指offer—字符串的排列题目详情输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]思路当没有重复字符时,可以遍历每一个字符,并且和当前字符往后的字符两两交换并递归,递归结束时再交换回来但因为题目要求是里面不能有重复数组,玩意字符串是aabc,那么就会出现重复的数,于是用集合来存储值,最后再将set转化为vector

2020-06-18 21:12:15 111

原创 剑指offer—二叉搜索树与双向链表

剑指offer—二叉搜索树与双向链表题目详情输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操

2020-06-18 01:30:18 114

原创 剑指offer—复制带随机指针的链表

剑指offer—复制带随机指针的链表题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。思路假如没有随机指针,那么我们直接一边遍历链表一边复

2020-06-18 00:42:45 116

原创 剑指offer— 二叉树中和为某一值的路径

剑指offer— 二叉树中和为某一值的路径题目描述输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返

2020-06-17 22:29:42 87

原创 剑指offer—二叉搜索树的后序遍历序列

剑指offer—二叉搜索树的后序遍历序列题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true思路二叉搜索树特点:左子树比当前值小,右子树比当前值大;即左子树的全部结

2020-06-17 22:01:26 89

原创 剑指offer—栈的压入、弹出序列

剑指offer—栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), p

2020-06-17 21:18:09 88

原创 剑指offer—包含min函数的栈(一个栈实现,两个栈实现)

剑指offer—包含min函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路1:两个栈,一个存储值,一个存储当前栈的最小值副栈s2一直保持着主栈s1中最小的值,当push操作时,先判断入栈的x是否比s2.top()要大,如果要大的话,那么说明栈里面已经有更小的值,再继续添加一个s2.top()到副栈s2,最后把x入s1min操作时,直接返回s2.top()即可,因为副栈的顶部永远

2020-06-16 22:47:48 371

原创 剑指offer—二叉树的镜像,对称的二叉树

剑指offer—二叉树的镜像题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1 示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]思路第一应该就能想到递归,递归是有终止条件的,那么此题意下终止条件为:若roo

2020-06-16 21:01:24 176

原创 剑指offer—树的子结构

剑指offer—树的子结构题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,

2020-06-16 20:29:39 84

原创 剑指offer— 合并两个排序的链表,合并K个排序链表的三种思路及复杂度的分析

剑指offer— 合并两个排序的链表题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路新建一个头结点,然后再创建一个遍历的指针p,同时将比较pHead1和pHead2当前值的大小,p指向较小的结点,更新p的值(p = p->next),同时更新较小结点的指针使其指向下一个结点![在这里插入图片描述](htt

2020-06-11 00:34:28 618 1

原创 剑指offer—链表中倒数第k个结点

剑指offer—链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。思路定义两个指针p2指针移动一格,k减1,直到 k == 0情况1p2没移动到最后一个元素,令 p2 = p2->next,此时再把p2和p1一起移动,直到 p2== NULL倒数第k个元素为:p1 -> next,返回即可情况2此时 k == 链表的长度,当 k = 0 时,p2移动到最后一个元素,此时倒数第 k 个元素就是第一个元素,返回 p1 即可代码 ListNod

2020-06-08 01:28:06 85

原创 剑指offer—调整数组顺序使奇数位于偶数前面

剑指offer—调整数组顺序使奇数位于偶数前面题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路有些小伙伴可能会觉得这题很简单,双指针,一个指向头部,一个指向尾部,左指针定位到偶数,右指针定位到奇数,然后交换两个数,再向中间移动,想法顾然美好,但是别忘了题目要求保证奇数和奇数,偶数和偶数之间的相对位置不变。这就行不通了正确的思路应该是:创建一个临时数组,顺序遍历数组,将

2020-06-07 23:54:24 90

原创 JAVA网络编程:NIO

先来回顾一下BIO的特点:阻塞,主要体现以下点:1.ServerSocket.accept()2.InputStream.read(), OutputStream.write()3.无法在同一个线程里处理多个I/O有没有一种方法可以在一个线程内实现对多个IO的处理呢?1.使用Channel代替Stream2.使用Selector监控多条Channel3.可以在一个线程里处理多个Channel I/OChannel在BIO模型中,Stream是单向的,有InputStream和OutputS

2020-06-07 23:17:24 139

原创 JAVA网络编程:BIO

首先安装netcat(window安装教程)来模拟客户端单线程BIOpublic class ServerBio { public static void main(String[] args) throws IOException { //监听9000端口 ServerSocket serverSocket = new ServerSocket(9000); while (true) { //未有连接,阻塞

2020-06-07 00:17:43 151

原创 剑指offer—二进制中1的个数

剑指offer—二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路题目要求从二进制中求出“1”的个数,首先这里要知道位移操作,当一个数向左移动 nnn 位时,相当于乘上 2n2^n2n,为什么呢?任何数字在计算机中都是二进制,比如 333, 二进制表示 111111,指数表示 21+202^1 + 2^021+20假如现在 333 向左移动一位,那么相当于给每一个有效位增加1的权重:21+1+20+12^ {1+1}+ 2^{0+1}21+1+20+1

2020-06-05 23:23:56 100

原创 剑指offer—跳台阶,变态跳台阶

剑指offer—跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路当青蛙跳到第n级台阶时,可以从 n-1 级台阶跳1级跳上来,也可以从 n-2 级台阶跳2级跳上来,所以 n = (n - 1)+(n - 2)以此类推,n-1 = (n - 2)+(n - 3), n - 2 = (n - 3)+(n - 4)…,3 = 2 + 1,当位于第二级台阶时,有两种跳法(一种直接跳两步;一种一次跳一步,跳两次),一级台阶

2020-06-05 22:37:17 77

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

剑指offer—旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0思路将要查找数组的范围定义为 [left, right],取中值 mid = (left + right) / 2当 numbe

2020-06-05 00:28:16 76

原创 剑指offer—用两个栈实现队列,基础方法及优化方法

剑指offer—用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的push和pop操作。 队列中的元素为int类型。思路1一个栈为主栈,弹出顺序就是进队的顺序;一个栈为副栈,在push操作时候做辅助作用push操作:先将主栈里的数一个一个拿出来放入副栈里面,再将要插入的值push进副栈,这时候副栈从栈底往上的顺序就是入队顺序,最后只需要把副栈的数再移到主栈就可以了。pop操作:若主栈有值则弹出代码实现public: void push(int node) {

2020-06-04 23:53:24 340

原创 剑指offer—从前序与中序遍历序列构造二叉树

剑指offer—从前序与中序遍历序列构造二叉树题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路前序遍历(DLR),中序遍历为(LDR)前序遍历数组的第一个数字,就将中序遍历数组一分为二(因为无重复元素)记preor

2020-06-04 00:34:47 338

原创 剑指offer—替换空格

剑指offer—替换空格题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."思路n先从左向右遍历,统计空格的个数为sum,将数组的长度扩大到length+2*sum,并用双指针完成空格的替换,具体操作如下:指针①定位到原数组的最后一个位置,指针②定位到扩容后数组的最后一个位置:1:若指针①的前字符为非空格,指针②位置填充指针①定位到的当前字符,指针①和指针②分别向左移动一位

2020-06-03 23:51:04 84

原创 剑指offer—二维数组中的查找

剑指offer—二维数组中的查找题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]

2020-06-03 22:44:25 87

原创 剑指offer—顺时针打印矩阵

剑指offer—顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:[ [1,2,3], [4,5,6], [7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1,2,3,4], [5,6,7,8], [9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]思路定义上,下,左,右四个变量来记录四个边界值,通过边界值的不断缩小来达到顺时针遍历的目的。.

2020-06-01 00:08:37 108

空空如也

空空如也

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

TA关注的人

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