<蓝桥杯软件赛>零基础备赛20周--第6周--数组和队列
报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集
 20周的完整安排请点击:20周计划
 每周发1个博客,共20周(读者可以按自己的进度选“正常”和“快进”两种计划)。
 每周3次集中答疑,周三、周五、周日晚上,在QQ群上答疑:

文章目录
- 1. 数组的应用--高精度
 - 1.1 Java和Python计算大数
 - 1.2 C/C++高精度计算大数
 - 1.2.1 高精度加法
 - 1.2.2 高精度减法
 - 1.2.3 高精度乘法
 - 1.2.4 高精度除法
 
- 2. 队列
 - 2.1 手写队列
 - 2.1.1 C/C++手写队列
 - 2.1.2 Java手写队列
 - 2.1.3 Python手写队列
 
- 2.2 C++ STL队列queue
 - 2.3 Java队列Queue
 - 2.4 Python队列Queue和deque
 - 2.5 例题
 - 2.5.1 C/C++代码
 - 2.5.2 Java代码
 - 2.5.3 Python
 
- 3. 习题
 
第 6周: 高精度、队列
1. 数组的应用–高精度
  高精度算法就是大数的计算方法。超过64位的大数计算,Java和Python都能直接算,而C++不能直接算,需要用数组来模拟大数的存储。
   竞赛中常常用到很大的数组。强烈建议不要用动态分配,因为动态分配需要多写代码而且容易出错。定义为全局静态数组即可,而且不需要初始化为0,因为全局变量在编译时会自动初始化为全0。
#include <bits/stdc++.h>
using namespace std;
int a[10000000]; //定义一个很大的全局数组。自动初始化为0,不需要写成int a[10000000]={0};
int main(){cout << a[0];   //输出0return 0;
}
 
  大数组不能定义在函数内部,这样做会导致栈溢出。因为局部变量是函数用到时才分配,大小不能超过栈,而栈不会很大。
   这样写是错的:
#include <bits/stdc++.h>
using namespace std;
int main(){int a[10000000]={0}; //这样写是错的,大数组不能定义在函数内部cout << a[0];   //出错return 0;
}
 
另外,注意全局变量和局部变量的初值。全局变量如果没有赋值,在编译时被自动初始化为0。在函数内部定义的局部变量,若需要初值为0,一定要初始化为0,否则可能为莫名其妙的值。
#include <bits/stdc++.h>
using namespace std;
int a;                //全局变量自动初始化为0
int c = 999;          //赋值为999
int main(){int b;cout << a <<endl; //输出0cout << c <<endl; //输出999cout << b <<endl; //由于b没有初始化,这里输出莫名奇妙的值return 0;
}
 
1.1 Java和Python计算大数
  Java和Python计算大数,理论上可以计算“无限大”的数,只要不超内存。
   用下面的简单题说明Java和Python的大数计算。
 【题目描述】 大数计算:输入两行表示两个整数。分别计算加、减、乘、除,分5行输出和、差、积、商、余数。
 (1)Java代码。注意负数的计算,负数的加减乘都没问题,但是除法可能出错。
