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

关于一维数组和字符串的详细讲解(从属于GESP三级)

本章内容

一维数组基础
字符串基础

 

就像打磨一串符号,每个位置都要精准对待,才能串起完整的风景。坚持下去,小细节终将成就大格局。

一、⼀维数组基础


1 📚 定义

典型写法

说明

易错/拓展

int a[5];

编译期长度常量,元素默认未初始化

写成 a[5] = {} 非法

const int N=1e5; int a[N];

朴素大数组,栈内存可能溢出 → 用 static 或全局


 

vector<int> a(n);

运行期决定长度,底层仍连续

考级重点仍以静态数组为主

内存模型

  • • 连续区块;地址按元素大小递增
  • • 指针算术:*(a+3) == a[3]
  • • 越界访问 编译能过但运行 UB,考题常借此设陷阱

2 🔤 赋初值

场景

写法 (≤4 字母)

说明

完全列表

int a[3]={1,2,3};

列表短缺处默认补 0

全 0

int a[100]={0};

省略其余元素

运行期读入

for(int &x:a) cin>>x;

需已知 n

批量同值

fill(a,a+n,5);

<algorithm>

字符串

char s[]="ABC";

长度 4\0

易考点

⚠️ 越界陷阱

  • • 初始化列表元素 > 长度 → 编译错误
  • • 读入循环 i<n 必须用 <,写成 <= 会写到第 n 个非法位置

3 🧩 遍历

3.1 指定示例(标准 for)

for(int i=0;i<n;i++) cout<<a[i];

  • • 保证 i 范围 0 … n-1
  • • 常嵌套 ifsum += a[i] 等逻辑
  • • 输出时可加空格/换行避免粘连

3.2 拓展写法

写法

适用

备注

for(int &x:a) …

C++11 范围for

不需要下标,读写皆可

指针

for(int *p=a;p<a+n;p++) …

体现连续存储思想

逆序

for(int i=n-1;i>=0;i--) …

i

int 足够时注意 i-- 条件

越界警示:循环上界必须与真实元素个数一致;考试常故意给 for(i<=n) 检错。


4 🌟 计数

4.1 基础计数:统计满足条件元素个数

int cnt=0;
for(int i=0;i<n;i++) if(a[i]%2==0) cnt++;
cout<<cnt;
  • 时空复杂度:O(n) / O(1)
  • • 典型真题:统计负数、偶数、特定区间元素等

4.2 频次数组(桶)

const int M=101;          // 元素范围 0~100
int buc[M]={0};
for(int i=0;i<n;i++) buc[a[i]]++;
  • • 空间 O(M),查询任意值出现次数 buc[v] O(1)
  • • 若 M 大,可用 unordered_map<int,int> (考级一般不超标)

4.3 前缀和计数(高级拓展)

vector<int> pre(n+1,0);
for(int i=1;i<=n;i++) pre[i]=pre[i-1]+(a[i-1]==x);
// 区间 [l,r) 中值 == x 的个数:
int ans=pre[r]-pre[l];
  • • 适合多组区间统计,查询 O(1),整体 O(n+q)
  • • 为后续二级以上“区间和 / 差分”内容埋点

5 🌀 综合示范:输入 n 个数,输出最大值及其出现次数

#include<bits/stdc++.h>
using namespace std;int main(){int n; cin>>n;vector<int> a(n);for(int &x:a) cin>>x;int mx=a[0], cnt=0;for(int i=0;i<n;i++){if(a[i]>mx){ mx=a[i]; cnt=1; }else if(a[i]==mx) cnt++;}cout<<mx<<" "<<cnt<<"\n";return 0;
}
  • 变量命名mx, cnt 均 ≤4 字母
  • • 单趟遍历同时完成 “遍历+计数”
  • • 无越界;vector 封装长度,安全友好

6 🛠️ 常见易错汇总

易错

纠正

关联考点

int a[n];

其中 n 为变量

静态数组需编译期常量;用 vector<int> a(n);

定义

char s[5]="GESP";

需长度 ≥5;含 \0

赋初值

for(int i=0;i<=n;i++)

上界应 < n

遍历

计数器未初始化

int cnt=0;

计数

忘记 return 0;

主函数末尾加

综合


📚 二、字符串专题

  • C-风格 char 数组字符串
  • C++ string 对象
  • • 考试常见函数、易错陷阱与典型题型

🏗️ 1 总体对比

特性

char s[]

(数组)

string

(类对象)

申请

必须给定长度;手动保证结尾\0

无需显式长度;容量自动扩展

输入/输出

cin >> s

/ printfgetlinecin.getline

cin >> s

/ cout << s;整行用 getline(cin,s)

长度

strlen(s)

s.size()

/ s.length()

拼接

手写循环或 strcat

直接 +append

安全

易越界、需手动释放 new 空间

越界抛异常;RAII 自动管理

三级真题命中

长度含\0;下标越界无编译错

find / replace

、拼接、比较等


🔤 2 C-风格 char

2.1 定义与初始化

char t[6]="Hello";   // 长度=5+1('\0')
char s[1001] = {};  // 全部置 '\0'

考点char str[]="Hello"; 实际长度 6(含结束符)

2.2 安全输入

场景

代码

说明

无空格

scanf("%1000s",s);

指定宽度防溢出

含空格

cin.getline(s,1001);

读取到回车

