【KMP】P10915 [蓝桥杯 2024 国 B] 最长回文前后缀|普及+
本文涉及知识点
较难理解的字符串查找算法KMP
P10915 [蓝桥杯 2024 国 B] 最长回文前后缀
题目描述
小明特别喜欢回文串,然而回文串太少见了,因此他定义了一个字符串的相同长度的、不相交的前缀和后缀是“回文前后缀”,当且仅当这个前缀和后缀拼起来是个回文串。那么字符串 S = c 1 c 2 c 3 , ⋯ , c n S=c_1c_2c_3,\cdots,c_n S=c1c2c3,⋯,cn 的“最长回文前后缀” 的长度 L ( S ) L(S) L(S) 即为 arg max x S [ 1 , x ] = ( S [ n − x + 1 , n ] ) T \argmax\limits_{x}{S_{[1,x]} = (S_{[n-x+1,n]})^T} xargmaxS[1,x]=(S[n−x+1,n])T 其中 S [ i , j ] S_{[i,j]} S[i,j] 表示 S S S 的一个子串 c i c i + 1 ⋯ c j c_ic_{i+1}\cdots c_j cici+1⋯cj, S T S^T ST 表示翻转 S S S 得到的字符串。
对于一个给定的字符串 S S S,小明希望对其进行改造使得 L ( S ′ ) L(S ^\prime) L(S′) 尽可能大。改造允许将字符串中一个任意长度的子串删除。比如删除 S = abcdebijbba S = \texttt{abcdebijbba} S=abcdebijbba 中
的子串 S [ 3 , 5 ] S_[3,5] S[3,5] 后 S S S 变成了 abbijbba \texttt{abbijbba} abbijbba。
小明想知道改造后的新字符串 S ′ S^\prime S′ 的“最长回文前后缀”的长度 L ( S ′ ) L(S^\prime) L(S′) 最大是多少?
输入格式
输入共 1 1 1 行,一个字符串 S S S。
输出格式
输出共 1 1 1 行,一个整数表示答案。
输入输出样例 #1
输入 #1
abcdebijbba
输出 #1
3
说明/提示
【样例说明】
如题干中的方案删除 S [ 3 , 5 ] S_{[3,5]} S[3,5] 后, S ′ = abbijbba S^\prime = \texttt{abbijbba} S′=abbijbba, L ( S ′ ) = 3 L(S^\prime) = 3 L(S′)=3。
【评测用例规模与约定】
对于 20 % 20\% 20% 的评测用例,保证 ∣ S ∣ ≤ 500 |S| \le 500 ∣S∣≤500。
对于 100 % 100\% 100% 的评测用例,保证 ∣ S ∣ ≤ 500000 |S| \le 500000 ∣S∣≤500000, S S S 仅包含小写字母。
P10915 贪心 KMP
我们假定最终最长公共前后缀是x,删除的子数组长度是x1,则只有以下两种情况:
一,s长度(x+x1)的前缀删除长度为x1的子数组。
二,s长度(x+x1)的后缀删除长度为x1的子数组。
将s翻转后,情况二就变成了情况一。
性质一:令初始s的最长公共前后缀长度为x2。最优方案一定不会劣于x2。
性质二:统一成情况一后,如果删除的子数组是[left,r]。则 left 一定等于x2。left > x,结果是x2。left < x,根据性质一,删除后的s[0…x2-1]一定和原来一样,故不删除旧s[x2-1],改成删除新s[x2-1]也是最优解。
令本题的解f(x),则本题的答案等于 x +f(s删除前后x各字符的前后缀)。
f(s) = max(g(s),g(s翻转后sT))
g(s)的逻辑如下:
t = sT
KMP.Find(s,t) m_vSame[i]记录 s[i…]和t的最长公共前缀。
ans = 0;
for(i =0;i < n/2;i++)
{
cur = max(n/2-i,m_vSame[i])
ans = max(cur,ans)
}
代码
核心代码
#include <iostream>
#include <sstream>
#include <vector>
#include<map>
#include<unordered_map>
#include<set>
#include<unordered_set>
#include<string>
#include<algorithm>
#include<functional>
#include<queue>
#include <stack>
#include<iomanip>
#include<numeric>
#include <math.h>
#include <climits>
#include<assert.h>
#include<cstring>
#include<list>
#include <array>#include <bitset>
using namespace std;template<class T1, class T2>
std::istream& operator >> (std::istream& in, pair<T1, T2>& pr) {in >> pr.first >> pr.second;return in;
}template<class T1, class T2, class T3 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t);return in;
}template<class T1, class T2, class T3, class T4 >
std::istream& operator >> (std::istream& in, tuple<T1, T2, T3, T4>& t) {in >> get<0>(t) >> get<1>(t) >> get<2>(t) >> get<3>(t);return in;
}template<class T = int>
vector<T> Read() {int n;scanf("%d", &n);vector<T> ret(n);for (int i = 0; i < n; i++) {cin >> ret[i];}return ret;
}template<class T = int>
vector<T> Read(int n) {vector<T> ret(n);for (int i = 0; i < n; i++) {cin >> ret[i];}return ret;
}template<int N = 1'000'000>
class COutBuff
{
public:COutBuff() {m_p = puffer;}template<class T>void write(T x) {int num[28], sp = 0;if (x < 0)*m_p++ = '-', x = -x;if (!x)*m_p++ = 48;while (x)num[++sp] = x % 10, x /= 10;while (sp)*m_p++ = num[sp--] + 48;AuotToFile();}void writestr(const char* sz) {strcpy(m_p, sz);m_p += strlen(sz);AuotToFile();}inline void write(char ch){*m_p++ = ch;AuotToFile();}inline void ToFile() {fwrite(puffer, 1, m_p - puffer, stdout);m_p = puffer;}~COutBuff() {ToFile();}
private:inline void AuotToFile() {if (m_p - puffer > N - 100) {ToFile();}}char puffer[N], * m_p;
};template<int N = 1'000'000>
class CInBuff
{
public:inline CInBuff() {}inline CInBuff<N>& operator>>(char& ch) {FileToBuf();ch = *S++;return *this;}inline CInBuff<N>& operator>>(int& val) {FileToBuf();int x(0), f(0);while (!isdigit(*S))f |= (*S++ == '-');while (isdigit(*S))x = (x << 1) + (x << 3) + (*S++ ^ 48);val = f ? -x : x; S++;//忽略空格换行 return *this;}inline CInBuff& operator>>(long long& val) {FileToBuf();long long x(0); int f(0);while (!isdigit(*S))f |= (*S++ == '-');while (isdigit(*S))x = (x << 1) + (x << 3) + (*S++ ^ 48);val = f ? -x : x; S++;//忽略空格换行return *this;}template<class T1, class T2>inline CInBuff& operator>>(pair<T1, T2>& val) {*this >> val.first >> val.second;return *this;}template<class T1, class T2, class T3>inline CInBuff& operator>>(tuple<T1, T2, T3>& val) {*this >> get<0>(val) >> get<1>(val) >> get<2>(val);return *this;}template<class T1, class T2, class T3, class T4>inline CInBuff& operator>>(tuple<T1, T2, T3, T4>& val) {*this >> get<0>(val) >> get<1>(val) >> get<2>(val) >> get<3>(val);return *this;}template<class T = int>inline CInBuff& operator>>(vector<T>& val) {int n;*this >> n;val.resize(n);for (int i = 0; i < n; i++) {*this >> val[i];}return *this;}template<class T = int>vector<T> Read(int n) {vector<T> ret(n);for (int i = 0; i < n; i++) {*this >> ret[i];}return ret;}template<class T = int>vector<T> Read() {vector<T> ret;*this >> ret;return ret;}
private:inline void FileToBuf() {const int canRead = m_iWritePos - (S - buffer);if (canRead >= 100) { return; }if (m_bFinish) { return; }for (int i = 0; i < canRead; i++){buffer[i] = S[i];//memcpy出错 }m_iWritePos = canRead;buffer[m_iWritePos] = 0;S = buffer;int readCnt = fread(buffer + m_iWritePos, 1, N - m_iWritePos, stdin);if (readCnt <= 0) { m_bFinish = true; return; }m_iWritePos += readCnt;buffer[m_iWritePos] = 0;S = buffer;}int m_iWritePos = 0; bool m_bFinish = false;char buffer[N + 10], * S = buffer;
};class KMPEx
{
public:static vector<int> ZFunction(string s) {int n = (int)s.length();vector<int> z(n);z[0] = n;for (int i = 1, left = 0, r = 0; i < n; ++i) {if (i <= r) {//如果此if,r-i+1可能为负数z[i] = min(z[i - left], r - i + 1);}while ((i + z[i] < n) && (s[z[i]] == s[i + z[i]])) {z[i]++;}if (i + z[i] - 1 > r) left = i, r = i + z[i] - 1;}return z;//z[i] 表示S与其后缀S[i,n]的最长公共前缀(LCP)的长度}static int MinCyc(const string& str, int unit = 1) {const int N = str.length();auto z = ZFunction(str);auto Is = [&](int k) {for (int i = k; i < N; i <<= 1) {if (z[i] < min(N - i, i)) { return false; }}return true;};for (int k = unit; k < N; k += unit) { if (Is(k))return k; }return N;}};
//【KMP】P10475 [USACO03FALL] Milking Grid(数据加强版)|普及+
class Solution {
public:int Ans(const string& str) {const int N = str.length();int i = 0;for (int r = N - 1; (i < N / 2) && (str[i] == str[r]); i++, r--);return i + f(string(str.begin() + i, str.end() - i));}int f(const string& str) { return max(g(str), g(string(str.rbegin(), str.rend()))); };int g(string str) {const int N = str.length();if (0 == N) { return 0; }str = string(str.rbegin(), str.rend()) + str;auto z = KMPEx::ZFunction(str);int ans = 0;for (int i = 0; i < N; i++) {const int cur = min(z[N + i], (N - i) / 2);ans = max(ans, cur);}return ans;}
};int main() {
#ifdef _DEBUGfreopen("a.in", "r", stdin);
#endif // DEBUG ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);string s;cin >> s;
#ifdef _DEBUG /*printf("T=%d", T);Out(no1, ",no=");Out(strs, ",strs=");*//*Out(edge, "edge=");Out(que, "que=");*/
#endif // DEBUG auto res = Solution().Ans(s);cout << res;return 0;
}
单元测试
TEST_METHOD(TestMethod1){auto res = Solution().Ans("abba");AssertEx(2, res);}TEST_METHOD(TestMethod2){auto res = Solution().Ans("a");AssertEx(0, res);}TEST_METHOD(TestMethod3){auto res = Solution().Ans("abcdebijbba");AssertEx(3, res);}
扩展阅读
我想对大家说的话 |
---|
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注 |
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
如果程序是一条龙,那算法就是他的是睛 |
失败+反思=成功 成功+反思=成功 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。
相关文章:
【KMP】P10915 [蓝桥杯 2024 国 B] 最长回文前后缀|普及+
本文涉及知识点 较难理解的字符串查找算法KMP P10915 [蓝桥杯 2024 国 B] 最长回文前后缀 题目描述 小明特别喜欢回文串,然而回文串太少见了,因此他定义了一个字符串的相同长度的、不相交的前缀和后缀是“回文前后缀”,当且仅当这个前缀和…...
【linux学习】linux系统调用编程
目录 一、任务、进程和线程 1.1任务 1.2进程 1.3线程 1.4线程和进程的关系 1.5 在linux系统下进程操作 二、Linux虚拟内存管理与stm32的真实物理内存区别 2.1 Linux虚拟内存管理 2.2 STM32的真实物理内存映射 2.3区别 三、 Linux系统调用函数 fork()、wait()、exec(…...
构建第一个ArkTS应用:Hello World之旅
# 构建第一个ArkTS应用:Hello World之旅 在鸿蒙应用开发的领域中,ArkTS语言为我们提供了强大而便捷的开发方式。今天,就让我们一起踏上构建第一个ArkTS应用——Hello World的奇妙旅程。 ## 一、创建ArkTS工程 1. 首先,我们要使用…...
Mysql 集群架构 vs 主从复制架构
特性主从复制架构MySQL 集群架构适用场景读多写少的场景;备份;高可用高并发读写、实时交易、高可用性场景可扩展性仅读性能可扩展读写都可以水平扩展高可用性手动切换,有限的高可用支持自动故障转移,强高可用支持部署复杂度较简单…...
国产轻量级多途径无限制的高效下载工具介绍
软件介绍 们在日常中常常有下载各类文件的需求,学习资料也好,娱乐文件也罢。有一款国产的BT下载软件——BitComet(比特彗星),它凭借高效且无限制的特性,在下载爱好者中备受青睐。 BitComet属于轻量级的BT下…...
leetcode数组-长度最小的子数组
题目 题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n个正整数的数组和一个正整数 target** 。** 找出该数组中满足其总和大于等于target的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**…...
如何理解缓存一致性?
缓存一致性是指在多处理器系统或分布式系统中,确保各个处理器核心或节点的缓存数据与主内存以及其他缓存中的数据保持一致的机制和过程。以下从问题产生原因、一致性协议和实现方式等方面进行详细理解: 1. 问题产生的原因 1.1 缓存存在的必要性 在计…...
智能体(Agent)系统源码解析:AI 自动化办公的未来
—从代码到商业落地,如何用Agent重构企业工作流? 一、Agent系统的核心价值 1. 企业办公效率的瓶颈 重复性任务耗时:数据录入、报表生成、邮件处理等占员工 40% 工作时间跨系统协作低效:OA/CRM/ERP数据孤岛,人工搬运错…...
字符串移位包含问题
字符串移位包含问题 #include <iostream> #include <algorithm> using namespace std; int main(){string a,b;cin>>a>>b;//谁长遍历谁if(a.size()<b.size()) swap(a,b);//1-对整个字符串进行移位for(int i0; i<a.size(); i){//每次循环都将第一…...
【JavaScript】原型链 prototype 和 this 关键字的练习(老虎机)
这个老虎机练习主要考察JavaScript中的原型链(prototype)和this关键字的使用。 主要思路 创建三个轮盘(reels)实例:我们需要创建3个独立的轮盘对象,它们都委托(delegate)到基础的ree…...
Windows强制删除任何你想删除的文件和文件夹
Windows强制删除任何你想删除的文件和文件夹 本教程适用于 Windows 10/11 系统,工具和命令均经过验证。 为什么删除会失败? 权限不足:文件或文件夹可能需要管理员权限才能删除。文件被占用:某个程序正在使用目标文件,…...
【MySQL数据库】锁机制
概述 锁:是计算机协调多个进程或者线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(CPU、RAM、IO)的争用以外。数据也是一种供多用户共享的资源。如何保证数据的并发访问的一致性、有效性是所有数据库必须解决的一个…...
JS dom修改元素的style样式属性
1通过样式属性修改 第三种 toggle有就删除 没就加上...
搜索树——AVL、红黑树、B树、B+树
目录 二叉搜索树 AVL树 2-3-4树 红黑树 旋转操作 概念讲解 旋转节点操作(左旋) 插入节点 删除节点 B树和B树 B树 2.5.2 B树 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 难度高,如果想要了解红黑树的增加、…...
2007-2019年各省地方财政交通运输支出数据
2007-2019年各省地方财政交通运输支出数据 1、时间:2007-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政交通运输支出 4、范围:31省 5、指标说明:地方财政交通运输支出是指地方…...
LeetCode算法题(Go语言实现)_29
题目 给你一个链表的头节点 head 。删除 链表的 中间节点 ,并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、2…...
MINIQMT学习课程Day6
学习安装qmt 安装好后,点击启动国金qmt系统 之后将xtquant包手动安装到python中的site_package中,之后使用pycharm打开文件,创建本地命令文件。 具体的xtquant安装包以及qmt模拟环境,以及模拟账号密码,可以加我私信沟…...
WinForm真入门(7)——Button控件详解
WinForm Button 控件详解 Button(按钮)是 WinForm 中最基础的交互控件,用于触发操作(如:点击登录按钮进入系统)或提交数据(如:写好请假申请后,点击提交,把申…...
035-Windows抓屏-GDI
Windows抓屏-GDI 一、技术原理 GDI(Graphics Device Interface)抓屏基于Windows系统提供的图形设备接口,通过设备上下文(DC) 实现屏幕内容捕获。核心流程如下: 获取桌面窗口句柄:通过 //获取…...
复古优雅感涂鸦手绘喷漆街头艺术字体 Enter Sonic Graffiti
Enter Sonic Graffiti 是 Rvq Typefoundry 的新字体,具有优雅感的字符集。要创建漂亮的组合,只需混合大写和小写,然后与其他字符形混合即可。新的 Graffiti 字体样式和 .我将这款字体献给我正在与癌症作斗争的母亲。我希望我的母亲和所有受癌…...
4.4 代码随想录第三十五天打卡
121. 买卖股票的最佳时机 (1)题目描述: , (2)解题思路: class Solution { public:int maxProfit(vector<int>& prices) {int len prices.size();if (len 0) return 0;vector<vector<int>> dp(len, vector<int>(2));dp[0][0] - pr…...
PyTorch 深度学习实战(34):神经架构搜索(NAS)实战
在上一篇文章中,我们探讨了联邦学习与隐私保护技术。本文将深入介绍神经架构搜索(Neural Architecture Search, NAS)这一自动化机器学习方法,它能够自动设计高性能的神经网络架构。我们将使用PyTorch实现基于梯度优化的DARTS方法&…...
【python】速通笔记
Python学习路径 - 从零基础到入门 环境搭建 安装Python Windows: 从官网下载安装包 https://www.python.org/downloads/Mac/Linux: 通常已预装,可通过终端输入python3 --version检查 配置开发环境 推荐使用VS Code或PyCharm作为代码编辑器安装Python扩展插件创建第…...
简易Minecraft python
废话多说 以下是一个基于Python和ModernGL的简化版3D沙盒游戏框架。由于代码长度限制,这里提供一个核心实现(约500行),您可以通过添加更多功能和内容来扩展它: python import pygame import moderngl import numpy a…...
Linux信号处理解析:从入门到实战
Linux信号处理全解析:从入门到实战 一、初识Linux信号:系统级的"紧急电话" 信号是什么? 信号是Linux系统中进程间通信的"紧急通知",如同现实中的交通信号灯。当用户按下CtrlC(产生SIGINT信号&…...
2025-04-04 Unity 网络基础5——TCP分包与黏包
文章目录 1 分包与黏包2 解决方案2.1 数据接口2.2 定义消息2.3 NetManager2.4 分包、黏包处理 3 测试3.1 服务端3.2 客户端3.3 直接发送3.4 黏包发送3.5 分包发送3.6 分包、黏包发送3.7 其他 1 分包与黏包 分包、黏包指在网络通信中由于各种因素(网络环境、API …...
Ubuntu 安装 JMeter:为你的服务器配置做好准备
Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 要下载 Java,请遵…...
swift-oc和swift block和代理
一、闭包或block 1.1、swift 闭包表达式作为参数的形式 一、闭包的定义 func exec(v1: Int, v2: Int, fn: (Int, Int) -> Int) { print(fn(v1, v2)) } 二、调用 exec(v1: 10, v2: 20, fn: { (v1: Int, v2: Int) -> Int in return v1 v2 }) 1.2、swift 闭包表达式作为…...
【数据结构】_队列
hello 友友们~ 今天我们要开始学习队列啦~ 话不多说,让我们开始吧!GO! 1.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。 队列具有先进先出FIFO(First In First Out) 入队列&#x…...
【软考中级软件设计师】数据表示:原码、反码、补码、移码、浮点数
数据表示 一、数据表示1、整数的表示(1) 原码(2) 反码(3) 补码:(4) 移码 2、浮点数的表示(IEEE 754标准) 一、数据表示 计算机使用的是二进制,也就是0和1的组合。所有的数据,无论是数字、文字还是图片、声音ÿ…...
Linux(十二)信号
今天我们就要来一起学习信号啦!!!还记得小编在之前的文章中说过的ctrlc吗?之前小编没有详细介绍过,现在我们就要来学习啦!!! 一、信号的基本介绍 首先,小编带领大家先一…...
迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)
原文地址 https://fmcraft.top/index.php/Programming/2025040402.html 主要算法 迪杰斯特拉Dijkstra 题目列表 P1:奶牛航线Cowroute 题目描述 题目描述 Bessie已经厌倦了农场冬天的寒冷气候,她决定坐飞机去更温暖的地方去度假。不幸的是…...
【数据结构】树的介绍
目录 一、树1.1什么是树?1.2 树的概念与结构1.3树的相关术语1.4 树形结构实际运用场景 二、二叉树2.1 概念与结构2.2 特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树 个人主页,点击这里~ 数据结构专栏,点击这里~ 一、树 1.1什么是树࿱…...
【CF】Day24——Codeforces Round 994 (Div. 2) D
D. Shift Esc 题目: 思路: 典DP的变种 如果这一题没有这个变换操作,那么是一个很典型的二维dp,每一个格子我们都选择上面和左边中的最小值即可 而这题由于可以变换,那我们就要考虑变换操作,首先一个显然…...
Python 字典
Python 字典 字典的介绍 字典不仅可以保存值,还能对值进行描述使用大括号来表示一个字典,不仅有值 value ,还有值的描述 key字典里的数据都是以键值对 key-value 的形式来保留的key 和 value 之间用冒号 : 来连接多个键值对之间用逗号 , 来…...
yolov12检测 聚类轨迹运动速度
目录 分割算法api版: 分割算法: yolo_kmean.py 优化版: 第1步,检测生成json 第2步骤聚类: 分割算法api版: import json import os from glob import globimport cv2 import imageio import numpy as np from scipy.ndimage import gaussian_filter1d from scipy.s…...
【Lua】pcall使用详解
目录 基本语法核心作用基础示例示例 1:捕获一个简单错误示例 2:调用不存在的函数 高级用法1. 传递多个参数和接收多个返回值2. 捕获带 error 主动抛出的错误3. 匿名函数与 pcall 使用场景注意事项总结 在 Lua 中,pcall(Protected …...
Floyd 算法 Java
图论算法实践:使用 Floyd 求任意两点最短路(Java 实现) 在图论算法中,Floyd-Warshall 算法是一个经典的动态规划算法,用于在一个加权图中寻找所有点对之间的最短路径。 场景描述 假设我们有一个包含 n 个点的无向图&…...
List结构之非实时榜单实战
像京东、淘宝等电商系统一般都会有热销的商品榜单,比如热销手机榜单,热销电脑榜单,这些都是非实时的榜单。为什么是非实时的呢?因为完全实时的计算和排序对于资源消耗较大,尤其是当涉及大量交易数据时。 一般来说&…...
OCR的备份与恢复
1.简介 在Oracle RAC环境中,ASM(Automatic Storage Management)管理的OCR(Oracle Cluster Registry)是集群的关键组件,存储集群配置和状态信息。 OCR的备份一般指物理备份,系统默认每4个小时自…...
算法思想之双指针(一)
欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之双指针(一) 发布时间:2025.4.4 隶属专栏:算法 目录 双指针算法介绍对撞指针:快慢指针: 例题移动零题目链接题目描述算法思路代码实现 复写零题目链接题目描…...
Pascal语言的设备管理
Pascal语言的设备管理 引言 在计算机科学中,设备管理是操作系统的重要组成部分之一。设备管理指的是操作系统对外部设备的控制和协调,实现对各种设备的有效利用。Pascal语言作为一种教育性编程语言,虽然最初并不是为了直接进行设备管理而设…...
【MySQL】DML:添加-修改-删除数据 (数据操作语言) 学习笔记
DML (数据操作语言) 学习笔记 1. 数据表结构 首先创建员工表 employee: CREATE TABLE employee (id int unsigned NOT NULL AUTO_INCREMENT COMMENT ID,username varchar(20) NOT NULL COMMENT 用户名,password varchar(32) DEFAULT 123456 COMMENT 密码,name va…...
React编程高级主题:背压(Backpressure)处理
文章目录 **5.1 背压(Backpressure)概述****5.1.1 缓冲(Buffer)****1. 基本概念****2. 缓冲的实现方式****3. 适用场景****4. 潜在问题** **5.1.2 丢弃(Drop)****1. 基本概念****2. 丢弃的实现方式****3. 适…...
Spring IoCDI
IoC容器 前⾯我们提到IoC控制反转, 就是将对象的控制权交给Spring的IOC容器 ,由IOC容器创建及管理对 象。 也就是bean的存储. 在类上⾯添加 RestController 和 Controller 注解, 就是把这个对象交给Spring管理 , Spring 框架启动时就会加载该类. 把对象…...
COBOL语言的数据库交互
COBOL语言的数据库交互 引言 随着信息技术的不断发展,数据库管理系统(DBMS)已经成为现代应用程序中不可或缺的组成部分。在众多编程语言中,COBOL(Common Business-Oriented Language)以其在商业应用中的稳…...
【C++11(中)】—— 我与C++的不解之缘(三十一)
一、可变参数模版 基本语法: C11支持可变参数模版,简单来说就是支持可变数量参数的函数模版或者类模版; 可变数目的参数被称为参数包,存在两种参数包:模版参数包(表示0个或者多个模版参数),函数参数包(表示…...
JavaScript学习19-事件类型之鼠标事件
1. 2. 3....
文件或目录损坏且无法读取:数据恢复的实战指南
在数字化时代,数据的重要性不言而喻。然而,在日常使用电脑、移动硬盘、U盘等存储设备时,我们难免会遇到“文件或目录损坏且无法读取”的提示。这一提示如同晴天霹雳,让无数用户心急如焚,尤其是当这些文件中存储着重要的…...
python爬虫:小程序逆向实战教程
根据我之前发表的文章,我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序,我们进行搜索 2. 找到我们vx小程序的文件地址,我们就可以进行破解 破解步骤强看…...