自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Springboot】Quartz定时任务框架

一、实现流程:导入依赖:<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --><dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version&gt

2022-04-21 11:03:00 321

原创 服务端实现对客户端请求转发到另一个应用程序并添加Request的请求头

在使用ProxyServlet对客户端发送的请求进行转发到另一个应用程序时,会发现HttpServletRequest并没有添加Header的方法,但是在某些场景我们需要这个方法,那么我们可以重写HttpServletRequestWrapper类中的String getHeader(String name)、Enumeration<String> getHeaderNames()、Enumeration<String> getHeaders(String name)三个方法,并且自

2021-11-05 14:17:34 994

原创 讲一次转租被坑的经历

2021年6月30号,我确定了自己离开深圳的日子是7月3号,于是便开始规划如何转租房间。是的,短短几天内靠自己想要转租成功是比较困难的,于是我选择找中介A帮忙,中介A是带我看房子的人,相对来讲还是比较可靠。于是当晚联系了中介并询问了转租的相关事宜。第二天,7月1号,我跟中介约定好了转租的佣金为半个月房租(虽然他说可以免费,但是我急着出手,因此选择了佣金式的转租,至于免费,懂的都懂)。同时,我也跟房东说明了我想要转租的情况,房东也答应了帮我留意来看房子的人,可以帮忙转,心中甚是感动。此时房东跟我强调中介不可靠

2021-08-08 23:41:00 1121 1

原创 阿里云服务器部署Vue+SpringBoot前后端分离项目

阿里云服务器部署Vue+SpringBoot前后端分离项目文章目录阿里云服务器部署Vue+SpringBoot前后端分离项目1、阿里云服务器配置介绍2、部署环境3、常用命令4、部署SpringBoot项目5、部署Vue项目6、总结1、阿里云服务器配置介绍CPU&内存:2核4G操作系统:Ubuntu 18.04 64位带宽:1Mbps由于毕设需要,刚好阿里云有这个新用户免费试用两个月的活动,就领了一个云服务器,用来部署web项目再合适不过了。2、部署环境​ 登录阿里

2021-05-11 17:18:42 2296 1

原创 Java学习——Spingboot整合Mybatis-Plus

Java学习——Spingboot整合Mybatis-Plus​ 已经很久没写博客了,原因就是懒。这几天搞个springboot项目,刚构建项目就遇到个问题,问题大致描述为springboot和mybatis-plus发生冲突,在原项目中死活得不到解决,怀疑是电脑或是IDEA的问题,因此开了个demo项目来整合试试,结果没问题,百思不得其解,所以烦闷之下写篇博客纪念下。​ 内容分为以下五个部分: Java学习——Spingboot整合Mybatis-Plus(一)构建springboot项目(二)my

2021-03-12 23:09:59 303

原创 假如你是一个20年应届生程序员,该如何求职?【面经】

假如你是一个20年应届生程序员,该如何求职?文章目录假如你是一个20年应届生程序员,该如何求职?概要投递简历时间企业招聘流程简历制作笔试与面试Offer总结概要​ 在年初时,和一位小伙伴约好了今年要好好准备求职,但是毕竟经验不足,直到4月初才开始准备春招实习的东西,这时已经比较晚了,于是在边学习边面试的处境中,迎来了自己一年的求职之路。途中遇到了很多挫折和坎坷,如今和小伙伴也算成功上岸,便把经验整理出来,供未来想要求职的同学们参考,希望对你们有帮助。​ 我将该篇博客分为以下五个部分:投递简历时间

2020-11-18 22:14:30 300

原创 Java必知必会(一)——多线程并发

Java必知必会(一)——多线程并发开一个系列来记录我的Java学习之路,这些东西都是从其他人的面经或者自己的面经中总结的,有不正确的地方还望大佬们指出,算是自己的学习分享吧。

2020-07-28 23:05:51 225 1

原创 剑指offer(六十四)——滑动窗口的最大值

剑指offer(六十四)——滑动窗口的最大值题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,

2020-06-04 22:29:51 252

原创 剑指offer(四十二)——和为S的两个数

剑指offer(四十二)——和为S的两个数题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。题解这道题一开始被误导了,想通了就比较简单了。这里面给出了两个限制条件来查找目标元素:(1)和为S;(2)乘积最小。仔细想想,在和相同的情况下,两数差值越大,积不就越大?问题就迎刃而解了,数组是有序的,那么首尾两个...

2020-05-05 21:16:53 140

原创 【详解】面试官问——浏览器从接收到一个url到渲染显示页面经历了什么

【详解】面试官问——浏览器从接收到一个url到渲染显示页面经历了什么1、在浏览器地址行中输入URL域名2、进行DNS域名解析,获取域名对应的IP地址浏览器先检查自身缓存中是否有该域名的网址映射关系。若有则调用该IP地址映射关系,完成域名解析;若无则进行下一步。操作系统检查本地hosts文件中是否有该域名的网址映射关系。若有则调用并完成域名解析;若无则进行下一步。查找本地DNS解析器缓存...

