數據結構期末程序題型

一、 隊列

1、簡單模擬隊列排列

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;queue<int>q;string str;while(true){cin>>str;if(str=="#")break;if(str=="In"){int t;cin>>t;if(q.size()<n){q.push(t);cout<<t<<"joined. Total:"<<q.size()<<endl;}else{cout<<t<<" rejected."<<endl;}}if(str=="Calling"){if(q.empty()){cout<<"No one"<<endl;}else{int t=q.front();q.pop();cout<<t<<"called. Total:"<<q.size()<<endl;}}}return 0;
} 

?2、約瑟夫問題

#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);}int i=1;while(!q.empty()){if(i==m){cout<<q.front()<<endl;q.pop();i=1;}else{q.push(q.front());q.pop();i=i+1;}}return 0;
} 

3、周末舞會

#include<bits/stdc++.h>
using namespace std;
int main(){int boy,girl,k;cin>>boy>>girl>>k;queue<int>b_q,g_q;for(int i=1;i<=boy;i++){b_q.push(i);}for(int i=1;i<=girl;i++){g_q.push(i);}while(k--){int x,y;x=b_q.front();b_q.pop();y=g_q.front();g_q.pop();cout<<x<<" "<<y<<endl;b_q.push(x),g_q.push(y);}return 0;
} 

4、圍圈報數

#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()){int x;for(int i=1;i<=m-1;i++){x=q.front();q.pop();q.push(x);}x=q.front();q.pop();cout<<x<<endl;}return 0;
} 

5、小孩報數

#include<bits/stdc++.h>
using namespace std;
int main(){int n,m;cin>>n>>m;queue<int>q;if(n>10){return 1;}for(int i=1;i<=n;i++){char name;cin>>name;q.push(name);}while(!q.empty()){for(int i=1;i<=m-1;i++){char t=q.front();q.pop();q.push(t);}char t=q.front();q.pop();cout<<t<<endl;}return 0;
} 

6、十進制轉二進制

#include<bits/stdc++.h>
using namespace std;
int main(){int n;cin>>n;if(n<0){cout<<0<<endl;return 0;}int a[45];int idx=0;while(n>0){a[idx]=n%2;n=n/2;idx++;}for(int i=idx-1;i>=0;i--){cout<<a[i];}cout<<endl;return 0;
}

?

二、棧、二叉樹

1、出入棧

#include<bits/stdc++.h>
using namespace std;
bool bmg(string str){stack<char>s;int t=0;for(int i=0;i<str.length();i++){char c=str[i];while(s.empty()||s.top()!=c){if(t>=26)return false;s.push('a'+t);t++;}s.pop();}return true;
}
int main(){int n;cin>>n;for(int i=0;i<n;i++){string str;cin>>str;if(bmg(str)){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}}return 0;
} 

2、最短路徑迪杰斯特拉算法

#include<bits/stdc++.h>
using namespace std;
const int N=105;
const int INF=1e9;
int vis[N];
int dis[N];
int a[N][N];
int vexnum;
void dij(int u,int v){for(int i=0;i<vexnum;i++){vis[i]=0;dis[i]=a[u][i];}vis[u]=1;for(int i=0;i<vexnum-1;i++){int minn=INF;int t;for(int j=0;j<vexnum;j++){if(vis[j]==0&&dis[j]<minn){minn=dis[j];}}vis[t]=1;for(int j=0;j<vexnum;j++){if(vis[j]==0&&dis[t]+a[t][j]<dis[j]){dis[j]=dis[t]+a[t][j];}}}cout<<dis[v];
}
int main(){int n,m;cin>>n>>m;vexnum=n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(i==j){a[i][j]=0;}else{a[i][j]=INF;}}}for(int i=1;i<=m;i++){int u,v,w;cin>>u>>v>>w;a[u][v]=w;}int p;cin>>p;dij(0,p);return 0;
} 

3、公路村村通

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node{int start;int end;int weight;
}a[N];;
int n,m;
int parent[N];
bool cmp(node a,node b){return a.weight<b.weight;
}
int find(int x){if(parent[x]!=x){x=find(parent[x]);}return parent[x];
}
int main(){cin>>n>>m;for(int i=0;i<m;i++){cin>>a[i].start>>a[i].end>>a[i].weight;}sort(a,a+m,cmp);for(int i=1;i<=n;i++){parent[i]=i;}int cnt1=0;//總權重 int cnt2=0;//變得數量 for(int i=1;i<=n;i++){int r1=find(a[i].start);int r2=find(a[i].end);if(r1!=r2){parent[r2]=r1;cnt1+=a[i].weight;cnt2++;if(cnt2==n-1)break;}}if(cnt2==n-1){cout<<cnt1<<endl;}else{cout<<-1<<endl;}return 0;
} 

