自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA并发4

1.懒汉式,内部类,jvm保证了类加载只加载一次,所以内部类也只加载一次。有问题,不能保证原子性,只能保证可见性和有序性,这里有原子性问题。5.05.05-设计模式-两阶段终止-volatile。之前用isinterrupted实现两阶段终止!13.05.13-volidate-原理-保证可见性。16.05.16-volidate-dcl-问题分析。17.05.17-volidate-dcl-问题纠正。18.05.18-volidate-dcl-问题解决。

2024-02-08 12:26:39 1186

原创 代码随想录算法训练营第十七天|110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

递归+前序+回溯,采用两个集合来进行递归,这种类似题,中间集合用来收集中间结点,当遍历到根节点的时候,进行收集,需要用前序,记得回溯的这个流程。本题采用递归+后序解法,先算左右子树深度,深度差绝对值大于1就不是平衡二叉树,每次取左右子树最大深度。这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。本题采用递归+后序计算和,上一道题是求路径,需要前序,这一题求和。注意做左叶子就是在遍历到左根节点的时候,对值进行一个相加。257. 二叉树的所有路径。

2024-01-30 23:00:48 426 1

原创 代码随想录算法训练营第十五天|102. 二叉树的层序遍历 226. 翻转二叉树 101. 对称二叉树

本题采用递归+后序遍历解法,只能用后序,左右子树同时比较,注意左右比较的节点,比如左节点的左节点与右节点的右节点比,注意物。本题采用递归+队列解法,每次就存入该层所有节点,然后将该层节点加进答案中,再向队列中加节点的字节点,记住要利用好队列头。本题采用递归解法,每次就是对左右节点进行交换,直接递归,比较简单。

2024-01-30 22:30:29 1056 1

原创 代码随想录算法训练营第十六天| 104.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

本题采用递归+后序遍历解法,只能用后序,左右子树同时比较,注意左右比较的节点,比如左节点的左节点与右节点的右节点比,注意。本题采用递归+队列解法,每次就存入该层所有节点,然后将该层节点加进答案中,再向队列中加节点的字节点,记住要利用好队列头。本题采用递归解法,每次就是对左右节点进行交换,直接递归,比较简单。102. 二叉树的层序遍历。226. 翻转二叉树。101. 对称二叉树。

2023-12-25 23:30:35 734 1

原创 代码随想录算法训练营第十二天|144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历

第二种解法:迭代遍历法,左右中的顺序,与前序遍历基本一样,除了存入的时候是左右的顺序存储,然后实现输出的结果是中右左的效果,最后再反转集合就好。第二种解法:迭代遍历法,同样是中左右的顺序,用一个栈来维护,存入栈和出栈的顺序要记住。记得一开始就返回中间节点,存右边,再存左边,达到出栈是先出左边再出右边的效果。第一种解法:递归遍历法,左中右的顺序,与前序遍历不同的只是顺序而已。第一种解法:递归遍历法,左右中的顺序,与前序遍历不同的只是顺序而已。第二种解法:迭代遍历法,左中右的顺序,不同于前序遍历和后序遍历。

2023-12-25 23:17:40 53 1

原创 代码随想录算法训练营第十一天|239. 滑动窗口最大值 347.前 K 个高频元素

【代码】代码随想录算法训练营第十一天|239. 滑动窗口最大值 347.前 K 个高频元素。

2023-12-11 22:10:07 116 1

原创 JAVA并发1