2020-04-11 00:58:48 398

原创 剑指offer(三十九)——平衡二叉树

剑指offer(三十九)——平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。题解平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。也就是说我们需要循环判断二叉树的左右子树高度,得出二叉树高度的函数上一篇博客已经写到了,我们要做的就是如何使用这个函数。这里有两种写...

2020-04-07 17:23:33 150

原创 剑指offer(三十八)——二叉树的深度

剑指offer(三十八)——二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题解直接深度优先搜索(DFS)解决问题。初始版讲道理,这代码写的有点烂,定义了全局变量还递归写的也不咋地。我对递归也就这点认识(惭愧)。 public int tree_deepth; public int Tr...

2020-04-05 18:35:23 122

原创 剑指offer(三十七)——数字在排序数组中出现的次数

剑指offer(三十七)——数字在排序数组中出现的次数题目描述统计一个数字在排序数组中出现的次数。题解这道题比较好理解,先画重点:排序数组,一个数字。其实思路很明朗,就是要以最快的方式找到这个数字在数组中的位置,然后统计它的数量。查找自然就用二分查找,我的做法是先二分查找到该数的一个位置,然后从这个位置向前向后统计数量。一解:假设k=4,那么通过二分查找找到的位置为如图:然后从...

2020-04-04 17:26:29 106

原创 剑指offer(三十六)——两个链表的第一个公共结点

剑指offer(三十六)——两个链表的第一个公共结点题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)题解首先理解一下题意,何为第一个公共结点?那就是当两个链表的的某一个结点的值相同,并且这个结点的后面的结点值都相同时,这个结点就是第一个公共结点。画个图来理解一下:理解完题意之后,貌似思路就可以很...

2020-03-31 17:46:48 161

原创 剑指offer(三十三)——丑数

剑指offer(三十三)——丑数题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题解理解题意很重要,咋一看会感觉丑数很复杂,但实际上你把它列出来就会发现,丑数定义是比较简单的。1、2、3、4、5、6、7、8、9、10、12、15、18、20、25……...

2020-03-25 20:13:05 160

原创 剑指offer(32)——把数组排成最小的数

剑指offer(32)——把数组排成最小的数题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题解这道题我一开始以为要比较数字之间的大小,然后不知道怎么做,后来才知道要用字符串的方式去比较大小。我感觉有一点贪心的意思在里面。1、我们要知道String.c...

2020-03-24 17:52:47 131

原创 剑指offer(三十一)——整数中1出现的次数

剑指offer(三十一)——整数中1出现的次数题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。题解一解:直接使用Java...

2020-03-24 17:16:06 137

原创 剑指offer(三十)——连续子数组的最大和

剑指offer(三十)——连续子数组的最大和题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第...

2020-03-24 17:15:52 118

原创 剑指offer(二十九)——最小的K个数

剑指offer(二十九)——最小的K个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。题解一解:对数组进行排序,使用set进行去重,输出前K个数。至于排序方法,可以自己写,也可以直接用API,排序方法影响时间复杂度。 public ArrayList<Integer> GetLeast...

2020-03-24 17:15:44 143

原创 剑指offer(二十八)——数组中出现次数超过一半的数字

剑指offer(二十八)——数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题解一解(Map):第一种解法利用的Map来记录每一个数的出现次数,时间复杂度是O(n)。我这样写有一种特殊情况...

2020-03-24 17:15:32 110

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

剑指offer(二十六)——二叉搜索树与双向链表题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。题解二叉搜索树的中序遍历就是一个有序序列,那么很明显我们只要从中序遍历入手,使用一个指针存储前一个结点,那么问题就迎刃而解了。这里先给出中序遍历的非递归:public void zhongxu(node t) {...

2020-03-24 17:15:10 80

原创 剑指offer(二十五)——复杂链表的复制

剑指offer(二十五)——复杂链表的复制题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)题解(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)这句话很重要,虽然我不知道它是怎么实现的。一开始我并...

2020-03-24 17:15:03 104

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

剑指offer(二十四)——二叉树中和为某一值的路径题目描述输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)题解这道题难度一般,唯一需要注意的是数组长度大的要在前面,这个问题还是比较好解决的,只需要对结果数组进行排序就可以了。但在测试用例...

2020-03-24 17:14:52 99

原创 剑指offer(二十三)——二叉搜索树的后序遍历

剑指offer(二十三)——二叉搜索树的后序遍历题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题解首先我们需要了解二叉搜索树是一种怎样的结构,其实就是结点的左子树上的值都比结点的值小,右子树上的值都比结点值大,那借由这个定义,我们可以知道后序遍历序列有什么规律。BST(二叉搜索树)的后序序...

2020-03-24 17:14:38 139

原创 剑指offer(二十二)——从上往下打印二叉树

剑指offer(二十二)——从上往下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。题解这个题意一理解就知道是二叉树的层序遍历,层序遍历就是BFS(广度优先搜索),直接队列搞起就可以,这个搜索还是得学一下的。用队列来存储结点,递归,从而实现层序遍历。import java.util.ArrayList;import java.util.LinkedList...

