自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis5-缓存

缓存是数据交换的缓冲区(Cache),是存贮数据的临时地方,一般读写性能较高。

2024-08-07 20:18:38 1590

原创 MySQL-分库分表

分库分表的中心思想是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的

2024-08-04 20:25:18 2409 5

原创 MySQL-SQL优化

2.此时插入id为50的记录,不会再次开启一个页,写入新的页,按照顺序应该存储在47之后,但47所在的1#页已经写满,此时会开辟一个新的页3#,但不会直接将50存入3#页,而是会将1#页后一半的数据移动到3#页,然后在3#页插入50。在InnoDB引擎中,数据行是记录在逻辑结构page页中的,而每一个页的大小是固定的,默认16K,则一个页中所存储的行也是有限的,如果插入的数据行row在该页存储不小,将会存储到下一个页中,页与页之间会通过指针连接。

2024-07-31 21:06:26 1061

原创 MySQL-索引

MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包含以下几种:不同的存储引擎对索引结构的支持情况:注意:平常所说的索引,如果没有特别指明,都是指B+树索引。

2024-07-31 16:49:00 1234

原创 Dubbo

Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。

2025-03-12 22:30:00 782

原创 LC-只出现一次的数字、多数元素、颜色分类、下一个排列、寻找重复数

交换后,我们需要保证后续的部分是最小的排列(即按升序排列),所以反转。,则说明当前排列已经是字典序最大,我们需要将其完全反转成为字典序最小。:我们可以利用数组元素的大小范围来缩小查找区间,通过统计数字小于等于。表示我们还可以通过交换来生成更大的排列。:接着,从数组的末尾再次向左查找,找到第一个比。,这意味着一定有至少一个重复的数字。的数组进行原地排序,使得所有的。的元素个数来判断重复元素的位置。:从数组的末尾开始,找到第一个。排在前面,接着是所有的。:给定的数组包含数字。

2025-02-26 13:02:24 1087

原创 LC-不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离

可以通过 动态规划 来解决。机器人每次只能向下或向右移动,因此问题的核心是计算从左上角到右下角的路径数。思路:边界条件:最小路径和这是一个典型的 动态规划 问题,要求在一个网格中找到一条从左上角到右下角的路径,使得路径上的数字总和最小。每次只能向下或者向右移动一步。我们可以定义一个二维数组 ,其中 表示从左上角 到 的最小路径和。动态规划步骤:初始化:状态转移: 对于其他的 ,可以选择从上方或者从左方过来。我们取两者中较小的路径和:其中 是从上方到达当前位置的最小路径和, 是从左方到达当前

2025-02-25 19:07:30 728

原创 LC-单词拆分、最长递增子序列、乘积最大子数组、分割等和子集、最长有效括号

定义状态:状态转移方程:初始化:目标:最长递增子序列动态规划:时间复杂度是 ,其中 是数组的长度。乘积最大子数组动态规划:我们使用动态规划的方法来解决这个问题。由于数组中有负数,可能会影响最大值和最小值,所以我们需要追踪当前位置的最大值和最小值。每次更新最大值和最小值时,都要考虑:状态转移:对于每一个元素 ,我们要更新当前的最大值和最小值:最终,我们需要返回所有 中的最大值。分割等和子集问题转化:动态规划:最长有效括号动态规划的方法通过定义一个状态数组 来表示以

2025-02-24 15:06:10 1004

原创 LC-划分字母区间、爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换

思路:问题分析:贪心策略:步骤:爬楼梯动态规划解法:定义状态:递推公式:初始化:目标:杨辉三角 打家劫舍定义状态:状态转移方程:其中:初始状态:最终结果:完全平方数动态规划思路:状态定义:状态转移方程:初始化:目标:零钱兑换这是一个完全背包问题,我们可以使用动态规划来解决。解题思路:状态定义:状态转移方程:初始化:目标:

2025-02-24 13:40:11 757

原创 LC-前K个高频元素、数据流的中位数、买卖股票的最佳时机、跳跃游戏、跳跃游戏II

