【5G 架构】边缘计算平台是如何与3GPP网络连接的?
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。
博客内容主要围绕:
5G/6G协议讲解
高级C语言讲解
Rust语言讲解
文章目录
- 边缘计算平台是如何与3GPP网络连接的?
- 一、边缘计算架构详述
- 二、MEC与3GPP的连接
- 三、MEC service
- 3.1 Radio Network Information service(RNSI)
- 3.2 Location
- 四、Mp2是如何与3GPP通信的?
- 4.1 Mp2与5GC连接
- 4.2 Mp2与基站的连接
- 总结
边缘计算平台是如何与3GPP网络连接的?
ETSI参考资料地址
https://www.etsi.org/deliver/etsi_gs/MEC/001_099/003/03.01.01_60/gs_MEC003v030101p.pdf
OAI-MEC项目地址
https://gitlab.eurecom.fr/oai/orchestration/blueprints
一、边缘计算架构详述
MEC
(Multi-access Edge Computing)是由欧洲电信标准协会制定的标准( European Telecommunications Standards Institute,ETSI)将云计算能力扩展到蜂窝网络的边缘。MEC是一个将计算、存储和网络资源更接近用户和终端设备的系统,可以减少延迟,提高网络效率。
MEC是5G中边缘计算的关键技术,有望支持从物联网到AR、VR和自动驾驶汽车等新型应用。MEC与5G基础设施的结合可以使服务以更高的速度和可靠性交付,这是实时应用的关键概念。ETSI设计的标准架构如下图所示:
下面是一个更加通用的参考架构:
MEC是由在运营商网络或运营商子网络内运行MEC应用所需的MEC host和MEC management组成,其中:
-
MEC host
: 是一个包含MEC platform和虚拟化基础设施的实体,为运行MEC应用程序提供计算、存储和网络资源。虚拟化基础设施包括一个数据平面,它执行MEC平台的流量规则,并在应用程序、服务、DNS服务器/代理、3GPP网络、其他接入网络、本地网络和外部网络之间流量路由; -
MEC platform
: 是在特定虚拟化基础设施上运行MEC应用程序所需的基本功能的集合,并使这些应用能够提供和消费MEC服务。MEC platform也可以提供服务,更详细的功能包括:- 提供一个环境,在这个环境下MEC应用程序可以发现、通知、消费和提供MEC服务。如果支持,还可以在同一或不同的MEC系统中发现MEC服务;
- 接收来自MEC platform manager、应用程序或业务的流量规则,并根据上面的规则配置数据平面。在支持的情况下,还包括将业务规则中表示UE的标记转换为特定的IP地址;
- 从MEC platform manager接收DNS记录,并相应配置DNS代理/服务器;
- 托管MEC服务;
- 提供对持久存储和时间信息的访问;
-
MEC applications
:基于MEC management验证的配置或请求,在MEC host的虚拟化基础设施上实例化的应用程序。MEC应用程序作为虚拟应用程序(如虚拟机或容器化应用程序)运行在MEC主机提供的虚拟化基础设施之上,可以与MEC platform交互以消费和提供MEC服务。MEC应用程序可以有一定数量的相关规则和需求,例如所需的资源、最大延迟、所需或有用的服务等。这些要求由MEC system level management进行验证,如果缺失,可以分配给默认值; -
MEC management
:包括MEC system level management和 MEC host level management:MEC system level management
:包括核心组件MEC orchestrator,实现对整个MEC系统的编排,Operations Support System和User application lifecycle management proxy;MEC orchestrator
作为核心组件,主要负责下面的功能:- 根据部署的MEC主机、可用的资源、可用的MEC服务和拓扑结构,维护MEC系统的整体视图;
- 安装应用程序包,包括检查应用程序包的完整性和真实性,验证应用程序规则和要求,并在必要时调整它们以符合运营商的政策,保存安装程序包的记录,以及准备虚拟化基础设施管理人员处理应用程序;
- 根据延迟、可用资源、可用服务等约束条件,为应用实例化选择合适的MEC主机;
- 触发应用程序实例化和终止流程;
- 如果支持,必要时触发应用的迁移流程;
Operations Support System (OSS)
:通过CFS门户和设备应用程序接收用于实例化或终止应用程序的请求,并决定是否授予这些请求。获得批准的请求会转交给MEO作进一步处理。在支持的情况下,OSS还可以接收设备应用程序在外部云和MEC系统之间迁移应用程序的请求;User application lifecycle management proxy
:用户应用生命周期管理代理允许设备应用请求加载、实例化、终止用户应用,以及在支持的情况下,将用户应用重新部署到MEC系统内外。它还允许将用户应用程序的状态通知设备应用程序;
MEC host level management
:包括MEC platform manager和Virtualisation infrastructure
manager,负责管理各个MEC host的MEC特定功能和运行在上面的MEC应用程序;MEC platform manager
主要负责下面的功能:- 管理应用程序的生命周期,包括通知MEO相关的应用程序相关事件;
- 为MEC平台提供基础管理功能;
- 管理应用规则和需求,包括服务授权、流量规则、DNS配置和冲突解决;
- MEC平台管理器还从虚拟化基础设施管理器接收虚拟化资源故障报告和性能测量,以便进一步处理;
Virtualisation infrastructure manager
主要负责下面的功能:- 分配、管理和释放虚拟化基础设施的虚拟化(计算、存储和网络)资源;
- 准备虚拟化基础设施以运行软件映像。准备工作包括配置基础设施,还可以包括接收和存储软件镜像;
- 收集和上报虚拟化资源的性能和故障信息;
- 支持时,执行应用程序重定位。对于从/到外部云环境的应用程序迁移,虚拟化基础设施管理器与外部云管理器交互以执行应用程序迁移;
-
Device application
:是指设备中的应用程序(例如UE、具有互联网连接的笔记本电脑),这些应用程序能够通过用户应用程序生命周期管理代理与MEC系统交互; -
Customer facing service portal(CFS)
:面向客户的服务门户允许运营商的第三方客户(如商业企业)选择并订购一组满足其特定需求的MEC应用程序,并从提供的应用程序中获取服务信息;
二、MEC与3GPP的连接
下面是OAI-MEC项目的架构图,其展示了MEC与5GC的连接方式:
上面的架构中主要涉及两个参考点Mp2
和Mp1
,大致清楚的是Mp2
用于3GPP通信,Mp1
连接MEC APP。我们先来看下ETSI对这两个参考点的定义(更多的参考点信息可以参阅ETSI协议gs_MEC003):
Mp2
:MEC platform和虚拟化基础设施中数据平面之间的Mp2参考点用于指导数据平面如何在应用程序、网络、服务等之间路由流量;Mp1
:提供服务注册、服务发现和服务通信支持。它还提供了其他功能,如应用程序可用性、会话状态重定位支持流程、流量规则和DNS规则激活、访问持久存储和一天中的时间信息等。此参考点可用于消费服务并提供特定于服务的功能;
ETSI对Mp1的解释还是比较清楚的,但是我们还是不清楚Mp2是如何连接3GPP的,在我们继续理解Mp2时需要先了解MEC service。
三、MEC service
MEC service是由MEC platform或MEC APP提供和使用的服务。当由应用程序提供时,可以通过Mp1参考点将其注册到MEC platform的服务列表中。MEC应用程序可以订阅服务,并通过Mp1参考点对其进行授权。
3.1 Radio Network Information service(RNSI)
无线网络信息服务,会为授权的应用程序提供无线网络相关信息,包括:
- 最新的无线网络状态信息;
- 用户平面相关的测量和统计信息;
- MEC host所关联基站下的终端信息(例如,终端上下文和无线接入承载);
- MEC host所关联基站下的终端信息改变通知;
3.2 Location
位置服务在可用时为经过授权的应用程序提供位置相关的信息。这些信息可以是:
- MEC host所关联基站下的特定终端的位置;
- MEC host所关联基站下的所有终端的位置信息;
- MEC host所关联基站下的特定category终端的位置;
- 特定位置下的终端信息列表;
- MEC host所关联的所有基站的位置信息;
四、Mp2是如何与3GPP通信的?
首先我们来看一下OAI-RNIS项目里面的介绍,下面是OAI-RNIS的架构图:
我们来看下OAI项目的解释:RNIS的主要任务是通过Mp2从3GPP网络检索信息,并通过Mp1将其暴露给第三方边缘应用程序或其他边缘服务。与3GPP网络的通信是通过两个不同的 rnisApps 进行的:
- Core Network Wrapper Service:消费OAI-CM暴露的所有5G核心网相关事件;
- KPIs-xApp Service:消费 xApp 从无线网络暴露的所有无线网络相关测量信息;
RNIS可以根据需要通信的节点数量来动态扩展和实例化这两个服务。
这些模块检索和处理的数据被发送到数据汇聚服务(Data Convergence Service),该服务负责合并所有信息并触发特定事件。经过处理后,这些信息对北向API和通知服务rnisApp都可用。虽然北向api通过RESTful接口公开信息,但通知服务负责通过基于http的通知服务将新事件通信给所有感兴趣的订阅者。
也就是说Mp2这个参考点,既可以与RAN连接,也可以与5GC连接。
4.1 Mp2与5GC连接
从下面的代码我们可以推断出,Mp2与5GC之间是通过类似 OpenAPI 的消息机制进行通信的。
for node in configuration["coreNetwork"]["nodes"]:cn = CN(cn_ip=node["cnIp"],cn_port=int(node["cnPort"]),stats_endpoint=node["statsEndpoint"],amf_subscription_endpoint=node["amfSubscriptionEndpoint"],smf_subscription_endpoint=node["smfSubscriptionEndpoint"],storage=data_repository)try:cn.healthcheck()cn.subscribe_to_amf_events(['REGISTRATION_STATE_REPORT'])cn.subscribe_to_smf_events(['PDU_SES_EST'])cn_list.append(cn)if "pollingTimer" in node:cn.run(int(node["pollingTimer"]))else:cn.start_polling(int(configuration["coreNetwork"]["pollingTimer"]))log.info(f"[Main] A new rnis app has been registered!\n{cn.infodump()}")except Exception as e:log.error(e)
而且理论上可以与任意想采集信息的NF建立类似的事件订阅机制,当然除了需要3GPP标准定义外,还需要运营商开放订阅接口。下面是3GPP对AMF和SMF信息暴露接口的定义:
- Namf_EventExposure service(TS 23.502-5.2.2.3);
- Nsmf_EventExposure Service(TS 23.502-5.2.8.3);
从上面的代码可以看出,OAI-CM(Configuration Manager)与AMF和SMF建立了连接,完成事件订阅和接收事件通知功能。
4.2 Mp2与基站的连接
从上面的架构可以看出来,基站侧是需要一个xApp的程序来采集基站侧的网络信息。下面是OAI-RNIS项目里RAN侧docker compose文件(docker-compose-ran.yaml):
version: '3.8'
services:oai-gnb:image: oaisoftwarealliance/oai-gnb:mep-compatibleprivileged: truecontainer_name: rfsim5g-oai-gnbenvironment: RFSIMULATOR: serverUSE_SA_TDD_MONO: 'yes'GNB_NAME: gnb-rfsim#USE_B2XX: 'yes' #only needed when using B210#USE_VOLUMED_CONF: 'yes' #only needed when mounting the configuration fileTAC: 1MCC: '208'MNC: '99'MNC_LENGTH: 2NSSAI_SST: 1AMF_IP_ADDRESS: 192.168.70.132GNB_NGA_IF_NAME: demo-oaiGNB_NGA_IP_ADDRESS: 192.168.70.160GNB_NGU_IF_NAME: cn5g-accessGNB_NGU_IP_ADDRESS: 192.168.72.160SDR_ADDRS: serial=XXXXXXXUSE_ADDITIONAL_OPTIONS: --sa -E --rfsim --log_config.global_log_options level,nocolor,time #rfsim#USE_ADDITIONAL_OPTIONS: --sa --continuous-tx --log_config.global_log_options level,nocolor,time,line_num,function #(B210)volumes:- shared_lib:/usr/local/lib/flexric/- ./conf/flexric.conf:/usr/local/etc/flexric/flexric.conf# - /dev/bus/usb/:/dev/bus/usb/ (B210)# - ./gnb-n77.conf:/opt/oai-gnb/etc/mounted.conf (B210) config file should be present networks:public_net:ipv4_address: 192.168.70.160public_net_access:ipv4_address: 192.168.72.160healthcheck:test: /bin/bash -c "pgrep nr-softmodem"interval: 10stimeout: 5sretries: 5oai-nr-ue:image: oaisoftwarealliance/oai-nr-ue:2023.w06privileged: truecontainer_name: rfsim5g-oai-nr-ueenvironment: RFSIMULATOR: 192.168.70.160FULL_IMSI: '208990100001120'FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'OPC: 'C42449363BBAD02B66D16BC975D77CC1'DNN: oaiNSSAI_SST: 1USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,timenetworks:public_net:ipv4_address: 192.168.70.161healthcheck:test: /bin/bash -c "pgrep nr-uesoftmodem"interval: 10stimeout: 5sretries: 5
oai-flexric:image: oaisoftwarealliance/oai-flexric:1.0container_name: oai-flexricprivileged: truerestart: alwayscommand: ["/usr/local/bin/nearRT-RIC"]networks:public_net:ipv4_address: 192.168.70.164depends_on:- oai-gnbvolumes:- shared_lib:/usr/local/lib/flexric/- ./conf/flexric.conf:/usr/local/etc/flexric/flexric.confhealthcheck:test: /bin/bash -c "pgrep nearRT-RIC"interval: 10stimeout: 5sretries: 5oai-rnis-xapp:image: oaisoftwarealliance/oai-flexric:1.0container_name: oai-rnis-xappcommand: [ "python3","-u","rnisxapp.py" ] privileged: truerestart: alwaysvolumes:- shared_lib:/usr/local/lib/flexric/- ./conf/flexric.conf:/usr/local/etc/flexric/flexric.conf- ../xapps/config.ini:/flexric/build/examples/xApp/python3/config.ini# - ../xapps/rnisxapp.py:/flexric/build/examples/xApp/python3/rnisxapp.py #(good for debugging)healthcheck:test: /bin/bash -c "pgrep python3"interval: 10stimeout: 5sretries: 5networks:public_net:ipv4_address: 192.168.70.165rabbitmq:image: rabbitmq:3-management-alpinecontainer_name: 'rabbitmq-broker'environment:RABBITMQ_DEFAULT_USER: userRABBITMQ_DEFAULT_PASS: passwordhealthcheck:test: netstat -anpe | grep '5672' | grep 'LISTEN'interval: 5stimeout: 2sretries: 15ports:- 5672- 15672networks:public_net:ipv4_address: 192.168.70.166
volumes:shared_lib:
networks:public_net:driver: bridgename: demo-oai-public-netipam:config:- subnet: 192.168.70.0/24driver_opts:com.docker.network.bridge.name: "demo-oai"public_net_access:name: oai-public-accessipam:config:- subnet: 192.168.72.0/24driver_opts:com.docker.network.bridge.name: "cn5g-access"
可以看到与基站同时启动的还有oai-flexric
、oai-rnis-xapp
、rabbitmq
,其中:
oai-flexric
:提供实时的基站数据采集和分析工具;oai-rnis-xapp
:用于将 oai-flexric 获取的数据格式化成队列消息,push到队列中;rabbitmq
:是一个消息队列,可以实现消息的订阅功能,用于实现MEC platform上的 RNIS 程序对无线网络事件的订阅,以及接收无线网络事件通知功能;
总结
MEC通过Mp1和Mp2将边缘应用与3GPP网络(包括其他网络)连接起来。通过RNIS将网络信息同步给MEC,MEC基于网络信息确定将应用程序部署在边缘侧还是网络侧,并可以依据网络信息决定是否将应用程序迁移到边缘或者网络侧。
相关文章:
【5G 架构】边缘计算平台是如何与3GPP网络连接的?
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…...
5.0.0 GripSpliter的使用(探讨水平竖直对齐参数)
布局控件Grid 配合 GridSplitter 无需编写任何代码 就能实现网格大小可拖动。 其HorizontalAlignment、VerticalAlignment属性的使用非常具有迷惑性;本文做了一些一些实验,总结为把这两个属性均设置为strech即可。 总结如下:经过实验,发现以下情况可以正常工作。 水平方向…...
python如何把pdf转word
在Python中将PDF转换为Word文档(.docx)比反向转换(Word转PDF)更具挑战性,因为PDF是固定格式,而Word是可编辑格式。以下是几种可行的方法及详细步骤: 方法1:使用 pdf2docx 库 pdf2do…...
go实现双向链表
需求 实现双向链表的节点生成、正反向遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intprevious *zodiac_signnext *zodiac_sign }// 添加 // func add_node_by_order(pr…...
33、VS中提示“以下文件中的行尾不一致。是否将行尾标准化?“是什么意思?
在Visual Studio(VS)中遇到提示“以下文件中的行尾不一致。是否将行尾标准化?”时,意味着当前打开或正在编辑的文件内部存在行尾符(EOL,End-Of-Line)格式不统一的情况。以下是详细解释和应对建议…...
C 语言 第五章 指针(5)
目录 函数参数传递机制:地址传递 值传递 简单变量指针作为形参 举例1: 举例2: 举例3: 数组作为形参 举例: 函数参数传递机制:地址传递 值传递 void test(int a, int b) { a 10; b 20; print…...
Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)
功能说明:以下是一个使用Tkinter和Pandas实现的完整示例,支持Excel数据读取、双表格展示和高级条件筛选功能: 1.文件操作:点击"打开文件"按钮选择Excel文件(支持.xlsx和.xls格式),自…...
机器人--架构及设备
机器人的四大组成部分 控制系统 驱控系统 驱控驱动系统控制系统。 注意,这里的控制系统不是机器人层面的控制系统,属于更小层级的,驱控系统的控制系统。 驱动系统: 一般指硬件设备,比如电机驱动器,I/O…...
机器人--主机--控制系统
机器人主机 机器人主机,即控制系统。 作用 机器人主机的核心功能 传感器数据处理:处理摄像头、激光雷达、IMU等数据。 运行SLAM/导航算法:如Google Cartographer、RTAB-Map。 路径规划与控制:执行A*、DWA等算法。 通信管理&a…...
Stm32 烧录 Micropython
目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件,由于知识储备不够最后失败了,留了一个大坑,有了前几天的基础,慢慢补齐知识,最近这一周一直在学习如何编译Stm固件并烧录到单片机…...
leetcode 977. Squares of a Sorted Array
题目描述 双指针法一 用right表示原数组中负数和非负数的分界线。 nums[0,right-1]的是负数,nums[right,nums.size()-1]是非负数。 然后用合并两个有序数组的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…...
使用Nexus搭建远程maven仓库
1、Nexus介绍 Nexus 是 Sonatype 公司的一款用于搭建私服的产品,使用非常广泛。在早期,我们都拿Nexus当maven私服仓库,后来,随着版本不断更新,它支持的数据类型越来越多,比如npm仓库,nuget仓库&…...
坚鹏:工行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训
中国工商银行上海市分行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训圆满落幕 中国工商银行作为全球领先的综合性金融服务集团,始终走在金融科技创新的前沿。截至2024年末,工商银行总资产规模突破40万亿元,连续多年稳居全球银行榜首。在…...
操作系统OS是如何指挥外围设备的呢?
众所周知,OS的职责之一就是管理外围设备,比如常见的磁盘、硬盘、显示器、麦克风等,但并不是外围设备的一切都必须由OS管理,比如无线鼠标上的开关键,当你通过它关闭鼠标时,这个操作并不会经过OS,…...
实现Sentinel与Nacos的规则双向同步
实现Sentinel与Nacos的规则双向同步:完整解决方案 前言 在微服务架构中,流量控制和熔断降级是保障系统稳定性的重要手段。阿里开源的Sentinel作为一款轻量级的流量控制组件,常被用于实现这些功能。然而,在实际生产环境中&#x…...
2025五一杯数学建模A题:支路车流量推测问题,思路分析+模型代码
一持续更新,见文末名片 二、问题背景 想象一下,城市的道路如同一张巨大的脉络图,主路如同大动脉,配备着车流量监测设备,能实时记录车流量数据,就像我们身体的传感器一样。然而,当多条支路像毛细…...
Linux51 安装baidunetdisk yum install rpm -ivh
推测网卡 感觉是不是以前哪里设置了下 deepseek说的这个设置 我没有设置过 这个不会弄啊 准备用虚拟机安个软件 神奇 换了这个命令又能打开网卡了 参考了这个 参考 之前地址我觉得配置错误 动态分配 我就删掉ip地址了 路由表中无ip地址吗? OK 卸载 运…...
【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)
本文记录了将 start.bat 打包成 .exe 启动器的详细教程,适合项目交付或导师演示用。 🧭 一、如何将 start.bat 打包为启动器 .exe(含图标 自动打开浏览器) ✅ 1. 创建三大功能脚本 start.bat → 启动项目(docke…...
Lebesgue测度和积分理论发展概观
1. 发展背景 积分可以从两个角度来理解。首先,积分是微分的逆函数,因此积分是反导数(译注:但积分是独立于微分的,不能微分的函数也可能可积)。然而,这是一个非常抽象的概念。其次,两点之间的积分可以看…...
算法题题型总结
二叉树题型 解法综述:二叉树的解法,基本上都是依赖遍历,再加上递归的思路来做的。那递归又分为深度优先和广度优先。深度优先算法,前序,中序,后序。广度优先,利用先进先出队列,一层…...
网络编程——TCP和UDP详细讲解
文章目录 TCP/UDP全面详解什么是TCP和UDP?TCP如何保证可靠性?1. 序列号(Sequence Number)2. 确认应答(ACK)3. 超时重传(Timeout Retransmission)4. 窗口控制(Sliding Win…...
Qt多线程TCP服务器实现指南
在Qt中实现多线程TCP服务器可以通过为每个客户端连接分配独立的线程来处理,以提高并发性能。以下是一个分步实现的示例: 1. 自定义工作线程类(处理客户端通信) // workerthread.h #include <QObject> #include <QTcpSo…...
【经管数据】A股上市公司资产定价效率数据(2000-2023年)
数据简介:资产定价效率是衡量市场是否能够有效、准确地反映资产内在价值的重要指标。在理想的市场条件下,资产的市场价格应该与其内在价值保持一致,即市场定价效率达到最高。然而,在实际市场中,由于信息不对称、交易摩…...
打包 Python 项目为 Windows 可执行文件:高效部署指南
Hypackpy 是一款由白月黑羽开发的 Python 项目打包工具,它与 PyInstaller 等传统工具不同,通过直接打包解释器环境和项目代码,并允许开发者修改配置文件以排除不需要的内容,从而创建方便用户一键运行的可执行程序。以下是使用 Hyp…...
【QNX+Android虚拟化方案】138 - USB 底层传输原理
【QNX+Android虚拟化方案】138 - USB 底层传输原理 1. USB 数据包的格式2. 数据传输事务过程3. 四种传输类型3.1 批量传输3.2 中断传输3.3 实时传输3.4 控制传输4. USB 设备枚举过程4.1 Attached: 发送控制传输,读取设备描述符4.2 Power -> Default 这个状态无数据传输4.3 …...
QT6 源(66)篇三:阅读与注释类 QAbstractSpinBox ,这是螺旋框的基类,附上源码
(9)所有代码来自于头文件 qabstractspinbox . h : #ifndef QABSTRACTSPINBOX_H #define QABSTRACTSPINBOX_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtWidgets/qwidget.h> #include <QtGui/qvalidator.h>/* QT_CONFIG宏实…...
MCP入门
什么是mcp mcp(model context protocol,模型上下文协议) 标准化协议:让大模型用统一的方式来调用工具,是llm和工具之间的桥梁 A2A:Agent-to-Agent协议 mcp通信机制 提供mcp服务查询的平台 具有工具合集…...
FPGA中级项目8———UART-RAM-TFT
FPGA中级项目8———UART-RAM-TFT UART串口我们学过,RAM IP核学过,TFT同样也学过。那如何将它们联合起来呢? 言简意赅:实现从串口写入图像到RAM并且由TFT显示屏输出! 首先第一步,便是要将UART_RX与RAM之间…...
Ocelot\Consul\.NetCore的微服务应用案例
案例资料链接:https://download.csdn.net/download/ly1h1/90733765 1.效果 实现两个微服务ServerAPI1和ServerAPI2的负载均衡以及高可用。具体原理,看以下示意图。 2.部署条件 1、腾讯云的轻量化服务器 2、WindowServer2016 3、.NETCore7.0 4、Negut …...
数值求解Eikonal方程的方法及开源实现
Eikonal方程是一类非线性偏微分方程,形式为 ( |\nabla u(x)| f(x) ),常见于波传播、几何光学、最短路径等问题。以下是数值求解Eikonal方程的方法及开源实现参考: 一、数值求解方法 有限差分法(FDM) 快速行进法&#…...
Http详解
🧱 一、从 TCP 三次握手到访问网页:两层过程 🧩 1. TCP 三次握手(网络传输层) 这是 建立连接 的前提,跟 HTTP 无关,但 HTTP 要依赖它。 举例:你打开浏览器访问 https://example.c…...
实验五 完整性
一、引言 本次上机实验的目的主要是让学生掌握数据库完整性的三大类型(实体完整性、参照完整性、用户自定义完整性),并通过实际建库建表和数据操作加深理解。 下面将为分别展示 student、course、sc 三个表的创建语句,并设置对应的…...
《原码、反码与补码:计算机中的数字奥秘》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、原码:最直观的表示法1. 正数的原码2. 负数的原码3. 原码的特点 二、反码:原码的“反转”1. 正数的反码2. 负数的反码3. 反码的特…...
论文笔记——QWen2.5 VL
目录 引言架构创新数据整理与训练策略性能与基准测试精细感知能力应用与现实世界影响与现有模型比较结论 引言 视觉理解和自然语言处理的集成一直是人工智能研究的一个重要焦点,促成了日益复杂的视觉语言模型 (VLMs) 的发展。由阿里巴巴集团 Qwen 团队开发的 Qwe…...
前端HTML基础知识
1.HTML介绍 HTML(HyperText Markup Language,超文本标记语言)是构成网页的基本元素,是一种用于创建网页的标准化标记语言。HTML不是一种编程语言,而是一种标记语言,通过标签来描述网页的结构和内容。 超文本:超文本是…...
程序代码篇---ESP32云开发
文章目录 前言 前言 本文简单介绍了实现 ESP32-S3 传感器数据上传至云平台 手机远程控制电机 的完整方案,涵盖推荐的云平台、手机端。 一、推荐云平台及工具 云平台选择 阿里云 IoT 平台 优势:国内稳定、支持大规模设备接入、提供完整设备管理及安全…...
【C语言】文本操作函数fseek、ftell、rewind
一、fseek int fseek ( FILE * stream, long int offset, int origin ); 重新定位文件指针的位置,使其指向以origin为基准、偏移offset字节的位置。 成功返回0,失败返回非零值(通常为-1)。 origin有如下三种:分别是…...
ARM ASM
ARM ASM ARM寄存器集 列出了ARM的16个程序员可见寄存器(r0~r15)以及它的状态寄存器。 ARM共有14个通用寄存器r0~r13。寄存器r13被保留用作栈指针,r14存放子程 序返回地址,r15为程序计数器。 由于r15能够被程序员访问,…...
【五一培训】Day1
注: 1. 本次培训内容的记录将以“Topic”的方式来呈现,用于记录个人对知识点的理解。 2. 由于培训期间,作者受限于一些现实条件,本文的排版及图片等相关优化,需要过一段时间才能完成。 Topic 1:使用DeepS…...
SpringBoot使用分组校验解决同一个实体对象在不同场景下需要不同校验规则的问题
背景 添加分类的接口不需要id字段,但更新分类的接口需要id字段,当在id字段上使用NotNull注解时,会导致使用添加分类接口报id字段不能为空的错误 解决 定义分组 pojo/Category.java // 如果没有指定分组,则默认属于Default分组…...
Hibernate与MybatisPlus的混用问题(Invalid bound statement (not found))
当项目里已经有了Hibernate后: spring:jpa:hibernate:ddl-auto: updateshow-sql: trueproperties:hibernate:format_sql: true 再配置yml文件就会失效: mybatis-plus:mapper-locations: classpath:mapper/*.xml# 全局策略global-config:db-config:# 自…...
【音视频】ffplay数据结构分析
struct VideoState 播放器封装 typedef struct VideoState {SDL_Thread *read_tid; // 读线程句柄AVInputFormat *iformat; // 指向demuxerint abort_request; // 1时请求退出播放int force_refresh; // 1时需要刷新画⾯,请求⽴即刷新画⾯的意思int paused; // 1时…...
PV操作:宣帧闯江湖武林客栈版学习笔记【操作系统】
P,V,S江湖话翻译 P(申请) 江湖侠客拔剑大喊“掌柜的,给我一间上房!”(申请资源,房不够就蹲门口等)-要房令牌 V(释放) 江湖侠客退房时甩出一锭银子,大喊“…...
精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)
精品推荐,湖仓一体电商数据分析平台实践教程合集,包含视频教程、设计文档及完整项目代码等资料,供大家学习。 1、项目背景介绍及项目架构 2、项目使用技术版本及组件搭建 3、项目数据种类与采集 4、实时业务统计指标分析一——ODS分层设计与…...
对计网考研中的信道、传输时延、传播时延的理解
对计网考研中的信道、传输时延、传播时延的理解 在学习数据链路层流量控制和可靠传输那一节的三个协议的最大信道利用率时产生的疑惑 情景: 假如A主机和B主机通过集线器连接,A和集线器是光纤连接,B和集线器也是光纤连接,A给B发…...
RAGFlow报错:ESConnection.sql got exception
环境: Ragflowv0.17.2 问题描述: RAGFlow报错:ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […...
报错:函数或变量 ‘calcmie‘ 无法识别。
1、具体报错 运行网上一个开源代码,但是运行报如下错: TT_para_gen 函数或变量 calcmie 无法识别。 出错 TT_para_gen>Mie (第 46 行) [S, C, ang,~] calcmie(rad, ns, nm, lambda, nang, ... 出错 TT_para_gen (第 17 行) [~,ang,Miee,C] …...
蓝桥杯获奖后心得体会
文章目录 获奖项备考心得📖 蓝桥杯 Java 研究生组备考心得📌 一、备考规划📌 二、考试技巧📌 三、心理调整📌 四、总结 获奖项 JAVA研究生组省二 备考心得 好!我来给你写一篇蓝桥杯研究生组Java方向的备…...
大鱼吃小鱼开源
因为知道一些学校也有相关C语言课设 所以这里对代码开源(如果没有csdn会员请用夸克) 我用夸克网盘分享了「大鱼吃小鱼-程序.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速࿰…...