数据结构 实验 3

news2024/10/1 5:29:37

题目一:最短路径dijkstra算法

一、实验目的

  1. 熟练图的邻接矩阵和邻接表表示法
  2. 掌握图的最短路径Dijkstra算法的基本思想
  3. 用C语言实现Dijkstra算法

二、实验内容

从键盘输入的数据创建图(图的存储结构采用邻接矩阵),设计Dijkstra算法求出源点到所有点的最短路径。

三、实验步骤

  1. 先定义邻接矩阵类型
  2. 根据键盘输入的数据创建图,输出邻接矩阵
  3. 设计Dijkstra算法并在VC下用C语言实现算法

四、实验要求

程序代码:

#include <iostream>
#define INF 2147483647L
using namespace std;

int main()
{
    int n, side, sign, i, j, v, w, min, v0;
    int q, p, num;
    cout << "请输入图中的顶点个数:";
    cin >> n;
    cout << "请输入图中边的条数:";
    cin >> side;
    cout << "请选择是有向图还是无向图(有向图为1,无向图为0):";
    cin >> sign;
    int arcs[n][n], S[n], D[n], path[n];
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            arcs[i][j] = INF;
    for (i = 1; i <= side; i++)
    {
        cout << "请输入第" << i << "条边的顶点和权值:";
        cin >> q >> p >> num;
        arcs[q - 1][p - 1] = num;
        if (sign == 0) arcs[p - 1][q - 1] = num;
    }
    cout << "你输入的有向带权图的邻接矩阵表示:" << endl;
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
        {
            if (arcs[i][j] == INF) cout << "∞";
            else cout << arcs[i][j];
            if (j == n - 1) cout << endl;
            else cout << "  ";
        }
    cout << "请输入源点:";
    cin >> v0;
    for (v = 0; v < n; ++v)
    {
        S[v] = 0;
        D[v] = arcs[v0 - 1][v];
        if (D[v] < INF) path[v] = v0 - 1;
        else path[v] = -1;
    }
    S[v0 - 1] = 1; D[v0 - 1] = 0;
    for (i = 1; i < n; ++i)
    {
        min = INF;
        for (w = 0; w < n; ++w)
            if (!S[w] && D[w] < min)
            {
                v = w; min = D[w];
            }
        S[v] = 1;
        for (w = 0; w < n; ++w)
            if (!S[w] && arcs[v][w] != INF && (D[v] + arcs[v][w] < D[w]))
            {
                D[w] = D[v] + arcs[v][w];
                path[w] = v;
            }
    }
    i = 0;
    if (i == v0 - 1) i++;
    while (i < n)
    {
        cout << "顶点" << v0 << "到顶点" << i + 1 << "的最短路径长度:" << D[i] << ",最短路径为:";
        int pa[n];
        for (j = 0; j < n; j++)
            pa[j] = -1;
        num = 0;
        q = i;
        while (path[q] != v0 - 1)
        {
            pa[num] = path[q];
            q = path[q];
            num++;
        }
        cout << v0 << "-->";
        for (j = n - 1; j >= 0; j--)
        {
            if (pa[j] != -1)
            {
                cout << pa[j] + 1;
                cout << "-->";
            }
        }
        cout << i + 1;
        i++;
        if (i == v0 - 1) i++;
        cout << endl;
    }
    return 0;
}
  1. 用无向图A和做实验

 

最短路径和最短距离为(可选择不同的源点,本例以源点分别为1和2 示例): 

 

 

2. 再用有向网 B 做实验

 

 

题目二:用dijkstra算法实现

故宫导游路线设计

问题描述:游客游览某一景点时,对景点不熟悉。特别是对于故宫这样的大型景点,如果随便参观的话,可能会错过一些景点,也可能走许多冤枉路。为了方便游客,需要一套软件系统。

为游客提供以下功能:

①查询景点信息;②给出到某个景点的最佳路线;③给出到所有景点的最佳路线。

为系统管理员提供以下功能:

①修改景点信息;②撤销旅游线路。

问题分析:景点和旅游线路可以抽象为网状结构,景点作为图的顶点,旅游线路作为图的边,边上的权值作为景点间的距离,如下图所示。查询景点信息就是输出相应顶点的信息;给出到景点的最佳线路就是求最短路径问题;撤销旅游线路就是删除边;修改景点信息就是修改顶点信息。

程序简介:本程序包含两个模块

(1) 数据结构的设计  