我们需要找出。为了实现这一点,可以使用一个最小堆。堆的大小保持为k,每次插入元素时,如果堆的大小超过k,则弹出堆顶元素。这样,堆中的元素就是出现频率前k高的元素。通过维护一个大小为k的堆,保证了堆顶元素是频率最低的元素,而堆中的其他元素频率都较高。k。

2025-02-24 11:00:00 715

原创 LC-最小栈、字符串解码、每日温度、柱状图中最大的矩形、数组中的第K大元素

我们可以使用最小堆来维护当前找到的。,这样堆顶的元素就是第。

2025-02-23 11:23:48 1238

原创 LC-在排序数组中查找元素的第一个和最后一个位置、搜索旋转排序数组、寻找旋转排序数组中的最小值、寻找两个正序数组的中位数、有效的括号

思路:二分查找基础:我们可以使用二分查找来快速定位目标值。由于数组是有序的,二分查找可以在O(log n)时间内找到目标值的一个出现位置。查找开始位置使用二分查找,调整查找条件,使得找到目标值时,继续向左搜索,直到找到第一个出现的目标值。查找结束位置使用类似的二分查找,调整查找条件,找到目标值时,继续向右搜索,直到找到最后一个出现的目标值。= -1){//找到目标值,继续向左搜索//继续向左查找,寻找第一个出现的位置}else{//找到目标值,继续向右搜索。

2025-02-23 11:00:00 816

原创 LC-单词搜索、分割回文串、N皇后、搜索插入位置、搜索二维矩阵

我们可以从网格中的每个单元格开始,进行深度优先搜索(DFS),并通过递归逐个匹配单词中的字符。每次匹配时,我们需要检查当前位置是否符合条件,并标记访问过的单元格,避免重复使用。:可以使用递归的方式来进行分割,递归的过程中将字符串分割成多个子串。回溯法适合用于这种路径搜索问题,我们需要在网格中寻找单词,并且每个字符都只能使用一次。:我们可以使用回溯法来逐行放置皇后,确保每次放置时不会和之前放置的皇后发生冲突。:在递归过程中,如果某个子串不是回文串,则不继续往下搜索,直接回溯。

2025-02-20 15:58:51 838

原创 LC-全排列、子集、电话号码的字母组合、组合总和、括号生成

回溯算法的基本思想是:子集电话号码的字母组合可以使用回溯算法来穷举所有可能的字母组合。具体做法是:组合总和括号生成思路:有效括号的定义:一个有效的括号组合需要满足:回溯法:这个问题最常用的方法是回溯法(Backtracking)。我们可以构建一个递归过程,通过不断增加左括号 或右括号 ,并在每一步判断是否满足条件来生成有效的括号组合。解决步骤:需要两个参数:递归终止条件:递归选择:

2025-02-19 21:48:30 651

原创 LC-岛屿数量、腐烂的橘子、课程表、实现Trie(前缀树)

我们需要遍历整个网格grid,一旦遇到'1'(陆地),说明找到了一个新的岛屿,岛屿数量count++。找到'1'后,我们需要将这个岛屿的所有相连陆地全部标记为'0'每找到一个新的'1',并完成其搜索,就代表找到了一座完整的岛屿,因此count++。

2025-02-19 14:06:54 528

原创 LC-二叉树展开为链表、从前序与中序遍历序列构造二叉树、路径总和III、二叉树的最近公共祖先、二叉树中的最大路径和

前序遍历 + 递归思路 从前序与中序遍历序列构造二叉树路径总和III 我们可以从树的每个节点开始,进行 深度优先搜索。在遍历过程中,我们可以利用一个 前缀和的哈希表来记录从根节点到当前节点的路径和,帮助我们快速查找是否存在某一条路径的和等于 。具体步骤:二叉树的最近公共祖先递归定义:递归步骤:二叉树中的最大路径和可以使用深度优先搜索(DFS)递归遍历每个节点,计算包含该节点的最大路径和。具体思路如下:定义递归函数 :递归终止条件:时间复杂度:

2025-02-18 17:19:34 976

原创 LC-二叉树的层序遍历、将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素、二叉树的右视图

【代码】LC-二叉树的层序遍历、将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第K小的元素、二叉树的右视图。

2025-02-18 12:06:53 357

原创 LC-二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树、二叉树的直径

O(N) (每个节点访问一次)O(N) (最坏情况下递归栈深度为 O(N))

2025-02-16 20:28:58 437

原创 LC-随机链表的复制、排序链表、合并K个升序链表、LRU缓存

为了在时间复杂度内解决这个问题,并且使用A'B'C'ABCrandomrandomrandom。

2025-02-16 20:28:44 857

原创 LC-合并两个有序链表、两数相加、删除链表的第N个节点、两两交换链表中的节点、K个一组翻转链表

【代码】LC-合并两个有序链表、两数相加、删除链表的第N个节点、两两交换链表中的节点、K个一组翻转链表。

2025-02-14 20:32:40 623

原创 LC-搜索二维矩阵II、相交链表、反转链表、回文链表、环形链表、环形链表ll

方法:从右上角开始搜索 相交链表双指针法两个指针分别指向两个链表的头节点: 我们设立两个指针 和 ,分别指向链表 和链表 的头节点。同时移动两个指针:相遇: 如果两个指针相遇,则返回相遇的节点;如果两个指针同时指向 ,则说明链表没有交点。这种方法的核心思想就是“同步走,互相切换”,确保两个指针走过相同的路程,因此可以在 O(m + n) 时间复杂度内解决问题。设「第一个公共节点」为 node ,「链表 headA」的节点数量为 a ,「链表 headB」的节点数量为 b ,「两链表的公共

2025-02-14 18:20:24 1224

原创 synchronized关键字及锁升级

synchronized,俗称对象锁,它采用互斥的方式让同一时刻至多只有一个线程能持有对象锁,其他线程再想获取这个对象锁时就会阻塞住,这样就能保证拥有锁的线程可以安全地执行临界区内的代码,不用担心线程上下文切换。

2025-02-13 17:49:09 1225

原创 LC-除自身以外数组的乘积、缺失的第一个正数、矩阵置零、螺旋矩阵、旋转图像

对于每个元素nums[i],要求出nums[i]nums[i]nums[i]

2025-02-13 11:42:20 379

原创 LC-滑动窗口最大值、最小覆盖子串、最大子数组和、合并区间、轮转数组

我们可以使用来高效地解决滑动窗口最大值问题。

2025-02-11 20:03:47 640

原创 操作系统-任务调度算法、银行家算法

主要从“公平”的角度考虑(类似于排队买东西)按照作业/进程到达的先后顺序进行服务用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列非抢占式公平、算法实现简单对长作业有利,对短作业不利。排在长作业(进程)后面的短作业需要等待很长时间,带权周转时间很大,对短作业来说用户体验不好不会。

2025-02-11 16:35:14 785

原创 LC-三数之和、接雨水、无重复字符的最长子串、找到字符串中所有字母异位词

解题思路排序:遍历数组,固定一个数:双指针寻找满足条件的三元组:去重: 接雨水解法步骤定义左右双指针:移动较矮一端的指针:雨水计算:无重复字符的最长子串使用 滑动窗口(Sliding Window)来优化解法,避免 的暴力遍历,做到 O(N) 线性时间复杂度。定义双指针窗口:移动右指针 扩大窗口:继续移动 指针,直到遍历完整个字符串。找到字符串中所有字母异位词字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。解题思路:滑动窗口 + 哈希

2025-02-10 19:42:04 646

原创 LC-两数之和、字母异位词分组、最长连续序列、移动零、盛最多水的容器

直到左右指针相遇。

2025-02-09 22:07:51 916

原创 Java-128陷阱、抽象类和接口的区别、为什么 hashCode()需要和equals()一起重写、封装继承多态

编译器执行的是:Integer a=Integer.valueOf(128);也就是调用了valueof()方法,进行了自动装箱。Integer 的 valueOf 方法当中,存储着一个 cache 数组,该数组相当于一个缓存,范围在 -128~127 闭区间。Integer 数据类型使用“==”比较时,分析以上代码运行的结果。

2025-02-06 18:05:59 760

原创 【SpringBoot2】2-入门

需求:浏览发送/hello请求,响应 Hello,Spring Boot 2。把项目打成jar包,直接在目标服务器执行即可。测试:直接运行main方法。

2025-02-05 22:00:00 296

原创 【SpringBoot2】1-Spring与SpringBoot

覆盖了:web开发数据访问安全控制分布式消息服务移动开发批处理......

2025-02-05 21:00:00 454

原创 RabbitMQ8-幂等性、优先级、惰性

用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,只需要把数据操作放入事务中即可,发生错误立即回滚,但是在响应客户端的时候也有可能出现网络中断或者异常。

2025-02-02 19:43:10 566

原创 RabbitMQ7-发布确认高级

在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。如何才能进行 RabbitMQ 的消息可靠投递呢?

2025-02-02 19:07:18 1078

原创 RabbitMQ6-延迟队列

延迟队列的队列内部是有序的,最重要的特性就体现在它的延迟属性上,延迟队列中的元素是希望 在指定时间到了以后或之前取出和处理,简单来说,延迟队列就是用来存放需要在指定时间被处理的元素的队列。

2025-01-26 23:32:44 715

原创 RabbitMQ5-死信队列

死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中;还有用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。

2025-01-25 22:40:36 1415

原创 RabbitMQ4-交换机

将消息传达给多个消费者,这种模式称为 “发布/订阅”。

2025-01-25 00:29:26 985

原创 RabbitMQ3-发布确认

confirm 模式最大的好处在于他是异步的,一旦发布一条消息,生产者应用程序就可以在等信道返回确认的同时继续发送下一条消息,当消息最终得到确认之后,生产者应用便可以通过回调方法来处理该确认消息,如果RabbitMQ 因为自身内部错误导致消息丢失,就会发送一条 nack 消息, 生产者应用程序同样可以在回调方法中处理该 nack 消息。这个方法只有在消息被确认的时候才返回,如果在指定时间范围内这个消息没有被确认,那么它将抛出异常。的方式,也就是发布一个消息之后,只有它被确认发布,后续的消息才能继续发布,

2025-01-23 22:00:30 618

原创 RabbitMQ2-简单案例

在下图中,“ P” 是生产者,“ C” 是消费者。中间的框是一个队列- RabbitMQ 代表使用者保留的消息缓冲区。用 Java 编写两个程序,发送单个消息的生产者和接收消息并打印出来的消费者。连接的时候,需要开启 5672 端口。

2025-01-23 20:19:03 1249

原创 RabbitMQ1-消息队列

Broker接收和分发消息的应用,RabbitMQ Server 就是 Message Broker出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等Connectionpublisher/consumer 和 broker 之间的 TCP 连接Channel。

2025-01-21 22:03:41 915

原创 实现 WebSocket 接入文心一言

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。特点WebSocketHTTP通信方式双向通信单向请求/响应模式连接类型长连接,连接保持打开默认短连接,每次请求需新建连接实时性高,低延迟中等,轮询或长轮询增加延迟效率数据传输轻量,性能高。

2024-12-20 10:09:38 1402 1

原创 云服务器部署WebSocket项目

5.上传war包到tomcat文件夹的webapp目录下。先执行clean,再执行install。(2)解压后进入到文件目录,启动。3.在服务器上安装tomcat。6.重新启动tomcat,访问。2.在服务器上安装jdk。管理员端 - 聊天窗口。(1)修改pom文件。用户端 - 聊天窗口。

2024-11-22 22:02:02 1020

空空如也

空空如也

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

TA关注的人

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