LeetCode 排序章节
快速排序
简单
LCR 159. 库存管理 III
仓库管理员以数组
stock
形式记录商品库存表,其中stock[i]
表示对应商品库存余量。请返回库存余量最少的cnt
个商品余量,返回 顺序不限。示例 1:
输入:stock = [2,5,7,4], cnt = 1 输出:[2]
示例 2:
输入:stock = [0,2,3,6], cnt = 2 输出:[0,2] 或 [2,0]
提示:
0 <= cnt <= stock.length <= 10000
0 <= stock[i] <= 10000
借助快排的思想划分出小于cnt的区间即可。
vector<int> inventoryManagement(vector<int>& stock, int cnt) {if (cnt == 0)return {};srand(time(nullptr));qsortK(stock, 0, stock.size() - 1, cnt);return {stock.begin(), stock.begin() + cnt};
}// 借助快排思想,以k划分数组
void qsortK(vector<int>& stock, int left, int right, int k) {if (left == right)return;int key = stock[rand() % (right - left + 1) + left];int i = left, l = left, r = right;while (i <= r) {if (stock[i] < key)swap(stock[l++], stock[i++]);else if (stock[i] > key)swap(stock[r--], stock[i]);elsei++;}// [left, l - 1] [l, r] [r + 1, right]if (k <= l - left)qsortK(stock, left, l - 1, k);else if (k <= r - left + 1)return;elseqsortK(stock, r + 1, right, k - (r - left + 1));return;
}
中等
75. 颜色分类
给定一个包含红色、白色和蓝色、共
n
个元素的数组nums
,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数
0
、1
和2
分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。
示例 1:
输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2]
示例 2:
输入:nums = [2,0,1] 输出:[0,1,2]
提示:
n == nums.length
1 <= n <= 300
nums[i]
为0
、1
或2
遍历数组,保持[0, left - 1]
全为0,[right + 1, nums.size() - 1]
全为2,最后[left, right]
就全为1了。当i > right
,就完成了数组划分,不用再继续遍历了。三种情况,对应操作:
nums[i] == 0
时,交换nums[left]
与当前值并i++
。nums[i] == 1
时,i++
即可。nums[i] == 2
时,交换nums[left],但不能i++
,还要对交换得到值再进行判断。
void sortColors(vector<int>& nums) {int left = 0, right = nums.size() - 1;int i = 0;while (i <= right) {if (nums[i] == 0)swap(nums[left++], nums[i++]);else if (nums[i] == 1)i++;else // nums[i] == 2swap(nums[right--], nums[i]);}
}
912. 排序数组
给你一个整数数组
nums
,请你将该数组升序排列。你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为
O(nlog(n))
,并且空间复杂度尽可能小。示例 1:
输入:nums = [5,2,3,1] 输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 5 * 10^4
-5 * 10^4 <= nums[i] <= 5 * 10^4
根据rand()
随机生成的值作为下标找到key
,借助75. 颜色分类的思想以key将数组分为三个部分,nums[i] < key
,nums[i] == key
,nums[i] > key
,不断递归即可实现快速排序。
将数组划分为三块而不是两块,避免数组全部相同时,快排时间复制度过高。
vector<int> sortArray(vector<int>& nums) {srand(time(nullptr));qsort(nums, 0, nums.size() - 1);return nums;
}void qsort(vector<int>& nums, int left, int right) {if (left >= right) return;// 随机获取keyint key = nums[rand() % (right - left + 1) + left];// 数组划分为三块int i = left, l = left, r = right;while (i <= r) {if (nums[i] < key)swap(nums[l++], nums[i++]);else if (nums[i] > key)swap(nums[r--], nums[i]);else i++;}// [left, l - 1] [l, r] [r + 1, right]qsort(nums, left, l - 1);qsort(nums, r + 1, right);
}
215. 数组中的第K个最大元素
给定整数数组
nums
和整数k
,请返回数组中第**k**
个最大的元素。请注意,你需要找的是数组排序后的第
k
个最大的元素,而不是第k
个不同的元素。你必须设计并实现时间复杂度为
O(n)
的算法解决此问题。示例 1:
输入: [3,2,1,5,6,4], k = 2 输出: 5
示例 2:
输入: [3,2,3,1,2,4,5,5,6], k = 4 输出: 4
提示:
1 <= k <= nums.length <= 10^5
-10^4 <= nums[i] <= 10^4
借助快速排序的思想解决topK问题,快速选择将数组划分为三块,对应三种情况进行查找,不断递归即可:
[left, l - 1] [l, r] [r + 1, right]
- 当k小于等于右区间的长度,既
k <= right - r
时,继续在右区间查找第k大的数。 - 当k小于等于右区间+中间相同字符的长度,既
k <= right - l + 1
时,第k大的数就在中间区间为key
。 - 当k大于右区间+中间相同字符的长度时,既k在左区间时,在左区间查找第k大的数减去右区间+中间相同字符的长度,既第
k - (right - l + 1)
大的数。
int findKthLargest(vector<int>& nums, int k) {srand(time(nullptr));int left = 0, right = nums.size() - 1;return topK(nums, left, right, k);
}int topK(vector<int>& nums, int left, int right, int k) {if (left == right)return nums[left];// 随机获取keyint key = nums[rand() % (right - left + 1) + left];// 数组划分为三块int i = left, l = left, r = right;while (i <= r) {if (nums[i] < key)swap(nums[l++], nums[i++]);else if (nums[i] > key)swap(nums[r--], nums[i]);elsei++;}// [left, l - 1] [l, r] [r + 1, right]if (k <= right - r)return topK(nums, r + 1, right, k);else if (k <= right - l + 1)return key;elsereturn topK(nums, left, l - 1, k - (right - l + 1));
}
归并排序
中等
912. 排序数组
给你一个整数数组
nums
,请你将该数组升序排列。你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为
O(nlog(n))
,并且空间复杂度尽可能小。示例 1:
输入:nums = [5,2,3,1] 输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 5 * 10^4
-5 * 10^4 <= nums[i] <= 5 * 10^4
vector<int> tmp; // 避免重复创建vectorvector<int> sortArray(vector<int>& nums) {tmp.resize(nums.size());mergeSort(nums, 0, nums.size() - 1);return nums;
}void mergeSort(vector<int>& nums, int left, int right) {if (left >= right)return;int mid = (right + left) / 2;mergeSort(nums, left, mid);mergeSort(nums, mid + 1, right);// 合并两个有序数组int pos = left;int cur1 = left, cur2 = mid + 1;while (cur1 <= mid && cur2 <= right)tmp[pos++] = nums[cur1] <= nums[cur2] ? nums[cur1++] : nums[cur2++];while (cur1 <= mid)tmp[pos++] = nums[cur1++];while (cur2 <= right)tmp[pos++] = nums[cur2++];for (int i = left; i <= right; ++i)nums[i] = tmp[i];
}
困难
315. 计算右侧小于当前元素的个数
给你一个整数数组
nums
,按要求返回一个新数组counts
。数组counts
有该性质:counts[i]
的值是nums[i]
右侧小于nums[i]
的元素的数量。示例 1:
输入:nums = [5,2,6,1] 输出:[2,1,1,0] 解释: 5 的右侧有 2 个更小的元素 (2 和 1) 2 的右侧仅有 1 个更小的元素 (1) 6 的右侧有 1 个更小的元素 (1) 1 的右侧有 0 个更小的元素
示例 2:
输入:nums = [-1] 输出:[0]
示例 3:
输入:nums = [-1,-1] 输出:[0,0]
提示:
1 <= nums.length <= 105
-104 <= nums[i] <= 104
在合并过程中,利用双指针 cur1
和cur2
分别遍历左右子数组:
- 若
nums[cur1] <= nums[cur2]
,表明当前cur2
对应的元素更大,把cur2
相关信息存入临时数组。 - 若
nums[cur1] > nums[cur2]
,意味着cur1
对应的元素大于右半区间从cur2
到right
的所有元素,所以counts[index[cur1]]
增加right - cur2 + 1
,并将cur1
相关信息存入临时数组。
和这题LCR 170. 交易逆序对的总数类似,不同之处在于,本题需要数组中每个元素右侧小于该元素的元素数量保存在新数组中对应位置中。由于归并排序会重新排列数组元素,排序时,无法得知各元素在原数组中对应的位置。如何若使用哈希表记录,无法处理重复元素的情况。因此,我们引入一个 index
数组,让它随着元素数组同步移动。通过 index
数组,我们可以依据元素在当前数组中的位置,对应到其在原数组中的下标。
vector<int> tmp_nums;
vector<int> index;
vector<int> tmp_index;
vector<int> counts;vector<int> countSmaller(vector<int>& nums) {int n = nums.size();tmp_nums.resize(n);index.resize(n);for (int i = 0; i < n; ++i)index[i] = i;tmp_index.resize(n);counts.resize(n);mergeSort(nums, 0, n - 1);return counts;
}void mergeSort(vector<int>& nums, int left, int right) {if (left >= right)return;int mid = (right + left) / 2;mergeSort(nums, left, mid);mergeSort(nums, mid + 1, right);// 合并两个有序数组int pos = left;int cur1 = left, cur2 = mid + 1;while (cur1 <= mid && cur2 <= right) {if (nums[cur1] <= nums[cur2]) {tmp_index[pos] = index[cur2];tmp_nums[pos++] = nums[cur2++];} else {counts[index[cur1]] += right - cur2 + 1;tmp_index[pos] = index[cur1];tmp_nums[pos++] = nums[cur1++];}}while (cur1 <= mid) {tmp_index[pos] = index[cur1];tmp_nums[pos++] = nums[cur1++];}while (cur2 <= right) {tmp_index[pos] = index[cur2];tmp_nums[pos++] = nums[cur2++];}for (int i = left; i <= right; ++i) {index[i] = tmp_index[i];nums[i] = tmp_nums[i];}
}
493. 翻转对
给定一个数组
nums
,如果i < j
且nums[i] > 2*nums[j]
我们就将(i, j)
称作一个*重要翻转对*。你需要返回给定数组中的重要翻转对的数量。
示例 1:
输入: [1,3,2,3,1] 输出: 2
示例 2:
输入: [2,4,3,5,1] 输出: 3
注意:
- 给定数组的长度不会超过
50000
。- 输入数组中的所有数字都在32位整数的表示范围内。
统计满足nums[i] > 2 * nums[j]
的数对数量,使用双指针 cur1
和 cur2
分别遍历左右两部分:
- 当
(long long)nums[cur1] <= 2 * (long long)nums[cur2]
时,将cur1
指针后移。 - 当
(long long)nums[cur1] > 2 * (long long)nums[cur2]
时,说明nums[cur1]
到nums[mid]
的所有元素都满足条件,将ans
增加mid - cur1 + 1
,并将cur2
指针后移。
int ans = 0;
vector<int> tmp;
vector<long long> nums2;int reversePairs(vector<int>& nums) {int n = nums.size();tmp.resize(n);nums2.resize(n);mergeSort(nums, 0, n - 1);return ans;
}void mergeSort(vector<int>& nums, int left, int right) {if (left >= right)return;int mid = (right + left) / 2;mergeSort(nums, left, mid);mergeSort(nums, mid + 1, right);// 模拟左边的原数组与右边的二倍数组合并过程,求ansint pos = left;int cur1 = left, cur2 = mid + 1;for (int i = cur2; i <= right; ++i)nums2[i] = (long long)2 * nums[i];while (cur1 <= mid && cur2 <= right) {if (nums[cur1] <= nums2[cur2]) {pos++;cur1++;} else {ans += mid - cur1 + 1;pos++;cur2++;}}// 原数组合并pos = left;cur1 = left, cur2 = mid + 1;while (cur1 <= mid && cur2 <= right) {if (nums[cur1] <= nums[cur2])tmp[pos++] = nums[cur1++];elsetmp[pos++] = nums[cur2++];}while (cur1 <= mid)tmp[pos++] = nums[cur1++];while (cur2 <= right)tmp[pos++] = nums[cur2++];for (int i = left; i <= right; ++i)nums[i] = tmp[i];
}
LCR 170. 交易逆序对的总数
在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录
record
,返回其中存在的「交易逆序对」总数。示例 1:
输入:record = [9, 7, 5, 4, 6] 输出:8 解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。
提示:
0 <= record.length <= 50000
在合并数组的过程中,当发现左子数组的当前元素大于右子数组的当前元素时,将右子数组元素放入辅助数组,和统计逆序对的数量所需的基本框架相同。
- 如果
record[cur1] <= record[cur2]
,说明没有形成逆序对,将record[cur1]
放入tmp
数组,并将cur1
指针后移。 - 如果
record[cur1] > record[cur2]
,说明形成了逆序对,由于左半部分是有序的,那么record[cur1]
到record[mid]
的所有元素都与record[cur2]
构成逆序对,逆序对的数量增加mid - cur1 + 1
,将record[cur2]
放入tmp
数组,并将cur2
指针后移。
int ans = 0;
vector<int> tmp;int reversePairs(vector<int>& record) {tmp.resize(record.size());mergeSort(record, 0, record.size() - 1);return ans;
}void mergeSort(vector<int>& record, int left, int right) {if (left >= right)return;int mid = (right + left) / 2;mergeSort(record, left, mid);mergeSort(record, mid + 1, right);// 合并两个有序数组int pos = left;int cur1 = left, cur2 = mid + 1;while (cur1 <= mid && cur2 <= right) {if (record[cur1] <= record[cur2]) {tmp[pos++] = record[cur1++];} else {ans += mid - cur1 + 1;tmp[pos++] = record[cur2++];}}while (cur1 <= mid)tmp[pos++] = record[cur1++];while (cur2 <= right)tmp[pos++] = record[cur2++];for (int i = left; i <= right; ++i)record[i] = tmp[i];
}
相关文章:
LeetCode 排序章节
快速排序 简单 LCR 159. 库存管理 III 仓库管理员以数组 stock 形式记录商品库存表,其中 stock[i] 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量,返回 顺序不限。 示例 1: 输入:stock [2,5,7,4], cnt 1 输出&a…...
常见的限流算法有哪些?
一、固定窗口算法(Fixed Window) 原理: 将时间划分为固定长度的窗口(如1秒、1分钟),每个窗口内统计请求次数,超过阈值则拒绝后续请求。例如:每秒限流100次,窗口结束后计…...
【pyqt】(十一)单选框
控件-单选框 单选框的类名为QRadioBox,在学习新的控件的时候, 需要掌握的内容主要除了属性之外,其信号触发方法也非常重要。还可以利用Designer来辅助我们进行学习,尤其是利用Designer的属性展示和设置。 单选框中,最…...
深度解析:视频软编码与硬编码的优劣对比
视频编码 一、基本原理与核心技术 压缩原理 通过时空冗余消除实现数据压缩: 空间冗余:利用帧内预测(如DC/角度预测)消除单帧内相邻像素相似性。时间冗余:运动估计与补偿技术(ME/MC)减少连续帧间…...
[Windows] 批量为视频或者音频生成字幕 video subtitle master 1.5.2
参考原文:[Windows] 批量为视频或者音频生成字幕 video subtitle master 1.5.2 Video Subtitle Master 1.5.2 介绍 Video Subtitle Master 1.5.2 是一款功能强大的客户端工具,能够批量为视频或音频生成字幕,还支持批量将字幕翻译成其他语言…...
Lab 3 Page Table
题目链接 我的问题: 1 每个进程的kernel stack是干啥的来着?在何时初始化的? 题目2:A kernel page table per process (hard) 1 一些题目要求 Your first job is to modify the kernel so that every process uses its own c…...
爬虫逆向:脱壳工具 frida-dexdump 的使用详解
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 工具简介1.1 frida-dexdump介绍1.2 frida-dexdump支持场景1.3 frida-dexdump优点1.4 frida-dexdump工具使用方法2. 环境准备3. 安装 frida-dexdump4. 使用步骤4.1 步骤一:连接 Android 设备4.1 步骤二:安装目标应用…...
图论-腐烂的橘子
994.腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到…...
FPGA-DE2115开发板实现4位全加器、3-8译码器。
文章目录 一、安装quartus二、4位全加器三、3-8译码器(8段数码管)四、参考文章 一、安装quartus 安装quartus参考文章:Quartus Prime 18.0与ModelSim的安装 Quartus II 18.0安装教程(非常详细)从零基础入门到精通&…...
【leetcode hot 100 48】旋转图像
方法一:(原地旋转)对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。matrix[row][col]在旋转后的新位置为matrix[col][n−row−1]。只要旋转四次就能回到原点。 class Solution {public vo…...
TWind 的黑马点评随笔
TWind 的黑马点评随笔 目前是把黑马点评的技术部分完全做完了,不能说吃得饱饱,也算个半饱吧。 黑马点评严格来说不算项目,因为它给的前端过于垃圾,内容又重在Redis,所以称之为Redis练习貌似跟贴切。 尽管如…...
Fork/Join 框架详解:分支合并的高性能并发编程
目录 引言 一、Fork/Join 框架概述 1.1 什么是 Fork/Join 框架? 1.2 Fork/Join 框架的核心组件 二、Fork/Join 框架的使用步骤 三、Fork/Join 框架的示例 3.1 示例 1:计算数组元素之和 代码实现 代码解析 3.2 示例 2:并行排序 代码…...
爬虫逆向:脱壳工具ZjDroid的使用详解
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. 工具简介2. 环境准备3. ZjDroid工具的使用方法4. 使用步骤4.1 步骤一:连接 Android 设备4.2 步骤二:安装目标应用4.3 步骤三:启动 ZjDroid 脱壳脚本4.4 步骤四:触发应用加载壳内代码4.5 步骤五:获取脱壳后的文件…...
上海市闵行区数据局调研云轴科技ZStack,共探数智化转型新路径
为进一步深化人工智能、大模型技术的应用,推动区域数字经济高质量发展,2025年2月27日,上海市闵行区数据局局长吴畯率队赴上海云轴科技股份有限公司(以下简称“云轴科技ZStack”)开展专题调研。此次调研旨在深入了解企业…...
Python----数据分析(Matplotlib五:pyplot的其他函数,Figure的其他函数, GridSpec)
一、pyplot的其他函数 1.1、xlabel 在matplotlib中, plt.xlabel() 函数用于为当前活动的坐标轴(Axes)设置x轴的 标签。当你想要标识x轴代表的数据或单位时,这个函数非常有用。 plt.xlabel(xlabel text) 1.2、ylabel 在matplotl…...
Android Coil总结
文章目录 Android Coil总结概述添加依赖用法基本用法占位图变形自定义ImageLoader取消加载协程支持缓存清除缓存监听 简单封装 Android Coil总结 概述 Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程࿰…...
mybatisplus 开发流程
目录 什么是mybatisplus? 创建项目 先创建一个简单的Java项目编辑 引入依赖 1.引入父依赖 2.引入其他依赖 springboot配置 application.yml qppication-dev.yml 创建包 实体类 映射(创建一个接口) 构建测试环境 进行方法的实…...
父进程和子进程
思维导图: 1.使用父子进程实现一个图片的拷贝 要求父进程拷贝前一部分 子进程拷贝后一部分 使用diff查看两个文件是否相同 #include <head.h> int main(int argc, const char *argv[]) {int fd1open("/home/ubuntu/3.6/xiaoxin.bmp",O_RDONLY);…...
网络安全 信息安全 计算机系统安全
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 一、网络安全概述 1、网络安全:网络安全是指通过采取必要措施,防范对网络的攻击、侵入、干扰、破坏和非法使用以及意外事故,…...
C语言基础2
一、变量的作用域 局部变量的作用域是变量所在的局部范围,全局变量的作用域是整个工程。 int main() { { int a 10; printf("a %d\n", a); } printf("a %d\n", a); //报错位置 return 0; } 这里会发生报错: “a”: 未声明的…...
在springboot项目中引入log4j 2.x
步骤 1:排除 Spring Boot 默认的日志依赖 Spring Boot 默认使用 Logback 作为日志框架,所以需要先排除它,在 pom.xml(如果是 Maven 项目) 中添加如下配置: <dependency><groupId>org.springf…...
大模型推理显存优化:从KV Cache压缩到量化策略实战
引言:显存瓶颈的困境 随着ChatGPT等大语言模型的广泛应用,模型推理过程中的显存占用问题日益凸显。以典型的Llama2-13B模型为例,单次推理就需要占用超过6GB显存,严重制约了服务吞吐量和硬件利用率。本文将深入探讨大模型推理中的…...
使用阿里云 API 进行声音身份识别的方案
使用阿里云 API 进行声音身份识别的方案 阿里云提供 智能语音交互(智能语音识别 ASR) 和 声纹识别(说话人识别) 服务,你可以利用 阿里云智能语音 API 进行 说话人识别,实现客户身份验证。 方案概述 准备工…...
03 面向对象
1、封装 1.1 属性和行为 #include <iostream> using namespace std;// 面向对象三大特性:封装、继承、多态/* 封装的语法:class 类名 { 访问权限:属性(成员变量)行为(成员函数) }; */class Hero {/…...
【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文
🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势…...
java 初学知识点总结
自己总结着玩 1.基本框架 public class HelloWorld{ public static void main(String[] args){ }//类名用大写字母开头 } 2.输入: (1)Scanner:可读取各种类型,字符串相当于cin>>; Scanner anew Scanner(System.in); Scan…...
File文件和目录
一、文件和目录相关概念 计算机文件(File):以计算机硬盘为载体存储在计算机上的信息集合,可以是文本(.txt)、图片(.jpg、.png、.jpeg)、视频(.mp4)、程序(.exe)等,文件一般有拓展名,表示文件的类型。 文件…...
C++ 数据结构详解及学习规划
C++数据结构详解及学习规划 一、C++常用数据结构详解与示例 以下是C++中核心数据结构的分类及具体实现示例: 1. 线性数据结构 a. 数组(Array) • 定义:存储固定大小、同类型元素的连续内存结构。 • 特点:快速随机访问(O(1)),但插入/删除效率低(O(n))。 • 应用场…...
Mac同时安装jdk8和jdk17,默认选择jdk8
在Mac上同时安装JDK 8和JDK 17,并设置默认版本为JDK 8,可以按照以下步骤操作: 一、下载并安装JDK 8和JDK 17 下载JDK 8 访问Oracle JDK下载页面。在“Java SE Archive Downloads”部分,找到JDK 8的下载链接。选择适合您Mac芯片类…...
PTA 7-6 列出连通集
题目详情: 给定一个有 n 个顶点和 m 条边的无向图,请用深度优先遍历(DFS)和广度优先遍历(BFS)分别列出其所有的连通集。假设顶点从 0 到 n−1 编号。进行搜索时,假设我们总是从编号最小的顶点出…...
计算机毕业设计SpringBoot+Vue.js疗养院管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
分布式系统设计(架构能力)
一、微服务架构 服务治理 Nacos 注册中心(AP模式) CAP选择:Nacos 默认采用 AP 模式(可用性 分区容忍性),通过心跳检测实现服务健康管理。服务发现:客户端定时拉取服务列表,支持权重…...
CR电路介绍
CR电路(RC电路)介绍 CR电路(电阻-电容电路)由电阻(R)和电容(C)组成,是电子系统中的基础模块,广泛用于信号处理、定时、滤波等场景。以下是其核心功能、实现方…...
Redis数据结构,渐进式遍历,数据库管理
1.Redis的其他数据结构 前面我们主要讲述了Redis中比较常用的集中数据结构String,List,Hash,Set,Zset,但这并不代表Redis只用这几种数据结构还有如Streams,Geospatial,Hyperloglog,…...
动态规划01背包问题系列一>最后一块石头的重量II
这里写目录标题 题目分析:状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现:优化版本:代码呈现: 题目分析: 状态表示: 状态转移方程&#…...
GCC编译
目录 gcc编译c语言流程: 步骤 编译器 预处理 编译 汇编 链接 完整编译 多文件编译 其他常用gcc选项 gcc编译c语言流程: 预处理大写-E 编译为大写-S ,生成汇编代码文件 汇编为小写-c 链接这里可以加-o 重命名a.out这个可…...
康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术
随着自动驾驶技术的迅猛发展,构建高保真、动态的仿真场景成为了行业的迫切需求。传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战。在此背景下,3D高斯点阵渲染(3DGS)技术应运而生,成为自动驾驶仿真场景重…...
Jetson NV 上解决 PyQt5 “Could not load the Qt platform plugin ‘xcb‘“ 错误
在 Jetson NV 上运行 PyQt5 应用程序时,可能会遇到以下错误: qt.qpa.xcb: could not connect to display qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed…...
计算机毕业设计Python+DeepSeek-R1大模型微博的话题博文及用户画像分析系统 微博舆情可视化(源码+ 文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
文件上传靶场(1--9关)
实验环境: 1,upload的靶场环境可以去GitHub上自行查找 2,打开小皮面板的nginx和数据库 3,将文件上传的靶场部署到本地: 放到小皮的phpstduy_pro的www下面 小提示: 另外如果你用的是php7的版本建议将版…...
2025年渗透测试面试题总结-字某某动-安全研究实习生(二面)(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 字某某动-安全研究实习生(二面) 1. 护网行动中的核心工作 2. 防护层级选择&…...
LeetCode 965题详解 | 单值二叉树的“一统江湖”:如何判断所有节点值全等?
题目如下: 解题过程如下: 示例中,即便这个结点是空结点也返回true。 若根结点不为空,那么先判断它的左孩子结点里的值是否与根结点里的值相等(这里要先确保左孩子不为空,因为左孩子结点里的值是解引用操作…...
Java阻塞队列深度解析:高并发场景下的安全卫士
一、阻塞队列的核心价值 在电商秒杀系统中,瞬时涌入的10万请求如果直接冲击数据库,必然导致系统崩溃。阻塞队列如同一个智能缓冲带,通过流量削峰和异步解耦两大核心能力,成为高并发系统的核心组件。 二、Java阻塞队列实现类对比 …...
使用 Docker 部署 RabbitMQ 并实现数据持久化
非常好!以下是一份完整的 Docker 部署 RabbitMQ 的博客文档,包含从安装到问题排查的详细步骤。你可以直接将其发布到博客中。 使用 Docker 部署 RabbitMQ 并实现数据持久化 RabbitMQ 是一个开源的消息队列系统,广泛应用于分布式系统中。使用…...
VsCode 快捷键备忘
移动光标及选择文本 Ctrl ← / → :以单词为单位移动游标Home / End:光标移到行首/行位Ctrl Home / End:光标移到文件首和文件尾Ctrl Shift \:在匹配的分隔符之间跳转 配对的分隔符 是指分隔代码元素的字符,比如字…...
蓝桥杯备考:动态规划路径类DP之矩阵的最小路径和
如题,要求左上角到右下角的最短路径,我们还是老样子按顺序做 step1:确定状态表示 f[i][j]表示(1,1)到(i,j)的最短距离 step2 :推导状态表达方程 step3:确定填表顺序,应该是从上到下,从左到右 step4:初始化 step5 找结果&#…...
大模型工程师学习日记(十五):Hugging Face 模型微调训练(基于 BERT 的中文评价情感分析)
1. datasets 库核心方法 1.1. 列出数据集 使用 d atasets 库,你可以轻松列出所有 Hugging Face 平台上的数据集: from datasets import list_datasets# 列出所有数据集 all_datasets list_datasets()print(all_datasets)1.2. 加载数据集 你可以通过 l…...
Spring Boot 异步编程
文章目录 一、异步方法的使用1. 开启异步支持2. 定义异步方法3. 调用异步方法踩坑记录心得体会 二、线程池配置1. 自定义线程池2. 使用自定义线程池踩坑记录心得体会 三、异步任务的监控与管理1. 日志记录2. 异常处理3. 线程池监控踩坑记录心得体会 在现代应用程序开发中&#…...
golang并发编程如何学习
《掌握 Golang 并发编程的通关秘籍》 在当今的编程世界中,Golang 并发编程正以其独特的魅力和强大的能力吸引着众多开发者。然而,对于许多小伙伴来说,如何学好这门技术却成了一个头疼的问题。别担心,今天就让我来为大家揭开 Gola…...
Django 中,Form 和 ModelForm的用法和区别
在 Django 中,Form 和 ModelForm 是用于处理表单数据的两种主要方式。它们的主要区别在于是否与模型(Model)直接关联。以下是它们的用法、区别以及高级用法的详细说明: 一、Form 的使用 1. 基本用法 Form 是一个独立的表单类,不与任何模型直接关联。适用于需要手动定义字…...