自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 仿 RabbitMQ 实现的简易消息队列

在实际的后端开发中,尤其是分布式系统⾥,跨主机之间使⽤⽣产者消费者模型,也是⾮常普遍的需求。因此,我们通常会把阻塞队列封装成⼀个独⽴的服务器程序,并且赋予其更丰富的功能。这样的服务程序我们就称为消息队列(MessageQueue,MQ)。RabbitMQ是⼀个⾮常知名、功能强⼤且⼴泛使⽤的消息队列。

2025-02-09 17:34:35 1161 1

原创 负载均衡式在线OJ

负载均衡式在线OJ项目展示了一个完整的分布式系统设计,包含了高可用、高并发、安全性等多个重要方面的考虑,自动切换备用节点、最小负载优先、批量恢复功能等亮点

2024-12-23 14:51:29 1412

原创 HOT100——栈篇Leetcode739. 每日温度

HOT100——栈篇Leetcode739. 每日温度

2025-03-15 16:44:12 539

原创 HOT100——链表篇Leetcode234. 回文链表

HOT100——链表篇Leetcode234. 回文链表

2025-03-15 16:16:15 479

原创 HOT100——二叉树篇Leetcode236. 二叉树的最近公共祖先

HOT100——链表篇Leetcode236. 二叉树的最近公共祖先

2025-03-13 21:41:03 392

原创 HOT100——链表篇Leetcode160. 相交链表

HOT100——链表篇Leetcode160. 相交链表

2025-03-13 21:11:00 271

原创 MySQL视图的创建语法详解

MySQL视图的创建与使用

2025-01-25 22:32:56 515

原创 深入理解MySQL事务(万字详)

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。

2025-01-24 22:53:50 1244

原创 MySQL索引——让查询飞起来

MySQL索引,索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。

2025-01-24 09:45:16 622

原创 MySQL 表的内连和外连

详解MySQL的内外连接,清楚解释左外连接、右外连接的区别

2025-01-09 14:31:09 326

原创 MySQL 复合查询

基本查询、多表查询、自连接、子查询、合并查询

2025-01-08 15:04:57 967

原创 MySQL内置函数

日期函数、字符串函数、数学函数、其它函数

2025-01-07 17:56:32 400

原创 MySQL表的增删查改(下)——Update(更新),Delete(删除)

MySQL表的增删查改(下)——Update(更新),Delete(删除)

2025-01-07 16:11:54 1157

原创 MySQL表的增删查改(上)——Create(新增),Retrieve(查找)

MySQL表的增删查改(下)——Update(更新),Delete(删除)

2024-12-24 20:54:14 995

原创 MySQL表的约束

约束本质是通过技术手段使程序员插入正确的数据,也就意味着插入进来的数据都是符合数据约束的。

2024-12-24 13:19:03 997

原创 MySQL数据类型

MySQL数据类型详解

2024-12-23 16:36:43 733

原创 MySQL表的操作

创建表、查看表、修改表、删除表;

2024-11-10 22:29:43 425

原创 MySQL库的操作

MySQL对库的操作,包括创建、删除、备份等操作

2024-11-10 17:45:46 1389

原创 动态规划之二维背包及杂项

二维费用的背包问题、似包非包、卡特兰数

2024-11-05 21:36:27 724

原创 动态规划之完全背包

【代码】动态规划之完全背包。

2024-11-04 23:29:55 1046

原创 动态规划之01背包

最后一块石头的重量 II思路转换看见字母前的±号我们就想到了上面那个题,转换为将数分为两堆,使a-b最小,我们已知a+ b = sum转换:在数组中选择一些数,使其和接近sum / 2dp[i][j]表示,从前i个元素中选,总和不超过j,此时的最大和状态转移方程:根据第i个元素,分类第i个元素不选,此时第i个元素选,意味要在前i - 1个元素中,选数凑其总和为,前提条件,所以初始化:计算每一行仅需知道上一行,所以只初始化第一行,即没有石头想凑成目标和j的最大和都是,所以填表顺序:从上往下。

2024-11-04 17:14:07 1304

原创 动态规划之两个数组的 dp(下)

区间内的所有的子序列中,公共子序列的。初始化:添加了一行和一列,注意下标映射。区间内的字符是否能够交错组成字符串。初始化:引入空串,注意下标映射。初始化:引入空串,注意下标映射。填表顺序:从左往右,从上往下;填表顺序:从左往右,从上往下;状态表示:选第一个字符串的。填表顺序:从上往下,从左往右。状态表示:选第一个字符串的。填表顺序:从上往下,从左往右。的最后一个位置,进行讨论。的最后一个位置,进行讨论。的最后一个位置,进行讨论。区间和第二个字符串的。区间和第二个字符串的。区间内的字符和字符串。

2024-11-01 23:26:40 1126 2

原创 动态规划之两个数组的 dp(上)

状态转移方程:根据根据最后一个位置的元素,来讨论。初始化时,将第一行和第一列的值都设置为。区间内所有的子序列中,最长公共子序列的长度。初始化:引入空串,注意下标的映射,初始化:引入空串,帮助我们初始化。阅读本题后发现和上题解法基本相同。,所以从上往下填,从左往右填。,所以从上往下填,从左往右填。前添加一个空字符,也就是说。区间内的子串中,能否匹配。区间以及第二个字符串。选取选取第一个字符串。

2024-11-01 23:12:37 963 3

原创 动态规划之回文串问题