import java.math.BigInteger;
import java.util.Scanner; 
public class Main {     public static void main(String[] args) {Scanner sc=new Scanner(System.in);BigInteger a,b;a=sc.nextBigInteger();   b=sc.nextBigInteger(); System.out.println(a.add(b)); System.out.println(a.subtract(b));  System.out.println(a.multiply(b)); System.out.println(a.divide(b)); System.out.println(a.mod(b));     //注意:如果b是负数,这里可能报错}                     
}
 
(2)Python代码。注意负数的计算,加减乘都没问题,但是除法的结果可能比较奇怪。
a=int(input())
b=int(input())
print(a+b)
print(a-b)
print(a*b)
print(a // b)    #注意:如果a或b是负数,除法的结果可能比较怪,例如123//(-10)得-13
print(a % b)     #注意:如果a或b是负数,求余的结果可能比较怪,例如123%(-10) 得-7
 
1.2 C/C++高精度计算大数
  C++能表示的最大整数是64位的long long,如果需要计算更大的数,需要使用“高精度”。对于加减乘除四种计算,模拟每一位的计算,并处理进位或借位。
   (1)数字的读取和存储。因为整数a和b太大,无法直接赋值给C++的变量,不能按数字读入,只能按字符读入。大数a用字符串string读入,一个字符存一位数字。注意存储的顺序,读入的时候,数字的左边是高位,右边是低位,即a[0]是最高位,a[n-1]是最低位;但是计算时习惯用a[0]表示最低位,a[n-1]表示最高位,所以需要把输入的字符串倒过来。
   (2)加法和减法。简单地模拟即可。
   (3)乘法。模拟小学竖式乘法操作,例如34×67,计算过程:
 
   计算结果用int a[]存储,首先算出a[0]=4×7=28,a[1]=3×7+4×6=21+24,a[2]=3×6=18,然后处理进位,得到乘积2278。
   (4)除法。直接做除法有点麻烦,简单一点的方法是利用减法。例如a除以b,转化为a连续减去b,减了多少次就是商,最后不够减的是余数。
1.2.1 高精度加法
  链接:大整数加法
   把输入的数字存到字符串中,然后在add()中把字符转成数字,做完加法后再转回字符。
#include<bits/stdc++.h>
using namespace std;
int na[1005],nb[1005];  //加数和被加数
string add(string a,string b){int lena=a.size(),lenb=b.size();for(int i=0;i<lena;i++)na[lena-1-i] = a[i]-'0';  //把字符转成数字,然后翻转,使na[0]是最低位for(int i=0;i<lenb;i++)nb[lenb-1-i] = b[i]-'0';int lmax = lena>lenb ? lena : lenb;for(int i=0;i<lmax;i++) {na[i] += nb[i];na[i+1] += na[i]/10;   //处理进位na[i]%=10;}if(na[lmax]) lmax++;        //若最高位相加后也有进位,数字长度加1string ans;for(int i=lmax-1;i>=0;i--)  //把数字转成字符,然后翻转ans += na[i]+'0';return ans;
}
int main(){string a,b;cin >> a >> b;cout << add(a,b);return 0;
}
 
1.2.2 高精度减法
链接:大整数减法
#include<bits/stdc++.h>
using namespace std;
int na[1005],nb[1005];             //被减数和减数
string sub(string a,string b){if(a == b) return "0";         //特判一下是否两数字相等bool neg = 0;                  //标记是否为负数if(a.size() < b.size() || a.size() == b.size() && a < b)swap(a, b), neg = 1;      //让a大于bint lena=a.size(),lenb=b.size();for(int i=0;i<lena;i++)        //把字符转成数字,然后翻转,使na[0]是最低位na[lena-1-i]=a[i]-'0';for(int i=0;i<lenb;i++)nb[lenb-1-i]=b[i]-'0';int lmax = lena;for(int i=0;i<lmax;i++){na[i] -= nb[i];if(na[i]<0){                //处理借位na[i]+=10;na[i+1]--;}}while(!na[--lmax] && lmax>0)    //找到首位为0的位置;                          //什么都不做lmax++;string ans;for(int i=lmax-1;i>=0;i--)       //把数字转成字符,然后翻转ans += na[i]+'0';if(neg) ans = "-" + ans;          //查询一下是否为负数return ans;
}
int main(){string a,b;cin>>a>>b;cout<<sub(a,b);return 0;
}
 
1.2.3 高精度乘法
链接:大整数乘法
#include<bits/stdc++.h>
using namespace std;
int na[1005], nb[1005], nc[1000005];
string mul(string a,string b){if(a=="0"||b=="0")  return "0";int lena=a.size(),lenb=b.size();for(int i=0;i<lena;i++)na[lena-i]=a[i]-'0';for(int i=0;i<lenb;i++)nb[lenb-i]=b[i]-'0';for(int i=1;i<=lena;i++)for(int j=1;j<=lenb;j++)nc[i+j-1] += na[i]*nb[j];for(int i=1;i<=lena+lenb;i++)nc[i+1]+=nc[i]/10,nc[i]%=10;string ans;if(nc[lena+lenb])  ans += nc[lena+lenb]+'0';for(int i=lena+lenb-1;i>=1;i--) ans += nc[i]+'0';return ans;
}
int main(){string a,b;cin>>a>>b;cout<<mul(a,b);return 0;
}
 
1.2.4 高精度除法
链接:大整数除法
#include<bits/stdc++.h>
using namespace std;
string sub(string a,string b){//模拟大整数减法 string res;int n=a.size(),m=b.size(),i,by=1;reverse(a.begin(),a.end());reverse(b.begin(),b.end());for(i=0;i<m;++i){int t=a[i]-b[i]+9+by;res+=t%10+'0';by=t/10;}for(;i<n;++i){int t=a[i]-'0'+9+by;res+=t%10+'0';by=t/10;}//消去前缀零 while(res[--i]=='0'&&i>0);res=res.substr(0,i+1);reverse(res.begin(),res.end());return res; 
}
int main(){string s1,s2,res,ans;cin>>s1>>s2;bool h=false;int n=s1.size(),m=s2.size(),t;//查找被除数末端非零位 int f=n-1;while(s1[f]=='0')f--;//模拟除法 for(int i=0;i<n;++i){//遍历被除数 ans+=s1[i];t=0;while(ans.size()>m||ans.size()==m&&ans>=s2){//具体操作 ans=sub(ans,s2);//用减法模拟除法 t++;} if(t||h){//等待商的首位 h=true;res+=t+'0';}if(ans.empty()&&i>=f){//处理后缀零 while(++i<n)res+='0'; }}if(res.empty())res+='0';//余数为零 if(ans.empty())ans+='0';//商为零 cout<<res<<endl<<ans;return 0;
} 
 
2. 队列
  队列中的数据存取方式是“先进先出”,只能往队尾插入数据、从队头移出数据。队列的原型在生活中很常见,例如食堂打饭的队伍,先到先服务,不能插队。
   下图是队列的原理,队头head指向队列中的第一个元素 a 1 a_1 a1,队尾tail指向队尾最后一个元素 a n a_n an。元素只能从队头方向出去,元素只能从队尾进入队列。
 
2.1 手写队列
2.1.1 C/C++手写队列
队列的代码很容易实现。如果使用环境简单,最简单的手写队列代码用数组实现。
const int N = 10000; 	  //定义队列容量,确保够用
int que[N];              //队列,用数组模拟
int head = 0;            //head始终指向队头。que[head]是队头。开始时队列为空,head = 0
int tail = -1;           //tail始终指向队尾。que[tail]是队尾。开始时队列为空,tail = -1//队列长度等于tail-head+1
head++;                  //弹出队头元素,让head指向新队头。注意保持head <= tail
que[head];               //读队头
que[++tail] = data;      //入队:先tail加1,然后数据data入队。注意tail必须小于N
 
  这个手写代码有一个严重缺陷:如果进入队列的数据太多,使得tail超过了N,数组que[N]就会溢出,导致出错。
   用下面的例子给出上述手写代码的应用。
   约瑟夫问题 https://www.luogu.com.cn/problem/P1996
   约瑟夫问题是一个经典问题,可以用队列、链表等数据结构实现。下面的代码用队列来模拟报数。如果不理解代码,可以模拟执行的过程。
#include <bits/stdc++.h>
using namespace std;
const int N = 10000;  //定义队列大小,确保够用
int que[N];
int head=0, tail=-1;
int main(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++)  que[++tail] = i;while((tail-head+1)!=0){for(int i=1;i<m;i++){que[++tail] = que[head];head++;}cout << que[head] << " ";head++;}cout<<endl;return 0;
}
 
