自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring+springmvc+mybatis整合多数据源

spring+springmvc+mybatis整合多数据源项目结构图:创建DataSourceContextHolder类public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); public static void setDbType(String dbType) {

2023-11-18 12:41:09 112

原创 mysql最基本命令

mysql最基本命令

2022-12-21 16:17:45 106 1

转载 node版本升级

npm

2022-11-21 19:06:10 131

原创 unable to resolve dependency tree

搭建前端遇到的问题

2022-07-10 21:03:44 291 1

原创 centos7安装zookeeper

centos7安装zookeeper参考博客:https://blog.csdn.net/qq_27007509/article/details/108937175

2022-04-05 18:29:59 1528

原创 Lock wait timeout exceeded; try restarting transaction

Lock wait timeout exceeded; try restarting transaction数据库插入报Lock wait timeout exceeded; try restarting transaction 看意思是表被锁了,然后百度了一圈,都是各种的kill 锁表进程,弄了好久都没解决,,最后发现是主机挂载磁盘满了,,记录下...

2022-01-18 14:36:40 322

原创 Redis配置文件常见参数解析

redis配置文件详解redis支持很多参数,但都有默认值,常见参数如下daemonize 默认情况下redis是不支持后台运行的,如果想要后台运行,也就是以守护进程的方式运行需要把该参数改为yesbind 指定redis只接受来自于该ip地址的请求,默认是172.0.0.1也就是本机,开发阶段配置成0.0.0.0任意ip都可访问。prot 监听端口,默认6379databases 设置数据库的个数,默认使用的数据库是0save 设置redis进行数据库镜像的频率dbfilename 镜像备

2021-10-06 17:34:54 1026

原创 centos7安装redis6.0.9

redis6.0在centos7上的安装用wget 命令安装# 在主机上创建一个安装目录mkdir -p /usr/loacl/src# 确保主机上可以使用wget命令如果不能用yum 安装yum install -y wget# 下载安装包wget -P /usr/local/src https://download.redis.io/releases/redis-6.0.9.tar.gz# 解压redis 包cd /usr/local/srctar -xzvf redis-6.

2021-10-01 21:20:28 492

原创 回顾数据结构和算法

数据结构概述数据结构定义:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合 中数据元素之间的关系组成。数据的存储结构**1.顺序存储:**是把数据元素存放在地址连续的存储单元里,其数据间的逻 辑关系和物理关系是一致的。数组就是顺序存储结构的典型代表。**2.链式存储:**是把数据元素存放在内存中的任意存储单元里,也就是可以把数据存放在内存的各个位置。这些数据在内存中的地址可以是连续的,也可以是不连续的数据的逻辑结构1.集合结构:集合结构中的数据元素同属于一个集合,他们之间是并列

2020-11-18 14:09:33 151

原创 数据结构-数组

数组的介绍数组是在内存中存储相同数据类型的连续的空间,声明一个数组就是在内存空间中划出一串连续的空间。数组名代表的是连续空间的首地址。通过首地址可以依次访问数组所有元素。元素在数组中的排序下标从零开始。数组的特性:数组长度一旦声明,不可改变不可追加。数组可以存储基本数据类型也可以存储引用数据类型(对象)。如图:基本数据类型数组默认初始化都是0int arr [] =new int[5]; for(int i : arr){ System.out.

2020-11-18 14:08:27 333

原创 数据结构-栈

数据结构-栈栈的定义:栈是一种“先进后出”的一种数据结构,有压栈出栈两种操作方式。栈的图形结构:浅谈Java中的栈:Java中的栈分为本地方法栈和虚拟机栈,后边会写一篇jvm内存结构会详细介绍,这篇先聊一聊Java中栈是怎么实现的。Stack s = new Stack();s.push("a");s.push("b");s.push("c");s.push("d");System.out.println(s); //[a, b, c, d]从上述代码中可以看出Stac

2020-11-18 14:07:40 139

原创 数据结构-队列

队列的定义队列是一种先进先出的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。例如:你们在用电脑时有没有经历,机器有时会处于疑似死机的状态,鼠标点什么似乎都没用,双击任何快捷方式都不动弹。就当你失去耐心,打算reboot时。突然他像酒醒了一样,把你刚才点击的所有操作全部按顺序执行一遍。这其实是因为操作系统中的多个程序因需要通过一个通道输出,而按先后次序排队等待造成的操作系统是应用了一种数据结构来实现刚才提到的先进先出的排队功能,这就是队列。用数组实现队列这种数据结构:public cl

2020-11-18 14:06:54 115

原创 数据结构-单链表

单向链表的介绍数据在内存中以链式存储的线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,如图所示:手动实现链表这种数据结构:public class Node<T> { private T value; private Node next; public Node(T value) {

2020-11-18 14:06:10 146

原创 数据结构-单向循环链表

单向循环链表介绍它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环,如图所示:从图中可以看出它和单链表唯一区别就是没有最后一个结点了。假设只有一个结点他的下一个结点就是其本身,因此构建一个循环单链表也非常简单,只需要把单链表的下一个结点换成当前结点。public class Node<T> { private T value; private Node next = this; public Node(T value) { this

2020-11-18 14:05:17 453

原创 数据结构-双向循环链表

双向循环链表介绍双向循环链表和单向循环链表最大的区别就是可以通过当前结点找到下一个结点和上一个结点,比如说对链表进行删除操作,单向链表通过当前节点是找不到上一个节点的,因此不能删除传入的节点,只能删除传入的节点的下一个结点。单向链表如果真想删除传入的节点,可以让下一个结点的值等于传入的结点,让传入结点的下一个结点等于下下一个结点。代码实现//单向链表删除传入结点public void remove(Node node){ //拿到传入结点的下一个结点的值 int value = node.next

2020-10-10 20:04:53 147

原创 递归算法

递归的三大要素:第一要素:明确你这个函数想要干什么,对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。例如,我定义了一个函数,假设是算n的阶层的函数public void method(int n){}第二要素: 寻找递归结束条件,所谓递归,就是会在函数内部代码中,调用这个函数本身,所以,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞

2020-10-10 20:04:07 244 1

原创 给定两个数组,编写一个函数来计算它们的交集。

这是力扣上的算法题,有兴趣的朋友可以访问一下这个网站,在这里记录一下我刷算法的经历,希望我能坚持下来。力扣:https://leetcode-cn.com/problems/intersection-of-two-arrays/题目:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]题解:暴力

2020-10-10 20:03:24 1220

原创 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMsRsufE-1602331366878)(http://www.ztinfo.xyz/upload/2019/12/image-a7a5c67e921042d9ab2a40f5c396a819.png)]示例:输入: [“Hello”, “Alaska”, “Dad”, “Peace”]输出: [“Alaska”, “Dad”]思路:先遍历输入的字符串数组,取出首字符,定位到是在哪一行的字符串,取出那一行的字符串,

2020-10-10 20:02:54 338

原创 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:输入: “Let’s take LeetCode contest”输出: “s’teL ekat edoCteeL tsetnoc”//首先把字符串转换成字符串数组//把字符串转换成StringBuffer对象目的调用reverse()方法进行翻转//翻转之后再放到原数组位置//把字符串数组转换成字符串public String reverseWords(String s) { //将字符串以空格切割等字符串数组 String [] arr = s.s

2020-10-10 20:02:11 1882

原创 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]//其实就是倒数第一和正数第一交换位置,倒数第二和正数第二交换位置,直到下标相等时候不交换public v

2020-10-10 20:01:39 2093

原创 查找字符串数组中每个字符串所对应的摩斯密码

国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-…","-.-.","-…",".","…-.","–.","…","…",".—","-.-",".-…","–","-.","—",".–.","–.-",".-.","…","-","…-","…-",".–","-…-","-.–","–…

2020-10-10 20:01:09 553

原创 宝石与石头

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0分析:遍历J石头中每个字符,在遍历

2020-10-10 20:00:20 98

原创 IP地址无效化

题目给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0” 输出:“255[.]100[.]50[.]0”分析:其实就是把字符串中的.全部替换成了[.] 第一种方法可以用java中的replaceAll("\.","[.]");第二

2020-10-10 19:59:52 1106

原创 删除链表中的节点

题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1

2020-10-10 19:59:17 91

原创 分割平衡字符串

题目在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量示例示例 1:输入:s = “RLRRLLRLRL”输出:4解释:s 可以分割为 “RL”, “RRLL”, “RL”, “RL”, 每个子字符串中都包含相同数量的 ‘L’ 和 ‘R’。示例 2:输入:s = “RLLLLRRRLR”输出:3解释:s 可以分割为 “RL”, “LLLRRR”, “LR”,

2020-10-09 19:53:05 194

原创 删除最外层括号

题目有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和&nbsp

2020-10-09 19:52:34 379

原创 三次握手四次挥手详解

首先要明白TCP中的SYN和ACK是什么SYN:同步标志 同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。其实就是客户端的初始序列编号。ACK:确认标志 确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列

2020-10-09 19:48:56 183

原创 转换成小写字母

题目实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例示例 1:输入: “Hello”输出: “hello”示例 2:输入: “here”输出: “here”示例 3:输入: “LOVELY”输出: “lovely”分析:这个比较简单,首先第一种方法可以直接调用JAVA中的Tolowercase()方法,把字符串转换成小写。第二种就是要明白’A’和’a’之间相差32,大写字符和小写字符之

2020-10-09 19:47:55 267

原创 合并二叉树

题目给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例分析:采用递归法,递归思想总共分为三大要素:第一要素:明确你这个函数想要干什么:给这两棵二叉树进行前序遍历,并让值相加,赋值给t1树上第二要素: 寻找递归结束条件:谁是null就返回另一个树的节点。第三要素:找出函数的等价关系式

2020-10-09 19:47:16 97

原创 机器人能否返回原点

题目在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示例

2020-10-09 19:46:38 564

原创 高度检查器

题目学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。示例示例:输入:[1,1,4,2,1,3]输出:3解释:高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。提示:1 <= heights.length <= 1001 <= heights[i] <= 100分析:想法比较简单,首先创建一个新数组,把目标数组全部复制到新数组,

2020-10-09 19:43:27 101

原创 二叉树的最大深度

题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。分析二叉树的深度,其实就是二叉树的高度,怎么计算二叉树的高度呢?遍历左孩子,遍历右孩子比较那个高取哪个。代码如下:/** * Definition for a binary tree node. * public class TreeNod

2020-10-09 19:42:46 69

原创 有序数组的平方

题目给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]分析这道题非常简单,遍历数组中每项元素,平方之后再放回原数组,最后再排序。感觉自己想的太简单,用到了java中的排序方法,很low,但是看到这题就只能想到这种解决办法。代码如下: public int[] sortedSqua

2020-10-09 19:36:52 85

原创 独一无二的出现次数

题目给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true 分析这道题实际

2020-10-09 19:36:19 97

原创 Nim游戏

题目你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;  因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。分析这题读了好几遍才看懂,很

2020-10-05 17:43:31 181

原创 将有序数组转换成二叉排序树

题目将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例分析这道题我想了好久,知道平衡二叉树进行中序遍历就会变成一个递增数组。反过来给你你个递增数组让你构建一个平衡二叉树就懵逼了,结果画了好久的图,看了别人的题解才做出来。画图如下:代码如下:public TreeNode sortedArrayToBST(int[] nums) { if(nums.length &lt

2020-10-05 17:42:58 557

原创 除数博弈 + 数组拆分+山脉峰值

除数博弈题目:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。示例示例 1

2020-10-05 17:41:55 91

原创 Nginx搭建静态资源

主要是配置nginx.conf文件server { listen 80; #监听端口 server_name localhost; #域名 location /html{ root /opt/nginx/template; #autoindex on; index login.html; } }把静态资源上传到/opt/n

2020-10-05 17:40:34 114

原创 volatile关键字详解

volatile是什么?volatile是java虚拟机提供的轻量级的同步机制,volatile有三大特性:1.保证可见性2.不保证原子性3.禁止指令重排什么是可见性其实就是只要有一个线程对变量操作完成之后写回主内存其他线程立马知道研究可见性就要知道什么是JMM?JMM是什么?JMM是java内存模型,是一种抽象的概念并不真实存在,是一套或一组规范,就像中国人说我属羊就知道是什么意思。通过这组规范定义了程序中各个变量的访问方式。JMM同步的规定:线程解锁前必须把共享变量的值刷新到主

2020-10-05 17:39:44 959

原创 JAVA中锁的介绍

公平锁和非公平锁公平锁:公平锁,就是很公平,在并发环境中每个线程在获取锁时首先会查看此锁维护的等待队列,如果是空说明自己是第一个就会获得到锁,如果不为空就会加入到队列中等待排队。非公平锁:非公平锁上来就尝试占有锁,如果尝试失败,才会加入到队列中。多线程获取锁并不是按照申请锁顺序,有可能后申请锁的线程比先申请锁的线程优先获取锁,有可能会造成优先级反转或者饥饿现象(等了好久都没获得到锁非常饥饿)。java.util.concurrent包中的ReentrantLock类,可以在这个类中的构造方法中传

2020-10-05 17:38:57 48

空空如也

空空如也

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

TA关注的人

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