若前面用 cin >>,先 cin.ignore() 或者 getchar() 吃掉残留换行。

2.3 遍历

  • • 用长度的方式进行遍历,类似普通数组:
char s[1001];    
cin >> s;            
int l;
l = strlen(s);
for (int i = 0; i < l; i++){    //字符串的首位是下标 0,故元素分布在 0 到 长度-1 cout << s[i] << " ";
}
  • • 用数组类型字符串的特性遍历,即最后一位是结束符 '\0':
char s[1001];    
cin >> s;
for (int i = 0; s[i] != '\0'; i++){        // 只要元素不等于'\0' ,就一直遍历cout << s[i] << " ";
}

思考,若一个数组类型字符串中出现多个结束符,会如何?

2.4 常用库函数

任务

函数

复杂度

长度

strlen(s)

O(n)

拷贝

strcpy(dst,src)

O(n)

拼接

strcat(a,b)

O(n)

查找

strchr(s,'x')

/ strstr(s,"ab")

O(n)

比较

strcmp(a,b)

O(n)

重叠内存用 memmove 不是 strcpy——真题多考。

2.5 易错清单

  • • 忘记腾出 \0 空间 → 运行时覆盖内存
  • • 将字面量 "hi" 赋给 char* p 后写入 → 只读区 UB
  • toupper(ch)(unsigned char) 强转,防负值
  • • 指针算术跨段越界考试常隐藏测试数据

3 🌟 string 对象

3.1 快速语法卡

string a="abc", b(5,'*');   // "*****"
string c=a+b;               // 拼接
a += "XYZ";
int n=a.size();             // 长度
a.insert(3,"OK");           // abcd → abcOKd
a.erase(1,2);               // 删除 abcde → ade
a.insert(2,b);                // 插入 a="abc", b="xyz" -> abxyzc
a.substr(2,4);                // 提取 abcde → cde
sort(s.begin(),a.end());    // 排序
size_t p=a.find('K');       // a.find('K') != string::npos 不等于 npos 则存在'K',否则不存在
a.replace(0,5,"C++");       // 用 "C++"替换下标0开始的5个字符,a = "hello world" 输出 "C++ world"

3.2 直接比较

可以用 ==, <, > 直接比较大小,按字典序"Apple" < "banana"

三年内多次出现大小判断陷阱(忽略大小写需先 transform

string str1 = "Hello";
string str2 = "hello";
transform(str1.begin(), str1.end(), str1.begin(), ::tolower);
transform(str2.begin(), str2.end(), str2.begin(), ::tolower);

3.3 输入技巧与混用陷阱

int n;  cin>>n;
cin.ignore();          // 丢弃换行
string line;
getline(cin,line);     // 安全读取整行

ignore()getline 会读到残余换行导致空串——23 年、24 年判题常设此坑。


🌀 4 高频真题模块

模块

真题示例

关键知识

长度含\0

23 年6月单选 #5

char 数组末尾结束符

find

/replace

25 年3月单选 #13 (HelloC++

返回值 npos;区间参数

toupper

大小写

24 年6月单选 #8(GESP IS INTERESTING

逐字符转换

拼接 & 回文

24 年9月编程《回文拼接》

substr

切片;双指针

长度/容量题

strlen

, sizeof 混淆;多在判断题考

区分“已用”与“空间”


🏁 小结

  • char 数组:记得“+1”留给 '\0'scanf/getline 要限宽;库函数依赖结束符。
  • std::string:拼接、比较一行搞定;find/replace/substr 是三级命题最爱。
  • 混合输入cin+getline 必用 ignore;跨越空格用 getline 接管。
  • 真题复现:长度计算、替换输出、大小写转换、npos 判断,每年必考。

🧩 三、条件复合判断全景梳理

本节聚焦 逻辑运算符组合、if-else if 嵌套 以及 执行顺序/陷阱


1 🧪 逻辑运算符基础

运算符

说明

短路特性

&&

:左假即假

左表达式为假则右侧不执行

`


 

`

!

取反

单目,无短路

短路副作用:右侧带函数调用或自增时要小心if(a!=0 && b/a>1) —— 当 a==0 时不做除法,避免异常。


2 📏 条件嵌套组合示例

int x; cin>>x;
if(x%2==0 && x%3!=0){           // 偶数且不能被 3 整除cout<<"A\n";
}else if((x%2 || x%3) && x<100){ // (2 或 3 不能整除) 且 <100cout<<"B\n";
}
  • 分析顺序
    1. 1. 布尔运算符优先级:! > && > ||
    2. 2. 括号可提升可读性,避免误解
  • 常考陷阱:写成 x%2==0 && !x%3==0 实际含义不同
    • !x%3 先取反再模 3 ⇒ 逻辑错误

3 🔍 多条件 if-else if

int sc; cin>>sc;
if(sc>=90)       cout<<"A";
else if(sc>=80)  cout<<"B";
else if(sc>=70)  cout<<"C";
else             cout<<"D";
  1. 1. 自上而下 第一次为真就执行,后续分支全部跳过。
  2. 2. 区间覆盖:条件应互斥,否则将出现永远执行不到的分支。
if(n>0)         ...
else if(n>10)   ...   // ⚠ 永远进不到;应把第二行写成 n>10 BEFORE n>0
  1. 3. else 绑定最近 if
if(a)if(b) do1();else  do2();   // else 关联的是内层 if(b)

解决歧义:加 {} 或使用 else if 明确结构。


4 ⚖️ 执行顺序与短路细节

代码片段

实际执行顺序

典型问题

if(f1() && f2())

f1(),若返回假,f2() 不调用

初学者以为都会执行

`if(f1()


 

f2())`

int y = (x>0) ? fun1() : fun2();

三目运算同样短路

两函数只会调用一个


5 🔧 高频陷阱清单

⚠️ 误写

正解

原因

if(a=b)

if(a==b)

赋值代替比较,a=b 返回左值

if(x&1==1)

if((x&1)==1)

x&1

&

优先级低于 ==

忘记花括号

if(cond) stmt1; stmt2;

只控制第一条语句

冗余判断

if(x>10) … else if(x>20)…

第二分支永远假

多重否定

!!(x%2==0)

可直接写 x%2==0

可读性差


6 ✨ 真题式练习 2 例

练习 1 偶数但非 4 的倍数

输入整数 n,若 n 为偶数且 不是 4 的倍数输出 Yes,否则输出 No

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;// n 为偶数: n%2==0   不是 4 的倍数: n%4!=0cout<<( (n%2==0 && n%4!=0) ? "Yes":"No" );
}

