当前位置: 首页 > article >正文

PAT乙级真题(2014·冬)

大纲

1031、查验身份证-(解析)-简单题

1032、挖掘机技术哪家强-(解析)-细节题(┬┬﹏┬┬),太抠细节了

1033、旧键盘打字-(解析)-输入格式!这才是重点(┬┬﹏┬┬),让我多瞧了20分钟

1034、有理数四则运算-(解析)-该死的,long long,坏我青春(┬┬﹏┬┬)

1035、插入与归并-(解析)-插入排序与归并排序方法

题目

1031、查验身份证

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:

Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2

现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

输入格式:

输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。

输出格式:

按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed

输入样例1:

4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X

输出样例1:

12010X198901011234
110108196711301866
37070419881216001X

输入样例2:

2
320124198808240056
110108196711301862

输出样例2:

All passed
#include <iostream>
using namespace std;
// 简单题
int main(){int n;cin>>n;char arr[11]{'1','0','X','9','8','7','6','5','4','3','2'};int num[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};string str;bool flag = false;while(n--){cin>>str;int sum=0;for(int i=0; i<str.size()-1; ++i){sum += (int)(str[i]-'0')*num[i];}if(str[str.size()-1] != arr[sum%11]){// cout<<str[str.size()-1]<<" "<<arr[sum%11]<<endl;cout<<str<<endl;flag = true;}}if(!flag) cout<<"All passed"<<endl;return 0;
}

1032、挖掘机技术哪家强

为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:

输入在第 1 行给出不超过 105 的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例:

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例:

2 150
#include <iostream>
using namespace std;
// 又是一道细节题(┬┬﹏┬┬),num_max不能为0极其以上,太抠细节了
int main(){long long data[100005]={0}; // 总得分,全局会自动初始化long long n;cin>>n;long long id,f;for(int i=0; i<n; ++i){cin>>id>>f;data[id]+=f;}long long id_max=0,num_max=-1;for(int i=1; i<=n; ++i){if(data[i]>num_max){id_max = i;num_max = data[i];}}cout<<id_max<<" "<<num_max<<endl;return 0;
}

1033、旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:

输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105 个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,.-+(代表上档键)。题目保证第 2 行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst
#include <iostream>
#include <cctype>
using namespace std;
// !!!!在两行中,这种输入格式!这才是重点(┬┬﹏┬┬),让我多瞧了20分钟
int main(){// 大写在内,小写一定打不出string str,in_str;getline(cin,str);getline(cin,in_str);bool flag = false;if(str.find('+')!=string::npos) flag = true;for(char c : in_str){if(flag&&isupper(c)) continue;if(str.find(toupper(c))!=string::npos) continue; // 不能被打印cout<<c;}return 0;
}

1034、有理数四则运算

本题要求编写程序,计算 2 个有理数的和、差、积、商。

输入格式:

输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数,负号只可能出现在分子前,分母不为 0。

输出格式:

分别在 4 行中按照 有理数1 运算符 有理数2 = 结果 的格式顺序输出 2 个有理数的和、差、积、商。注意输出的每个有理数必须是该有理数的最简形式 k a/b,其中 k 是整数部分,a/b 是最简分数部分;若为负数,则须加括号;若除法分母为 0,则输出 Inf。题目保证正确的输出中没有超过整型范围的整数。

输入样例 1:

2/3 -4/2

输出样例 1:

2/3 + (-2) = (-1 1/3)
2/3 - (-2) = 2 2/3
2/3 * (-2) = (-1 1/3)
2/3 / (-2) = (-1/3)

输入样例 2:

5/3 0/6

输出样例 2:

1 2/3 + 0 = 1 2/3
1 2/3 - 0 = 1 2/3
1 2/3 * 0 = 0
1 2/3 / 0 = Inf
#include <iostream>
#include <cmath>
using namespace std;
// 该死的,long long,坏我青春(┬┬﹏┬┬)
// 修改后的gcd函数,始终返回正数
long long gcd(long long a, long long b) {a = abs(a);b = abs(b);return b != 0 ? gcd(b, a % b) : a;
}void get_str(long long a, long long b) {// 处理分母为0的情况if (b == 0) {cout << "Inf";return;}// 处理分子为0的情况if (a == 0) {cout << 0;return;}// 计算最大公约数并约分long long n = gcd(a, b);a /= n;b /= n;// 确保分母为正if (b < 0) {a = -a;b = -b;}// 判断是否需要负号bool is_negative = (a < 0);if (is_negative) {cout << "(-";a = -a; // 将分子转为正数处理}// 输出带分数或真分数if (b == 1) {cout << a;} else {if (a >= b) {cout << a / b << " ";a %= b;}cout << a << "/" << b;}if (is_negative) {cout << ")";}
}int main() {long long a1, b1, a2, b2;scanf("%lld/%lld %lld/%lld", &a1, &b1, &a2, &b2);// 加法get_str(a1, b1);cout << " + ";get_str(a2, b2);cout << " = ";get_str(a1 * b2 + a2 * b1, b1 * b2);cout << endl;// 减法get_str(a1, b1);cout << " - ";get_str(a2, b2);cout << " = ";get_str(a1 * b2 - a2 * b1, b1 * b2);cout << endl;// 乘法get_str(a1, b1);cout << " * ";get_str(a2, b2);cout << " = ";get_str(a1 * a2, b1 * b2);cout << endl;// 除法get_str(a1, b1);cout << " / ";get_str(a2, b2);cout << " = ";if (a2 == 0) {cout << "Inf"; // 处理除数为0的情况} else {get_str(a1 * b2, a2 * b1);}cout << endl;return 0;
}

1035、插入与归并

根据维基百科的定义:

插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。

归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序列,直到最后只剩下 1 个有序的序列。

现给定原始序列和由某排序算法产生的中间序列,请你判断该算法究竟是哪种排序算法?

输入格式:

输入在第一行给出正整数 N (≤100);随后一行给出原始序列的 N 个整数;最后一行给出由某排序算法产生的中间序列。这里假设排序的目标序列是升序。数字间以空格分隔。

输出格式:

首先在第 1 行中输出Insertion Sort表示插入排序、或Merge Sort表示归并排序;然后在第 2 行中输出用该排序算法再迭代一轮的结果序列。题目保证每组测试的结果是唯一的。数字间以空格分隔,且行首尾不得有多余空格。

输入样例 1:

10
3 1 2 8 7 5 9 4 6 0
1 2 3 7 8 5 9 4 6 0

输出样例 1:

Insertion Sort
1 2 3 5 7 8 9 4 6 0

输入样例 2:

10
3 1 2 8 7 5 9 4 0 6
1 3 2 8 5 7 4 9 0 6

输出样例 2:

Merge Sort
1 2 3 8 4 5 7 9 0 6
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// 虽然核心是快速排序,与归并排序
// 当时也有许多小核心,输入格式,严格-ACM// 归并排序
void merge(vector<int>& vec, int st, int mid, int en){int i=st,j=mid+1,k=0;vector<int> temp(en-st+1,0);while(i<=mid&&j<=en){if(vec[i]<=vec[j]){temp[k++] = vec[i++];}else{temp[k++] = vec[j++];}}while(i<=mid) temp[k++] = vec[i++];while(j<=en) temp[k++] = vec[j++];for(int z=st; z<=en; ++z){vec[z] = temp[z-st];}
}int main(){int n;cin>>n;vector<int> source(n,0);vector<int> temp(n,0);for(int i=0; i<n; ++i) cin>>source[i];for(int i=0; i<n; ++i) cin>>temp[i];// 判断是否是插入排序vector<int> copy_num = source;for(int i=1; i<n; ++i){ // 开始判断int key = copy_num[i];int j = i - 1;while(j>=0&&copy_num[j]>key){copy_num[j+1]=copy_num[j];j--;}copy_num[j+1] = key;if(equal(copy_num.begin(),copy_num.end(),temp.begin())){ // 如果相同i++; // 下一步if(i != n){int key = copy_num[i];int j = i-1;while(j>=0&&copy_num[j]>key){copy_num[j+1]=copy_num[j];j--;}copy_num[j+1] = key;}cout<<"Insertion Sort"<<endl;for(int i=0; i<copy_num.size(); ++i){if(i!=copy_num.size()-1) cout<<copy_num[i]<<" ";else cout<<copy_num[i];}return 0;}}// 判断是否为合并vector<int> Merge_sort = source;int step = 1;int len = Merge_sort.size();bool flag = false;while(step<len){int st,mid,en;for(int i=0; i<len; i+=2*step){st = i;mid = min(i+step-1,len-1); // 刚好就是边界的位置en = min(i+2*step-1,len-1);merge(Merge_sort,st,mid,en);}if(flag){cout<<"Merge Sort"<<endl;for(int i = 0; i<Merge_sort.size(); ++i){if(i!=Merge_sort.size()-1) cout<<Merge_sort[i]<<" ";else cout<<Merge_sort[i];}return 0;}if(equal(Merge_sort.begin(),Merge_sort.end(),temp.begin())){flag = true;}step = 2*step;}return 0;
}

知识点

一、加权求和 :: 数学知识 ::

加权求和是一种数学运算方法,通过对不同数据赋予不同权重,以综合考虑各数据的重要程度或影响比例,从而得到一个总体的评估值或结果。以下是其详细解释:

基本原理

  • 权重的定义 :权重是一个大于等于 0 的数值,表示某个数据在整体中的相对重要性或所占的比例。权重越大的数据,在加权求和中的影响力也越大。

  • 计算方法 :将每个数据分别乘以对应的数据,然后将所有的乘积相加,得到的结果即为加权求和的结果。假设有一组数据为 x1​,x2​,…,xn​,对应的权重为 w1​,w2​,…,wn​,则加权求和的结果 S 可以表示为:S=w1​x1​+w2​x2​+⋯+wn​xn​。

与简单求和的区别

  • 简单求和 :简单求和是将所有的数据直接相加,不考虑各个数据之间的差异和重要性,认为每个数据对总和的贡献是相等的。

  • 加权求和 :加权求和则充分考虑到了不同数据的重要程度不同,通过对数据进行加权处理,使得重要的数据在总和中占据更大的比重,从而更准确地反映数据的实际情况和整体特征。

二、排序 :: 基础学习 ::

  • 插入排序:是一种简单直观的比较式排序算法。它的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。(稳定排序)
  • 归并排序:归并排序的核心思想是分治,我需要先把它拆分成小问题,然后递归地解决这些小问题,最后合并结果。(稳定排序)
插入排序:

插入排序:是一种简单直观的比较式排序算法。它的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。(稳定)

#include <iostream>
using namespace std;
int arr[5]{1,29,31,4,5};
void insertSort(){ // 插入排序for(int i=1; i<5; i++){int j = i-1;int key = arr[i];while(j>=0&&key<arr[j]){arr[j+1] = arr[j];j--;}arr[j+1] = key;}for(int c:arr) cout<<c<<" ";
}
int main(){insertSort();return 0;
}
归并排序:

归并排序:归并排序的核心思想是分治,我需要先把它拆分成小问题,然后递归地解决这些小问题,最后合并结果。(稳定)

递归:
#include <iostream>
using namespace std;void merge(int arr[], int res[], int st, int mid, int en){ // 合并int i = st, j=mid+1, k = st;while(i<=mid && j<=en){if(arr[i]<=arr[j]){res[k++] = arr[i];i++;}else{res[k++] = arr[j];j++;}}while(i<=mid){res[k++] = arr[i++];}while(j<=en){res[k++] = arr[j++];}
}void mergeSort(int arr[], int res[], int st, int en){ // 数组传入本来就是引用if(st<en){ // 可以合格int mid = st+(en-st)/2;mergeSort(arr,res,st,mid); // 分治mergeSort(arr,res,mid+1,en); // 分治// 进行合并merge(arr,res,st,mid,en);}
}
int main(){int arr[5]{1,29,31,4,5};int res[5]; // 结果集合mergeSort(arr,res,0,4); // for(int i:res) cout<<i<<" ";return 0;
}
非递归方式:
#include <iostream>
using namespace std;void merge(int arr[], int st, int mid, int en){ // 合并出来的嘟int i = st,j = mid+1,k = 0;int temp[en-st+1]; // 临时数组while(i<=mid&&j<=en){if(arr[i]<=arr[j]){temp[k++] = arr[i++];}else{temp[k++] = arr[j++];}}while(i<=mid) temp[k++] = arr[i++];while(j<=en) temp[k++] = arr[j++];for(int z = st; z<=en; ++z) arr[z] = temp[z-st];
}// 主打一个事情的两面性
int main(){int arr[6]{1,2,6,2,8,1};int step = 1;int len = sizeof(arr)/sizeof(int); // 计算的长度while(step<len){ // 是计算字节的int st,mid,en;for(int i=0; i<len; i+=2*step){// 计算出来两个数组st = i;mid = min(st+step-1,len-1);en = min(st+2*step-1,len-1);// 合并merge(arr,st,mid,en); // 传入的刚好都是边界}step = 2*step;}for(int i:arr) cout<<i<<" ";return 0;
}

三、取模

最开始的灵魂3问:

  • 负数与负数之间 (-7/-3)
  • 负数与正数之间 (-7/3)
  • 正数与负数之间 (7/-3) 

都是如何取模的?

在C++中,取模运算(%)和除法运算(/)的行为遵循以下规则:

  1. 除法运算的符号规则
    商的值总是向上取整。例如:

    • 7 / -3 的计算结果是 -2(因为 7 ÷ (-3) ≈ -2.33,向零取整后为 -2)。

    • -7 / 3 的结果是 -2,而 -7 / -3 的结果是 2

  2. 取模运算的符号规则
    余数的符号的始终与被除数保持一致。例如:

    • 7 % -3 的余数是 1(因为 7 = (-3) * (-2) + 1,余数符号与被除数 7 一致)。

    • -7 % 3 的余数是 -1(因为 -7 = 3 * (-2) + (-1),余数符号与被除数 -7 一致)。

  3. 数学恒等式
    对于所有整数 a 和 bb ≠ 0),始终满足:
    a = (a/b)*b + a%b;


借鉴博客、视频:

1、排序——归并排序(Merge sort)

2、插入排序(动画)

3、归并排序(动画)

3、归并排序(视频 C版) 


相关文章:

PAT乙级真题(2014·冬)

大纲 1031、查验身份证-&#xff08;解析&#xff09;-简单题 1032、挖掘机技术哪家强-&#xff08;解析&#xff09;-细节题(┬┬﹏┬┬)&#xff0c;太抠细节了 1033、旧键盘打字-&#xff08;解析&#xff09;-输入格式&#xff01;这才是重点(┬┬﹏┬┬)&#xff0c;让…...

力大砖飞,纯暴力搜索——蓝桥p2110(写着玩的)

#include<bits/stdc.h>const int N1000000;using namespace std;bool mp[2][N];int cnt0; int n;void dfs(int row,int col){cntcnt%1000000007;if(coln && row2){cnt;return ;}if(row>2){ //下一列 dfs(0,col1);return;}if(mp[row][col]1){ //下一行 dfs(row…...

如何计算两个向量的余弦相似度

参考笔记&#xff1a; https://zhuanlan.zhihu.com/p/677639498 日常学习之&#xff1a;如何计算两个向量或者矩阵的余弦相似度-CSDN博客 1.余弦相似度定理 百度的解释&#xff1a;余弦相似度&#xff0c;又称为余弦相似性&#xff0c;是通过计算两个向量的夹角余弦值来评估…...

OkHttp:工作原理 拦截器链深度解析

目录 一、OKHttp 的基本使用 1. 添加依赖 2. 发起 HTTP 请求 3. 拦截器&#xff08;Interceptor&#xff09; 4. 高级配置 二、OKHttp 核心原理 1. 责任链模式&#xff08;Interceptor Chain&#xff09; 2. 连接池&#xff08;ConnectionPool&#xff09; 3. 请求调度…...

python: DDD+ORM using oracle 21c

sql script: create table GEOVINDU.School --創建表 ( SchoolId char(5) NOT NULL, -- SchoolName nvarchar2(500) NOT NULL, SchoolTelNo varchar(8) NULL, PRIMARY KEY (SchoolId) --#主鍵 );create table GEOVINDU.Teacher ( TeacherId char(5) NOT NULL , TeacherFirstNa…...

基于 LeNet 网络的 MNIST 数据集图像分类

1.LeNet的原始实验数据集MNIST 名称&#xff1a;MNIST手写数字数据集 数据类型&#xff1a;灰度图 &#xff08;一通道&#xff09; 图像大小&#xff1a;28*28 类别数&#xff1a;10类&#xff08;数字0-9&#xff09; 1.通过torchvision.datasets.MNIST下载并保存到本地…...

Day4 C语言与画面显示练习

文章目录 1. harib01a例程2. harib01b例程3. harib01e例程4. harib01f例程5. harib01h例程 1. harib01a例程 上一章主要是将画面搞成黑屏&#xff0c;如果期望做点什么图案&#xff0c;只需要再VRAM里写点什么就好了&#xff0c;使用nask汇编语言实现一个函数write_mem8&#…...

一周热点-OpenAI 推出了 GPT-4.5,这可能是其最后一个非推理模型

在人工智能领域,大型语言模型一直是研究的热点。OpenAI 的 GPT 系列模型在自然语言处理方面取得了显著成就。GPT-4.5 是 OpenAI 在这一领域的又一力作,它在多个方面进行了升级和优化。 1 新模型的出现 GPT-4.5 目前作为研究预览版发布。与 OpenAI 最近的 o1 和 o3 模型不同,…...

《UE5_C++多人TPS完整教程》学习笔记34 ——《P35 网络角色(Network Role)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P35 网络角色&#xff08;Network Role&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09; Stephe…...

手写简易Tomcat核心实现:深入理解Servlet容器原理

目录 一、Tomcat概况 1. tomcat全局图 2.项目结构概览 二、实现步骤详解 2.1 基础工具包&#xff08;com.qcby.util&#xff09; 2.1.1 ResponseUtil&#xff1a;HTTP响应生成工具 2.1.2 SearchClassUtil&#xff1a;类扫描工具 2.1.3 WebServlet&#xff1a;自定义注解…...

ES Filter Query 区别

在 Elasticsearch&#xff08;ES&#xff09; 中&#xff0c;Filter 和 Query 是两种常用的数据检索方式&#xff0c;它们的主要区别在于 是否计算相关性分数&#xff08;Score&#xff09; 以及 是否使用缓存。以下是它们的详细区别和应用场景&#xff1a; 1. 核心区别 特性F…...

Java多线程与高并发专题——关于CopyOnWrite 容器特点

引入 在 CopyOnWriteArrayList 出现之前&#xff0c;我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现&#xff0c;而且也有了线程安全的 Vector 和Collections.synchronizedList() 可以使用。 首先我们来看看Vector是如何实现线程安全的 &#xff0c;还是…...

春节面对大流量并发,系统该如何设计

基于6个层次进行系统设计以解决大流量瞬时并发问题&#xff1a;CDN层&#xff0c;Nginx层&#xff0c;服务层&#xff0c;缓存层&#xff0c;数据库层&#xff0c;全链路压测监控。以下为具体设计参考 1. CDN&#xff08;内容分发网络&#xff09; 作用&#xff1a;静态资源&…...

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了&#xff0c;只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址&#xff1a;https://git…...

77.ObservableCollection使用介绍1 C#例子 WPF例子

可观察集合ObservableCollection using System; using System.Collections.ObjectModel;class Program {static void Main(){// 创建一个可观察集合ObservableCollection<string> list new ObservableCollection<string>();// 注册集合变化事件list.CollectionCh…...

【ThreeJS Basics 09】Debug

文章目录 简介从 dat.GUI 到 lil-gui例子安装 lil-gui 并实例化不同类型的调整改变位置针对非属性的调整复选框颜色 功能/按钮调整几何形状文件夹调整 GUI宽度标题关闭文件夹隐藏按键切换 结论 简介 每一个创意项目的一个基本方面是能够轻松调整。开发人员和参与项目的其他参与…...

在 k8s中查看最大 CPU 和内存的极限

在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;你可以从不同层面查看最大 CPU 和内存的极限&#xff0c;下面为你详细介绍从节点和集群层面查看的方法。 查看节点的 CPU 和内存极限 节点的 CPU 和内存极限是指单个节点上可分配的最大资源量&#xff0c;可通过以下几…...

【笔记】STM32L4系列使用RT-Thread Studio电源管理组件(PM框架)实现低功耗

硬件平台&#xff1a;STM32L431RCT6 RT-Thread版本&#xff1a;4.1.0 目录 一.新建工程 二.配置工程 ​编辑 三.移植pm驱动 四.配置cubeMX 五.修改驱动文件&#xff0c;干掉报错 六.增加用户低功耗逻辑 1.设置唤醒方式 2.设置睡眠时以及唤醒后动作 ​编辑 3.增加测试命…...

类和对象:

1. 类的定义&#xff1a; 1. 类定义格式&#xff1a; 对于我们的类的话&#xff0c;我们是把类看成一个整体&#xff0c;我们的函数里面没有找到我们的成员变量&#xff0c;我们就在我们的类里面找。 我们看我们的第二点&#xff1a; 我们的类里面&#xff0c;我们通常会对…...

【十三】Golang 通道

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 通道通道声明初始化缓冲机制无缓冲通道代码示例 带…...

对接RAGflow的API接口报错

对接RAGflow的API接口&#xff0c;报错&#xff1a; {"status":"success","message":"API连接正常","response":{"code":109,"data":false,"message":"Authentication error: API key …...

软考中级_【软件设计师】知识点之【面向对象】

简介&#xff1a; 软件设计师考试中&#xff0c;面向对象模块为核心考点&#xff0c;涵盖类与对象、继承、封装、多态等基础概念&#xff0c;重点考查UML建模&#xff08;类图/时序图/用例图&#xff09;、设计模式&#xff08;如工厂、单例模式&#xff09;及SOLID设计原则。要…...

Excel中COUNTIF用法解析

COUNTIF 是 Excel 中一个非常实用的函数&#xff0c;用于统计满足某个条件的单元格数量。它的基本语法如下&#xff1a; 基本语法 COUNTIF(范围, 条件) 范围&#xff1a;需要统计的单元格区域&#xff0c;例如 A1:A10 或整列 A:A。 条件&#xff1a;用于判断哪些单元格需要被…...

分布式锁—7.Curator的分布式锁一

大纲 1.Curator的可重入锁的源码 2.Curator的非可重入锁的源码 3.Curator的可重入读写锁的源码 4.Curator的MultiLock源码 5.Curator的Semaphore源码 1.Curator的可重入锁的源码 (1)InterProcessMutex获取分布式锁 (2)InterProcessMutex的初始化 (3)InterProcessMutex.…...

《UE5_C++多人TPS完整教程》学习笔记35 ——《P36 武器类(Weapon Class)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P36 武器类&#xff08;Weapon Class&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09; Stephen …...

【SpringMVC】SpringMVC的启动过程与原理分析:从源码到实战

SpringMVC的启动过程与原理分析&#xff1a;从源码到实战 SpringMVC是Spring框架中用于构建Web应用的核心模块&#xff0c;它基于MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;提供了灵活且强大的Web开发能力。本文将深入分析SpringMVC的启动过程、核…...

出现“ping不通但可以远程连接”的情况可能由以下原因导致

出现“ping不通但可以远程连接”的情况可能由以下原因导致&#xff1a; 1.防火墙或安全软件限制 • 原因&#xff1a;防火墙或安全软件可能阻止了ICMP数据包&#xff08;ping使用的协议&#xff09;&#xff0c;但允许了远程连接所需的协议&#xff08;如TCP&#xff09;。 …...

MySQL表空间碎片原理和解决方案

一、表空间与碎片的基本概念 表空间&#xff1a;MySQL中存储表数据和索引的物理文件&#xff08;如InnoDB的.ibd文件&#xff09;。分为系统表空间和独立表空间。碎片&#xff1a;数据在物理存储上不连续&#xff0c;分为行级碎片&#xff08;单行跨多页&#xff09;和页级碎片…...

[密码学实战]Java实现国密TLSv1.3单向认证

一、代码运行结果 1.1 运行环境 1.2 运行结果 1.3 项目架构 二、TLS 协议基础与国密背景 2.1 TLS 协议的核心作用 TLS(Transport Layer Security) 是保障网络通信安全的加密协议,位于 TCP/IP 协议栈的应用层和传输层之间,提供: • 数据机密性:通过对称加密算法(如 AE…...

最小栈 _ _

一&#xff1a;题目 二&#xff1a;思路 解释&#xff1a;一个栈名为st&#xff0c;其用来正常的出入栈&#xff0c;一个栈名为minst&#xff0c;其的栈顶元素一定是最小的元素 入栈&#xff1a;第一个元素&#xff0c;两个栈一起入&#xff0c;后面再入栈&#xff0c;只有入栈…...