4、繁忙的都市

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+5;
struct node{int start;int end;int weight;
}a[N];
int n,m;
int b[N];
bool cmp(node a,node b){return a.weight<b.weight;
}
int find(int x){while(b[x]!=x){b[x]=b[b[x]];x=b[x];}return x;
}
void unite(int x,int y){int fx=find(x);int fy=find(y);if(fx!=fy){b[fx]=fy;}
}
int main(){cin>>n>>m;for(int i=0;i<m;i++){int u,v,w;cin>>u>>v>>w;a[i]={u,v,w};}sort(a,a+m,cmp);for(int i=1;i<=n;i++){b[i]=i;}int cnt=0,max_c=0;for(int i=0;i<m;i++){int u=a[i].start;int v=a[i].end;if(find(u)!=find(v)){unite(u,v);cnt++;max_c=a[i].weight;if(cnt==n-1)break;}}cout<<cnt<<" "<<max_c<<endl;return 0;
} 

5、局域網

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
struct node{int u;int v;int w;
}a[N];
int n,m;
int b[N];
bool cmp(node a,node b){return a.w<b.w;
}
int find(int x){while(b[x]!=x){b[x]=b[b[x]];x=b[x];}return x;
}
int main(){cin>>n>>m;int sum1=0;for(int i=0;i<m;i++){int u,v,w;cin>>u>>v>>w;a[i]={u,v,w};sum1++;}sort(a,a+m,cmp);for(int i=1;i<=n;i++){b[i]=i;}int sum2=0,cnt=0;for(int i=0;i<m;i++){int u=a[i].u;int v=a[i].v;int w=a[i].w;int r_u=find(u);int r_v=find(v);if(r_u!=r_v){b[r_u]=r_v;sum2+=w;cnt++;if(cnt==n-1)break;}}cout<<sum1-sum2<<endl;return 0;
} 

三。排序插入、查找

1、插入排序

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int a[N];
int n;
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){int v=a[i];int j=i-1;while(j>=1&&a[j]>v){a[j+1]=a[j];j--;}a[j+1]=v;printf("第%d輪插入排序的結果為",i);for(int k=1;k<=n;k++){printf(" %d",a[k]);}printf("\n");} return 0;
} 

2、排序(快速排序算法)

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int n,m;
void QuickSort(int s,int t){int i=s,j=t;int tmp=a[(i+j)/2];while(i<=j){while(a[j]>tmp)j--;while(a[i]<tmp)i++;if(i<=j){swap(a[i],a[j]);i++,j--;}}if(s<j)QuickSort(s,j);if(i<t)QuickSort(i,t);
}
int main(){cin>>m;while(m--){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}QuickSort(1,n);for(int i=1;i<=n;i++){cout<<a[i]<<" ";}cout<<endl;}return 0;
}

3、堆排序

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int a[N];
int n;
void display2(int s){for(int i=0;i<n;i++){if(i==n-1){cout<<a[i]<<endl;}else{cout<<a[i]<<" ";}}
}
void display3(int u,int v){int lar=u;int left=2*u+1;int right=2*u+2;if(left<v&&a[left]>a[lar]){lar=left;}if(right<v&&a[right]>a[lar]){lar=right;}if(lar!=u){swap(a[u],a[lar]);display3(lar,v);}
}
void display1(){for(int i=n/2-1;i>=0;i--){display3(i,n);}
}
int main(){cin>>n;for(int i=0;i<n;i++){cin>>a[i];}//構建初始堆display1();display2(n);for(int i=n-1;i>0;i--){swap(a[0],a[i]);display3(0,i);display2(n);}return 0;
}

4、排列論文

#include<bits/stdc++.h>
using namespace std;
const int N=105;
vector<int>g[N];
int a[N];
int n,m;
int flag;
int topSort(){queue<int>q;for(int i=1;i<=n;i++){if(a[i]==0){q.push(i);}}int cnt=0;flag=1;while(!q.empty()){int t=q.front();q.pop();cnt++;if(!q.empty())flag=2;for(int i=0;i<g[t].size();i++){int x=g[t][i];a[x]--;if(a[x]==0)q.push(x);}}if(cnt<n)flag=0;return flag;
}
int main(){while(cin>>n>>m){for(int i=1;i<=n;i++){g[i].clear();a[i]=0;}for(int i=1;i<=m;i++){int u,v;cin>>u>>v;a[v]++;g[u].push_back(v);}int result=topSort();if(result==0)cout<<"0\n";else if(result==1)cout<<"1\n";else if(result==2)cout<<"2\n";}return 0;
}