考点:嵌套 &&!=;注意括号可省但推荐。


练习 2 区间分类(多分支)

读入成绩 s,按照 [≥90]、[80-89]、[60-79]、[<60] 输出等级 A/B/C/D

#include<bits/stdc++.h>
using namespace std;
int main(){int s;cin>>s;if(s>=90)         cout<<'A';else if(s>=80)    cout<<'B';else if(s>=60)    cout<<'C';else              cout<<'D';
}

考点else if 顺序必须由大到小保证互斥覆盖。


7 🔚 小结 & 应试技巧

  1. 1. 先写括号再删:复杂逻辑先全包围,确认无歧义后可简化。
  2. 2. 互斥顺序else if 链按区间大小或优先级排序,避免“死分支”。
  3. 3. 短路意识:带副作用的表达式必须确保其一定执行(或一定不执行)。
  4. 4. 编译器警告:开启 -Wall -Wextra;多数误把 = 写成 == 会被提示。
  5. 5. 调试断点:怀疑短路时,在每个函数或逻辑片段放打印/断点确认执行路径。

📊 四、数组 × 字符串组合技巧一览(统计 / 计数 / 提取)

  1. 1. 读取整数串 → 统计奇数 &“美丽数”
  2. 2. 数组桶法:统计 0 – 9 数字出现频次
  3. 3. 从混合字符串提取数字与字母

1️⃣ 统计奇数 & “美丽数字”

美丽数字:各位数字之和是 10 的倍数(示例定义,可自行替换)

步骤

操作

说明

1

getline

读整行到 string s

允许空格

2

stringstream ss(s)

分词

依次取整数

3

保存到 vector<int> a

动态一维数组

4

遍历 a 计数

odd

bea

代码
#include<bits/stdc++.h>
using namespace std;bool beau(int x){           // 判“美丽”int sum=0;for(;x;x/=10) sum+=x%10;return sum%10==0;
}int main(){string s; getline(cin,s);          // 1stringstream ss(s);               vector<int> a; int v;             while(ss>>v) a.push_back(v);       // 2-3int odd=0, bea=0;for(int x:a){                      // 4if(x&1)       ++odd;           // 奇数if(beau(x))   ++bea;           // 美丽数}cout<<"odd="<<odd<<" beau="<<bea<<"\n";
}

复杂度:O(n) 时间 / O(n) 空间(n = 整数个数)。


2️⃣ 数组桶:0 – 9 频次统计

当数值范围 有限且连续 时,一维数组可作“桶”存频次,比 map 快且省内存。

#include<bits/stdc++.h>
using namespace std;
int main(){string s; getline(cin,s);          // 输入如 "2 8 6 2 9 0 8 8"int buc[10]={0};                   // 0-9 桶stringstream ss(s);int x;while(ss>>x) if(0<=x && x<=9) ++buc[x];for(int i=0;i<10;i++)cout<<i<<":"<<buc[i]<<" \n"[i==9];
}

要点

  • • 桶长 M=10,空间 O(1)。
  • • 输入值需先判断合法区间,避免越界。
  • • 若统计字母,可改 int buc[26] 并用 ch-'A' 作下标。

3️⃣ 从混合串提取数字 & 字母

#include<bits/stdc++.h>
using namespace std;
int main(){string t; getline(cin,t);                 // e.g. "Room 404 at 8:30PM!"string dig, alp;                          // 结果字符串for(char c:t){if(isdigit((unsigned char)c)) dig+=c; // 提取数字else if(isalpha((unsigned char)c)) alp+=c;}cout<<"num="<<dig<<"\nlet="<<alp<<"\n";
}
延伸:转成整数数组再统计
vector<int> nums;
for(size_t i=0;i<dig.size();i++)nums.push_back(dig[i]-'0');               // '7'→7

🚩 常见陷阱速记

⚠️

说明

修正

strtok

const char*

会修改原串

先拷贝到可写缓冲

桶数组越界

下标来自输入值

先判断范围

isdigit(c)

负值 UB

unsigned char

转型

(unsigned char)c

混用 >>getline

残留换行导致空读

cin.ignore()

