C++知识点总结(57):STL综合
STL综合
- 一、数据结构
- 1. 队列
- 2. 映射
- 二、队列例题
- 1. 约瑟夫环(数据加强)
- 2. 打印队列
- 3. 小组队列
- 4. 日志统计 2.0
- 三、映射真题
- 1. 眼红的 Medusa
- 2. 美食评委
一、数据结构
1. 队列
功能 | 代码 |
---|---|
定义 | queue<tp>q |
入队 | .push(x) |
出队 | .pop() |
队头 | .front() |
队尾 | .back() |
为空 | .empty() |
大小 | .size() |
2. 映射
功能 | 代码 |
---|---|
定义 | map<tp1,tp2>name |
增/改 | mp[key]=value |
删除 | .erase(key) |
全删 | .clear() |
头部 | .begin() |
尾部 | .end() |
key 出现 | .count(key) |
为空 | .empty() |
大小 | .size() |
查找 | .find(key) |
键 | it->first |
值 | it->second |
二、队列例题
1. 约瑟夫环(数据加强)
题目描述
n n n 个人报数,报到 m m m 的人出列,再由下一个人重新从 1 1 1 开始报数,以此类推,输出依次出圈人的编号。
输入描述
一行两个整数 n , m n,m n,m。
输出描述
一行 n n n 个整数,相邻整数用一个空格隔开,按顺序输出每个出圈人的编号
样例1
输入
10 3
输出
3 6 9 2 7 1 8 5 10 4
提示
对于 50 % 50\% 50% 的数据, n , m ≤ 50 n,m\le 50 n,m≤50
对于 80 % 80\% 80% 的数据, n ≤ 1000 , m ≤ 1 0 6 n\le1000,m\le10^6 n≤1000,m≤106
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 5000 , 1 ≤ m ≤ 1 0 9 1\le n\le5000,1\le m\le10^9 1≤n≤5000,1≤m≤109
程序1: 暴力
#include<bits/stdc++.h>
using namespace std;
int n,m;
queue<int>q;
int main(){cin>>n>>m;for(int i=1;i<=n;i++)q.push(i);for(int i=1;i<=n;i++){//一共有n个人需要出圈for(int j=1;j<=m-1;j++){//前1~m-1的人不用出圈q.push(q.front());//备份一份本体到队尾q.pop();//本体删除}cout<<q.front()<<" ";//输出出圈人q.pop();//出圈人出圈}return 0;
}
问题:直接模拟会非常耗时,尤其是 m > n m>n m>n 的时候,可以考虑使用模运算作答。
参考答案
#include<bits/stdc++.h>
using namespace std;
int n,m;
queue<int>q;
int main(){cin>>n>>m;for(int i=1;i<=n;i++)q.push(i);for(int i=1;i<=n;i++){for(int j=1;j<=(m-1)%q.size();j++){//模运算,记得不要直接m%=nq.push(q.front());q.pop();}cout<<q.front()<<" ";q.pop();}return 0;
}
2. 打印队列
题目描述
学生会里只有一台打印机,但是有很多文件需要打印,因此打印任务不可避免地需要等待。有些打印任务比较急,有些不那么急,所以每个任务都有一个 1 ∼ 9 1∼9 1∼9 间的优先级,优先级越高表示任务越急。
打印机的运作方式如下:首先从打印队列里取出一个任务 J J J,如果队列里有比 J J J 更急的任务,则直接把 J J J 放到打印队列尾部,否则打印任务 J J J(此时不会把它放回打印队列)。
给定打印队列中各个任务的优先级,以及所关注的任务在队列中的位置(队首位置为 0 0 0),求该任务完成的时刻。所有任务都需要 1 1 1 分钟打印。
例如,打印队列为 { 1 , 1 , 9 , 1 , 1 , 1 } \{ 1,1,9,1,1,1 \} {1,1,9,1,1,1},目前处于队首的任务最终完成时刻为 5 5 5。
输入描述
多组数据,第一行一个整数 T T T,表示了有 T T T 组数据。
每组数据,第一行两个整数 n , m n,m n,m,分别表示队列中任务数量,以及所关注任务的位置。
接下来一行 n n n 个数,分别表示 n n n 个任务的优先级。
输出描述
每组数据输出一行,表示所关注任务的完成时刻。
样例1
输入
3 1 0 5 4 2 1 2 3 4 6 0 1 1 9 1 1 1
输出
1 2 5
提示
对于 20 % 20\% 20% 的数据, 0 ≤ m < n ≤ 10 0≤m<n≤10 0≤m<n≤10。
对于 60 % 60\% 60% 的数据, 0 ≤ m < n ≤ 100 0≤m<n≤100 0≤m<n≤100。
对于 100 % 100\% 100% 的数据, T ≤ 10 , 0 ≤ m < n ≤ 1000 T≤10,0≤m<n≤1000 T≤10,0≤m<n≤1000。
参考答案
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int cnt[10];
struct task{int id,prio;//编号和优先级
};
bool check(int p){//查找打印优先级for(int i=p+1;i<=9;i++)//遍历更高的优先级if(cnt[i]!=0)//有更高优先级的任务等待打印return true;//不打印return false;//打印
}
void solve(){memset(cnt,0,sizeof(cnt));//清空优先级计数queue<task>q;cin>>n>>m;for(int i=0,p;i<n;i++){//id从0开始cin>>p;//输入优先级cnt[p]++;//增加对应优先级任务的计数q.push({i,p});//存储任务}int ans=0;while(!q.empty()){auto[id,p]=q.front();//取出队首q.pop();if(check(p))//不可以打印q.push({id,p});else{ans++;//增加做任务的次数cnt[p]--;//减少对应优先级任务的计数if(id==m){//是否为关注任务cout<<ans<<endl;return;}}}
}
int main(){cin>>t;while(t--)solve();return 0;
}
3. 小组队列
题目描述
有 m m m 个小组, n n n 个元素,每个元素属于且仅属于一个小组。
支持以下操作:
push x
:使元素 x x x 进队,如果前边有 x x x 所属小组的元素, x x x 会排到自己小组最后一个元素的下一个位置,否则 x x x 排到整个队列最后的位置。pop
:出队,弹出队头并输出出队元素,出队的方式和普通队列相同,即排在前边的元素先出队。
输入描述
第一行有两个正整数 n , m n,m n,m,分别表示元素个数和小组个数,元素和小组均从 0 0 0 开始编号。
接下来一行 n n n 个非负整数 A i A_i Ai ,表示元素 i i i 所在的小组。
接下来一行一个正整数 T T T,表示操作数。
接下来 T T T 行,每行为一个操作。
输出描述
对于每个出队操作输出一行,为出队的元素。
样例1
输入
4 2 0 0 1 1 6 push 2 push 0 push 3 pop pop pop
输出
2 3 0
提示
对于 30 % 30\% 30% 的数据, 1 ≤ n ≤ 100 , 1 ≤ m ≤ 10 , T ≤ 50 1≤n≤100,1≤m≤10,T≤50 1≤n≤100,1≤m≤10,T≤50。
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 , 1 ≤ m ≤ 300 , T ≤ 1 0 5 1≤n≤10^5,1≤m≤300,T≤10^5 1≤n≤105,1≤m≤300,T≤105,输入保证操作合法。
参考答案
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int a[100010];//每个人所属的队伍编号
queue<int>q;//队伍编号
queue<int>team[305];//队伍成员的队列数组
int main(){cin>>n>>m;for(int i=0;i<n;i++)cin>>a[i];cin>>t;while(t--){string op;cin>>op;if(op=="push"){int x;cin>>x;if(team[a[x]].empty())//如果x所属队伍之前没有人入队q.push(a[x]);//将x所属队伍入队team[a[x]].push(x);//将x入队到对应队伍中} else {int x=q.front();//取出下一个要出队的队伍编号cout<<team[x].front()<<endl;//输出当前队首队伍中的第一个人的编号team[x].pop();//将当前队首队伍中的第一个人出队if(team[x].empty())//如果当前队首队伍中没有人了q.pop();//将当前队伍从队伍中删除}}return 0;
}
4. 日志统计 2.0
题目描述
小猴维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有 N N N 行。其中每一行的格式是
ts id
,表示在 t s \tt ts ts 时刻编号 i d \tt id id 的帖子收到一个"赞"。
现在小猴想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为 D D D 的时间段内收到不少于 K K K 个赞,小猴就认为这个帖子曾是"热帖"。
具体来说,如果存在某个时刻 T T T 满足该帖在 [ T , T + D ) [T,T+D) [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K K K 个赞,该帖就曾是"热帖"。
除此之外,小猴还想知道哪个长度为 D D D 的时间段内的"热帖"种类最多,小猴称这个段时间为"黄金时间段"。这里统计帖子的出现次数只能使用该黄金时间段内的帖子,也就是说在黄金时间段内的帖子之前可能是"热帖",但是仅在黄金时间段内却可能不是"热帖"。
例如, N = 5 , D = 3 , K = 2 N=5,D=3,K=2 N=5,D=3,K=2, N N N 个帖子依次是 { 1 , 1 } , { 2 , 1 } , { 3 , 2 } , { 4 , 2 } , { 5 , 3 } \{1,1\},\{2,1\},\{3,2\},\{4,2\},\{5,3\} {1,1},{2,1},{3,2},{4,2},{5,3}(以 { t s , i d } \{\tt ts,id\} {ts,id} 的形式依次给出每个帖子的信息),那么在黄金时间段 [ 2 , 4 ] [2,4] [2,4] 内“热帖”的个数只有 1 1 1 个,其中编号为 1 1 1 的帖子在时间 [ 2 , 4 ] [2,4] [2,4] 中只出现了一次,虽然它曾经是"热帖"。
给定日志,请你帮助小猴统计出"黄金时间段"内的"热帖"种类数,以及输出所有曾是"热帖"的帖子编号。
输入描述
第一行包含三个整数 N , D , K N,D,K N,D,K。
以下 N N N 行每行一条日志,包含两个整数 t s , i d \tt ts,id ts,id。
输出描述
输出两行:
第一行,表示"黄金时间段"内的帖子种类数。
第二行,按从小到大的顺序输出热帖 i d \tt id id。每个 i d \tt id id 之间空格隔开, 如果没有任何热帖就输出−1
。
样例1
输入
7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3
输出
1 1 3
样例2
输入
7 10 1 0 1 0 10 10 10 10 1 9 1 100 3 100 3
输出
2 1 3 10
样例3
输入
7 10 3 0 1 0 10 10 10 10 1 9 1 100 3 100 3
输出
0 -1
提示
对于 50 % 50\% 50% 的数据, 1 ≤ K ≤ N ≤ 1000 1≤K≤N≤1000 1≤K≤N≤1000。
对于 100 % 100\% 100% 的数据, 1 ≤ K ≤ N ≤ 2 × 1 0 5 , 0 ≤ i d , t s 1≤K≤N≤2×10^5,0≤\tt{id,ts} 1≤K≤N≤2×105,0≤id,ts ≤ 1 0 5 ≤10^5 ≤105。
参考程序
#include<bits/stdc++.h>
using namespace std;
const int MAXN=200010;
int n,d,k,cnt;
int sum[MAXN];
int isHot[MAXN];
struct LOG{int ts,id;bool operator<(const LOG&rhs)const{return ts<rhs.ts;}
}logs[MAXN];
queue<LOG>q;//某个长度为D的时间段的热搜情况
int main(){cin>>n>>d>>k;for(int i=1;i<=n;i++)cin>>logs[i].ts>>logs[i].id;sort(logs+1,logs+n+1);int ans=0;for(int i=1;i<=n;i++){while(!q.empty()&&q.front().ts<=logs[i].ts-d){if(sum[q.front().id]==k)//点赞个数刚好是k条cnt--;//减少热帖个数sum[q.front().id]--;q.pop();}//把当前记录放入日志q.push(logs[i]);sum[logs[i].id]++;if(sum[logs[i].id]==k){cnt++;//新增一个热帖isHot[logs[i].id]=1;//标记为热帖}ans=max(ans,cnt);}cout<<ans<<endl;if(ans==0)cout<<"-1\n";else{for(int i=1;i<=n;i++)if(isHot[i])cout<<i<<" ";}return 0;
}
三、映射真题
1. 眼红的 Medusa
题目描述
虽然 Miss Medusa 到了北京,领了科技创新奖,但是她还是觉得不满意。原因是:他发现很多人都和她一样获了科技创新奖,特别是其中的某些人,还获得了另一个奖项——特殊贡献奖。而越多的人获得了两个奖项,Miss Medusa就会越眼红。于是她决定统计有哪些人获得了两个奖项,来知道自己有多眼红。
输入格式
第一行两个整数 n , m n, m n,m,表示有 n n n 个人获得科技创新奖, m m m 个人获得特殊贡献奖。
第二行 n n n 个正整数,表示获得科技创新奖的人的编号。
第三行 m m m 个正整数,表示获得特殊贡献奖的人的编号。
输出格式
输出一行,为获得两个奖项的人的编号,按在科技创新奖获奖名单中的先后次序输出。
样例1
输入
4 3 2 15 6 8 8 9 2
输出
2 8
提示
对于 60 % 60\% 60% 的数据, 0 ≤ n , m ≤ 1000 0 \leq n, m \leq 1000 0≤n,m≤1000,获得奖项的人的编号 < 2 × 1 0 9 \lt 2 \times 10^9 <2×109;
对于 100 % 100\% 100% 的数据, 0 ≤ n , m ≤ 1 0 5 0 \leq n, m \leq 10^5 0≤n,m≤105,获得奖项的人的编号 < 2 × 1 0 9 \lt 2 \times 10^9 <2×109。
输入数据保证第二行任意两个数不同,第三行任意两个数不同。
参考答案
#include<bits/stdc++.h>
using namespace std;
map<int,bool>mp;
int n,m,awd[100010];
int main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>awd[i];for(int i=1,id;i<=m;i++)cin>>id,mp[id]=true;for(int i=1;i<=n;i++)if(mp[awd[i]]==true)cout<<awd[i]<<" ";return 0;
}
2. 美食评委
题目描述
一年一度的美食比赛火热进行中,小猴作为评委需要对一些选手的菜品打分,所有菜品从左到右排成一排,编号依次为 1 ∼ n 1∼n 1∼n,第 i i i 个菜品的美味值是 d i d_i di。小猴可以自己选择对那些选手的菜品进行打分,但是必须满足以下两个条件:
- 至少选择两位选手的菜品;
- 选择的第一个选手和最后一位选手的菜品美味值必须相同。
小猴所选的第一个菜品和最后一个菜品之间(不包含第一个和最后一个菜品)的部分菜品可以选择不要,请你帮助小猴计算所选菜品美味值的总和的最大值是多少?
输入描述
第一行一个整数 n n n;
第二行 n n n 个整数 d i d_i di。
输出描述
一行一个整数,表示所选菜品美味值的总和的最大值。
样例1
输入
5 1 2 3 1 2
输出
8
样例2
输入
5 100 1 1 -3 1
输出
3
提示
对 40 % 40\% 40% 的数据保证: 2 ≤ n ≤ 5000 , d i > 0 2≤n≤5000,d_i>0 2≤n≤5000,di>0;
对 100 % 100\% 100% 的数据保证: 2 ≤ n ≤ 2 × 1 0 5 , − 1 0 9 ≤ d i ≤ 1 0 9 2≤n≤2×10^5,-10^9\le d_i\le10^9 2≤n≤2×105,−109≤di≤109。
相关文章:
C++知识点总结(57):STL综合
STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环(数据加强)2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构 1. 队列 功能代码定义queue<tp>q入队.push(x)出队.pop()队头.front()队尾…...

mac2019环境 Airflow+hive+spark+hadoop本地环境安装
1 环境介绍 本地安装可分为两个部分,mac软件环境, python开发环境 ps: 安装过程参考chatgpt、csdn文章 1.1 mac软件环境 目标安装的的软件是hive、apache-spark、hadoop,但是这三个软件又依赖java(spark依赖)、ssh(…...

如何使用EasyExcel生成多列表组合填充的复杂Excel示例
作者:Funky_oaNiu 一、(需求)生成的表格效果:二、搞一个模板文件三、建立对应的表格实体类四、开始填充五、Vue3前端发起请求下载六、官方文档及AI问答 一、(需求)生成的表格效果: 其中只有顶部…...

【MySQL】MySQL在Centos环境安装
🔥个人主页: Forcible Bug Maker 🔥专栏: MySQL 目录 🌈前言🔥卸载不要的环境🔥检查系统安装包🔥卸载这些默认安装包🔥获取mysql官方yum源🔥安装mysql yum源…...

JDBC-Mysql 时区问题详解
目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与(jdbcType)TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转(jdbcType)TIMESTAMP …...

前端页面一些小点
案例一: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>快递单号查询</title><…...

Postman接口测试(断言、关联、参数化、输出测试报告)
基本界面展示 Get、Post请求 Postman断言 使用postman来判断预期结果与实际结果是否一致 响应状态码断言 响应包含字符串 断言判断字符串的格式 关联 用于解决http请求之间存在依赖关系 依赖:一个http请求的响应结果中的数据,被另一个请求使用 登…...
redis和mongodb等对比分析
Redis 和 MongoDB 都是非常流行的 NoSQL 数据库,它们在数据存储模型、性能、扩展性等方面有很大的差异。下面是 Redis 和 MongoDB 的对比分析: 1. 数据模型 Redis: 键值存储:Redis 是一个内存数据结构存储,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等。…...

如何在 WordPress 中轻松强制所有用户退出登录
作为一名长期管理 WordPress 网站的站长,我深知维护网站安全性的重要性。尤其是在面对会员网站或付费内容平台时,确保所有用户的登录状态是最新的,是维持网站正常运营的关键之一。今天,我就分享一下如何通过简单的步骤,…...

移除元素(leetcode 27)
给定一个数组,在数组中删除等于这个目标值的元素,然后返回新数组的大小 数组理论: 数组是一个连续的类型相近的元素的一个集合,数组上的删除是覆盖,只能由后面的元素进行覆盖,而不能进行真正意义上的地理位…...
html5表单属性的用法
文章目录 HTML5表单详解与代码案例一、表单的基本结构二、表单元素及其属性三、表单的高级应用与验证四、表单布局与样式 HTML5表单详解与代码案例 HTML5表单是网页中用于收集用户输入并提交到服务器的重要元素,广泛应用于登录页面、客户留言、搜索产品等场景。本文…...

使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan
使用 Ant Design Vue 自定渲染函数customRender实现单元格合并功能rowSpan 背景 在使用Ant Design Vue 开发数据表格时,我们常常会遇到需要合并单元格的需求。 比如,某些字段的值可能会在多行中重复出现,而我们希望将这些重复的单元格合并为…...
相机光学(四十四)——ALL-PD和PDAF
1.PDAF(Phase Detection Auto Focus) PDAF是相位检测自动对焦技术的缩写,它是一种在数码相机和智能手机摄像头中使用的自动对焦技术。 PDAF的原理是根据CIS(CMOS图像传感器)不同像素的相位差信息,判断出…...

Opengl光照测试
代码 #include "Model.h" #include "shader_m.h" #include "imgui.h" #include "imgui_impl_glfw.h" #include "imgui_impl_opengl3.h" //以上是放在同目录的头文件#include <glad/glad.h> #include <GLFW/glfw3.…...
OpenSIP2.4.11 向 FreeSWITCH 注册
应朋友要求做了个简单的测试,花费时间不过半小时,记录如下: OpenSIPS IP 地址:192.168.31.213 FreeSWITCH IP 地址:192.168.31.166 加载 uac_registrant 模块(这个模块依赖 uac_auth 模块,得…...

【C++】深入理解 C++ 优先级队列、容器适配器与 deque:实现与应用解析
个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 前言📌 1. 优先级队列、容器适配器和 deque 概述✨1.1 什么是优…...
Android 开发与救砖工具介绍
Android 开发与救砖工具介绍 在 Android 开发和设备维护中,fastboot、adb 和 9008 模式是三个非常重要的工具和模式。它们各自有不同的用途和操作方式,对于开发者和技术支持人员来说,了解它们的功能和使用方法是必不可少的。 1. Fastboot …...
vue2和vue3:diff算法的区别?
Vue 2 和 Vue 3 在 diff 算法方面的主要区别是: Vue 2 使用普通的 diff 算法,它会遍历所有的节点进行比对。 Vue 3 引入了 patch flag 的概念,并且对 diff 算法进行了优化,比如在相同层级的节点间不会去递归比对已经被移除的节点…...
后端返回大数问题
这个问题并不难,但是在开发的时候没有注意到 后端返回了一个列表数据,包含id,这个id是一个大数,列表进入详情,需要将id传入到详情页面详情页面内部通过id获取数据一直404,id不正确找问题,从路由传参到请求数据发现id没有问题,然后和后端进行联调,发现后端返回的id和我获取的id…...

vue3: ref, reactive, readonly, shallowReactive
vue3: ref, reactive, readonly, shallowReactive 原文地址:https://mp.weixin.qq.com/s/S3jPZKEMBP8nQQObF5d2VA <template><!-- <ul><li v-for"item in list.arr">{{item}}</li></ul><button click.prevent"add"…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...