  代码第3行定义了队列的容量N = 10000。本题的n最大是100,每人出圈一次,所以队列长度一定不超过100×100。如果把N设置小了,例如N=2000,提交到OJ会返回RE,即Runtime Error,说明溢出了。
   如果要防止溢出,可以使用循环队列。在上面例子中,只需要设置一个N=100的循环队列即可。
   手写循环队列的代码见:《算法竞赛》第8页“1.2.2 手写循环队列”。
   队列是一种线性数据结构,线性数据结构的主要缺点是查找较慢。要在队列中查找某个元素,只能从头到尾一个个查找。
2.1.2 Java手写队列
下面是Java的手写队列代码,和C++代码基本一样。
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] que = new int[10000];      // 定义队列大小,确保够用int head = 0, tail = -1;for (int i = 1; i <= n; i++)     que[++tail] = i;        while ((tail - head + 1) != 0) {for (int i = 1; i < m; i++) {que[++tail] = que[head];head++;}System.out.print(que[head] + " ");head++;}System.out.println();}
}
 
2.1.3 Python手写队列
下面是Python的手写队列代码。这个手写队列是用list实现的,进队尾用append()实现,队列自动扩展,不会有溢出问题。
n, m = map(int, input().split())
que = [i for i in range(1, n+1)]
head, tail = 0, n-1              #队头和队尾
while tail - head + 1 != 0:for i in range(1, m):que.append(que[head])head += 1tail += 1print(que[head], end=' ')head += 1
 