?

四、樹(圖)的遍歷與求解

1、求二叉樹的高度

#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{int data;int left;int right;
}a[N];
int n;
int dfs(int root){if(root==0)return 0;int h1=dfs(a[root].left);int h2=dfs(a[root].right);return max(h1,h2)+1;
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i].data>>a[i].left>>a[i].right;}cout<<dfs(1);return 0;
}

2、二叉樹的遍歷

#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{int left;int right;
}a[N];
int n;
void inorder(int root){if(root==0)return;cout<<root<<" ";inorder(a[root].left);inorder(a[root].right);
}
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i].left>>a[i].right;}inorder(1);return 0;
}

3、完全二叉樹的權值

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int n,x;
int main(){int h=0,nn=0;cin>>n;for(int i=1;i<=n;i++){if(i>nn){nn+=pow(2,h);h++;}cin>>x;a[h]+=x;}int max_a=0,maxh=0;for(int i=1;i<=h;i++){if(a[i]>max_a){max_a=a[i];maxh=i;}}cout<<maxh<<endl;return 0;
}

4、二叉樹求值

#include<bits/stdc++.h>
using namespace std;
const int N = 105; // 題目限制n≤100struct Node {int value;       // 節點權值int left, right; // 左右子節點編號int count;       // 子樹節點個數int sum;         // 子樹權值和
};Node nodes[N];// 遞歸計算以u為根的子樹的節點個數和權值和
void dfs(int u) {if (u == 0) return; // 空節點// 遞歸處理左右子樹dfs(nodes[u].left);dfs(nodes[u].right);// 計算當前子樹的節點個數和權值和nodes[u].count = 1; // 自身nodes[u].sum = nodes[u].value;if (nodes[u].left != 0) {nodes[u].count += nodes[nodes[u].left].count;nodes[u].sum += nodes[nodes[u].left].sum;}if (nodes[u].right != 0) {nodes[u].count += nodes[nodes[u].right].count;nodes[u].sum += nodes[nodes[u].right].sum;}
}int main() {int n;cin >> n;// 讀取每個節點的信息for (int i = 1; i <= n; i++) {cin >> nodes[i].value >> nodes[i].left >> nodes[i].right;nodes[i].count = 0;nodes[i].sum = 0;}// 從根節點開始遞歸計算(假設根節點是1)dfs(1);// 輸出每個節點的子樹信息for (int i = 1; i <= n; i++) {cout << nodes[i].count << " " << nodes[i].sum << endl;}return 0;
}

5、圖的遍歷----廣度優先搜索

#include <bits/stdc++.h>
using namespace std;const int MAXN = 55;
int vis[MAXN];
int a[MAXN][MAXN];
queue<int> q;// 廣度優先搜索函數
void bfs(int n) {q.push(0);vis[0] = 1;cout << 0 << " ";while (!q.empty()) {int x = q.front();q.pop();for (int i = 0; i < n; i++) {if (a[x][i] == 1 && vis[i] == 0) {vis[i] = 1;q.push(i);cout << i << " ";}}}
}int main() {int n;cin >> n;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cin >> a[i][j];}}bfs(n);return 0;
}

6、圖的遍歷-----深度優先搜索

#include<bits/stdc++.h>
using namespace std;
int vis[55];
int a[55][55];
int n;void dfs(int k){vis[k]=1;cout<<k<<" ";for(int i=0;i<n;i++){if(vis[i]==0&&a[k][i]==1)dfs(i);}
}
int main(){cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}dfs(0);return 0;
}

7、圖著色問題

