自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Morning Sunshine的IT技术博客

Morning Sunshine的小块笔记

  • 博客(153)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringBoot启动失败,也不报错

在springboot的启动类中添加try-catch即可出现具体错误信息;

2023-06-27 12:35:14 1649 1

原创 线程池的相关概念和参数以及源码分析

线程池就是创建一些线程,将它们的集合称之为线程池。使用线程池可以很好地提高系统的性能,线程池在系统启动时,即创建一些空闲的线程(核心线程),程序将一个任务交给线程池,线程池就会启动一个线程来执行这个任务。执行结束以后,该(核心)线程并不会死亡,而是再次返回线程池中,成为空闲状态,等待执行下一个任务。·①,创建一个线程池,;②,新建一个线程,在线程池中,新建一个Worker内部类时,会新建一个线程,并且会把这个Worker内部类本身传进去当作任务去执行,

2022-10-15 22:37:15 794 1

原创 单调栈解法--栈内元素递增递减

5.2、如果当前元素小于当前栈顶索引所在元素,则result[当前元素所在位置]=当前元素所在索引与栈顶索引之差;并将该元素索引进栈;* 6、直到栈为空、跳出while循环,则result[当前元素所在位置]=0,将该元素索引进栈;* 5.1、如果当前元素大于等于当前栈顶索引所在元素,则栈顶元素出栈,continue;* 4、如果当前栈为空,则直接result[当前元素所在位置]=0;* 5、如果当前栈不为空,则while循环,...

2022-08-25 20:38:12 296

原创 两数相加的时候警惕int类型溢出

该题目是因为二分查找,但是两个数比较大,如果直接使用int类型相加,会出现溢出,导致二分查找一直出错。如果场景中,这两个数是可能比较大的,那么不能直接使用int类型进行相加,因为可能会出现溢出操作。...

2022-07-22 16:24:14 1052

原创 SQL案例学习-- distinct 关键字

一,题目链接:180. 连续出现的数字力扣https://leetcode.cn/problems/consecutive-numbers/二,sqlselect distinct l1.Num as ConsecutiveNums from Logs l1,Logs l2,Logs l3 where l1.Num=l2.Num and l2.Num=l3.Num and l1.Id+1=l2.Id and l2.Id+1=l3.Id三,题解:.

2022-05-26 17:39:06 208

原创 Double里边的NaN是什么?

先看源码:/** * A constant holding a Not-a-Number (NaN) value of type * {@code double}. It is equivalent to the value returned by * {@code Double.longBitsToDouble(0x7ff8000000000000L)}. */public static final double NaN = 0.0d / 0.0;翻译过来:NaN是...

2022-05-25 22:51:00 6124 1

原创 双指针法-滑动窗口策略

内容来自:《labuladong的算法小抄》一,什么是滑动窗口:滑动窗口其实思路非常简单,就是维护一个窗口,不断滑动,然后更新答案。· 二,举例:最小覆盖子串:力扣https://leetcode.cn/problems/minimum-window-substring/76. 最小覆盖子串难度困难1890给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符...

2022-05-23 20:01:22 726

原创 快慢指针问题

一,题目:力扣https://leetcode.cn/problems/linked-list-cycle/141. 环形链表难度简单1498给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true...

2022-05-21 23:08:09 127

原创 SQL案例学习——union关键字

一,union的两条语句,必须拥有相同数量的列UNION 操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。·1)案例链接:力扣https://leetcode.cn/problems/big-countries/·2)SQL编写:1,直接使用or:...

2022-05-19 17:58:30 912

原创 SQL案例学习——in关键字

一,(字段1,字段2) in (select ...)1)案例链接:力扣https://leetcode.cn/problems/game-play-analysis-ii/2)SQL编写:select player_id,device_id from Activity where (player_id,event_date) in (select player_id,min(event_date) from Activity group by playe

2022-05-19 16:59:02 535

原创 全排列问题:回溯法

