华为嵌入式软件比赛2024
华为嵌入式软件比赛2024
仓库链接:https://github.com/maxswordsman/HWEmbeddedSoftwareAlgorithm2024
一、项目总结名称:
2024 第五届 华为嵌入式软件挑战比赛
比赛描述:
通过C++编程,构建具有N个节点M条边的光网络(无向连通图),网络中的每条边代表一条光纤,每条光纤上存在相同数量的光通道。网络上运行着多条光业务,每条业务有起点、终点、通道宽度和价值。路径上的每条边使用连续的通道编号,业务之间不能共享相同通道。比赛场景中会有多个独立的测试场景,每个场景可能会发生多次光纤中断。程序需设计一种算法,对因光纤中断受影响的业务进行重新规划。确保在多次光纤故障后,网络中存在尽可能多的未死亡业务,最大化业务总价值
主要工作:
赛题要求初始化以及故障处理,从标准输入读取网络结构和初始业务数据,并构建相应的图和业务对象,并对每一个测试场景读取发生的故障边的编号,进行故障处理
业务重规划,对于受影响的业务,尝试使用广度优先搜索(BFS)和深度优先搜索(DFS)算法进行路径重规划,首先尝试BFS重新规划受影响的业务路 ...
BFS与DFS
BFS与DFS一、BFS1.BFS模板(1)介绍BFS 是 “广度优先搜索”(Breadth-First Search)的缩写,是一种用于图形和树结构遍历的算法。BFS 从一个起始节点开始,首先访问所有与该节点距离为1的节点,然后访问距离为2的节点,依此类推,直到访问所有节点或者找到目标节点。具体步骤如下
初始化:
创建一个队列,用于存储待访问的节点
将起始节点放入队列中,并标记为已访问
遍历过程:
从队列的前端取出一个节点,称为当前节点
访问当前节点的所有邻接节点(即与当前节点直接相连的节点)
对于每个邻接节点,如果它未被访问过,将其放入队列,并标记为已访问
重复:
重复步骤2,直到队列为空或找到目标节点
广度优先搜索的特征为从起点开始,由近及远(树结构,只管的解释就是一层一层的搜索,队列中最多同时存在2层以内的元素节点)进行广泛的搜索。因此,目标顶点离起点越近,搜索结束得就越快
(2)BFS与DFS对比BFS与DFS的区别:
bfs 遍历节点是先进先出(使用的工具为队列),dfs遍历节点是先进后出(使用栈)
bfs 是按层次访问的,dfs 是按照一个路径一直 ...
IPV4流媒体网络多播-代码解析
IPV4流媒体项目(网络多播)-代码解析一、IPV4项目项目代码以及解析项目整体框架:
可以做流量控制的地方:
服务端通过socket向多播组ip发送数据,需要考虑丢包,拥塞等问题
客户端调用解码器播放音频数据
客户端,使用管道实现父子进程通信,管道有阻塞的属性
1.协议site_type.h
该头文件进行数据创建一个别名,将数据类型进行隐藏
12345678910111213/* * 数据类型定义 * */#ifndef IPV4_STREAMING_MEDIA_SITE_TYPE_H#define IPV4_STREAMING_MEDIA_SITE_TYPE_H// stdint 头文件提供了固定宽度的整数类型#include <stdint.h>typedef uint8_t chnid_t; // chnid 的范围是0-255 8位2进制的范围#endif //IPV4_STREAMING_MEDIA_SITE_TYPE_H
proto.h
通信协议中,定义各类宏:
DEFAULT_MGROUP:多播组的地址
DEFAULT_RCVPORT:接收 ...
进程
进程一、进程控制文档链接:转自爱编程的大丙
1. 父子进程(1)循环创建子进程在一个父进程中循环创建3个子进程,也就是最后需要得到4个进程,1个父进程,3个子进程,为了方便验证程序的正确性,要求在程序中打印出每个进程的进程ID
main.c
12345678910111213141516171819202122232425262728293031// process_loop.c#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <sys/wait.h>int main(){ pid_t pid; int i; for(i=0; i<3; i++) { // 在fork之前需要将所有流进行刷新!!! fflush(NULL); pid = fork(); if(pid == 0) ...
多线程网络通信
多线程网络通信本文的内容均转载于“爱编程大丙“博客,有小部分个人理解,本文仅用于记录个人的学习过程
视频链接
文档链接
一、相关概念1.局域网与广域网
局域网:局域网将一定区域内的各种计算机、外部设备和数据库连接起来形成计算机通信的私有网络。
广域网:又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程公共网络
IP用于在网络中定位某一台主机,而端口则用于定位主机中的某一个进程
2.IPIP(Internet Protocol):本质是一个整形数,用于表示计算机在网络中的地址。IP协议版本有两个:IPv4和IPv6
IPv4(Internet Protocol version4):
使用一个32位的整形数描述一个IP地址,4个字节,int型
也可以使用一个点分十进制字符串描述这个IP地址(每个字节为8位二进制,则一个字节位置可以使用0-2^8-1表示即0-255): 192.168.247.135
分成了4份,每份1字节,8bit(char),最大值为 255
0.0.0.0 是最小的IP地址
255.255.255.255是最大的IP地址
按照IPv ...