2.2 C++ STL队列queue
  C++STL官方文档:英文主页 https://en.cppreference.com/,或中文主页https://zh.cppreference.com/
   queue的文档:https://en.cppreference.com/w/cpp/container/queue
  竞赛时一般不自己手写队列,而是用STL queue,而且没有溢出的问题,大大加快了做题速度。STL queue的主要操作见下表。
 
  这里有篇博文可以参考:STL queue
   下面是 约瑟夫问题 的STL queue实现。
#include <bits/stdc++.h>
using namespace std;
int main(){int n,m;cin>>n>>m;queue<int>q;for(int i=1;i<=n;i++)   q.push(i);while(!q.empty()){for(int i=1;i<m;i++){q.push(q.front());q.pop();}cout << q.front() << " ";q.pop();}cout<<endl;return 0;
}
 
2.3 Java队列Queue
  Java官方文档:https://docs.oracle.com/en/java/
   Queue的文档:https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Queue.html
   Java用LinkedList实现基本队列Queue。常用操作有:
 
   这篇博文可以参考:Java队列
   下面是 约瑟夫问题 的Java Queue实现。
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();Queue<Integer> q = new LinkedList<>();for (int i = 1; i <= n; i++)    q.offer(i);while (!q.isEmpty()) {for (int i = 1; i < m; i++) {q.offer(q.peek());q.poll();}System.out.print(q.peek() + " ");q.poll();}}
}
 
2.4 Python队列Queue和deque
  Python官方文档:https://docs.python.org/3/
   deque文档:https://docs.python.org/3/library/collections.html#collections.deque
   Python的队列可以用list、Queue、deque实现。
   下面先用Queue实现 约瑟夫问题 。
from queue import Queue
n, m = map(int, input().split())
q = Queue()
for i in range(1, n+1):     q.put(i)
while not q.empty():for i in range(1, m):   q.put(q.get())print(q.get(), end=' ')
 
  不过,建议算法竞赛只使用deque,不要用queue。算法竞赛的代码都是单线程的,在这种场景下,deque比Queue快很多。
   deque是双向队列,队头和队尾都能插入和弹出。当成普通队列使用时,只用它的队头弹出、队尾插入功能即可。deque的常用操作有:
 
   参考博文:Deque
   下面用deque实现 约瑟夫问题 。
from collections import deque
n, m = map(int, input().split())
dq = deque(range(1, n+1))
while dq:dq.rotate(-(m-1))                 #把前m-1个数挪到队列尾部print(dq.popleft(), end=' ')      #队头是第m个数,删除并打印它。
 
2.5 例题
  机器翻译
   用一个哈希表hashtable[]模拟内存,若hashtable[x]=true,表示x在内存中,否则不在内存中。用队列queue对输入的单词排队,当内存超过M时,删除队头的单词。