抛掉换行

统计字母忽略大小写

需统一大小写

toupper

/ tolower


🧩 小练习

  1. 1. 手机号识别:输入一行文本,抽取所有连续 11 位数字串并统计出现次数。
  2. 2. 最高频字母:读入一段英文句子,输出出现次数最多的字母(忽略大小写)。
  3. 3. 数字之和是质数:给定整数数组,统计数字和为质数的元素个数(可借助桶加素数筛)。

五、精选选择题(10 题)

✅ 1.【一维数组 · 真题】

题目double a[3]; 能访问的最大合法下标是
A. 0 B. 2 C. 3 D. 4
答案:B
解析:长度为 3 的数组下标范围 0…2,3 越界。


✅ 2.【char 字符串】

题目char s[] = "GESP"; 语句执行后 sizeof(s) 的结果为
A. 4 B. 5 C. 6 D. 8
答案:B
解析:字面量 4 字节,编译器自动添加结束符 '\0',共 5 字节。


✅ 3.【std::string · 真题】

题目:已知 string t="HelloWorld";,下列哪条语句能直接将 t 变成 "HelloC++"
A.t.replace(0,5,"C++");
B.t.replace(5,5,"C++");
C.t.insert(5,"C++");
D.t.erase(5,5);
答案:B
解析:从下标 5 开始替换 5 个字符 "World"


✅ 4.【数组存储】

题目:关于数组在内存中的布局,下列说法正确的是
A. 元素可能不连续
B. 连续且地址按元素大小递增
C. 下标与物理顺序无必然关系
D. 数组名代表首元素的值
答案:B
解析:C/C++ 规定数组元素连续存放,地址递增。


✅ 5.【char 函数】

题目:若 char s[6]="abcde";,以下调用能把数组内容复制到dst并保证以\0结尾的是
A.strcpy(dst,s);
B.strncpy(dst,s,5);
C.memcpy(dst,s,5);
D.strncat(dst,s,5);
答案:A
解析strcpy复制到遇\0为止并写入结束符;strncpy不会自动写\0memcpy同理,strncat 需目标串已有结束符。


✅ 6.【std::string 比较】

题目string a="apple", b="Banana"; 执行 cout<<(a<b); 输出(假设 true 为 1)
A. 0 B. 1 C. 不确定 D. 取决于长度
答案:A
解析:字典序逐字符比较;首字符 'a'(97) > 'B'(66),故 a<b 为假,输出 0。


✅ 7.【混合输入】

题目:下面代码意在读取整数 n 后再读取一整行字符串 line,正确的空缺语句是

int n; string line;
cin >> n; ________;        // ←此处
getline(cin,line);

A.cin.flush(); B.cin.ignore(); C.cin.sync(); D. 不需要任何语句
答案:B
解析cin >> n 保留换行符;需 ignore() 丢弃,否则 getline 读取空行。


✅ 8.【数组初始化】

题目:以下数组定义中合法的是
A.int a[];
B.int b[0];
C.char c[5] = {};
D.double d[3.5];
答案:C
解析:静态数组须给出正整数常量长度;{} 可全部初始化为 0。


✅ 9.【string 查找】

题目:若 string s="GESP";,下列表达式返回 string::npos 的是
A.s.find('S');
B.s.find("ES");
C.s.find('Z');
D.s.rfind('G');
答案:C
解析'Z' 不存在,其余均能匹配。


✅ 10.【数组大小】

题目int arr[100]; 在 64 位系统中占用字节数为
A. 100 B. 200 C. 400 D. 与平台无关
答案:C
解析int 4 字节,100×4 = 400 字节。


六、精选判断题(10 题)

✅ 1.【一维数组 · 真题】

题目:数组下标越界在编译阶段必定能被检测出来。
答案
解析:仅极少数常量情况,绝大多数运行期才表现未定义行为。


✅ 2.【char 字符串】

题目strlen("ABC") 结果与 sizeof("ABC") 相同。
答案
解析:前者 3,不含 \0;后者 4。


✅ 3.【string · 真题】

题目stringsize()length() 返回值完全等价。
答案
解析:两函数互为别名。


✅ 4.【char 字符串】

题目char *p="abc"; p[0]='A'; 在多数实现上会崩溃。
答案
解析:字面量在只读区,写入 UB 通常触发段错。


✅ 5.【string 函数】

题目:执行 s.find('x')==-1 判断“未找到”是安全的写法。
答案
解析:应与 string::npos 比较;-1 先转为无符号可能误用。


✅ 6.【大小写转换 · 真题】

题目:直接调用 toupper(-1) 会导致未定义行为。
答案
解析:需先转为 unsigned char


✅ 7.【大小写转换】

题目toupper(ch) 的参数可直接传 char,不考虑其符号性。
答案
解析:负值 char 未定义行为,应强转 unsigned char


✅ 8.【string 函数】

题目:调用 reserve()string::capacity() 一定等于请求值。
答案
解析:只保证 ≥ 请求值


✅ 9.【数组 · 真题】

题目:数组元素在内存中可以不连续存放。
答案
解析:必须连续


✅ 10.【字符 · 真题】

题目:字符常量 '\0''0' 等价。
答案
解析:前者 ASCII 0,后者 ASCII 48


七、精选编程题(2 题)

✅ 1.【数组】求最大值与出现次数