回溯法的注意点:1,递归调用之后,即递归方法的下一行,一定要进行回溯一级!2,递归触底之后,也是一定要回溯一级!·题目案例:给你一个数字n,请你生成并返回所有 从 1 到 n 可能的全排列 。你可以 按任意顺序 返回答案。比如:输入:n = 3输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]·思路:把从1~n的每个数字,抽象成一个以该元素为根节点的多叉树,以n为4举例,如图:这是以1为根节点的多叉

2022-05-07 16:31:12 1869

原创 对tomcat容器的认识

tomcat的责任链模式的体现:当一个request请求过来的时候,需要对这个request做一系列的加工,使用责任链模式可以使每个加工组件化,减少耦合。也可以在一个request过来的时候,需要找到合适的加工方式。当一个加工方式不适合这个request的时候,传递到下一个加工方法,该加工方式再尝试对request加工。在tomcat中容器之间的调用,使用的就是责任链的设计模式:当一个请求过来的时候,首先是engine容器接受...

2022-05-06 16:49:16 507

原创 String的equals方法原理

一,前言:我们都知道String的equals方法,是用来比较两个字符串的内容是否是相等的,如果比较内存地址用的是==。那么String的equals方法是如何来比较两个字符串的内容是否是相等的呢?今天一起翻翻源码看看:·二,源码解析:public boolean equals(Object anObject) { //如果指定对象和当前对象的内存地址相等,则啥都不用说了,在内存中都是同一个对象了,直接返回tru...

2022-05-03 14:35:50 8461 1

原创 判断一个二叉树是否是平衡二叉树

题目:题目链接:力扣https://leetcode-cn.com/problems/balanced-binary-tree/110. 平衡二叉树难度简单991给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3.

2022-04-30 16:03:46 4170

原创 计算二叉树的某个节点的高度

参考链接:力扣https://leetcode-cn.com/problems/balanced-binary-tree/solution/ping-heng-er-cha-shu-by-leetcode-solution/·公式:定义函数 height,用于计算二叉树中的任意一个节点 p 的高度:​只能先递归向下,然后回溯,回溯时累加求出高度;公式就是:当前node节点的高度=【(node节点的左子树的高度)VS (node节点的右子树的高度)...

2022-04-30 15:35:10 2978 1

原创 如何从二叉搜索树中查找某个节点、以及记录查找路径

一,题目:题目链接:力扣https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/235. 二叉搜索树的最近公共祖先难度简单825收藏分享切换为英文接收动态反馈给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也

2022-04-30 11:06:16 2560

原创 Spring循环依赖及其解决方式

部分原文链接:java 循环依赖_Java详解之Spring Bean的循环依赖解决方案_以太创服的博客-CSDN博客1,什么是循环依赖:在spring中,对象的创建是交给Spring容器去执行的,Spring创建的Bean默认是单例的,也就是说,在整个Spring容器中,每一个对象都是有且只有一个。那么这个时候就可能存在一种情况:比如说,有一个A对象,它有一个b属性,还有一个B对象,它有一个a属性。当在对这两个对象进行属性赋值的时候,就会产生循环依赖问题。假设先创建A对象,首先

2022-04-13 16:08:04 2768 3

原创 SQL语句学习

1)什么是SQL语句:SQL 是一种标准化的语言,它允许你在数据库上执行操作,如创建数据库、表等等,查询内容,更新内容,并删除条目等操作。Create, Read, Update, and Delete 通常称为CRUD操作。SQL语句分类 : DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。 DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。 ...

2022-04-11 00:16:36 2841

原创 常用Linux命令

1)find指令1.1)find,用于在文件树中查找文件并作相应的处理-name:#按照文件名查找文件​-perm:#按照文件权限查找文件​-user:#按照文件属主来查找文件​-size:#按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】​-group:#按照文件所属的组来查找文件​-mtime<-n><+n>:#按照文件更改时间来查找文件,-n表示n天之内,+n表示n天以前​-newer file1 file2:#查找更改时间在fi

2022-04-10 22:57:16 653

原创 Java实现进制转换

一,16进制转换为二进制:/* 将16进制数转换为10进制(16进制数必须带0x) */String str="0x0002"; //16进制数//str.substring(2):把16进制的标识0x去掉;int signalAttribute = Integer.parseInt(str.substring(2).trim(), 16);/* 将10进制数转换为2进制字符串 */String binaryString = Integer.toBinaryString(signalA