```dp[i][j]```表示```s```字符串由```i```到```j```是否是```回文子串```

2024-10-29 20:43:13 650

原创 动态规划之子序列问题(下)

优化:通过哈希表实现,由于我们只需要遍历一次数组,并对每个元素在哈希表中进行查询和更新。可以连接在这个子序列后,形成一个新的、更长的等差子序列。位置为结尾的所有子序列中,等差子序列的个数。的下标时,可以在填表之前,将所有的。,一边保存离他最近元素的下标,返回值:dp 值中的最大值。状态转移方程:对于每个。绑定在一起放到哈希表中。初始化: 最坏情况为。,所以返回值需要判断。初始化: 最坏情况为。

2024-10-27 15:38:15 556

原创 动态规划之子序列问题(上)

排序: 首先,对数对数组按照每个数对的第一个元素进行升序排序。这是为了方便后续动态规划的处理。位置为结尾的所有子序列中最长递增子序列的长度。返回值: 根据状态表达,返回整个。初始化:每个位置都可以构成长度为。初始化:每个位置都可以构成长度为。填表顺序:从左到右两个表一起填。填表顺序:从左到右两个表一起填。位置为结尾的所有子序列中。初始化: 全部初始化为。的递增子序列,因此将。的递增子序列,因此将。填表顺序: 从左往右。

2024-10-26 15:25:37 1184

原创 动态规划之子数组系列(下)

状态转移方程:根据最后一个位置的情况来分析,设最后一个单词起始位置为。初始化:前两个位置的元素无法构成等差数列,因此初始化。,这样就没有下标的映射关系的问题了,同时还能处理。表中所有元素的和,但这里需要去重。初始化:每一个元素都能构成湍流数组,所以将。区间内的字符串,能否被字典中的单词拼接而成。当两个区间都满足条件时,即成立;返回值: 返回两个数组中的最大值。填表顺序:从左往右两个表一起填。的数组,统计所有字符结尾的最大。个字母,我们统计以其为结尾的。,此时结尾会有两种状态。,表示空串能够拼接而成。

2024-10-26 08:30:00 1788

原创 动态规划之子数组系列(上)

填表顺序:从左往右两个表一起填。填表顺序:从左往右两个表一起填。填表顺序:两个表从左往右。乘积为负数的最长长度。

2024-10-24 23:18:14 577

原创 动态规划之简单多状态 dp 问题(下)

天结束后,处于某个状态的最大利润,我们可以细分为,处于“买入”、“可交易”、“”三种状态。天结束后,所能获得的最大利润,这一天有两种状态,“买入”、“卖出”返回值:返回“卖出”状态下最后一天的最大值收益。状态表示:以某个位置为结尾,使用两个数组表示。状态表示:以某个位置为结尾,使用两个数组表示。两个状态,并加上一维表示交易次数。两个状态,并加上一维表示交易次数。返回值:卖出状态下的最大值。填表顺序:从上往下,从左往右。填表顺序:从上往下,从左往右。(防止减法发生越界)(防止减法发生越界)

2024-10-24 19:58:27 1370

原创 动态规划之简单多状态 dp 问题(上)

通过分类讨论,将一个环形问题转化为一个。填表顺序:两个表从左向右一起填写。填表顺序:两个表从左向右一起填写。将每个数字的出现的和记录在。当第一个位置不偷的时候,即。当第一个位置偷的时候,即。

2024-10-23 23:00:52 734

原创 Leetcode198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,解释:偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 2 + 9 + 1 = 12。偷窃到的最高金额 = 1 + 3 = 4。输入:[2,7,9,3,1]输入:[1,2,3,1]位置有两种选择,偷或不偷。

2024-10-23 23:00:28 408

原创 动态规划之路径问题

初始化:我们在 dp 表的最后一行和最后一列分别添加一行和一列。位置时,此时的最小的下降路径和。位置时,此时的最小的下降路径。填表顺序:从上往下,从左往右。填表顺序:从上往下,从左往右。到达终点,所需的最低健康点数。填表顺序:从下往上,从右往左。初始化:添加了一行和两列,表中最后一行的最小值。

2024-10-22 22:35:23 959

原创 动态规划之斐波那契数列

动态规划(Dynamic Programming,简称DP)是一种通过将原问题分解为相互重叠的子问题并仅仅解决每个子问题一次,将其解存储起来,避免重复计算,从而提高效率的算法优化技术。它通常用于求解最优化问题。动态规划的基本思想是利用之前已经计算过的结果,通过递推关系式来计算当前问题的解。

2024-10-22 00:08:59 788

原创 记忆化搜索

记忆化搜索。

2024-10-19 20:52:04 448 1

原创 FloodFill 算法(DFS)

FloodFill 算法(DFS)

2024-10-19 20:32:32 907 1

原创 穷举vs暴搜vs深搜vs回溯vs剪枝(四)

解数独。

2024-10-16 09:30:00 792

原创 穷举vs暴搜vs深搜vs回溯vs剪枝(三)

字母大小写全排列。

2024-10-14 23:22:48 771

原创 穷举vs暴搜vs深搜vs回溯vs剪枝(二)

括号生成。

2024-10-14 23:00:53 820

原创 穷举vs暴搜vs深搜vs回溯vs剪枝(一)

找出所有子集的异或总和再求和。

2024-10-13 17:48:08 1164

原创 递归——二叉树中的深搜

计算布尔二叉树的值。

2024-10-12 17:53:05 1777

空空如也

空空如也

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

TA关注的人

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