自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis的缓存雪崩以及缓存穿刺

但是缓存时间的应用也不是特别好,因为对于这个缓存时间的应用实际上还是比较多的,比如在对于验证码验证登陆的情况,我们平常使用的验证码的登录也是需要有一定的失效时间的,如果设置了比较长的缓存时间可能就会导致没有办法达到需要使用的效果。但是如果把这个设置在传统的数据里的话,肯定是就是需要自己来判断过期,这样更麻烦并且性能要差很多。比如查询的数据库id不能小于0、传入的邮箱格式不对的时候直接返回错误消息给客户端等等。这就好比雪崩一样,摧枯拉朽之势,数据库的压力可想而知,可能直接就被这么多请求弄宕机了。...

2022-07-25 10:49:22 346 1

原创 jvm知识梳理

总的东西就放一张图具体的内容几个主要的要点:gc回收主要流程垃圾收集器的两个主要,g1cms收集器的介绍类加载的主要过程

2022-04-26 16:51:23 169

原创 关于算法题旋转数组的最小数字的理解

剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [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首先对于这道题我有一些疑问,确实是不大明白这道题是什么意思

2022-02-13 19:48:09 161

原创 在HotSpot虚拟机测试中一个有意思的实例

操作系统分配给每个进程的内存是有限制的,譬如32位Windows的单个进程最大内存限制为2GB。HotSpot虚拟机提供了参数可以控制Java堆和方法区这两部分的内存的最大值,那剩余的内存即为2GB(操作系统限制)减去最大堆容量,再减去最大方法区容量,由于程序计数器消耗内存很小,可以忽略掉,如果把直接内存和虚拟机进程本身耗费的内存也去掉的话,剩下的内存就由虚拟机栈和本地方法栈来分配了。因此为每个线程分配到的栈内存越大,可以建立的线程数量自然就越少,建立线程时就越容易把剩下的内存耗尽*** VM

2022-01-18 23:48:25 972

原创 快排的链表法

快速排序的链表方法public class Test { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {5,7,9,2,3,1,5,7,11,23,42,11,22}; Node link = null; for(int i = 0; i < arr.length; i++) { Node x =

2022-01-18 23:41:31 628

原创 关于算法题移除链表元素的思考

移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点在这道题中我的思路比较清晰没有问题,但是在编写过程中出现了一些问题class Solution { public ListNode removeElements(ListNode head, int val) { while(head!=null&&head.val==val){

2022-01-18 22:34:50 161

原创 链表翻转的思考

如图所示使用三个节点来表示这一部分的操作第一个节点是用来最初的指向遍历的第二个节点用来指向接下来的那个节点以防因为转向而产生了指向丢失的错误。第三个节点用来指向在第一个节点改变完这一个节点之后,第一个节点转去下一个时,这个节点也会出现没有 被指向的问题。最后根据这些思路写出翻转链表的操作class Solution { public ListNode reverseList(ListNode head) { ListNode l1 = head; Lis.

2022-01-17 21:21:45 152

原创 关于算法题最小路径和的理解

最小路径和给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.

2022-01-17 21:12:39 95

原创 关于排序数组中两个数字之和算法题的理解

剑指 Offer II 006. 排序数组中两个数字之和给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 ,所以答案数组应当满足 0 <= answer[0] < answer[1] < numbers.length 。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。设置左右指针,相加小于目标

2022-01-17 21:07:27 104

原创 平衡二叉树的转化过程

对于平衡二叉树的转化过程进行一些学习首先是来了一个新节点破坏了一颗平衡二叉树的平衡时我们需要判断这颗子数的位置如果这个子数是根节点的左子树的左子数的子数出现了问题就称为LL型按照那个短的节点的父节点作为根节点,判断其新节点在什么位置分别分为LL、LR、RR、RL四种类型,而刚好是作为镜像的类型,我们只需要学习其中两种就行第一步先把第一个L变为根节点,父节点与右孩子进行交换第二部把第二个的R作为新节点插入变化后的树第一步吧第一个L与其右孩子进行对调,也就第一个L下放,第二个R上移,之后就变成

2022-01-17 21:04:51 217

原创 接口和抽象类的区别

接口和抽象类的区别:先说他们的相同点:两者都不能被直接实例,都是先先需要一个类进行继承或者实现后才能够被构造出来。不同:1、一个接口实现类可以出现多个接口,但是一个子类只能继承一个父类2、接口只提供一个口,仅仅用以得到参数和返回值,侧重于封装。而抽象类可以有定义与实现,方法可在抽象类中实现。3、接口也是一个类,但是他的方法都是没有实现的,所以在调用它的时候,会默认调用他的子类也就是使用了这个接口的对象的类的方法。...

2022-01-17 20:47:32 189

原创 关于lambda表达式的学习

在我们使用java编程时,有一些简单的函数需要调用时,是需要写一串的pibluc之类的声明式子的,有的时候一些简单的函数调用不得不写,这个时候我们可以使用lambda表达式来简化我们的代码。但是这样的代码必须有能简单概括的特性。例如我们需要一个能直接返回两个数组的长度之差的函数之时可以表示为:( String first , String second )- > first . lengthO - second . lengthO如果代码要完成的计算无法放在一个表达式中, 就可以像写方法一样 ,

2022-01-17 20:41:22 318

原创 关于算法题 只出现一次的数字 的理解

剑指 Offer II 004. 只出现一次的数字给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。没啥好说的,又是一次关于hashmap的应用题。直接先上算法,然后分析我的收获class Solution { public int singleNumber(int[] nums) {HashMap<Integer,Integer> map = new HashMap<>();

2022-01-16 22:38:34 272

原创 抛出异常在返回上的奇特操作

抛出异常在返回上的奇特操作在try、catch、finally中有一个神奇的地方,如果在捕获异常时设置了返回一个值,但是在最后的finally没有设置返回值,就会直接返回在捕获时的那个结果,但是同时,finally也会执行。只有当这两个同时有写上返回值的时候,才会返回finally里的返回值。即使5被返回了,finally里面还是会被执行的这种5被返回了,只有在,catch里面有返回,而finally里面没有返回的情况下,会出现。如果再加上finally里面再加上一个return,最后还是返回f

2022-01-16 22:34:01 240

原创 关于算法题链表中环的入口节的理解分析

给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/c32eOV

2022-01-16 22:30:00 81

原创 关于求最长子串长度的理解

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列

2022-01-15 22:43:25 790

原创 主方法执行过程 关于其他方法的执行过程中内存的使用的复习

值传递和引用传递,都传递的是地址,值传递的是值在堆中的地址,而引用传递在java中是没有的,传递的是在栈中的地址,因为栈中的地址实际上不是值真正的地址,所以传递所代表的类型实际上是引用的,所以传递栈中的地址,被称为值传递。而在复习过程中,有一段关于一个方法对两个变量进行交换的操作,而这个操作,是作为值传递存在的,在这种情况下,进行对传递这一操作进行了重新复习将这样的一个过程的实际在栈和堆的内存操作进行分析,得到了这样的一篇流程图用来对自己的复习进行一个小总结...

2022-01-15 22:32:03 100

原创 关于类构造器的初始化顺序的复习

静态大于非静态。初始化块大于构造方法。但是静态的初始化块,只执行一次。所有的静态量只属于类的第一个对象,包括域的值。对于域来说,原本没有加这个静态时或者说在第一次创建过后,例如下面的这个例子,往后的Person类对象的child就会是一个已经被声明了的变量,这里的static ,修饰的东西,只属于类,不属于类的对象。对象的初始化顺序,会先运行初始化块、初始化块的运行顺序大于构造方法右边的注释是问输出的顺序,主方法为new了a,b两个对象。在学习完了各种框架,学习编写了各种框架以及项目之后,在回过头来

2022-01-15 22:23:02 135

原创 关于算法题寻找递增的三元子序列的理解

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/increasing-triplet-subsequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载

2022-01-12 21:51:14 180

原创 关于两数之和2算法题的理解

给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。来源:力扣(LeetCode)链接:https://leetcod

2022-01-11 19:26:16 306

原创 关于算法题相交链表的理解

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转

2022-01-11 19:15:32 508

原创 最小元素的栈

两道简单题:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。relea

2022-01-09 19:56:52 3289

原创 关于算法题格雷编码的理解

n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)第一个整数是 0一个整数在序列中出现 不超过一次每对 相邻 整数的二进制表示 恰好一位不同 ,且第一个 和 最后一个 整数的二进制表示 恰好一位不同给你一个整数 n ,返回任一有效的 n 位格雷码序列 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gray-code著作权归领扣网络所有。商业转载请联系官方

2022-01-08 20:11:02 469

原创 关于算法有效括号字符串的理解

如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0depth© = 0,其中 C 是单个字符的字符

2022-01-07 21:31:28 166

原创 关于环形链表算法题的理解

给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。在力扣上看到这道题的时候,我读了好几遍题目确实没看到这个pos是什么意思…想了很久没明白

2022-01-07 21:26:36 356

原创 properties的装入

properties的装入分析我认为有两种方式,一种是从InputStream中获取分析,另一种是直接的properties文件获取。在对InputStream获取时,则是需要使用load方法。在框架的编写中,如果需要加入properties作为静态资源的使用,那么我们则需要加入一些转化,以及一个转入properties的语句。首先是获取外部静态资源,使用InputStream来获取。获取完了就可以使用先前编写的PropertiesBuilder来进行对InputStream进行转化。在获取了这.

2022-01-05 15:31:30 240

原创 对于注解的理解

我们在使用代理,对这个类进行获取信息之时,我们可以通过注释,对其进行一定信息的保留,在对这些特意处理的信息用以特定的处理。Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容。所以我们在编写框架之时,我们使用注解以对其进行特别..

2022-01-04 22:28:46 435

原创 仿写Mybatis动态代理

这一部分用以复习动态代理的相关知识。关于代理这一部分的应用,之前在一些博客之中了解过,当时有一个例子非常生动就是关于明星已经其经纪人的关系,就正好对应了代理以及其原类的关系。关于框架里的代理,我们知道,我们需要获取与数据之间的联系,那么这个时候我们就需要编写关于这个代理的功能就是:获取相对应需要的参数,使用连接数据库的那个方法进行连接获取。首先,使用的是动态代理,那么自然是需要有映射相关 的内容,那么我们自然就是得使用InvocationHandler这一接口...

2022-01-04 22:20:18 493

原创 仿写mybatis处理数据

在获取数据库连接之后,我们就需要开始对返回的数据进行判断处理了。首先,我们可以先编写关于增删改的操作方法。我们在之前的连接数据库的不需要返回值的那一方法中,我们需要使用的参数只用一个连接信息以及参数状态两个内容,所以我们这个时候只需要处理这两个内容即可。conn即是获取数据库连接之后返回的一个实例,根据这个实例,我们可以获得一个连接,然后把sql放入其中,根据返回的结果来判断是否成功的操作了数据库。操作完成后,需要进行对数据的断开连接,再次使用工具类里已经写好的方法对其进行操作。然后就是查询的操

2022-01-04 22:10:10 448

原创 关于算法题判断回文字符串2的理解

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。对于这道题,我们需要首先理解回文字符串的意思,就是遍历每个字符,与length-1-i的是否相等,由于限定了一个的误差范围,就肯定是前面或者后面的下一个与之相等,但是两种情况不一定我们需要分开来分别讨论。按照这个思路我们可以写出:class Solution { public boolean validPalindrome(String s) { int left = 0, right = s.length()

2022-01-02 21:17:52 196

原创 关于算法题三数之和的一些理解

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum这一道题咋一看起来比较简单,实际上我操作起来用了挺久的时间。` if接下来就是重头戏了,根据上一次学习到的map操作,我的想法就是一样的使用map来进行判别。进行遍历,只要有了相加为0的数字就取出来对其进行判断。我最开始的

2022-01-01 17:01:15 250

原创 关于算法题一手顺子的理解

Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hand-of-straights拿到这道题,我首先的想法就是先思考我们正常对于这

2022-01-01 16:46:50 352

原创 仿写mybatis连接数据库JDBC

这一篇的复习是对数据数的连接的复习:数据库的连接,mybatis的数据库的信息一般是通过properties文件的扫描来获取的,由于那么对于获取的,但是在编写框架的第一个阶段编写连接数据库的操作以及测试之时,我们可以先使用写死的数据来进行操作,在等到了完成每一部分的编写,在最后通过junit进行测试的时候再进行添加扫描的操作。数据的连接我们需要使用到一个工具类DriverManager,在连接之时我们需要使用到的是getConnection这个方法。我们可以看到连接数据库需要有地址,用户名以及密码这

2021-12-29 21:42:11 423

原创 仿写mybatis框架梳理

最近有在仿写mybatis的框架的学习,在仿写的过程中收获了一些想法与知识,在过完了期末考试之后,进行重新梳理整理,大概是对于这些知识的一些复习吧。首先是对于我理解的mymatis的一个结构梳理:这只是我对于这个框架的一个简单的理解,后面将分别对这些步骤进行解析。...

2021-12-29 21:28:45 188

原创 对于两数相加链表算法的理解

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。对于这道题,思考起来就是先按正常人的思路,各个位数相加,多余的位数看前一位的是否有进位,由于题目要求了是逆序排列的,所以我们可以直接计算。同时由于是链表的计算,对于尾部插入的安排就使难度增加了。代码为: int h = 0; ListNode sum = new ListNode()

2021-12-28 22:10:25 225

原创 对求最长字数组之和的理解

首先是对题目的描述:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 :输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray上题目解 if(nums.length == 0)ret

2021-12-27 22:05:41 488

原创 部署微信小程序

上接前文 《在编写微信小程序时遇到的一些问题(一)》https://blog.csdn.net/abchhhxz/article/details/119179874在部署微信小程序的时候需要注意一些问题:1、后台的部署首先是后台的前端的部署注意:对于一个微信小程序来说,可以分为两个板块,前台是给用户观看的页面,就是日常我们看到的那个用户界面,另外一块就是由后台服务人员管理的后台页面,这两个板块分属不同的代码块,两个台都有属于自己的前后端代码,而这里的前后端就是平常我们所说的前后端的概念了,前端负责页

2021-09-12 18:12:58 4768

原创 rbac简单梳理

首先是对niua框架的一次梳理,首先是日常的下拉代码之后进行操作。启动时需要进入easy-backend-ui这个文件内,利用cmd窗口输入指令cnpm run serve (淘宝镜像服务启动)npm run serve 普通启动niua-common 公共类core 核心这两个是为其他模块做服务用的gen代码生成quartz定时任务框架@SpringBootApplication启动类的注解前后端的框架时分离的后端的端口是9527前端的是8080RBAC结构示意图:注意表内数据不

2021-09-12 16:28:58 159

原创 git操作总结

首先,先梳理一下我对git的一些认识笔记。git,是为了方便多人协作项目而使用的一门语言。git的初始化,$ssh-keygen -t rsa -C “youremail@example.com”git clone 获取克隆地址。公钥就是进入我的门户的钥匙有了这个别人能更新和获取我的账户里的东西。git statusgit add添加文件git commit -mgit push上传文件git pull获取文件这样子可以让多个人都同时获取这个账户里的东西两个端的操作,是基于某一个

2021-09-12 16:10:53 150

原创 Vmware安装虚拟机Linux

近期我安装了Linux虚拟机的,在进行内容的梳理。首先,安装Vmware。这一步没什么好说的,直接去官网找版本下载就是了。个人使用,建议下载免费的VMware Workstation 。然后是下载Linux的镜像资源按照自己的需求找需要的版本,我还是学生学习使用,就去下了个centos的镜像版本。最后就是安装LInux了。主要由两种方法,一种是简单的,一步到位的简易安装,我们是学习使用的就用下面的那个方法。一直点下一步,这里需要设计一个名称,分配想要的大小在此需要配置一个东西,由

2021-09-12 15:57:02 54

空空如也

空空如也

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

TA关注的人

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