自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (1)
  • 收藏
  • 关注

原创 《java 8实战》之默认方法的学习与总结

扫描关注公众号查看更多内容近期在研读《Java 8 in Action》中文版(中文《java8实战》),感觉受益良多,故想向大家分享这本书籍,并写下自己的对于其中的理解。前言其实说到java8新特性,有学过的同学都应该知道在java8中新增在接口中可以有默认方法了,所谓的默认方法就是用default修饰的方法。例如:public interface Factory{ default void test(){ xxxx}}那么默认方法的用处是什么呢?首先,之前的接口是个双

2021-06-15 17:03:17 1278 5

原创 《java8实战》之Lambda表达式的学习与总结

扫描关注公众号查看更多内容近期在研读《Java 8 in Action》中文版(中文《java8实战》),感觉受益良多,故想向大家分享这本书籍,并写下自己的对于其中的理解。前言Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。如我们所知,我们可以使用Lambda表达式来简化代码,让我们的代码看起来更加的简

2021-06-10 14:49:51 1182

原创 《Java8实战》之行为参数化学习与总结

近期在研读《Java 8 in Action》中文版(中文《java8实战》),感觉受益良多,故想向大家分享这本书籍,并写下自己的对于其中的理解。前言不知道大家在日常工作中当有一个需求在与客户讨论时,客户对于同一个功能的需求总是在变,或者是一段时间内需要这个,过一段时间又变成那个。例如:当有个疫情级别城市查询,一开始想当1<疫情人数<5为中风险城市,你可能会这样写个方法后面客观又想变成5<疫情人数的时候你怎么办的...

2021-06-09 14:50:53 160 1

原创 Springboot项目中在类被初始化前执行其他操作的方法

前言近期在工作的日常开发中,遇到这种开发场景,故写下这篇文章。简单开发场景在我们日常工作当中,其实有挺多这样的应用场景,例如1.在类中的多个方法中,有使用到类定义的一些静态变量,而这些静态变量又是需要通过一系列操作去赋值,,这时候如果我们直接在每个方法中去进行这些操作去赋值静态变量就会导致代码有些冗余,即使我们把这些操作放在方法内在去调用,也会或大或小的影响我们的执行效率。这时候很多写过JavaSE的同学可能会发言了,这不是很简单吗,在类中写一个静态代码块不就得了!!确实在这种场景下,静

2021-07-29 14:56:18 2269 1

原创 将有序数组转换为二叉搜索树Java实现

题目将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:0/ \-3 9/ /-10 5解题思路对于该题来讲,要先知道二叉搜索树的定义,简单来讲就是比根节点小的放左边,比根节点大的放右边,并且要平衡,左右高度

2020-12-07 14:58:14 371

原创 多数元素Java实现

题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2解题思路这题就可以用map来做一个辅助,遍历数组元素,判断是否在map中,如果在,则判断他的nums[i]的key的对应value+1是否大于数组长度/2,是的话直接返回,不是则更新value值+1,如果不在map中

2020-12-05 16:24:35 384

原创 相交链表Java实现

题目编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA= 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B [5,0,

2020-12-05 16:06:26 356

原创 环形链表Java实现

题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4]

2020-12-03 15:27:46 234

原创 只出现一次的数字Java实现

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路对于题目来说其实有一种明显的做法,那就是把数组每个元素进行遍历,我这里使用的集合是map,(当然list也是一样的道理),每次判断是否在map中,如果在则value变成0,如果不在则加入value为1。最

2020-12-03 15:05:59 389

原创 验证回文串Java实现

题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false解题思路这到题来讲就是正常的一个验证回文串加上2个限制条件,只比较字母数字和忽略大小写,那么,我们可以先遍历一边把不是字母和数字的字符去掉,得到一个新的,然后就是正常的解题回文串,遍历字符串

2020-12-01 17:13:07 595

原创 122. 买卖股票的最佳时机 IIJava实现

题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格

2020-12-01 16:12:08 175 1

原创 买卖股票的最佳时机Java实现

题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例 2:输

2020-11-30 16:26:29 701 1

原创 杨辉三角Java实现

题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ]解题思路其实从题目来看,每一行的除了首和尾,中间都是上一行的相邻两个相加,所以这种就想到要用递归然后递归第一步肯定是出口,而在这题中,无疑是numRows等于1时,返回固定的1,其中要注意的是,题目中说了给定一个非负整数,那么0也是其中要注意的点,

2020-11-30 16:12:00 253

原创 存在重复元素Java实现

题目给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解题思路该题比较简单 有很多种方法可以使用,比如排序,先通过对该数组排序,后对每一个元素和下一个相比,相同则返回true,到最后则返回fal

