- 博客(83)
- 收藏
- 关注
原创 DAY32-动态规划
LeetCode746. 使用最小花费爬楼梯。LeetCode509. 斐波那契数。LeetCode509. 斐波那契数。LeetCode70. 爬楼梯。
2024-08-04 14:58:24
153
原创 DAY30-贪心(区间算法)
LeetCode452. 用最少数量的箭引爆气球。LeetCode435. 无重叠区间。LeetCode763.划分字母区间。重点:维护一个最右区间长度。
2024-08-01 15:53:10
299
原创 DAY28-贪心
LeetCode1005.K次取反后最大化的数组和。LeetCode122.买卖股票的最佳时机II。LeetCode45.跳跃游戏II。LeetCode55. 跳跃游戏。
2024-07-31 16:50:18
202
原创 Day29-贪心算法
LeetCode134. 加油站LeetCode134. 加油站思路:主要是在遍历的时候计算局部剩余油量总和,如果小于0则说明无法走到需要更新起始点。LeetCode135. 分发糖果思路:主要是利用两次遍历,第一次遍历的时候需要给数组里的每个位置都填上值。第二次反向遍历的时候在根据(该位置的最大值,和后一位+1来判断)
2024-07-31 16:42:30
274
原创 Day25-回溯
LeetCode491.递增子序列。LeetCode491.递增子序列。LeetCode47.全排列 II。LeetCode46.全排列。Leetcode51.N皇后。
2024-07-28 11:28:10
171
原创 Springboot-websocket实现及底层原理
Spring Boot 中的 WebSocket 依赖于 Spring模块,使用了 Reactor Netty 库来实现底层的 WebSocket 通信。
2024-07-27 19:10:59
2771
原创 JUC并行开发03-共享模式与异步模式
如果需要在多个类之间使用GuardedObject对象,作为参数传递不是很方便,因此设计一个用来解耦的中间类,这样不仅能够解耦【结果等待者】和【结果生产者】,还能够同时支持多个任务的管理。每个Java对象都可以关联一个Monitor对象,如果使用synchronized给对象上锁(重量级)之后,该对象头的MarkWord中就被设置指向Monitor对象的指针。图中Futures就好比居民楼一层的信箱(每个信箱有房间编号),左侧的t0,t2,t4就好比等待邮件的居民,右侧的t1,t3,t5就好比邮递员。
2024-07-24 14:07:30
706
原创 JUC并发编程02-常见方法
默认情况下,Java进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其他非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。
2024-07-21 14:55:40
551
原创 JUC并发编程01-基础概念
当上下文切换发生时,需要由操作学习通保持当前线程的状态,并恢复另一个线程的状态,Java中对应的概念就是程序计数器,它的作用时记住下一条jvm指令的执行地址,是线程私有的。top命令 查看进程信息(每隔一段时间重新采集) top -H -p 4262 查看java进程中的线程信息。(微观串行,宏观并行)中,线程作为最小调度单位,进程作为资源分配的最小单位,可以说进程是线程的一个容器。由于一些原因导致cpu不再执行当前的线程,转而执行另一个线程的代码。一个进程内可以有多个线程,一个线程就是一个指令流。
2024-07-20 19:38:12
1069
原创 JAVA线程基础-线程池
避免使用Executors创建线程池,主要是避免使用其中的默认实现。它只会用唯一的工作线程来执行任 务,保证所有任务按 照指定顺序(FIFO)执行。比较常见的有4个,用的最多是。
2024-07-13 16:45:18
1054
原创 DAY11-栈和队列
LeetCode150. 逆波兰表达式求值。LeetCode347.前 K 个高频元素。LeetCode239. 滑动窗口最大值。LeetCode239. 滑动窗口最大值。
2024-07-13 13:41:38
212
原创 Java基础-多线程并发
AQS全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架, 它是构建锁或者其他同步组件的基础框架。AQS与Synchronized的区别AQS常见的实现类ReentrantLock 阻塞式锁Semaphore 信号量CountDownLatch 倒计时锁工作机制线程0来了以后,去尝试修改state属性,如果发现state属性是0,就修改state状态为1,表示线程0抢锁成功。
2024-07-12 23:39:22
2255
原创 DAY10-栈与队列
LeetCode1047. 删除字符串中的所有相邻重复项。LeetCode225. 用队列实现栈。LeetCode232.用栈实现队列。LeetCode225. 用队列实现栈。LeetCode20. 有效的括号。
2024-07-12 14:09:39
351
原创 DAY7-哈希表
LeetCode383. 赎金信LeetCode454.四数相加IILeetCode383. 赎金信LeetCode15. 三数之和方法一(暴力法):但当数据量非常大的时候会超时。方法二(双指针法):固定i,再遍历j,k(),当遇到重复数字可跳过(
2024-07-09 15:22:47
265
原创 Java多线程相关基础知识
Q:进程和线程的区别?Q:进程和线程的区别?进程是一个在内存中运行的应用程序。线程是进程中的一个执行任务(控制单元),负责当前进程中程序的执行。进程与线程的区别总结:进程是操作系统资源分配的基本单位,而线程是CPU任务调度和执行的基本单位。:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。:一个进程可以有多个线程,线程是进程的一部分。
2024-07-08 23:01:59
1231
原创 DAY6-哈希表
LeetCode349. 两个数组的交集。LeetCode349. 两个数组的交集。LeetCode242.有效的字母异位词。LeetCode202. 快乐数。LeetCode1. 两数之和。
2024-07-08 14:08:53
224
原创 Java集合
红黑树(Red Black Tree):是一种自平衡的二叉搜索树(BST),也叫平衡二叉B树。节点要么是红色,要么是黑色。根节点是黑色。叶子节点都是黑色的空节点。红黑树中红色节点的子节点都是黑色。从任一节点到叶子节点的所有路径都包含相同数目的黑色节点。在添加或删除节点的时候,如果不符合这些性质会发生旋转,以达到所有的性质,保证红黑树的平衡。
2024-07-06 20:14:40
1281
原创 DAY4-链表
LeetCode24. 两两交换链表中的节点重点:LeetCode24. 两两交换链表中的节点LeetCode19.删除链表的倒数第N个节点。
2024-07-06 15:16:14
201
原创 DAY2-滑动窗口
LeetCode76.最小覆盖字串。LeetCode59.螺旋矩阵II。LeetCode940.水果成篮。209.长度最小的子数组。209.长度最小的子数组。
2024-07-04 15:48:33
287
原创 Web请求过程
互联网的网络架构已从传统的C/S架构转变为了B/S架构.客户端: 使用统一的浏览器(Browser),使得用户可以很便捷的使用互联网服务.服务端:(Server)基于统一的HTTP,使得开发者可以采用相对规范的开发模式,且可以直接使用基于HTTP的服务器,无需单独开发.海量用户的访问请求保持用户请求的快速响应。
2024-07-03 23:26:09
846
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