2020-03-24 17:14:31 105

原创 剑指offer(二十一)——栈的压入、弹出序列

剑指offer(二十一)——栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)题解我的思路是去模拟弹出序列,如果模...

2020-03-24 17:14:19 97

原创 剑指offer(二十)——包含min函数的栈

剑指offer(二十)——包含min函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。题解第一眼看到这个题是懵的,因为看不懂题目,后面才知道只是让我们实现栈的功能,并且加上获取最小值的功能。最骚的是可以利用Java中已有的栈。理解...

2020-03-24 17:14:11 232

原创 剑指offer(十九)——顺时针打印矩阵

剑指offer(十九)——顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题解这种题就是我们学基本语法二维数组时遇到的类似蛇形矩阵的东西,说到底就是...

2020-03-24 17:14:04 98

原创 剑指offer(十八)——二叉树的镜像

剑指offer(十八)——二叉树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。题解这道题思路就很简单了,只需要将每个节点的左右节点进行交换就可以完成任务了。public void Mirror(TreeNode root) { if (root == null) { return; } TreeNode temptree = root.left; roo...

2020-03-24 17:13:50 95

原创 剑指offer(十七)——树的子结构

剑指offer(十七)——树的子结构题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题解首先理解题意,B是A的子结构的前提是,B树是A树的一部分,即从B的根节点开始,要与A其中一个结点开始,结点值完全一致。因为已经说了,空树不是子结构,所以先行判定两树是否为空。然后我们需要在A树中找到与B树根节点对应的节点,从那里开始进行判定,因此...

2020-03-24 17:13:35 90

原创 剑指offer(十六)——合并两个排序的链表

剑指offer(十六)——合并两个排序的链表题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题解这道题的思路很简单,但是不知道怎么做,看了大佬的答案后理解了。一解:递归 public static ListNode Merge(ListNode list1,ListNode list2) { if(list1 == ...

2020-03-24 17:13:27 98

原创 剑指offer(十五)——反转链表

剑指offer(十五)——反转链表题目描述输入一个链表,反转链表后,输出新链表的表头。题解简单一点的思路就是将该链表的值用数组或栈存储下来,然后用一条新链表存储下来即可实现反转。但是这种方法会消耗额外的空间,不是好方法。一解: public static ListNode ReverseList(ListNode head) { if (head == null) { ret...

2020-03-24 17:13:10 103

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

剑指offer(十四)——链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。题解 public static ListNode FindKthToTail(ListNode head,int k) { ListNode postNode = null; ListNode preNode = null; if (k <= 0) {...

2020-03-24 17:13:03 246 1

原创 剑指offer(十三)——调整数组顺序

剑指offer(十三)——调整数组顺序题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解思路简单的解法就是,建两个临时数组,一个奇数数组,一个偶数数组,最后再组合起来即可,时间复杂度为O(n)。一解: public static void reOrderAr...

2020-03-24 17:12:55 117

原创 剑指offer(十二)——数值的整数次方

剑指offer(十二)——数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0题解这道题简单直接的方法有Java的Math.power()API求解。不然就自己写一个函数,注意exponent有可能是负数。一解: public static double Power...

2020-03-24 17:12:39 114

原创 剑指offer(十一)——二进制中1的个数

剑指offer(十一)——二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题解这道题只要知道十进制数字如何用二进制数字表示和补码的定义即可做出。解一:因为Java里面是有二进制转换的现成API的,所以直接用API做可以省一大笔功夫 public int NumberOf1(int n) { return Integer.toBinarySt...

2020-03-24 17:12:32 130

原创 剑指offer(九)——变态跳台阶

剑指offer(九)——变态跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解这道题跟上一道题一样是找规律可以得出答案。1级台阶:12级台阶:23级台阶:44级台阶:85级台阶:16可知跳法个数=2^(台阶数-1) public int JumpFloorII(int target) { ...

2020-03-24 17:12:25 90

原创 剑指offer(四)——重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。题解:已知前序遍历和中序遍历求二叉树。我们需要找到前序遍历数组pre[]和中序遍历数组in[]确定二叉树的规律。根据前序遍历的性质,我们可以从...

2020-03-24 17:12:09 121

原创 剑指offer(八)——跳台阶

剑指offer(八)——跳台阶题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题解这道题是斐波那契数列的变种,我们可以通过找规律发现解法。跳1级台阶:1跳2级台阶:2跳3级台阶:3跳4级台阶:5跳5级台阶:8即f(n) = 1 当n=1时f(n) = 2 当n=2时f(n) = f(n-1) ...

2020-03-24 17:11:59 111

原创 剑指offer(五)——用两个栈实现队列

剑指offer(五)——用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题解这道题首先要了解栈和队列的性质是什么?栈:先进后出队列:先进先出先看代码: Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> s...

2020-03-24 17:11:52 94

空空如也

空空如也

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

TA关注的人

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