#include <iostream>
#include<cstring>
#include<cstdlib>
#define MaxVertexNum 50
#define MaxValue 5000 //表示两点之间距离为无穷大 
#define INF 5000
#include <stack> 
using namespace std;

typedef struct  //景点类型 
{
int no;   //景点编号 
char name[20];   //景点名称 
char desc[100];   //景点简介 
}DataType; 

typedef struct
{
int arcs[MaxVertexNum][MaxVertexNum];  //邻接矩阵
DataType data[MaxVertexNum];   //顶点信息 
int vexnum;   //顶点数 
}MGraph,*AdjMatrix;

(2)主程序模块

int main()
{
AdjMatrix g;
char name[20];
int choice,v,i;
int end;
int dist[MaxVertexNum],path[MaxVertexNum],S[MaxVertexNum];
g=new MGraph;
DataType d[]={
  {0,"午门","午门是紫禁城的正门,午门有五个门洞,明三暗五。"},
 {1,"太和殿","俗称金銮殿,是紫禁城最高最大的宫殿,是朝廷举行重大
典礼的地方。"},
    {2,"乾清宫","是后三宫中最大的宫殿,是清朝康熙帝以前的皇帝居住的
寝宫。"},
    {3,"御花园","宫中最大花园,供帝后玩耍。"},
    {4,"神武门","紫禁城北门,故宫博物院正门。"},
  {5,"养心殿","雍正时期,皇帝的寝宫。"},
  {6,"西六宫","西六宫包括永寿宫、翊坤宫、储秀宫、咸福宫、长春宫和
启祥宫。"},
  {7,"东六宫","东六宫包括景仁宫、承乾宫、钟粹宫、景阳宫、永和宫和
延禧宫。"}
 };
int m[][MaxVertexNum]={
{MaxValue,1500,MaxValue,MaxValue,MaxValue,MaxValue,MaxValue,MaxValue},
{1500,MaxValue,1000,MaxValue,MaxValue,800,MaxValue,MaxValue},
{MaxValue,1000,MaxValue,400,MaxValue,300,200,200},
{MaxValue,MaxValue,400,MaxValue,200,MaxValue,100,100},
{MaxValue,MaxValue,MaxValue,200,MaxValue,MaxValue,250,260},
{MaxValue,800,300,MaxValue,MaxValue,MaxValue,50,400},
{MaxValue,MaxValue,200,100,250,50,MaxValue,MaxValue},
{MaxValue,MaxValue,200,100,260,400,MaxValue,MaxValue}
};
CreateGraph(g,m,d,8);
PrintMatrix(g);
while(1)
{
cout<<"     故宫导游咨询系统"<<endl;
cout<<"**********主菜单**********"<<endl;
cout<<"     (1)显示所有景点信息"<<endl; 
cout<<"     (2)查询景点信息"<<endl; 
cout<<"     (3)给出到某个景点的最佳路线"<<endl; 
cout<<"     (4)给出到所有景点的最佳路线"<<endl; 
cout<<"     (5)修改景点信息"<<endl; 
cout<<"     (6)撤销旅游线路"<<endl; 		
cout<<"     (0)退出"<<endl; 
cout<<"请选择(1,2,3,4,5,6,0):";
cin>>choice;
if(choice<0||choice>6)
continue;
switch(choice)
{
case 1:
DisplayMatrix(g); break;
case 2:
cout<<"请输入景点名称:"; 
cin>>name;	
QueryVertex(g,name);
cout<<endl;			
break;
case 3:
cout<<"请输入你现在所在景点名称:";
cin>>name;
v=Locate(g,name);
cout<<"请输入你要去的景点名称:";
cin>>name;
end=Locate(g,name);
Dijkstra(g,dist,path,S,v);				
 Printpath(g,dist,path,v,end);
break; 
case 4:
cout<<"请输入你现在所在景点名称:";
cin>>name;
v=Locate(g,name);
Dijkstra(g,dist,path,S,v);
Printpath(g,dist,path,v); 
break;
case 5:
cout<<"请输入景点名称:";
cin>>name;
v=Locate(g,name); 
cout<<"请输入修改后的景点名称:";
cin>>name;
strcpy(g->data[v].name,name);
cout<<"请输入修改后的景点简介:";
cin>>name;
strcpy(g->data[v].desc,name);
break;
case 6:
cout<<"请输入起始景点名称:";
cin>>name;
v=Locate(g,name);
cout<<"请输入结束景点名称:";
cin>>name;
end=Locate(g,name);
g->arcs[v][end]=MaxValue;
break;
case 0:
exit(0);
default:
break;
} 
}
system("pause");
return 0;
}

(3)各个函数功能

  1. voidCreateGraph(AdjMatrix&g,intm[][MaxVertexNum],DataType d[],int n)       //根据图的顶点d和权值m创建邻接矩阵g
  2. void DisplayMatrix(AdjMatrix g) //显示所有景点信息
  3. void PrintMatrix(AdjMatrix g)       //打印邻接矩阵
  4. void QueryVertex(AdjMatrix g,char name[])    //根据景点名称查询景点信息
  5. int Locate(AdjMatrix g,char name[])   //根据景点名称查询景点序号
  6. void Dijkstra(AdjMatrix g,int dist[],int path[],int S[],int v)     //求最短路径长度
  7. void Printpath(AdjMatrix g,int dist[],int path[],int v)     // 输出最短路径长度和最短路径
  8. void Printpath(AdjMatrix g,int dist[],int path[],int v,int end)// 输出到某个顶点的最短路径长度和最短路径;

(4)系统界面显示效果

 

 

实验要求:

给出程序,使之能够实现基本的功能。

1. 显示所有景点信息

2. 查询景点信息

3. 给出到某个景点的最佳路线

4. 给出到所有景点的最佳路线

5. 修改景点信息

6. 撤销旅游路线

实验代码:

#include <iostream>
#include <cstring>
#include <cstdlib>
#define MaxVertexNum 5000
#define MaxValue 5000 //表示两点之间距离为无穷大 
#define INF 5000
#include <stack> 
using namespace std;

typedef struct  //景点类型 
{
	int no;   //景点编号 
	char name[20];   //景点名称 
	char desc[100];   //景点简介 
}DataType; 

typedef struct
{
	int arcs[MaxVertexNum][MaxVertexNum];  //邻接矩阵
	DataType data[MaxVertexNum];   //顶点信息 
	int vexnum;   //顶点数 
}MGraph,*AdjMatrix;
void CreateGraph(AdjMatrix &g,int m[][MaxVertexNum],DataType d[],int n)
{
	g->vexnum=n;
	int i,j;
	for(i=0;i<g->vexnum;i++)
	{
		g->data[i].no=d[i].no;
		strcpy(g->data[i].name,d[i].name);
		strcpy(g->data[i].desc,d[i].desc);
		for(j=0;j<g->vexnum;j++)
		g->arcs[i][j]=m[i][j];
	}
}
void PrintMatrix(AdjMatrix g)
{
	int i,j;
	cout<<"       午门 太和殿 乾清宫 御花园 神武门 养心殿 西六宫 东六宫"<<endl;
	for(i=0;i<g->vexnum;i++)
	{
		
		cout<<g->data[i].name<<"  ";
		if(i==0) cout<<"  ";
		for(j=0;j<g->vexnum;j++) 
		{
			if(g->arcs[i][j]==INF) cout<<"∞";
			else cout<<g->arcs[i][j];
			if(j==g->vexnum-1) cout<<endl;
			else cout<<"     "; 
		}
	}
}
void DisplayMatrix(AdjMatrix g)
{
	int i;
	cout<<"景点编号  景点名称  景点简介"<<endl; 
	for(i=0;i<g->vexnum;i++)
	{
		cout<<g->data[i].no<<"  ";
		cout<<g->data[i].name<<"  ";
		cout<<g->data[i].desc<<endl;
	}
}
void QueryVertex(AdjMatrix g,char name[])	//根据景点名称查询景点信息
{
	int i,sign=0;
	for(i=0;i<g->vexnum;i++)
	{
		if(strcmp(g->data[i].name,name)==0)
		{
			cout<<"景点编号  景点名称  景点简介"<<endl;
			cout<<g->data[i].no<<"  ";
			cout<<g->data[i].name<<"  ";
			cout<<g->data[i].desc<<endl;
			sign=1;
			break;
		}
	}
	if(sign==0) cout<<"未找到该景点!"<<endl;
}
int Locate(AdjMatrix g,char name[])
{
	int i;
	for(i=0;i<g->vexnum;i++)
	{
		if(strcmp(g->data[i].name,name)==0)
			return g->data[i].no;
	}
}
void Dijkstra(AdjMatrix g,int D[],int path[],int S[],int v0)	  //求最短路径长度
{
	int v,w,min,i;
	for(v=0;v<g->vexnum;++v)
	{
		S[v]=0;
		D[v]=g->arcs[v0][v];
		if(D[v]<INF) path[v]=v0;
		else path[v]=-1;
	}
	S[v0]=1;D[v0]=0;
		for(i=1;i<g->vexnum;++i)
		{
			min=INF;
			for(w=0;w<g->vexnum;++w)
			if(!S[w]&&D[w]<min)
				{v=w;min=D[w];}
			S[v]=1;
			for(w=0;w<g->vexnum;++w)
			if(!S[w]&&(D[v]+g->arcs[v][w]<D[w]))
			{
				D[w]=D[v]+g->arcs[v][w];
				path[w]=v; 
			}
		}
}
void Printpath(AdjMatrix g,int D[],int path[],int v0)
{
	int i=0,num,q,j;
	if(i==v0) i++;
	while(i<g->vexnum)
	{
		cout<<g->data[v0].name<<g->data[i].name<<"的最短路径长度:"<<D[i]<<",最短路径为:";
		int pa[g->vexnum];
		for(j=0;j<g->vexnum;j++)
			pa[j]=-1;
		num=0;
		q=i;
		while(path[q]!=v0)
		{
			pa[num]=path[q];
			q=path[q];
			num++;
		}
		cout<<g->data[v0].name<<"-->";
		for(j=g->vexnum-1;j>=0;j--)
		{	
			if(pa[j]!=-1) 
			{
				cout<<g->data[pa[j]].name;
				cout<<"-->";
			}
		}
		cout<<g->data[i].name;
		i++;
		if(i==v0) i++;
		cout<<endl;
	}
}
void Printpath(AdjMatrix g,int D[],int path[],int v0,int i)
{
	    int num,q,j;
		cout<<g->data[v0].name<<g->data[i].name<<"的最短路径长度:"<<D[i]<<",最短路径为:";
		int pa[g->vexnum];
		for(j=0;j<g->vexnum;j++)
			pa[j]=-1;
		num=0;
		q=i;
		while(path[q]!=v0)
		{
			pa[num]=path[q];
			q=path[q];
			num++;
		}
		cout<<g->data[v0].name<<"-->";
		for(j=g->vexnum-1;j>=0;j--)
		{	
			if(pa[j]!=-1) 
			{
				cout<<g->data[pa[j]].name;
				cout<<"-->";
			}
		}
		cout<<g->data[i].name<<endl;
}

int main()
{
	AdjMatrix g;
	char name[20];
	int choice,v,i;
	int end;
	int D[MaxVertexNum],path[MaxVertexNum],S[MaxVertexNum];
	g=new MGraph;
	DataType d[]={
	  {0,"午门","午门是紫禁城的正门,午门有五个门洞,明三暗五。"},
	 {1,"太和殿","俗称金銮殿,是紫禁城最高最大的宫殿,是朝廷举行重大典礼的地方。"},
	    {2,"乾清宫","是后三宫中最大的宫殿,是清朝康熙帝以前的皇帝居住的寝宫。"},
	    {3,"御花园","宫中最大花园,供帝后玩耍。"},
	    {4,"神武门","紫禁城北门,故宫博物院正门。"},
	  {5,"养心殿","雍正时期,皇帝的寝宫。"},
	  {6,"西六宫","西六宫包括永寿宫、翊坤宫、储秀宫、咸福宫、长春宫和启祥宫。"},
	  {7,"东六宫","东六宫包括景仁宫、承乾宫、钟粹宫、景阳宫、永和宫和延禧宫。"}
	 };
	int m[][MaxVertexNum]={
	{MaxValue,1500,MaxValue,MaxValue,MaxValue,MaxValue,MaxValue,MaxValue},
	{1500,MaxValue,1000,MaxValue,MaxValue,800,MaxValue,MaxValue},
	{MaxValue,1000,MaxValue,400,MaxValue,300,200,200},
	{MaxValue,MaxValue,400,MaxValue,200,MaxValue,100,100},
	{MaxValue,MaxValue,MaxValue,200,MaxValue,MaxValue,250,260},
	{MaxValue,800,300,MaxValue,MaxValue,MaxValue,50,400},
	{MaxValue,MaxValue,200,100,250,50,MaxValue,MaxValue},
	{MaxValue,MaxValue,200,100,260,400,MaxValue,MaxValue}
	};
	CreateGraph(g,m,d,8);
	PrintMatrix(g);
	while(1)
	{
		cout<<"     故宫导游咨询系统"<<endl;
		cout<<"**********主菜单**********"<<endl;
		cout<<"     (1)显示所有景点信息"<<endl; 
		cout<<"     (2)查询景点信息"<<endl; 
		cout<<"     (3)给出到某个景点的最佳路线"<<endl; 
		cout<<"     (4)给出到所有景点的最佳路线"<<endl; 
		cout<<"     (5)修改景点信息"<<endl; 
		cout<<"     (6)撤销旅游线路"<<endl; 		
		cout<<"     (0)退出"<<endl; 
		cout<<"请选择(1,2,3,4,5,6,0):";
		cin>>choice;
		if(choice<0||choice>6)
		continue;
		switch(choice)
		{
			case 1:
				DisplayMatrix(g); break;
			case 2:
				cout<<"请输入景点名称:"; 
				cin>>name;	
				QueryVertex(g,name);
				cout<<endl;			
				break;
			case 3:
				cout<<"请输入你现在所在景点名称:";
				cin>>name;
				v=Locate(g,name);
				cout<<"请输入你要去的景点名称:";
				cin>>name;
				end=Locate(g,name);
				Dijkstra(g,D,path,S,v);			
				Printpath(g,D,path,v,end);
				break; 
			case 4:
				cout<<"请输入你现在所在景点名称:";
				cin>>name;
				v=Locate(g,name);
				Dijkstra(g,D,path,S,v);
				Printpath(g,D,path,v);
				break;
			case 5:
				cout<<"请输入景点名称:";
				cin>>name;
				v=Locate(g,name); 
				cout<<"请输入修改后的景点名称:";
				cin>>name;
				strcpy(g->data[v].name,name);
				cout<<"请输入修改后的景点简介:";
				cin>>name;
				strcpy(g->data[v].desc,name);
				break;
			case 6:
				cout<<"请输入起始景点名称:";
				cin>>name;
				v=Locate(g,name);
				cout<<"请输入结束景点名称:";
				cin>>name;
				end=Locate(g,name);
				g->arcs[v][end]=MaxValue;
				g->arcs[end][v]=MaxValue;
				PrintMatrix(g);
				break;
			case 0:
				exit(0);
			default:
				break;
		} 
	}
	system("pause");
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1913097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

领导者视角:识别系统问题的信号

作为企业的领导者&#xff0c;有时候我们面对的不仅是表面的小问题&#xff0c;而是根深蒂固的系统性问题。如果您发现以下症状&#xff0c;可能就是时候深入挖掘了&#xff1a; 1、资源消耗大&#xff1a;一个看似小的问题&#xff0c;解决起来却不断耗费大量资源。 2、反复无…

LeetCode热题100刷题10:46. 全排列、78. 子集、17. 电话号码的字母组合、39. 组合总和、138. 随机链表的复制

回溯问题 46. 全排列 全排列问题&#xff1a; path 递归终止条件&#xff1a;path中是否已存储所有元素&#xff1b; for循环处理节点集合&#xff1a;used0未被使用的元素 class Solution { public:vector<int> path;vector<vector<int>> res;void backt…

odoo中的钩子 Hooks

钩子 钩子&#xff08;Hooks&#xff09;是一种在特定时间点或特定事件发生时执行自定义代码的机制。它们允许开发者在不修改核心代码的情况下&#xff0c;为Odoo添加自定义功能或扩展现有功能。以下是关于Odoo钩子的一些关键点和常见用法&#xff1a; 一、钩子的类型 pre_i…

Thinking--在应用中添加动态水印,且不可删除

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 水印是一种用于保护版权和识别内容的技术&#xff0c;通常用于图像、视频或文档中。它可以是文本、图像或两者的组合&#xff0c;通常半透明或以某种方式嵌入到内容中&#xff0c;使其不易被移除或篡改…

《Windows API每日一练》9.13资源-鼠标位图和字符串

鼠标指针位图&#xff08;Mouse Cursor Bitmap&#xff09;是用于表示鼠标指针外观的图像。在 Windows 窗口编程中&#xff0c;可以使用自定义的鼠标指针位图来改变鼠标的外观&#xff0c;并提供更加个性化的用户体验。 ■以下是一些与鼠标指针位图相关的要点&#xff1a; ●…

局域网远程共享桌面如何实现

在局域网内实现远程共享桌面&#xff0c;可以通过以下几种方法&#xff1a; 一、使用Windows自带的远程桌面功能&#xff1a; 首先&#xff0c;在需要被控制的电脑上右键点击“此电脑”&#xff0c;选择“属性”。 进入计算机属性界面后&#xff0c;点击“高级系统设置”&am…

这不是在搞技术,而是在玩心态~

正文 大家好&#xff0c;我是bug菌~ 如今为制造业提供大型设备的研发型公司大多数都是做系统集成&#xff0c;一部分有技术实力的公司会把核心部分自研&#xff0c;其他相对比较通用的周边设备由其他公司产品来集成&#xff1b;也有一部分公司只是做做方案和资源整合&#xff0…

科普文:深入理解负载均衡(四层负载均衡、七层负载均衡)

概叙 网络模型&#xff1a;OSI七层模型、TCP/IP四层模型、现实的五层模型 应用层&#xff1a;对软件提供接口以使程序能使用网络服务&#xff0c;如事务处理程序、文件传送协议和网络管理等。&#xff08;HTTP、Telnet、FTP、SMTP&#xff09; 表示层&#xff1a;程序和网络之…

bazel基础知识

ABOUT BAZEL 什么是Bazel&#xff1f; 构建系统&#xff0c;而不是构建生成器&#xff08;直接调用编译器&#xff09;【A build system, not a build generator (invokes directly the compiler)】 具有完整的测试功能&#xff08;测试报告、片状测试处理等&#xff09;【Wi…

腾讯又一平台即将停止运营

随着腾讯公司业务和战略的调整&#xff0c;某些业务逐渐退出历史舞台&#xff0c;如“腾讯直播平台NOW”&#xff0c;以及“QQ签到”&#xff0c;“腾讯待办”&#xff0c;“企鹅FM音频平台”等&#xff0c;最近又有一则重磅消息&#xff0c;那就是“腾讯课堂”也即将停止运营。…

【Linux】进程(9):进程控制2(进程等待)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;9&#xff09;进程控制2&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 为什么要进程等待二. 如何进行进程等待1.wait函数—…

学习嵌入式对于学历有要求吗?

学习嵌入式系统开发通常并不对学历有严格的要求&#xff0c;尤其是在技术行业中&#xff0c;实际的技能和经验往往比学历更为重要。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕…

设计无缝体验:交互设计流程全解析

完整的产品交互设计流程是什么&#xff1f;完整的产品交互设计流程包括研究用户需求、指定信息架构、制作产品原型、进行用户测试和实时发布产品。交互设计就是从人与产品之间的关系入手&#xff0c;通过产品设计来满足大众的日常需求。随着网络技术的流行&#xff0c;产品交互…

高性能Python网络框架实现网络应用详解

概要 Python作为一种广泛使用的编程语言,其简洁易读的语法和强大的生态系统,使得它在Web开发领域占据重要位置。高性能的网络框架是构建高效网络应用的关键因素之一。本文将介绍几个高性能的Python网络框架,详细描述它们的特点、使用场景及具体示例代码,帮助高效实现网络应…

鸿蒙语言基础类库:【@ohos.util.ArrayList (线性容器ArrayList)】

线性容器ArrayList 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 …

windows USB 设备驱动开发-USB带宽

本文讨论如何仔细管理 USB 带宽的指导。 每个 USB 客户端驱动程序都有责任最大程度地减少其使用的 USB 带宽&#xff0c;并尽快将未使用的带宽返回到可用带宽池。 在这里&#xff0c;我们认为USB 2.0 的速度是480Mbps、12Mbps、1.5Mbps&#xff0c;这分别对应高速、全速、低速…

Mysql 高性能索引

引言 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 常见的索引类型包括B-Tree索引、哈希索引、空间数据索引&#xff08;R-Tree&#xff09;、全文索引。 索引的类型 在MySQL中&#xff0c;索引是在 存储引擎层 而不是服…

分享五款软件,成为高效生活的好助手

​ 给大家分享一些优秀的软件工具,是一件让人很愉悦的事情&#xff0c;今天继续带来5款优质软件。 1.图片放大——Bigjpg ​ Bigjpg是一款图片放大软件&#xff0c;采用先进的AI算法&#xff0c;能够在不损失图片质量的前提下&#xff0c;将低分辨率图片放大至所需尺寸。无论…

C 语言中如何进行冒泡排序?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

cesium 雷达扫描

cesium 雷达扫描 (下面附有源码) 实现思路 1、通过改变圆型材质来实现效果, 2、用了模运算和步进函数(step)来创建一个重复的圆形图案 3、当纹理坐标st落在垂直或水平的中心线上时,该代码将改变透明度和颜色,以突出显示这些线 示例代码 <!DOCTYPE html> <ht…