2022-04-07 15:12:58 568

原创 线程执行任务以及线程死锁的代码示例

一,synchronized的用法:详见:synchronized的用法_Morning sunshine的博客-CSDN博客二,线程执行任务:2.1,任务描述:有两个对象资源LockA和LockB,有一个任务task1,先获取LockA,利用LockA去执行一些业务逻辑,再获取LockB,利用LockB去执行一些业务逻辑。线程A去执行任务task1。2.1,代码示例:有两个对象资源LockA和LockB:...

2022-04-03 20:15:49 442

原创 JVM和GC基础

1)并行和并发的区别:并行和并发的区别: 并⾏是多个线程同时在运⾏,其发⽣在多核CPU 下,每个 CPU执⾏⼀个线程,多个线程同时执⾏; 并发是多个线程交替执⾏,多个线程之间是串⾏的;2)对象终⽌机制 finalizationfinalization Java 提供了对象终⽌机制finalization,来允许开发⼈员在对象被回收之前,来执⾏⾃定义的处理逻辑; 这个机制是通过 Object 的finalize()方法来触发的,在这个finalize()⽅法内我们可以做任何我们想做

2022-04-01 23:00:24 452

原创 快速排序--指针交换法详解

11111111111111

2022-03-29 15:18:06 1186

原创 快速排序--挖坑法详解

一,思想描述:何谓挖坑法?我们来看一看详细过程。给定原始数列如下,要求从小到大排序:首先,我们选定基准元素Pivot,并记住这个位置index,这个位置相当于一个“坑”。并且设置两个指针left和right,指向数列的最左和最右两个元素:接下来,从right指针开始,把指针所指向的元素和基准元素做比较。如果比pivot大,则right指针向左移动;如果比pivot小,则把right所指向的元素填入坑中。在当前数列中,1<4,所以...

2022-03-29 15:17:35 2048

原创 实现分布式锁的三种方式

引言:很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车!学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。在学习Java的过程中会遇到各种各...

2022-03-26 17:23:10 3295

原创 Zookeeper学习笔记

1)Zookeeper是什么zookeeper,它是一个分布式服务框架,是大数据中的重要组件,它是一个具有高吞吐量的分布式协调系统,它的主要作用是为分布式系统提供协调服务,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。Dubbo官方推荐使用zookeeoer作为注册中心,注册中心负责服务地址的注册和查找,相当于目录服务。什么是注册中心?举个简单的例子 ,就像字典目录 ,你要查个字, 找到目录, 然后找到对应的页, 然后字就找到了。zk也是一个意思,把你要注册的服务给..

2022-03-26 17:11:00 4997

原创 zookeeper的leader选举机制

什么是zxid和myid?zxid:zookeeper为了保证数据的有序性,会给每一个写操作的数据,编写一个全局唯一的zxid.zxid是一个64位的数字:前32位会是由当前节点参与的选举次数决定,后32位是存储数据的全局唯一id。因为先生成的节点值较小、后生成的节点值较大的特点,故而 后存储的数据的zxid 一定大于 先存储的数据的zxid。myid:myid的值是zoo.cfg文件里定义的server.A项A的值,Z...

2022-03-26 17:02:41 3950 2

原创 RabbitMQ学习笔记

1. 什么是MQ?MQ全称为Message Queue,也就是消息队列,是应用程序和应用程序之间的通信方法。MQ能用来干什么?在微服务盛行的当下,MQ被使用的也是越来越多,一般常用来进行业务异步解耦、解耦微服务、流量削峰填谷、消息分发。2. RabbitMQ介绍.RabbitMQ是mq消息队列中的一个产品。MQ的产品:activeMQ -- RocketMQ -- RabbitMQ -- Kafka(大数据领域)RabbitMQ的使用场景:MQ适用于一般的项目,数据量不是

2022-03-25 22:50:59 363

原创 Redis学习笔记