2.5.1 C/C++代码
#include <bits/stdc++.h>
using namespace std;
bool hashtable[1003];      //全局数组,自动初始化为0
int main(){int m,n;cin >> m >> n;int ans=0;             //函数内部变量,一定要初始化为0queue<int> q;for(int i=0;i<n;i++)    {int x; cin >> x;if(hashtable[x] == false)  {hashtable[x] = true;if(q.size() < m)   q.push(x);else  {hashtable[q.front()] = false;q.pop();q.push(x);}ans++; //内存中没有这个单词,到外存找,答案加1}}cout << ans << '\n';return 0;
}
 
2.5.2 Java代码
import java.util.*;
public class Main {static boolean[] hashtable = new boolean[1003];static Queue<Integer> q = new LinkedList<>(); //使用LinkedList实现队列public static void main(String[] args) {int m, n;Scanner scanner = new Scanner(System.in);m = scanner.nextInt();n = scanner.nextInt();int ans=0;for (int i = 0; i < n; i++) {int x = scanner.nextInt();if (hashtable[x] == false) {hashtable[x] = true;if (q.size() < m)q.add(x); //使用add方法添加元素到队列中else {//int front = ; //使用poll方法取出队列头部元素并移除hashtable[q.poll()] = false;q.add(x);}ans++;}}System.out.println(ans);}
}
 
2.5.3 Python
from collections import deque  
hashtable = [False] * 1003  # 哈希表初始化,默认为False  
m, n = map(int, input().split())  # 输入m和n  
ans = 0      # 初始化答案为0  
q = deque()  # 初始化队列  
line =  list(map(int, input().split()))  #读第2行
for x in line:                           #处理每个数   if hashtable[x] is False:  # 如果x不在哈希表中  hashtable[x] = True  # 将x加入哈希表  if len(q) < m:  # 如果队列未满  q.append(x)  # 将x加入队列  else:  # 如果队列已满  hashtable[q.popleft()] = False  # 将队列首元素出队并从哈希表中删除  q.append(x)  # 将x加入队列  ans += 1  # 答案加1  
print(ans)  # 输出答案  
3. 习题
https://www.lanqiao.cn/problems/3745/learning/
 https://www.lanqiao.cn/problems/3746/learning/