题目
输入整数 n (1 ≤ n ≤ 10⁵) 以及 n 个整数,输出数组中的最大值及其出现次数。

解题思路
  • • 一趟遍历:维护当前最大值 mx 与计数器 cnt
  • • 当读到新元素 x
    • • 若 x>mx ⇒ 更新 mx=x, cnt=1
    • • 若 x==mxcnt++
参考代码
#include<bits/stdc++.h>
using namespace std;int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n; cin >> n;vector<int> a(n);for(int &x : a) cin >> x;int mx = a[0], cnt = 0;         // 当前最大与计数for(int x : a){if(x > mx){ mx = x; cnt = 1; }   // 更新最大else if(x == mx) ++cnt;          // 同值计数}cout << mx << ' ' << cnt << '\n';return 0;
}

复杂度:时间 O(n),空间 O(1)。


✅ 2.【字符串】删除数字并互换大小写(25 分)

题目
输入一行字符,删除所有数字字符,并将英文字母大小写互换,输出结果。

解题思路
  • • 遍历原串:
    1. 1. 若 isdigit(c) → 跳过
    2. 2. 若 isalpha(c)islower?toupper:tolower
    3. 3. 其它字符直接保留
  • • 使用结果串 res 收集。
参考代码
#include<bits/stdc++.h>
using namespace std;int main(){string s; getline(cin, s);string res;for(char c : s){if(isdigit((unsignedchar)c)) continue;           // 删除数字if(isalpha((unsignedchar)c))                     // 字母互换大小写c = islower(c) ? toupper(c) : tolower(c);res.push_back(c);                                 // 追加至结果}cout << res << '\n';return 0;
}

复杂度:时间 O(n),空间 O(n)。

相关文章:

关于一维数组和字符串的详细讲解(从属于GESP三级)

本章内容 一维数组基础 字符串基础 就像打磨一串符号&#xff0c;每个位置都要精准对待&#xff0c;才能串起完整的风景。坚持下去&#xff0c;小细节终将成就大格局。 一、⼀维数组基础 1 &#x1f4da; 定义 典型写法 说明 易错/拓展 int a[5]; 编译期长度常量&#x…...

【驱动设计的硬件基础】PCI和PCI-E

打开电脑主机&#xff0c;你会看到主板上一排长短不一的插糟&#xff1a;矮胖的 PCI 插糟还插着古老的声卡&#xff0c;旁边细长的 PCI-E 插糟则牢牢卡住显卡、高速网卡等核心设备。这些看似普通的插糟&#xff0c;其实是计算机硬件沟通的 "高速公路"&#xff0c;承载…...

【学习记录】Git Base使用-免密连接代码仓库

github&#xff08;JL765&#xff09;和gitee&#xff08;JL765/git-test01&#xff09;都可以用于管理代码 在windows中&#xff0c;可以通过Git Base软件&#xff08;Git - Downloading Package&#xff09;和仓库进行连接 下载略过 github登录 ssh -T gitgithub.com # 成…...

android脱糖

前言 另外一篇相关文章&#xff1a;https://androidblog.blog.csdn.net/article/details/148574130 通过sourceCompatibility 和targetCompatibility可以实现低版本写代码高版本输出&#xff08;详情可查看我的另一篇文件中的&#xff1a;验证各种Java版本 > 一、纯Java项…...

DVWA Brute Force漏洞深度分析与利用指南

DVWA简介 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个基于PHP/MySQL的脆弱性Web应用平台&#xff0c;专为安全专业人员设计&#xff0c;用于测试技能和工具。它包含十大安全模块&#xff0c;其中Brute Force&#xff08;暴力破解&#xff09;是最基础…...

Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录

目录 &#x1f527;Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录 &#x1f4cc; 问题背景 &#x1f9ea; 排查过程 步骤 1&#xff1a;确认加速器地址是否可访问 步骤 2&#xff1a;检查 Docker 是否真的使用了镜像加速器 步骤 3&…...

采用ArcGIS10.8.2 进行插值图绘制

一、最终成果图展示 二、软件下载 链接: 百度网盘 请输入提取码 密码:azay 三、软件安装 1、在安装之前需要关闭电脑的防火墙及杀毒软件 设置-隐私和安全性-Windows安全中心-防火墙和网络保护 2、软件解压 (1)【ArcGIS_Desktop_1082_180......】“以管理员身份运行”…...

国产安路FPGA纯verilog视频图像去雾,基于暗通道先验算法实现,提供5套TD工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目国产安路FPGA相关方案推荐本博主已有的图像处理方案 3、设计思路框架工程设计原理框图输入Sensor之-->GC0308摄像头输入Sensor之-->OV7725摄像头输入Sensor之--…...

利用大型语言模型增强边缘云 AI 系统安全性

大家读完觉得有帮助及的关注和点赞&#xff01;&#xff01;&#xff01; 抽象 随着边缘计算和云系统在 AI 驱动应用中的广泛应用&#xff0c;如何在确保数据隐私的同时保持高效性能已成为一个紧迫的安全问题。本文提出了一种基于联邦学习的数据协作方法&#xff0c;以提高边缘…...

微信小程序中 rpx与px的区别

在微信小程序中的rpx比px方便的多 <!--pages/welcome/welcome.wxml--> <!--rpx替换px--> <image style"width:200rpx;height: 200rpx"src"/images/avatar/3.png"></image> <text>你好&#xff0c;冻梨</text> <but…...

解锁阿里云AnalyticDB:数据仓库的革新利器

AnalyticDB&#xff1a;云数据仓库新势力 在数字化浪潮中&#xff0c;数据已成为企业的核心资产&#xff0c;而云数据仓库作为数据管理与分析的关键基础设施&#xff0c;正扮演着愈发重要的角色。阿里云 AnalyticDB 作为云数据仓库领域的佼佼者&#xff0c;以其卓越的性能、创…...

告别水印烦恼,一键解锁高清无痕图片与视频!

在这个数字化飞速发展的时代&#xff0c;无论是设计小白还是创意达人&#xff0c;都可能遇到这样的困扰&#xff1a;心仪的图片或视频因水印而大打折扣&#xff0c;创意灵感因水印而受限。别急&#xff0c;今天就为大家带来几款神器&#xff0c;让你轻松告别水印烦恼&#xff0…...

前端面试记录

前言&#xff1a;面试题永远是刷不完的&#xff0c;即使刷了一大堆下次面试又忘记了&#xff0c;重要的是组织自己的语言&#xff0c;保持自信&#xff0c;不给自己制造面不过的心理负担&#xff0c;对刷过的题要有个大致印象&#xff0c;好在答题的时候能够多多少少说出点贴近…...

RAG实战基础篇/windows电脑快速部署qwen3:14B

现阶段&#xff0c;在本地部署ollama非常简单&#xff0c;准备好一个有GPU的电脑&#xff0c;十分钟轻松部署qwen3:14b。实现本地的大模型部署。 我这里为了方便起见&#xff0c;直接使用windows电脑下载一个ollama。 访问ollama GIthub地址&#xff1a;ollama开源地址 直接…...

Java SE - 图书管理系统模拟实现

目录 1.设计框架2. 实现用户类3.实现书和书架类4.登录界面的实现5.实现menu方法6.测试菜单选择7.实现一个IFun接口7.1 查找功能的实现7.2 展示功能的实现7.3 增加功能的实现7.4 删除功能的实现7.5 退出功能的实现7.6 借阅功能的实现7.7 归还功能的实现 8.实现IFuntion类型的数组…...

华为HN8145V光猫改华为蓝色公版界面,三网通用,xgpon公版光猫

咸鱼只卖20多元一个&#xff0c;还是xgpon的万兆猫&#xff0c;性价比不错哦 除了没有2.5G网口&#xff0c;其他还行。 改成公版光猫后&#xff0c;运营商是无法纳管光猫&#xff0c;无法后台修改光猫数据及超密。 华为 HN8145V 光猫具有以下特点&#xff1a; 性能方面 高速接…...

【ARM 嵌入式 编译系列 7.5 -- GCC 打印链接脚本各段使用信息】

文章目录 Overview1 在 linker script 中定义符号2 编译并生成 ELF 文件3 使用 nm awk 输出各段地址及大小&#xff08;含单位&#xff09;4 实际输出示例5 进阶建议 Overview 在 GCC 编译生成 elf 后 打印出出数据段的开始地址及结束地址&#xff0c;bss 段的开始地址和结束…...

在大数据求职面试中如何回答分布式协调与数据挖掘问题

在大数据求职面试中如何回答分布式协调与数据挖掘问题 场景&#xff1a;小白的大数据求职面试 小白是一名初出茅庐的程序员&#xff0c;今天他来到一家知名互联网公司的面试现场&#xff0c;面试官是经验丰富的老黑。以下是他们之间的对话&#xff1a; 第一轮提问&#xff1…...

小白成长之路--nginx基础配置(一)

文章目录 一、概述1.1 Nginx 特点1.2 Nginx 作用1.3Nginx工作原理 二、Nginx服务搭建2.1安装2.2 目录结构2.3 配置文件作用2.4 nginx,conf配置文件详解2.5 核心命令2.6 Nginx信号三.Nginx3.1启动 总结 一、概述 Nginx 是开源、高性能、高可靠的 Web服务器 和反向代理服务器&am…...

基于 SpringBoot+JSP 的医疗预约与诊断系统设计与实现

摘要 本研究针对传统医疗预约与诊断流程中存在的效率低下、信息不透明、患者等待时间长等问题&#xff0c;设计并实现了一个基于 SpringBootJSP 的医疗预约与诊断系统。系统采用 B/S 架构&#xff0c;整合了用户管理、科室管理、医生排班、预约挂号、在线问诊、检查检验、诊断…...

C++语言发展历程-2025

C语言发展历程-2025 前言 C是一种高级编程语言&#xff0c;由Bjarne Stroustrup于1979年在贝尔实验室创建&#xff0c;是C语言的扩展和改进版。 C从最初的C with class&#xff0c;经历了C98、C03、C11、C 14、C17、C20、C23多次标准化改造&#xff0c;成为一门多范式、高性…...

Zynq + FreeRTOS + YAFFS2 + SQLite3 集成指南

Zynq FreeRTOS YAFFS2 SQLite3 集成指南 一、系统架构设计 #mermaid-svg-qvuP6slyza89wsiT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qvuP6slyza89wsiT .error-icon{fill:#552222;}#mermaid-svg-qvuP6slyz…...

Python基础之函数

代码仓库地址&#xff1a;gitgithub.com:Liucc-123/python_learn.git 函数介绍 函数是组织好的、可重复使用的&#xff0c;用来实现单一、或相关功能的代码段。 函数可以提高应用的模块性和代码的可重复性。python 有许多内置的函数比如 print 打印函数&#xff0c;python 也…...

Python异步爬虫编程技巧:从入门到高级实战指南

Python异步爬虫编程技巧&#xff1a;从入门到高级实战指南 &#x1f680; &#x1f4da; 目录 前言&#xff1a;为什么要学异步爬虫异步编程基础概念异步爬虫核心技术栈入门实战&#xff1a;第一个异步爬虫进阶技巧&#xff1a;并发控制与资源管理高级实战&#xff1a;分布式…...

Redis哨兵模式深度解析与实战部署

Redis哨兵模式深度解析与实战部署 文章目录 Redis哨兵模式深度解析与实战部署一、Redis哨兵模式理论架构详解1.1 哨兵模式的核心架构组成基础架构拓扑图 1.2 哨兵节点的核心功能模块1.2.1 监控模块&#xff08;Monitoring&#xff09;1.2.2 决策模块&#xff08;Decision Makin…...

【软考高级系统架构论文】论边缘计算及其应用

论文真题 边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的分布式开放平台(架构),就近提供边缘智能服务。边缘计算与云计算各有所长,云计算擅长全局性、非实时、长周期的大数据处理与分析,能够在长周期维护、业务决策支撑等领域发挥优势;…...

触摸屏(典型 I2C + Input 子系统设备)从设备树解析到触摸事件上报

触摸屏&#xff08;典型 I2C Input 子系统设备&#xff09;从设备树解析到触摸事件上报 以下是架构图&#xff0c;对触摸屏&#xff08;典型I2C Input子系统设备&#xff09;从设备树解析到触摸事件上报的全流程详细拆解&#xff0c;包含文字讲解和配套流程图&#xff1a; 注…...

Java中==与equals()方法的深度解析

作为Java后端开发者&#xff0c;我们经常会遇到需要比较两个对象是否相等的情况。在Java中&#xff0c;运算符和equals()方法都可以用于比较&#xff0c;但它们之间存在着本质的区别。 1. 运算符 是一个比较运算符&#xff0c;它的行为取决于比较的类型&#xff1a; 1.1 比较…...

qt常用控件--02

文章目录 qt常用控件--02toolTip属性focusPolicy属性styleSheet属性补充知识点按钮类控件QPushButton 结语 很高兴和大家见面&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01;&#xff01; 今天我们进一步c11中常见的新增表达 作者&…...

AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法(一)

环境&#xff1a; AI-Sphere-Butler VBCABLE2.1.58 Win10专业版 豆包桌面版1.47.4 ubuntu22.04 英伟达4070ti 12G python3.10 问题描述&#xff1a; AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法&#xff08;一&#xff09; 聊天视频&#xff1a; AI真…...

为什么android要使用Binder机制

1.linux中大多数标准 IPC 场景&#xff08;如管道、消息队列、ioctl 等&#xff09;的进程间通信机制 ------------------ ------------------ ------------------ | 用户进程 A | | 内核空间 | | 用户进程 B | | (User Spa…...

Apache SeaTunnel Flink引擎执行流程源码分析

目录 1. 任务启动入口 2. 任务执行命令类:FlinkTaskExecuteCommand 3. FlinkExecution的创建与初始化 3.1 核心组件初始化 3.2 关键对象说明 4. 任务执行:FlinkExecution.execute() 5. Source处理流程 5.1 插件初始化 5.2 数据流生成 6. Transform处理流程 6.1 插…...

XML读取和设置例子

在Qt C中&#xff0c;可以使用Qt的 QDomDocument类来读取、更新和保存XML文件。这个类提供了对XML文档的强大操作能力&#xff0c;支持通过DOM&#xff08;文档对象模型&#xff09;对XML进行读取、修改、添加和删除节点等操作。 下面是一个详细的例子&#xff0c;演示如何在Qt…...

数据标注师学习内容

目录 文本标注词性标注实体标注 图像标注语音标注 文本标注 词性标注 第一篇 第二篇 实体标注 点击这里 关系标注 事件标注 意图标注 关键词标注 分类标注 问答标注 对话标注 图像标注 拉框标注 关键点标注 2D标注 3D标注 线标注 目标跟踪标注 OCR标注 图像分类标注 语音…...

如何实现财务自由

如果有人告诉你&#xff0c;普通人也可以在5到10年内&#xff0c;而不是40到50年后实现财务自由、彻底退休&#xff0c;你会不会觉得对方在开玩笑&#xff1f;但这并非天方夜谭&#xff0c;《百万富翁快车道》的作者MJ德马科就是成功案例。他曾和多数人一样做底层工作&#xff…...

一些想法。。。

1.for里面的局部变量这种还是在for里面定义比较好 比如 for(int i 0;i<n;i){ int num; cin>>num; } 实不相瞒&#xff0c;有一次直接cin了i怎么都没看出来哪里错了。。。 2.关于long long 如果发现中间结果大约是10^9&#xff0c;就要考虑int 溢出 即用 long …...

基于分布式部分可观测马尔可夫决策过程与联邦强化学习的低空经济智能协同决策框架

基于分布式部分可观测马尔可夫决策过程与联邦强化学习的低空经济智能协同决策框架 摘要: 低空经济作为新兴战略产业,其核心场景(如无人机物流、城市空中交通、低空监测)普遍面临环境动态性强、个体观测受限、数据隐私敏感及多智能体协同复杂等挑战。本文创新性地提出一种深…...

github常用插件

一&#xff0c;文档辅助阅读系列&#xff1a;自动化wiki处理 1&#xff0c;deepwiki https://deepwiki.com/ 将我们看不懂的官方code文档转换为wiki&#xff0c;更加便于理解。 其实能够翻阅的仓库很有限&#xff0c;比如说&#xff1a; 但是有很多仓库并没有index&#xff…...

python3字典

1 字典简介 字典是一种可变容器模型&#xff0c;且可存储任意类型对象。字典每个基本元素都包括两个部分&#xff1a; 键&#xff08;key&#xff09;和键对应的值&#xff08;value&#xff09; 每个键值 key>value 对用冒号: 分割&#xff0c;每个对之间用逗号(,)分割&am…...

华为云 Flexus+DeepSeek 征文|增值税发票智能提取小工具:基于大模型的自动化信息解析实践

华为云 FlexusDeepSeek 征文&#xff5c;增值税发票智能提取小工具&#xff1a;基于大模型的自动化信息解析实践 前言背景 企业财务处理中&#xff0c;增值税发票信息手动提取存在效率低、易出错等痛点&#xff0c;华为云 Flexus 弹性算力联合 DeepSeek 大模型&#xff0c;通过…...

[特殊字符] OpenCV opencv_world 模块作用及编译实践完整指南

&#x1f4cc; 什么是 opencv_world 模块&#xff1f; opencv_world 是 OpenCV 官方提供的一个 大型集成动态库。它将 OpenCV 所有启用的模块&#xff08;例如 core, imgproc, highgui, videoio, dnn, photo 等&#xff09;打包到一个单一的动态库文件&#xff08;如 Linux 的…...

目标检测之YOLOv5到YOLOv11——从架构设计和损失函数的变化分析

YOLO&#xff08;You Only Look Once&#xff09;系列作为实时目标检测领域的标杆性框架&#xff0c;自2016年YOLOv1问世以来&#xff0c;已历经十余年迭代。本文将聚焦YOLOv5&#xff08;2020年发布&#xff09;到YOLOv11&#xff08;2024年前后&#xff09;的核心技术演进&am…...

Java的SpringAI+Deepseek大模型实战【二】

文章目录 背景交互方式1、等待式问答2、流式问答 设置角色环绕增强1&#xff09;修改controller2&#xff09;修改配置日志级别 处理跨域 背景 上篇【Java的SpringAIDeepseek大模型实战【一】】搭建起浏览器交互的环境&#xff0c;如何进行流式问答&#xff0c;控制台打印日志…...

OpenCV——霍夫变换

霍夫变换 一、霍夫变换原理二、霍夫线检测2.1、标准霍夫变换2.2、概率霍夫变换 三、霍夫圆检测3.1、霍夫圆检测的原理3.2、霍夫梯度法 一、霍夫变换原理 霍夫变换&#xff08;Hough TRansform&#xff09;是从图像中识别几何图形的基本方法&#xff0c;由Paul Hough于1962年提…...

线程池 JMM 内存模型

线程池 & JMM 内存模型 文章目录 线程池 & JMM 内存模型线程池线程池的创建ThreadPoolExecutor 七大参数饱和策略ExecutorService 提交线程任务对象执行的方法&#xff1a;ExecutorService 关闭线程池的方法&#xff1a;线程池最大线程数如何确定&#xff1f; volatile…...

PillarNet: Real-Time and High-PerformancePillar-based 3D Object Detection

​ECCV 2022 paper&#xff1a;[2205.07403] PillarNet: Real-Time and High-Performance Pillar-based 3D Object Detection&#xfeff; code&#xff1a;https://github.com/VISION-SJTU/PillarNet-LTS&#xfeff; 纯点云基于pillar3D检测模型 网络比较 SECOND 基于vo…...

配电抢修场景案例

以配电抢修场景为例来展示关键业务活动。配电抢修愿景分成业务逻辑、业务活动、业务特征、技术支撑、KPI五个层次&#xff0c;分别从策略、执行、评价、资源、协同5个方面描述配电抢修愿景的关键业务活动。...

H5新增属性

✅ 一、表单相关新增属性&#xff08;Form Attributes&#xff09; 这些属性增强了表单功能&#xff0c;提升用户体验和前端验证能力。 1. placeholder 描述&#xff1a;在输入框为空时显示提示文本。示例&#xff1a; <input type"text" placeholder"请输…...

C# Task 模式实现 Demo(含运行、暂停、结束状态)

下面是一个完整的 C# Task 实现示例&#xff0c;包含运行(Running)、暂停(Paused)和结束(Completed)状态控制&#xff1a; 1. 基本实现&#xff08;使用 CancellationToken 控制&#xff09; using System; using System.Threading; using System.Threading.Tasks;public cla…...

Docker健康检查

目录 1.命令 2.验证 1.命令 docker run -itd --name nginx -v data:/etc/nginx/ -v log:/var/log/ -p 8080:80 \ --health-cmd"curl http://127.0.0.1:80" \ --health-interval30s \ --health-timeout5s \ --health-retries3 \ --health-start-period18s \ nginx:…...