1)Redis概述在传统的Web应用中,广泛使用的是关系型数据库,因为那时候基本上访问量和并发量不高,而在后来,随着访问量和并发量的提升,使用关系型数据库的Web应用多多少少都开始在性能上出现了一些瓶颈,而瓶颈的源头一般是在磁盘的I/O上。为了克服这一问题,NoSQL非关系型数据库应运而生,它同时具备了高性能、可扩展性强、高可用等优点。Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI编码、 C语言编写的开源、包含多种数据...

2022-03-25 21:35:13 3639

原创 Java的IO操作

1)文件 以及文件夹操作 : ---------------------------文件: ----------------------------- //1.1创建文件 File file=new File("d:\\123.txt"); //1.2判断文件是否存在 if(!file.exists()){ file.createNewFile(); } //1.3删除 file.d

2022-03-23 22:34:26 804

原创 SQL案例——distinct关键字的使用

一,题目描述180. 连续出现的数字难度中等548SQL架构表:Logs+-------------+---------+| Column Name | Type |+-------------+---------+| id | int || num | varchar |+-------------+---------+id 是这个表的主键。编写一个 SQL 查询,查找所有至少连续出现三次的数字。返回的结果表中

2022-02-25 15:08:29 258

原创 (图)深度优先搜索DFS和广度优先搜索BFS

视频链接:数据结构与算法基础-java版(罗召勇)_哔哩哔哩_bilibili1.1)什么是图结构图中的一个一个的点称为顶点;这一条一条的线,代表着顶点之间的关系,我们将其称之为边。如果两个顶点之间可以通过一条边进行连通,那么就将这两个点称为是邻接的,反之就不是邻接的。比如说B和C、B和A这些顶点之间就是邻接的,而A和D就不是邻接的。有向图和无向图指的就是边是否是有方向的。如图所示:带权图指的就是,我们可以给图中的边,给它标识上一个有意义的数据值,比如...

2022-02-25 11:05:00 699

原创 全排列【46. 全排列】

一,题目描述力扣46. 全排列难度中等1767给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <=...

2022-02-16 13:18:28 830

原创 合并二叉树

一,题目:给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,n

2022-01-29 21:51:59 885

原创 Java多线程

一,概念:1.1)什么是主线程与子线程:Java程序运行时:jvm会自动创建主线程,执行main方法;在主线程中创建的线程是子线程;1.2)线程通过线程id和名称区分:1.1) Thread.currentThread().getId(); 1.2) Thread.currentThread().getName()二)多线程的创建方式:Java多线程的创建方式有三种:①,继承Thread类;②,实现Runnable接口;③,实现Callable接......

2022-01-29 10:07:39 631

原创 剑指 Offer 42. 连续子数组的最大和

一,题目描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。提示:1 <=arr.length <= 10^5-100 <= arr[i] <= 100注意:本题与主站 53 题相同:https://leetcode-cn....

2022-01-15 12:24:40 50

原创 斐波那契数列_3种解法

题目描述:剑指 Offer 10- I. 斐波那契数列难度简单282写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项(即F(N))。斐波那契数列的定义如下:F(0) = 0, F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。...

2022-01-11 10:40:05 539

原创 力扣题目_第 N 个泰波那契数

一,题目描述原文链接:力扣1137. 第 N 个泰波那契数难度简单160泰波那契序列Tn定义如下:T0= 0, T1= 1, T2= 1, 且在 n >= 0的条件下 Tn+3= Tn+ Tn+1+ Tn+2给你整数n,请返回第 n 个泰波那契数Tn的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:138953...

2022-01-05 21:45:22 409

原创 除数博弈_力扣题目_动态规划求解

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

2022-01-05 20:23:38 2555

原创 测试类不支持多线程情况

单元测试@Test并不支持多线程测试;多次运行,其结果要么没有任何输出结果,要么输出不全。在最后加个Thread.sleep()只是为了让主线程等待子线程执行完后在结束,你也可以给你的子线程加线程状态,等待你子线程执行完毕后结束主线程。或者加个超时设置,允许子线程执行完:@Test(timeout = 100) // in case we never get a notificationpublic void testGivenNewFooWhenIncrThenGetOne() t

2021-12-30 16:21:06 404

数据结构与算法学习笔记.docx

数据结构与算法学习笔记.docx

2021-11-28

空空如也

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

TA关注的人

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