相关文章:
<蓝桥杯软件赛>零基础备赛20周--第6周--数组和队列
报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…...
软件开发、网络空间安全、人工智能三个方向的就业和前景怎么样?哪个方向更值得学习?
软件开发、网络空间安全、人工智能这三个方向都是当前及未来的热门领域,每个领域都有各自的就业前景和价值,以下是对这三个方向的分析: 1、软件开发: 就业前景:随着信息化的加速,软件开发的需求日益增长。…...
新增文章分类
pojo.Category package com.lin.springboot01.pojo;import jakarta.validation.constraints.NotEmpty; import lombok.Data;import java.time.LocalDateTime;Data public class Category {private Integer id;//主键NotEmptyprivate String categoryName;//分类名称NotEmptypr…...
选硬币该用动态规划
选硬币: 现有面值分别为1角1分,5分,1分的硬币,请给出找1角5分钱的最佳方案。 #include <iostream> #include <vector>std::vector<int> findChange(int amount) {std::vector<int> coins {11, 5, 1}; /…...
LeetCode 2342. 数位和相等数对的最大和:哈希表
【LetMeFly】2342.数位和相等数对的最大和:哈希表 力扣题目链接:https://leetcode.cn/problems/max-sum-of-a-pair-with-equal-sum-of-digits/ 给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 j&…...
Vulkan渲染引擎开发教程 一、开发环境搭建
一 安装 Vulkan SDK Vulkan SDK 就是我们要搞的图形接口 首先到官网下载SDK并安装 https://vulkan.lunarg.com/sdk/home 二 安装 GLFW 窗口库 GLFW是个跨平台的小型窗口库,也就是显示窗口,图形的载体 去主页下载并安装,https://www.glfw.…...
(带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
源码简介: 1、会员管理: 该系统分为三个级别的会员流程:总站管理员、代理与会员(会员有普通会员、中级会员和高级会员三个等级)。总站管理员可以添加代理用户并为其充值余额,代理用户可以为普通用户充值余…...
IDEA 快捷键汇总
目录 1、altinsert 2、ctrl/ 3、altenter 4、alt回车 5、ctrlD 6、ctrlaltL 7、ctrl点击 8、alt左键向下拉 9、ctrlaltv 10、ctrlaltwint 1、altinsert 快速创建代码,可以快速创建类中get set tostring等方法 2、ctrl/ 单行注释 3、altenter…...
目标检测YOLO实战应用案例100讲-基于机器视觉的水稻病虫害监测预警
目录 前言 国内外研究现状 国外研究现状 国内研究现状 2 相关理论与技术...
OrthoNets:正交信道注意网络
文章目录 摘要1、简介2、相关工作3、方法4、实验设置及结果5、论述6、结论摘要 链接:https://arxiv.org/pdf/2311.03071v2.pdf 设计有效的通道注意力机制要求人们找到一种有损压缩方法,以实现最佳特征表示。尽管该领域近年来取得了进展,但仍然存在一个未解决的问题。FcaNet…...
C_12练习题
一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) C 风格的注释,也称块注释或多行注释,以()…...
导航守卫有哪三种?
导航守卫主要分为三种: 全局前置守卫:使用 router.beforeEach 注册,作用是在路由切换开始前进行拦截和处理,可以用来进行一些全局的权限校验、登录状态检查等操作。 全局解析守卫:使用 beforeResolve 注册,…...
强烈 推荐 13 个 Web前端在线代码IDE
codesandbox.io(国外,提供免费空间) 网址:https://codesandbox.io/ CodeSandbox 专注于构建完整的 Web 应用程序,支持多种流行的前端框架和库,例如 React、Vue 和 Angular。它提供了一系列增强的功能&…...
网络协议 WebSocket
一、介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输 1、HTTP协议和WebSocket协议对比 HTTP 是短连接WebSocket 是长连接H…...
路径操作 合法路径名
python中路径的三种合法表示:在路径前面加上r、分隔符使用/。 在路径前面加上r python中在前面加上r,是防止字符转义。 例如:这样一个路径: \Undergraduate\School\Programme\Python_Learnpython会将这个字符串的**\和\后面的…...
JavaEE初阶 01 计算机是如何工作的
前言 今天开始进行对JavaEE的一些基本总结,希望大家能在阅读中有所收获,如有错误还望多多指正. 1.冯诺依曼体系结构 这个体系结构相信学计算机的同学都不陌生,但是你真的知道这个体系结构说的是什么嘛?请听我娓娓道来.首先我先给出一张冯诺依曼体系结构的简图 你可以理解为当前…...
【shell 常用脚本30例】
先了解下编写Shell过程中注意事项 开头加解释器:#!/bin/bash语法缩进,使用四个空格;多加注释说明。命名建议规则:全局变量名大写、局部变量小写,函数名小写,名字体现出实际作用。默认变量是全局的…...
【我和Python算法的初相遇】——体验递归的可视化篇
🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON数据结构与算法学习系列专栏💫"没有罗马,那就自己创造罗马~" 目录 递归的起源 什么是递归? 利用递归解决列表求和问题 递归三定律 递归应用-整数转换为任意进制数 递归可视化 画…...
【C语言的秘密】密探—深究C语言中多组输入的秘密!
场景引入: 你是否在刷题过程中,经常遇到以下场景呢? 场景一: 场景二: 从这些题上都能看见输入描述中提出了一条多组输入,那啥是多组输入?如何实现它呢? 多组输入:在输入…...
ClickHouse 语法优化规则
ClickHouse 的 SQL 优化规则是基于RBO(Rule Based Optimization),下面是一些优化规则 1 准备测试用表 1)上传官方的数据集 将visits_v1.tar和hits_v1.tar上传到虚拟机,解压到clickhouse数据路径下 // 解压到clickhouse数据路径 sudo tar -xvf…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