2020-11-26 14:07:06 250

原创 最大子序和Java实现

题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。实现思路首先观察,想要返回连续的最大和,首先应该知道取的第一个数应该是正数开始,然后每加上后面的一个数时,如果加上后和小于0,然后重新去获取这之后的第一个正数上面的逻辑是在数组内有正数的前提下,那如果没有正数呢?我们应该每次比较一下当前数和之前记录

2020-11-25 13:44:54 259

原创 每日练习-合并两个有序链表Java实现

题目解题思路:递归对于 l1 , l2 两个链表来说,要组成一个升序的链表,那就是要把每一个去对比,得到小的那个节点,然后在用小的节点的下一个继续做对比,这样子递归的想法就出来了第一步当然是判断两个链表是否都为空,都为空则返回null第二步,能进到第二步就说明总有一个链表不为空,所以去做判断,如果l1为null,则返回l2此时的节点,并且后面都无需在做比较了,因为l1已经是null,同理就得如果l2为null,则返回l1此时的节点。第三步,能走到第三步则表示此时两个链表节点都不为null,则

2020-11-25 10:46:26 405

原创 力扣面试题库之简单题集合Java实现

No1代码class Solution { public int mySqrt(int x) { double sqrt = Math.sqrt(x); return (int)sqrt; }}No2ps:这题大概都喜欢用递归,但是递归重复计算太多,提交会超时~~代码class Solution { public int climbStairs(int n) { int i=1; int j=2;

2020-09-10 17:08:16 497

原创 力扣面试题库之外观数列Java实现

题目解题思路:递归由题目知,每一个都是对上一项的描述,这就说明一定可以用递归做。首先,先来个结束递归的条件,也就是n等于1,就返回“1”。-之后就去递归得到上一项的字符串,循环这个字符串去判断是否是连续数字,用标记计数它的个数,直到不相等时,就用一开始创建的Stringbuilder去加入这个计数的字符串,然后在加上这个重复的数字,如果不是重复的,则加上“1”和这个数字即可。代码class Solution { public String countAndSay(int n) {

2020-08-20 17:40:10 218

原创 力扣面试题库之实现strStr()Java实现

题目解题思路:这次解题思路叫不会就转行,不解释了,哈哈代码class Solution { public int strStr(String haystack, String needle) { if(haystack==null){ return -1; } if(needle==null){ return 0; } return haystack.indexOf

2020-08-20 16:51:37 170

原创 力扣面试题库之删除排序数组中的重复项Java实现

题目解题思路:循环迭代首先最简单的是应该先分为二个部分,先是计算新的长度,然后在去修改数组计算新的长度应该没人不会吧,就是遍历一边数组就可以了修改数组的话因为题目不让使用额外的数组空间,所以也变得有一点点难度,所以这里我们就可以去每找到一个不同的元素时,用计数的值减一就是此时应该被取代的位置。代码class Solution { public int removeDuplicates(int[] nums) { int count=1; for(i

2020-08-20 16:37:51 149

原创 力扣面试题库之有效的括号Java实现

题目解题思路:迭代循环首先应该知道这题目总共包括两种合法字符串,一种就是【】直接是一个完整的符号,或者是一个完整的符号内好包括其他的,比如(【】)。所以只要去把[],(),{},这些去找出来删掉,删到最后在判断是否为空,为空代表true有效。代码class Solution { public boolean isValid(String s) { if(s==null || s.length()==0){ return true;

2020-08-19 17:54:28 160

原创 力扣题库之电话号码的字符组合Java实现

题目解题思路:递归因为输入的字符串是不定长的,所以用迭代就做不了,所以采用递归对于字符串中每个一字符数字,才得到相应映射的字符串,利用每一个字符串都去遍历,利用StringBuilder对象去添加字符,在递归调用函数下一个的索引。这可能讲的不是很清楚,主要还是看代码~~代码class Solution { StringBuilder sb = new StringBuilder(); List<String> list = new ArrayList<&g

2020-08-05 16:50:58 147

原创 力扣题库之罗马数字转整数Java实现

题目解题思路:迭代有题目知,如果当前字符代表的值不小于其右边,就加上该值;否则就减去该值字符与数值间的映射可以用map代码class Solution { public int romanToInt(String s) { if(s==null || s.length()==0){ return 0; } Map<Character,Integer> map = new HashMap<>

2020-08-05 15:54:41 216

原创 力扣面试题库之删除链表倒数第N个节点

题目解题思路: 迭代想要删除链表中一个节点,就需要先获得该节点的前一个节点,在而想要获得倒数第N个节点,转换一下思维就等价于获得正数的L(链表长度)-N+1个节点,这样就简单了.首先把头结点赋给两个节点node1,node2,先遍历一边node1算出链表长度,在遍历node2当此时为第L-N时,就代表这是倒数第N个节点的前一个,就让他的next=next.next就行了。代码class Solution { public ListNode removeNthFromEnd

2020-08-04 21:14:30 166

原创 力扣面试题库之三数之和Java实现

题目解题思路:迭代这题的解题思路有点像之前的两数之和那道题目,没做过的可以先去做那道题,就是利用公式转换,把a+b+c=0转换成 a+b=-c;这样就直接变成了两数之和的题。首先双层循环去逐个匹配相加值是否存在于数组中,这一步可以用hashmap来实现,先把数组中元素全部加入到map中,key为值,valuse为索引,然后判断是否存在于map中即相等,还得判断索引是否一致。要求的不可重复,则是先用Collections.sort()去排序,然后全部循环完,在吧list去转成set在转为list即

2020-07-28 21:43:39 276

原创 力扣面试题库之最长公共前缀Java实现

芜湖~~解题思路:旋转乱做之迭代遍历这道题目最直接的想法就是对一个数组内每一个进行遍历,比较每一个对应索引的值是否一样,从而最后得到最长公共前缀首先,先判断数组是否为空,如果为空,直接返回空,循环一次数组,得到数组中字符串长度的最小值对于循环这个最小值,里嵌套一个循环数组,让第一个字符串的每一个字符与其他字符串相应位置一一对比。代码 coming inclass Solution { public String longestCommonPrefix(String[] strs)

2020-07-23 21:44:23 186

原创 力扣面试题库之字符串转换整数Java实现

来咯来咯,题目真的来咯解题思路:乾坤大挪移之循环迭代之硬解解题方向应该不用说了吧,就普通的方法也就是迭代循环遍历了。就是遍历字符串中每一个,一开始遍历直到不为空格为止开始其操作,如果有正负号,做个标记,之后判断是否为数字,不为数字则直接结束,为数字则加入字符串Stringbuilder中。至于代码中转换成整形放异常处理中就是因为大整数转换整形会报错哦,直接捕获异常返回int型的最大范围。代码class Solution { public int myAtoi(String str

2020-07-21 21:37:28 146

原创 力扣面试题库之整数反转Java实现

题目解题思路: 俗称硬解在看到题目,我竟然不是想着去找他的反转的规律,而是直接通过遍历反转。想法有点硬,拉胯货色,不过能解出来就是好解。。就是先判断数字是否带符号,也就是判断是否为负数,如果是负数,则倒转遍历转成字符串类型的数字遍历到索引为1,如果不是负数,则遍历到0.其中注意的是,如果一开始是0,则不去操作,直到出现不为0的值开始进行操作,具体操作见代码。还有看了代码不要问为什么要放异常里,该死的力扣提交会输入大整数进行测试,如果溢出则返回0,所以放异常里捕获,大整数转为int型会报错。

2020-07-21 20:52:49 267

原创 力扣面试题库之最长回文子串

题目是这个解题思路–emmmmmmm,没有思路~~用了暴力解法。。方法有点垃圾,就不解释了。纯暴力。。。代码是这class Solution { public String longestPalindrome(String s) { if(s.length()==0||s==null){ return ""; } int count=0; String ss=""; String f

2020-07-21 17:08:17 124

原创 力扣面试题库之无重复字符的最长子串Java实现

题目来啦~~解题思路:迭代由题目得到,需要一个最长的没有重复的字符的长度首先先判断字符串是否为空或者长度为0,则返回0使用迭代的话,应该都能想到使用两层循环去遍历已字符串中每一个字符开头的最长的无重复字符的子串的长度。Java中可利用map中的containKey()方法去判断是否有重复,存在即重复。代码代码class Solution { public int lengthOfLongestSubstring(String s) { if(s.length()=

2020-07-19 11:26:48 231

原创 力扣面试题库之两数相加Java实现

题目题目题目在这解题思路:迭代由题目得,每次对于两个节点相加都需要先判断是否前一位有进位,有则两个节点的和加上进位,无则只加两个节点的和。进位默认初始值为0.所以用迭代循环去做,当每次其中有一个节点不为空时,或者是都为空但是前一个有进位,则都要进入循环。循环中获取两个节点的值,如果节点为空,则获取0,然后得到节点值相加在加上进位得到总和,记录进位赋值成中和取整10,然后就是创建一个节点,节点值为总和求余10,每次做完判断2个节点是否为空,不为空,则让它等于它的下一个节点。ok,结束了,上代

2020-07-16 10:55:13 386

原创 力扣面试题库之二叉树的最大深度Java实现

上题目解题思路:递归一见到题目就应该想到应对每一层的节点进行判断首先,根节点是否为空,为空深度就是0,则返回0如果不为空,则调用函数传入参数为该节点的左节点的值和调用函数传入参数为该节点的右节点的值,去进行比较,去更大的那个值在加上他该节点的深度,也就是1,所以返回更大的值+1即可。好了,上代码public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(in

2020-07-15 17:35:50 137

原创 力扣面试题库之两数之和Java实现

废话不多说,上题目解题思路 :迭代由题目得,在数组中得到两个数使得num1+num2=target给定值,那就利用数学思维,转化一下公式,变成找到两个数使得num1=target-num2,这样子去迭代寻找具体迭代过程就是:循环遍历数组中每一个值到倒数第二个为止,对每一个在去循环和它之后的每一个进行判断上述中的公式,如相等则把两个数赋值给一个长度为2的数组中,最后返回该数组。好了,思路就到这了,上代码class Solution { public int[] twoSum(int[

2020-07-14 17:25:49 188

原创 力扣面试题库之对称二叉树Java实现

废话不多说,直接上题目解题思路:递归首先题目说得很清楚了,判断一个二叉树是否堆成就是判断一个是否是镜像对称,在换句话说,就是对二叉树的左边和右边是否可以“对半折叠”。故采用递归的话,就是先判断根节点是否为空,为空则返回true,不为空的话,判断该二叉树是否对称就变成了判断该节点的左右子数是分对称,返回判断的值即可。然后又该如何判断左右子树是否对称呢,首先老样子,先判断传入的左右节点是否为空,都为空那就肯定对称,返回true,如果只有一个为空或者是左右节点的数据值不相等则代表不对称,返回false

2020-07-14 16:09:15 230

原创 阿里云对象存储OSS之基本使用

一、对象存储OSS为了解决海量数据存储与弹性扩容,采用云存储的解决方案- 阿里云OSS。二、开通“对象存储OSS”服务(1)申请阿里云账号网址:https://www.aliyun.com/(2)实名认证(推荐注册时使用支付宝,支付宝基本上都已经进行过实名认证了)(3)开通“对象存储OSS”服务如果是第一次使用的话,需要先开通oss服务,如果已经开通过的可以直接使用。开通OSS(4)进入管理控制台2、创建Bucket选择:标准存储、公共读、不开通3、上传文件上传你想

2020-07-11 11:31:52 424

原创 实训项目:基于Springboot框架开发的知识库系统

前言最近有一个企业实训课,有安排一个基于springboot框架去开发一个知识库系统的项目,故去开发了一个系统。源码地址github:https://github.com/linwb-0924/KnowleageSystem技术栈sprintboot框架thymealeaf+layui+semanticmybatisplusmysql运行要求在配置文件中修改相关数据源配置即可,无需自己建表界面截图:前台登录前台注册前台首页前台分类页文章详情页后台登录页后

2020-07-07 19:25:48 2532

原创 MybatisPlus之条件构造器

一、wapper介绍Wrapper : 条件构造抽象类,最顶端父类AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件QueryWrapper : Entity 对象封装操作类,不是用lambda语法UpdateWrapper : Update 条件封装,用于Entity对象更新操作AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。LambdaQueryWrapper :看

2020-07-06 11:02:50 301

原创 MybatisPlus之CRUD接口

一、insert1、插入操作@RunWith(SpringRunner.class)@SpringBootTestpublic class CRUDTests { @Autowired private UserMapper userMapper; @Test public void testInsert(){ User user = new User(); user.setName("Helen"); user.setA

2020-07-06 10:31:28 287

原创 MybatisPlus之简介及入门快速开始

一、简介官网:http://mp.baomidou.com/参考教程:http://mp.baomidou.com/guide/MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。二、特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅

2020-07-06 10:10:42 192 1

原创 Redis之五大数据类型及常用操作

Redis概述Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。数据类型数据类型可以存储的值STRING字符串、整数或者浮点数LIST列表SET无序集合HASH包含键值对的无序散列表ZSET有序集合STR

2020-06-19 20:57:55 152

酒店管理系统.zip

基于springboot+mybatis开发的酒店管理系统,前端采用thymeleaf模板引擎,bootstrap+sementic框架编写,总体技术栈还包括mail邮件发送,cache数据缓存,rabbitmq消息中间件实现队列监听。。。。

2020-06-14

空空如也

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

TA关注的人

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