(记住这里会清除打断标记,就是让isinterrupted()=false,从而让线程继续运行,所以要重新打断一次让isinterrupted()=true。(老师说的是文件io时,会导致系统调用,那么java线程会阻塞,直到系统执行io完成,系统会唤醒java线程,在这过程,java线程只能阻塞等到io完成)具体依赖于操作系统的任务调度器,就是当你让出的时候,可能此时任务调度器没有其他需要执行的,就还是你执行。如果需要那么强的线程优先级区分,那你同步不就好了,代码从上而下运行不比你优先级来的简单。

2023-12-10 15:29:18 583 1

原创 代码随想录算法训练营第十天|20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。遍历字符串数组遇到数字存入栈中,遇到运算符从栈中取出两个元素算出结果再插入栈中。每次遇到左括号就去栈里面存入它的右括号,遇到右括号就去栈里面找。遍历字符串跟栈内元素比较,一样弹出栈顶元素,不一样入栈。

2023-12-09 21:40:33 65

原创 代码随想录算法训练营第九天|232.用栈实现队列 225. 用队列实现栈

2.pop:这里要实现栈的pop功能,队列是先进先出,栈是后进后出,那么就把队列尾元素的前面所有元素一个个移除再放到队列尾,最后队列头的那个就是之前队列尾的元素也是栈顶元素了,再移出就好。(如果只有一个栈一,pop出来的元素是栈一栈顶的元素,相当于队列的队列尾元素,加上栈二,负负得正,就相当于栈二的栈顶元素了,pop出来的就是队列的队列头元素了)这里我们使用Deque来实现栈,一个队列就好,队列特点是先进先出,栈特点是先进后出。2.pop:先检查栈二有没有元素,有元素就直接返回栈二,用pop。

2023-12-08 19:49:35 87

原创 代码随想录算法训练营第八天|字符串总结 双指针回顾

今天主要任务为粗略了解KMP算法,对字符串进行总结和回顾双指针。

2023-12-08 15:23:52 104

原创 代码随想录算法训练营第七天|344. 反转字符串 541. 反转字符串II 替换数字 151.翻转字符串里的单词 右旋字符串

要是如果i+k

2023-12-06 21:54:56 154 1

原创 代码随想录算法训练营第六天|454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

4.轮到left和right,先判断三个指针所在的值的和想加是否是我们想要的值,如果是,先记录结果,然后再对两个指针进行去重,再移动。5.轮到left和right,先判断三个指针所在的值的和想加是否是我们想要的值,如果是,先记录结果,然后再对两个指针进行去重,再移动。和前面三数之和其实流程差不多,多了个循环,加上剪枝和去重的细节要注意,还有和不是0,了,和是target了。2.存的时候要是发现已经有这个值了,就在原来的值上+1,要是没有这个值,就初始化赋值为0再加1也就是1。

2023-12-05 22:01:59 63

原创 代码随想录算法训练营第五天|242.有效的字母异位词 349. 两个数组的交集 202.快乐数 1. 两数之和

这个数在逐渐求平方和的时候,可能会出现无限循环的情况,所以我们用hashset来存储过程中出现的结果,直到结果为1或者是出现了之前出现过的数(无限循环),再判断最后的值是否与1相等,相等证明是快乐数,不相等证明不是。初始化两个hashset分别为set1和set2,把第一个数组的值放进去set1,然后遍历第二个数组,逐一与set1中的值比较,如果既存在于set1又存在于第二个数组,就放入set2。分别用两个数组去存,分别都加,也就是将每个元素所对应的数组位上的数值++

2023-12-04 15:32:48 148

原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题02.07.链表相交 142.环形链表II

简单思路(经典题):快指针每次走两步,慢指针每次走一步,那么两个指针肯定会遇到,遇到后找到交点,根据数学公式,在交点处放一个指针,和头指针同时走,遇到的点就是环的入口,再返回这个点作为结果。初始化快慢指针(或者可以说先后指针),两个指针之间间距N个位置,同时移动,直到快指针移动到空,慢指针所在的位置就是要删除元素的前一个位置,然后进行删除。然后每次就将下一个和下一个的下一个的位置对调,指针方向改变,这里需要用两个个临时指针来存储第一个和第三个节点的位置,(看代码更清晰)本题采用快慢指针的思路。

2023-12-02 21:59:19 47

原创 代码随想录算法训练营第三天|203.移除链表元素 707.设计链表 206.反转链表

第二种情况:此时头结点已经不是我们要移除的元素,初始化移动指针cur向后走,如果不是仍有下一个节点且下一个节点值是我们要移除的元素,则进行删除,并遍历到能够将cur放在一个不是需要被移除的元素上,记得每次循环将cur向后移动。(个人小总结:查询,移动指针需要到达要求位置上,增加删除需要移动指针到达要去位置前,但是这三者移动指针的起步都是一样的,都是已经被排除是目标元素的位置,本题是虚拟头结点所在位置,可以结合前面题目再进行总结)2. 如果 index 等于链表的长度,则说明是新插入的节点为链表的尾结点。

2023-12-01 22:24:37 113 1

原创 代码随想录算法训练营第二天|977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵

3.此时结束指针不懂,在while循环中起点指针不断接近结束指针,找到满足条件,但是区间段的长度最小,找到最小的那个值。9.走完一圈了,start得加1,就是新的一圈起始位置加1了,新的起始位置是(1,1)不再是(0,0)走到loop的位置(我们一开始初始化走的位置是0,loop现在是1,还是符合左闭右开的原则的)走到loop的位置(我们一开始初始化走的位置是0,loop现在是1,还是符合左闭右开的原则的)3.该数组是从小到大,所以最左侧和最右侧的平方才是最大的,所以要从新数组的最左边插入。

2023-11-30 22:25:53 192

原创 代码随想录算法训练营第一天|704. 二分查找、27. 移除元素

算法训练营第一天内容

2023-11-29 22:23:52 40 1

原创 常用API

浅克隆是指创建一个新对象,该对象的属性与原始对象相同。然而,如果原始对象的属性是引用类型,则新对象与原始对象将共享相同的引用。深克隆是指创建一个新对象,该对象的属性与原始对象相同,但是新对象和原始对象的引用类型属性指向的是不同的对象。深克隆会递归地复制对象的所有引用类型属性,确保新对象与原始对象相互独立,修改一个对象不会影响另一个对象。(问题就出在这个基准数归位上,如果start先动,那么end最后指向的那个数据是一定比6大的,那边归位的时候必须往右归位,所以要end先动)

2023-07-28 22:47:58 63 1

原创 Java入门基础视频教程1 黑马程序员

Java课程简介Java语言概述Java环境搭建,JDK安装,常用命令Java入门程序Java入门程序:常见问题补充知识:Java执行原理、bug介绍7:JDK组成、跨平台原理8.JDK安装后Path和JAVA_HOME环境变量9:IDEA开发工具:简介、下载、安装10:IDEA开发工具:开发第一个程序11:IDEA开发工具:字体、快捷键、其他操作导入其他模块时先创建一个同名模块,然后导入把文件复制过来删除模块,最好的方法就是先remove掉模块再去文件夹里面直接删除掉模块文件。

2023-07-28 22:44:09 110 1

原创 Redis

12.Redis-12-在JAVA中操作Redis_使用Spring Data Redis操作Redis,数据类型操作1。13.Redis-13-在Java中操作Redis,使用Spring Data Redis操作Redis_数据类型操作2。14.Redis-14在Java中操作Redis-使用Spring Data Redis操作Redis_通用操作。10.Redis-10-在JAVA中操作Redis,使用Jedis操作Redis。redis-server要先启动,然后再启动redis-cli。

2023-04-10 21:00:55 72

原创 黑马程序员-springboot-开发实用篇

黑马springboot实用开发篇章

2023-01-16 21:18:37 310 1

空空如也

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

TA关注的人

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