#include<bits/stdc++.h>
using namespace std;
const int N=510,M=N*N;
int color[N];
vector<int> g[M];
int v,m,k,n;void add(int a,int b){g[a].push_back(b);g[b].push_back(a);
}
int judge(int cnt){if(cnt!=k)return 0;for(int i=1;i<=v;i++){for(int j=0;j<g[i].size();j++){int t=g[i][j];if(color[i]==color[t])return 0;}}return 1;
}
int main(){cin>>v>>m>>k;while(m--){int a,b;cin>>a>>b;add(a,b),add(b,a);}cin>>n;for(int i=0;i<n;i++){set<int> se;//set具有去重功能for(int j=1;j<=v;j++){cin>>color[j];se.insert(color[j]);} if(judge(se.size()))cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}

8、全排列問題

#include<bits/stdc++.h>
using namespace std;
int a[20],b[20]={0};
int n;
void dfs(int k){if(k==n+1){for(int i=1;i<=n;i++){printf("%d ",a[i]);}printf("\n");return;}for(int i=1;i<=n;i++){if(b[i]==0){a[k]=i;b[i]=1;dfs(k+1);b[i]=0;}}}
int main(){cin>>n;dfs(1);return 0;
}

9、二叉搜索樹

#include<bits/stdc++.h>
using namespace std;
struct node{int data;node *left;node *right;
};
int a[10];
int n=10;
//插入樹中
bool insert(node *&p,int key){if(p==NULL){p=new node();p->data=key;p->left=NULL;p->right=NULL;return true;}if(key>p->data){return insert(p->right,key);}else{return insert(p->left,key);}
}
//建樹
void CreatTree(node *&T,int n){T=NULL;for(int i=1;i<=n;i++){insert(T,a[i]);}
}
//查詢
bool search(node *&T,int x){node *q=T;if(q==NULL)return false;if(q->data==x)return true;else if(q->data>x)return search(q->left,x);else return search(q->right,x);
}
//輸出
int main(){for(int i=1;i<=n;i++){cin>>a[i];}node *T=NULL;CreatTree(T,n);int x;cin>>x;if(search(T,x)){cout<<"yes"<<endl;}else cout<<"no"<<endl;return 0;
}

10、查找二叉樹

#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{int value;int left;int right;
}a[N];
int n;
int target;
int cnt=0;
int result=-1;
void zhongxu(int idx){if(idx==0)return;zhongxu(a[idx].left);cnt++;if(a[idx].value==target){result=cnt;}zhongxu(a[idx].right);
}
int main(){cin>>n;cin>>target;for(int i=1;i<=n;i++){cin>>a[i].value>>a[i].left>>a[i].right;}zhongxu(1);cout<<result<<endl;return 0;
}

11、求二叉樹的葉子結點

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+5;
char a[N];
int cnt=0;
string str;
void dfs(int r){if(a[2*r]!=-1)dfs(2*r);cout<<a[r];if(a[2*r]==-1&&a[2*r+1]==-1){cnt++;}if(a[2*r+1]!=-1){dfs(2*r+1);}
}
int main(){cin>>str;stack<int>st;st.push(1);for(int i=0;i<str.size();i++){int p=st.top();st.pop();if(str[i]!='#'){a[p]=str[i];st.push(2*p+1);st.push(2*p);}else{a[p]=-1;}}dfs(1);cout<<"\n"<<cnt;return 0;
}

12、二叉樹非葉子

#include<bits/stdc++.h>
using namespace std;
const int N=105;
struct node{int value;int left;int right;
}a[N];
int n;
void xianxu(int idx){if(idx==0)return;cout<<a[idx-1].value<<" ";xianxu(a[idx-1].left);xianxu(a[idx-1].right);
}
int main(){cin>>n;for(int i=0;i<n;i++){cin>>a[i].value>>a[i].left>>a[i].right;}for(int i=0;i<n;i++){if(a[i].left!=0&&a[i].right!=0){a[i].value+=1;}}xianxu(1);cout<<endl;return 0;
}

13、走出迷宮

#include <iostream>
#include <queue>
using namespace std;char a[105][105];
int b[105][105];
int n, m;struct Node {int r, c;int step;
};int dir[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};// 檢查坐標是否在網格內
bool isValid(int r, int c) {return r >= 1 && r <= n && c >= 1 && c <= m;
}void bfs(int sr, int sc, int er, int ec) {queue<Node> dl;Node q, next;q.r = sr;q.c = sc;q.step = 0;dl.push(q);b[q.r][q.c] = 1;while (!dl.empty()) {q = dl.front();dl.pop();if (q.r == er && q.c == ec) {cout << q.step << endl; // 如果當前點是終點return;}for (int i = 0; i < 4; i++) {next.r = q.r + dir[i][0];next.c = q.c + dir[i][1];// 1可走       2未走過        3不出邊界 if (a[next.r][next.c] == '.' && b[next.r][next.c] == 0 && isValid(next.r, next.c)) {next.step = q.step + 1;b[next.r][next.c] = 1;dl.push(next);}}}cout << "No path found!" << endl; // 未找到路徑
}int main() {int sr, sc, er, ec;cin >> n >> m;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> a[i][j];if (a[i][j] == 'S') {sr = i;sc = j;}if (a[i][j] == 'T') {er = i;ec = j;a[i][j] = '.'; // 將終點狀態記為可走}}}bfs(sr, sc, er, ec);return 0;
}    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85368.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85368.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85368.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringCloud+Vue汽車、單車充電樁源碼實現:從架構設計到核心模塊解析

智慧充電管理平臺技術實現&#xff1a;從架構設計到核心模塊解析 智慧充電管理平臺作為新能源汽車生態的核心基礎設施&#xff0c;需要實現充電設備管理、訂單處理、數據統計分析等復雜功能。本文將從技術架構、核心模塊設計、關鍵技術實現三個維度&#xff0c;深度解析平臺的…

Kafka入門及實戰應用指南

1、Kafka概述 Apache Kafka是由LinkedIn公司于2010年開發的一款分布式消息系統&#xff0c;旨在解決當時傳統消息隊列&#xff08;如ActiveMQ、RabbitMQ&#xff09;在高吞吐量和實時性場景下的性能瓶頸。隨著LinkedIn內部對實時日志處理、用戶行為追蹤等需求的激增&#xff0…

智能指針 c++

C 智能指針詳解 智能指針是 C11 引入的內存管理工具&#xff0c;位于 <memory> 頭文件中&#xff0c;用于自動管理動態分配的內存&#xff0c;防止內存泄漏。主要類型如下&#xff1a; 1. std::unique_ptr (獨占所有權) 特點&#xff1a;唯一擁有所指對象&#xff0c;不…

Python應用八股文

大家好!在 Python 學習的道路上&#xff0c;掌握一些基礎知識要點至關重要&#xff0c;這些要點常被稱為“Python 八股”。以下是對它們的簡易總結&#xff0c;幫助你快速回顧和鞏固 Python 的核心概念。 一、數據結構 列表&#xff08;List&#xff09;&#xff1a;有序可變序…

【技術深度】領碼SPARK破解微服務數據依賴困局:架構設計與實踐指南

——深度解析分布式數據冗余與異步消息機制&#xff0c;驅動企業數字化轉型加速 ? 核心摘要 本文從技術架構與工程實現的角度&#xff0c;系統講解領碼SPARK融合平臺如何精準解決微服務架構下數據依賴“卡脖子”問題。通過設計高效的數據冗余模型和完善的異步消息更新機制&am…

關于前端的防抖和節流

給我解釋下 前端開發中的防抖和節流 并舉個具體的例子 防抖&#xff08;Debounce&#xff09;與節流&#xff08;Throttle&#xff09;詳解 在前端開發中&#xff0c;防抖&#xff08;Debounce&#xff09; 和 節流&#xff08;Throttle&#xff09; 是兩種優化高頻觸發事件的…

React-router 多類型歷史記錄棧

react-router 為了滿足開發者更多路由歷史存儲場景&#xff0c;提供了以下幾種模式&#xff1a; 瀏覽器原生歷史記錄 瀏覽器 hash 內存型 服務端記錄 以上實現分別對應于一下 API 實現&#xff1a; createBrowserRouter&#xff1a;瀏覽器提供的歷史管理。 createHashRou…

java設計模式[3]之結構型模式

文章目錄 一 代理模式1.1 靜態代理1.1.1 靜態代理的結構1.1.2 靜態代理的特點1.1.3 靜態代理的應用場景1.1.4 靜態代理的案例代碼 1.2 JDK動態代理1.2.1 JDK動態代理概述1.2.2 JDK動態代理案例代碼1.2.3 JDK動態代理的應用場景1.2.4 JDK動態代理的特點1.2.5 與創建型模式的區別…

鴻蒙Harmony測試-wukong穩定性工具(類似Android的Monkey測試)

一、功能介紹 wukong是系統自帶的一種命令行工具&#xff0c;支持Ability的隨機事件注入、控件注入、異常捕獲、報告生成和對Ability數據遍歷截圖等特性。通過模擬用戶行為&#xff0c;對系統或應用進行穩定性壓力測試。wukong分為隨機測試、專項測試和專注測試。 隨機測試是指…

從零學起VIM

前言 筆者早年剛入行的時候就接觸過Vim,當時還是真正的菜鳥&#xff0c;帶我的師父是一個華為骨干員工&#xff0c;猶記得他給我指導如何保存并關閉文本&#xff1a;按Esc&#xff0c;然后輸入:wq。還記得自己打開Vim編輯器&#xff0c;一個字符都敲不進去&#xff0c;然后問旁…

不依賴rerank 模型排序通過使用 PostgreSQL 中的 pgvector 與 tsearch2 函數進行混合搜索提高召回率

前言 在向量搜索中&#xff0c;召回率是一個關鍵指標&#xff0c;它衡量搜索結果的相關性。然而&#xff0c;提高召回率往往會犧牲其他指標&#xff0c;如索引大小或查詢延遲。為了平衡這些權衡&#xff0c;混合搜索技術應運而生。本文將介紹如何在 PostgreSQL 中結合 pgvecto…

Uniapp 跨平臺開發框架全面解析:一次開發,多端運行

在移動互聯網時代&#xff0c;開發者面臨著一個重要挑戰&#xff1a;如何高效地開發出能在多個平臺&#xff08;iOS、Android、Web、小程序等&#xff09;上運行的應用&#xff1f;傳統的原生開發方式需要為每個平臺單獨編寫代碼&#xff0c;導致開發周期長、維護成本高。而 Un…

ios如何把H5網頁變成主屏幕webapp應用

一、將 H5 頁面添加到主屏幕的步驟 打開 Safari 瀏覽器 在 iPhone 上打開 Safari 瀏覽器&#xff0c;訪問目標網頁&#xff08;H5 頁面&#xff09;。 點擊分享按鈕 在 Safari 瀏覽器底部點擊 “分享” 圖標&#xff08;箭頭向上的按鈕&#xff09;。 添加到主屏幕 在分享菜單…

Node.js 項目啟動命令大全 (形象版)

文章目錄 Node.js 項目啟動命令大全 &#x1f31f;?&#xff08;形象版&#xff09;一、&#x1f50d; 如何查看項目啟動命令&#xff08;魔法書目錄&#xff09;package.json scripts 參數詳解開發相關腳本測試相關腳本構建相關腳本代碼質量相關腳本最佳實踐 二、&#x1f68…

愛普特APT32F1104C8T6單片機 高抗干擾+硬件加密雙保障

愛普特APT32F1104C8T6單片機深度解析 1. 產品定位 APT32F1104C8T6 是愛普特半導體&#xff08;APT&#xff09;推出的 32位高性能經濟型單片機&#xff0c;基于 ARM Cortex-M0內核&#xff0c;采用 LQFP48封裝&#xff0c;主打 高性價比、低功耗、強抗干擾&#xff0c;是替代進…

使用uni-app ios 打包流程

配置幾個步驟即可 1、打包ios需要BundleID ID 2、證書私鑰密碼 3、信任文件證書文件 4、私鑰證書 5、打包 6、獲取打包后的ipa文件 7、通過愛思助手安裝到iso手機上 8、完成 1、下載&#xff1a;App Uploader去獲取我們想要的證書私鑰等文件 2、下載完成解壓后的文件如下打…

仿muduo庫實現并發服務器

1.實現目標 仿muduo庫One Thread One Loop式主從Reactor模型實現高并發服務器&#xff1a; 通過實現高并發服務器的組件&#xff0c;可以快速實現一個高并發服務器的搭建&#xff0c;并且&#xff0c;通過組內不同應用層協議的支持&#xff0c;可以快速完成高性能服務器的搭建…

迭代器模式:集合遍歷的統一之道

引言&#xff1a;集合遍歷的演進之路 在軟件開發中&#xff0c;集合遍歷是我們每天都要面對的基礎操作。從最初的數組索引遍歷到現代的流式處理&#xff0c;我們經歷了&#xff1a; #mermaid-svg-KwTr9k8JgbwRTDhU {font-family:"trebuchet ms",verdana,arial,sans-…

Spring Security OAuth2 組件

我們來系統地講解一下 Spring Security OAuth2 這個強大的組件。我會從概念、作用、核心組件&#xff0c;以及實際應用場景來為你剖析。 1. 什么是 Spring Security OAuth2&#xff1f; 簡單來說&#xff0c;Spring Security OAuth2 是 Spring Security 框架的一個模塊&#…

Redis的持久化功能

Redis的持久化功能能夠將內存中的數據保存到磁盤&#xff0c;從而在重啟后恢復數據。下面為你詳細介紹Redis的兩種主要持久化方式及其配置方法。 RDB&#xff08;Redis Database&#xff09;持久化 RDB持久化是通過生成某個時間點的數據集快照來實現的。它具有高性能的特點&a…