当前位置: 首页 > news >正文

开发RpcProvider的发布服务(NotifyService)

1.发布服务过程

目前完成了mprpc框架项目中的以上的功能。

作为rpcprovider的使用者,也就是rpc方法的发布方

main函数如下:

首先我们init调用框架的init,然后启动一个provider,然后向provider上注册服务对象方法,即userservice的login方法,当做一个可以远程调用的rpc方法,然后启动run,run相当于是一个网络服务器。
首先,如果远端有RPC请求的话,RpcProvider的网络模块(muduo)会帮助我们去接收数据,就是接收一个RPC请求,RPC请求里面有函数名,函数参数。RpcProvider先把这个请求上报到LoginRequest。我们作为用户,不管底层是怎么进行网络收发(muduo库完成),不管怎么把网络上的字节流反序列化成具体的LoginRequest的数据(protobuf完成),我们只管最后去使用就可以了。

执行对应方法,最后,我们又把响应的结果送给protobuf,RpcProvider首先通过protobuf进行对响应的结果 序列化,然后通过muduo库发送出去。

所以,接下去我们要完成:框架的RpcProvider从网络上接收一个RPC调用请求时,他怎么知道要调用应用程序的哪个服务对象的哪个RPC方法呢?

当远端发送来一个请求,根据一些信息,由框架调用对应方法,定位到需要调用的服务对象的服务方法,相当于一个回调操作。

我们将要实现NotifyService的:
需要生成一张表,记录服务对象和其发布的所有服务方法。
比如说:UserService 发布了Login , Register等方法
FriendService发布了AddFriend,DelFriend,GetFriendList等方法

由一个表记录这些信息,当远端有一个rpc请求过来,rpcprovider就可以在这个表里查一查,需要调用哪个对象的哪个方法,然后就会帮我们去调用,调用后,我们就会看到对应方法被框架调用,就会去执行我们写好的响应操作。


使用protobuf的好处:这些Service都是继承了protobuf的Service类,方法都是继承protobuf的Method类。
而且,我们用户不知道什么时候调用Login,框架才知道,有人请求,框架才调用,因为我们是作为服务方。

当远端有RPC有请求过来时,RpcProvider就可以在这张表查调用的是哪个对象的哪个方法,它就去调用了。

开发RpcProvider的发布服务NotifyService

GetDescriptor方法用于获取一个服务的描述,服务名字、对象、服务对象里面有哪些方法

2. rpcprovider.h

#pragma once
#include "google/protobuf/service.h"
#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/InetAddress.h>
#include <muduo/net/TcpConnection.h>
#include <string>
#include <functional>
#include <google/protobuf/descriptor.h>
#include <unordered_map>//框架提供的专门发布rpc服务的网络对象类
class RpcProvider
{
public://这里是框架提供给外部使用的,可以发布rpc方法的函数接口void NotifyService(google::protobuf::Service* service);//具体的服务对象类是从Service类继承而来//框架是可以接收各种RPC服务的,不能依赖具体的某一个业务。 //基类指针指向子对象 //启动rpc服务节点,开始提供rpc远程网络调用服务void Run();private://组合EventLoopmuduo::net::EventLoop m_eventLoop;//service服务类型信息struct ServiceInfo{google::protobuf::Service* m_service;//保存服务对象std::unordered_map<std::string,const google::protobuf::MethodDescriptor*> m_methodMap;//保存服务方法};//存储注册成功的服务对象和其服务方法的所有信息std::unordered_map<std::string,ServiceInfo> m_serviceMap;//新的socket连接回调void OnConnection(const muduo::net::TcpConnectionPtr&);//已建立连接用户的读写事件回调void OnMessage(const muduo::net::TcpConnectionPtr&,muduo::net::Buffer*,muduo::Timestamp);
};

3.rpcprovider.cc

#include "rpcprovider.h"
#include "mprpcapplication.h"/*
service_name=> service描述(一个服务由一个服务名字对应)=》 service*  记录服务对象method_name => method方法对象
json:存储键值对,基于文本存储;数据有对应的键值
protobuf:基于二进制存储,存储效率更高;紧密存储,不携带除数据外的任何信息,整体来说protobuf存储效率更高,占用的带宽更少,同样带宽传输的数据量更大不仅可以提供类型的序列化和反序列化,还提供了service rpc方法的描述
*/
//这里是框架提供给外部使用的,可以发布rpc方法的函数接口
void RpcProvider::NotifyService(google::protobuf::Service *service) 
{ServiceInfo service_info;//获取了服务对象的描述信息const google::protobuf::ServiceDescriptor* pserviceDesc=service->GetDescriptor();//获取服务的名字std::string service_name=pserviceDesc->name();//获取服务对象service的方法的数量int methodCnt=pserviceDesc->method_count();std::cout<<"service_name:"<<service_name<<std::endl;for(int i=0;i<methodCnt;++i){//获取了服务对象指定下标的服务方法的描述(抽象描述) UserService Loginconst google::protobuf::MethodDescriptor* pmethodDesc=pserviceDesc->method(i);std::string method_name=pmethodDesc->name();service_info.m_methodMap.insert({method_name,pmethodDesc});std::cout<<"method_name:"<<method_name<<std::endl;}service_info.m_service=service;m_serviceMap.insert({service_name,service_info});}// 启动rpc服务节点,开始提供rpc远程网络调用服务
void RpcProvider::Run()
{std::string ip=MprpcApplication::GetInstance().GetConfig().Load("rpcserverip");uint16_t port=atoi(MprpcApplication::GetInstance().GetConfig().Load("rpcserverport").c_str());muduo::net::InetAddress address(ip,port);//创建TcpServer对象muduo::net::TcpServer server(&m_eventLoop,address,"RpcProvider");//绑定连接回调和消息读写回调方法 ,muduo库的好处是:分离了网络代码和业务代码server.setConnectionCallback(std::bind(&RpcProvider::OnConnection, this, std::placeholders::_1));//预留1个参数std::placeholders::_1server.setMessageCallback(std::bind(&RpcProvider::OnMessage, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));//预留3个参数std::placeholders::_1,2,3//设置muduo库的线程数量server.setThreadNum(4);std::cout<<"RpcProvider start service at ip:"<<ip<<"port:"<<port<<std::endl;//启动网络服务server.start();m_eventLoop.loop();
}//新的socket连接回调
void RpcProvider::OnConnection(const muduo::net::TcpConnectionPtr&)
{}// 已建立连接用户的读写事件回调
void RpcProvider::OnMessage(const muduo::net::TcpConnectionPtr&,muduo::net::Buffer*,muduo::Timestamp)
{}

protobuf提供了serviceRPC方法的描述,service类,method类,从抽象的层面描述服务对象,服务方法,到时候,由底层就直接可以用上层的服务方法了。notifyservice就是发布rpc服务的站点

相关文章:

开发RpcProvider的发布服务(NotifyService)

1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者&#xff0c;也就是rpc方法的发布方 main函数如下&#xff1a; 首先我们init调用框架的init&#xff0c;然后启动一个provider&#xff0c;然后向provider上注册服务对象方法&#xff0c;即us…...

Suno: AI音乐创作的新时代

名人说:一点浩然气,千里快哉风。 ——苏轼 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、什么是Suno?1、Suno2、应用场景二、如何使用Suno制作音乐?步骤1:注册并登录Suno平台步骤2:创建音乐项目步骤3:生成音乐片段三、Suno的影响很高兴你打开了…...

六西格玛项目实战:数据驱动,手机PCM率直线下降

在当前智能手机市场日益竞争激烈的背景下&#xff0c;消费者对手机质量的要求达到了前所未有的高度。PCM&#xff08;可能指生产过程中的某种不良率或缺陷率&#xff09;作为影响手机质量的关键因素&#xff0c;直接关联到消费者满意度和品牌形象。为了应对这一挑战&#xff0c…...

数据结构递归(01)汉诺塔经典问题

说明&#xff1a;使用递归时&#xff0c;必须要遵守两个限制条件&#xff1a; 递归存在限制条件&#xff0c;满⾜这个限制条件时&#xff0c;递归不再继续&#xff1b; 每次递归调⽤之后越来越接近这个限制条件&#xff1b; 1 汉诺塔&#xff08;Hanoi Tower&#xff09;经典…...

计算机专业课面试常见问题-计算机网络篇

目录 1. 计算机网络分为哪 5 层&#xff1f; 2. TCP 协议简述&#xff1f; 3. TCP 和 UDP 的区别&#xff1f;->不同的应用场景&#xff1f; 4. 从浏览器输入网址到显示页…...

HarmonyOS ArkUi ArkWeb加载不出网页问题踩坑

使用 使用还是比较简单的&#xff0c;直接贴代码了 别忘了配置网络权限 Entry Component struct WebPage {State isAttachController: boolean falseState url: string State title: string Prop controller: web_webview.WebviewController new web_webview.WebviewCont…...

微信换手机号了怎么绑定新手机号?

微信换手机号了怎么绑定新手机号&#xff1f; 1、在手机上找到并打开微信&#xff1b; 2、打开微信后&#xff0c;点击底部我的&#xff0c;并进入微信设置&#xff1b; 3、在微信设置账号与安全内&#xff0c;找到手机号并点击进入&#xff1b; 4、选择更换手机号&#xff0c…...

64.WEB渗透测试-信息收集- WAF、框架组件识别(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;63.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;3&#xff09;-CSDN博客 我们在…...

java.lang.LinkageError: 链接错误的正确解决方法,亲测有效,嘿嘿,有效

文章目录 问题分析报错原因解决思路解决方法&#xff08;含代码示例&#xff09;1. 检查类加载器2. 避免在运行时修改类定义3. 更新或修复 JVM4. 检查应用程序的依赖使用 Maven 检查依赖项使用 Gradle 检查依赖项 java.lang.LinkageError 是 Java 虚拟机在尝试链接类定义时发生…...

python最基础

基本的类 python最基础、最常用的类主要有int整形&#xff0c;float浮点型&#xff0c;str字符串&#xff0c;list列表&#xff0c;dict字典&#xff0c;set集合&#xff0c;tuple元组等等。int整形、float浮点型一般用于给变量赋值&#xff0c;tuple元组属于不可变对象&#…...

Python学习路线图(2024最新版)

这是我最开始学Python时的一套学习路线&#xff0c;从入门到上手。&#xff08;不敢说精通&#xff0c;哈哈~&#xff09; 一、Python基础知识、变量、数据类型 二、Python条件结构、循环结构 三、Python函数 四、字符串 五、列表与元组 六、字典与集合 最后再送给大家一套免费…...

66、基于长短期记忆 (LSTM) 网络对序列数据进行分类

1、基于长短期记忆 (LSTM) 网络对序列数据进行分类的原理及流程 基于长短期记忆&#xff08;LSTM&#xff09;网络对序列数据进行分类是一种常见的深度学习任务&#xff0c;适用于处理具有时间或序列关系的数据。下面是在Matlab中使用LSTM网络对序列数据进行分类的基本原理和流…...

RabbitMQ消息可靠性等机制详解(精细版三)

目录 七 RabbitMQ的其他操作 7.1 消息的可靠性(发送可靠) 7.1.1 confim机制(保证发送可靠) 7.1.2 Return机制(保证发送可靠) 7.1.3 编写配置文件 7.1.4 开启Confirm和Return 7.2 手动Ack(保证接收可靠) 7.2.1 添加配置文件 7.2.2 手动ack 7.3 避免消息重复消费 7.3.…...

88888

49615...

深度学习之激活函数

激活函数的公式根据不同的函数类型而有所不同。以下是一些常见的激活函数及其数学公式&#xff1a; Sigmoid函数&#xff1a; 公式&#xff1a;f(x)特性&#xff1a;输出范围在0到1之间&#xff0c;常用于二分类问题&#xff0c;将输出转换为概率值。但存在梯度消失问题&#…...

OpenStack开源虚拟化平台(一)

目录 一、OpenStack背景介绍&#xff08;一&#xff09;OpenStack是什么&#xff08;二&#xff09;OpenStack的主要服务 二、计算服务Nova&#xff08;一&#xff09;Nova组件介绍&#xff08;二&#xff09;Libvirt简介&#xff08;三&#xff09;Nova中的RabbitMQ解析 OpenS…...

C++ | Leetcode C++题解之第207题课程表

题目&#xff1a; 题解&#xff1a; class Solution { private:vector<vector<int>> edges;vector<int> indeg;public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {edges.resize(numCourses);indeg.resize(numCo…...

vue3中的自定义指令

全局自定义指令 假设我们要创建一个全局指令v-highlight&#xff0c;用于高亮显示元素。这个指令将接受一个颜色参数&#xff0c;并有一个可选的修饰符bold来决定是否加粗文本。 首先&#xff0c;在创建Vue应用时定义这个指令&#xff1a;&#xff08;这里可以将指令抽离成单…...

Postman接口测试工具的原理及应用详解(一)

本系列文章简介&#xff1a; 在当今软件开发的世界中&#xff0c;接口测试作为保证软件质量的重要一环&#xff0c;其重要性不言而喻。随着前后端分离开发模式的普及&#xff0c;接口测试已成为连接前后端开发的桥梁&#xff0c;确保前后端之间的数据交互准确无误。在这样的背景…...

C++ initializer_list类型推导

目录 initializer_list C自动类型推断 auto typeid decltype initializer_list<T> C支持统一初始化{ }&#xff0c;出现了一个新的类型initializer_list<T>&#xff0c;一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。 class…...

造一个交互式3D火山数据可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建交互式 3D 火山数据可视化 应用场景 本代码用于将火山数据库中的数据可视化&#xff0c;展示火山的高度、类型和状态。可用于地质学研究、教育和数据探索。 基本功能 该代码使用 Plotly…...

【网络安全】一文带你了解什么是【CSRF攻击】

CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种网络攻击方式&#xff0c;它利用已认证用户在受信任网站上的身份&#xff0c;诱使用户在不知情的情况下执行恶意操作。具体来说&#xff0c;攻击者通过各种方式&#xff08;如发送恶意链…...

短视频电商源码如何选择

在数字时代的浪潮下&#xff0c;短视频电商以其直观、生动、互动性强的特点&#xff0c;迅速崛起成为电商行业的一股新势力。对于有志于进军短视频电商领域的创业者来说&#xff0c;选择一款合适的短视频电商源码至关重要。本文将从多个角度探讨如何选择短视频电商源码&#xf…...

444444

356前期...

初识LangChain的快速入门指南

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…...

OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!

市面上有很多植物识别的 App&#xff0c;通过对植物的叶片、花朵、果实等特征进行准确的识别&#xff0c;从而确定植物的种类、名称。但动物识别的 App 却十分有限&#xff0c;这使我们很难区分一些外形相似的动物&#xff0c;例如小浣熊和小熊猫。 左侧为小浣熊&#xff0c;右…...

24 年程序员各岗位薪资待遇汇总(最新)

大家好&#xff0c;我是程序员鱼皮。今天分享 24 年 6 月最新的程序员各岗位薪资待遇汇总。 数据是从哪儿来的呢&#xff1f;其实很简单&#xff0c;BOSS 直聘上有一个免费的薪酬查询工具&#xff0c;只要认证成为招聘者就能直接看&#xff0c;便于招聘者了解市场&#xff0c;…...

Android SurfaceFlinger——系统动画服务启动(十四)

在了解了 SurfaceFlinger、HWC、OpenGL ES 和 EGL 等相关概念和基础信息后,我们通过系统动画的调用流程引入更多的内容。 一、解析init.rc 开机就启动进程,肯定就要从 rc 文件开始。负责开机动画的进程是 bootanimation。 1、bootanim.rc 源码位置:/frameworks/base/cmds…...

VaRest插件常用节点以及Http请求数据

1.解析json &#xff08;1&#xff09;Construct Json Object&#xff1a;构建json对象 &#xff08;2&#xff09;Decode Json&#xff1a;解析json 将string转换为json &#xff08;3&#xff09;Encode json&#xff1a;将json转换为string &#xff08;4&#xff09;Get S…...

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作&#xff0c;但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题&#xff0c;第二阶段是进行模拟一个简易线程库&#xff08;为了加深对于C库封装linux原生线程的理解&#xff09;&#xff0c;第三阶段就是互斥。 目录 线程id…...

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…...

主流分布式消息中间件RabbitMQ、RocketMQ

分布式消息中间件在现代分布式系统中起着至关重要的作用。以下是一些主流的分布式消息中间件&#xff1a; 1. Apache Kafka - 特点&#xff1a;高吞吐量、低延迟、持久化、水平可扩展、分布式日志系统。 - 使用场景&#xff1a;日志收集与处理、实时流处理、事件驱动架构、大数…...

【Unity Linux】模型导致的Unity项目崩溃

模型需勾选Strip Bones。如不勾选&#xff0c;则开启项目崩溃。 也可以删除有问题模型的.meta文件。 &#xff08;Unity默认会自动勾选&#xff0c;所以不会崩溃&#xff09; 或打开.meta文件&#xff0c;将optimizeBones的值&#xff0c;由0改为1。&#xff08;对应面板上的…...

22222

12212...

大数据领域的常用开发语言详解

大数据开发语言主要包括以下几个&#xff0c;以下是它们在大数据开发领域的优缺点和应用场景的详细说明&#xff1a; 1. Java 优点&#xff1a; 跨平台性&#xff1a;Java的“一次编写&#xff0c;到处运行”的特性使得其可以轻松地运行在多个操作系统上。面向对象&#xff…...

SpringBoot设置自动跳转前端界面

一般情况下&#xff0c;我们的Application启动文件的内容为一行的运行代码&#xff0c;默认启动项目以后不会自动跳转到我们的前端页面 public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} 这里我的可以通过设置文件的内容&#…...

vue3前端解析大数据返给的数据格式

# xxx&#xff1a;111111111111111\n\n## 2222&#xff1a;\n- 99999999。\n- 564566556。\n- ", npm install marked import {marked} from markedmarked(# xxx&#xff1a;111111111111111\n\n## 2222&#xff1a;\n- 99999999。\n- 564566556。\n-)//就可以解析成 《…...

Incremental Player Build

*未解决&#xff0c;仅作记录 Unity 版本 2021.3.15f1 问题 Unity 发布webgl 平台卡在Incremental Player Build 界面。 解决 未找到明确原因&#xff0c;简化工程路径后发布成功。...

快钱支付股东全部股权已被质押!

根据近期工商信息&#xff0c;第三方支付机构快钱支付清算信息有限公司&#xff08;简称“快钱支付”&#xff09;实际控股方快钱金融服务&#xff08;上海&#xff09;有限公司&#xff08;简称“快钱金融”&#xff09;&#xff0c;作为出质股权标的企业&#xff0c;被出质给…...

【鸿蒙学习笔记】数据类型

官方文档&#xff1a;ArkTS语言介绍 目录标题 声明变量声明常量数据类型 缺&#xff1a;byte charNumber类型 short int long float doubleBoolean类型 booleanString类型Void类型Object类型Array类型Enum类型Union类型Aliases类型 [代码总结] 声明变量 let hi: string hel…...

SAP实现特别总账的凭证预制

SAP实现特别总账的凭证预制 仔细理解只有”其他”的特殊总帐标识才可预制凭证这句话. F-29/f-48不可预制。F-29/f-48预制时出现错误消息号 FP 030&#xff0c;提示特殊总帐标志类型“汇票和”预付定金“的特别总帐标志的过帐代码不能预制&#xff0c;这是系统写死的&#xff…...

鸿蒙 HarmonyOs 动画效果 快速入门

一、理论 1.1 animation属性 名称参数类型必填描述durationnumber否设置动画时长&#xff0c;默认值&#xff1a;1000&#xff0c;单位&#xff1a;毫秒temponumber否动画播放速度。数值越大&#xff0c;速度越快&#xff0c;默认为1curvestring | Curve否 设置动画曲线。 默…...

PyTorch学习之 torch.squeeze 函数

PyTorch学习之 torch.squeeze 函数 一、功能 torch.squeeze 的主要作用是从给定的张量 input 中移除所有尺寸为1的维度。 二、基本语法 torch.squeeze(input, dimNone)三、参数说明 input (Tensor): 输入的张量。dim (int, 可选): 指定要移除的尺寸为1的维度 如果未指定&am…...

达梦数据库系列—17. 主备集群搭建-实时主备

目录 配置实时主备 1、环境说明 2、数据准备 脱机备份、脱机还原方式 联机备份、脱机还原方式 3、配置主库 3.1 配置 dm.ini 3.2 配置 dmmal.ini 3.3 配置 dmarch.ini 3.4 配置 dmwatcher.ini 3.5 启动主库为mount 3.6 设置 OGUID 3.7 修改数据库模式 4、配置备库…...

【24医学顶刊】GANDALF:主动学习 + 图注意力变换器 + 变分自编码器,改善多标签图像分类

GANDALF&#xff1a;主动学习 图注意力变换器 变分自编码器&#xff0c;改善多标签图像分类 提出背景子解法1&#xff1a;多标签信息样本的选择子解法2&#xff1a;生成信息丰富且非冗余的合成样本 例子&#xff1a;胸部X射线图像分析传统方法的操作和局限GaNDLF方法的优势 工…...

Linux 权限介绍

文章目录 Linux 权限介绍权限类型权限的数字表示查看文件信息修改权限相关指令 Linux 权限介绍 在 Linux 系统中&#xff0c;权限管理是非常重要的一部分&#xff0c;它确保了系统的安全性和文件的合理访问。 权限类型 [ r ]代表可读&#xff08;read&#xff09;&#xff1…...

kernel header解析

一、kernel header定义&#xff1a; aarch64 kernel header u32 code0; /* Executable code */ u32 code1; /* Executable code */ u64 text_offset; /* Image load offset, little endian */ u64 image_size; /* Effective Image size, little…...

MQ运行时遇到的问题

遇到的问题描述&#xff1a;我在绑定通道的时候发现了通道绑定失败&#xff0c; 原因&#xff1a; 在代码中我第一次创建交换机的时候类型的默认没有修改成topic类型的&#xff0c;导致后面的代码再去进行注册的时候并没有实现那个类型 解决&#xff1a; 更改代码&#xff0…...

EDI是什么?与ERP有何关系

EDI的发展过程 电子数据交换&#xff08;Electronic Data Interchange&#xff0c;EDI&#xff09;是一种通过电子方式传输商业文件的技术。EDI的历史可以追溯到20世纪60年代&#xff0c;当时企业开始使用计算机进行数据处理。最早的EDI系统是为解决大型企业间的信息交换问题而…...

【MotionCap】在wsl2 ubuntu20.04构建及运行

https://github.com/MVIG-SJTU/AlphaPose/issues/1157conda create -n alphapose python=3.7 -y conda activate alphapose conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1...

【HICE】web服务器搭建4

自定义多个ip地址访问 1.下载httpd协议&#xff1a;dnf install httpd -y 2.编辑vhost.conf cd /etc/httpd cd /conf.d <directory /www> allowoverride none require all granted </directory> <virtualhost 192.168.244.130:80> documentroot /www s…...

Mysql-SQL基础-通用语法与分类

SQL通用语法 SQL语句可以一行或多行书写&#xff0c;以分号作为结尾。 SQL语句可以使用空格、缩进来提高句子的可读性。 SQL语句不区分大小写&#xff0c;对于关键字建议使用大写。 单行注释&#xff1a; --或用#进行注释。 多行注释&#xff1a; /* 注释内容 */ SQL分类…...

C++部分复习笔记下

7. C11 范围for 使用格式 vector<int> v { 1,2,3,4,5 }; for (auto e : v) {cout << e << " "; } cout << endl;底层原理&#xff0c;使用迭代器 vector<int> v { 1,2,3,4,5 }; auto it v.begin(); while (it ! v.end()) {cout…...

安全管理中心测评项

安全管理中心 系统管理 应对系统管理员进行身份鉴别&#xff0c;只允许其通过特定的命令或操作界面进行系统管理操作&#xff0c;并对这些操作进行审计&#xff1b; 应通过系统管理员对系统的资源和运行进行配置、控制和管理&#xff0c;包括用户身份、系统资源配置、系统加…...

德国Testing Expo丨落幕不散场!知迪展台风采回顾

德国斯图加特国际展览中心&#xff0c;随着全球汽车产业的目光聚焦&#xff0c;Automotive Testing Expo Europe 2024圆满落幕。在这场汇聚了全球顶尖汽车测试技术的盛会中&#xff0c;知迪科技凭借卓越的技术实力和前瞻性的解决方案&#xff0c;成为了现场诸多专业观众的瞩目焦…...

Flask请求、响应和请求扩展

Flask请求、响应和请求扩展 一、请求对象 1. Flask中的request对象特点&#xff1a; 全局性&#xff1a;在Flask应用中&#xff0c;request对象是全局可访问的&#xff0c;不需要在每个视图函数中单独传递。 请求特定&#xff1a;虽然request是全局的&#xff0c;但它对于每…...

十几万预算还买威兰达?配置更高、动力更强的美系SUV不香

当大家手握十几万预算去选购合资SUV时,哪个品牌的车型更值得选购呢?要知道在十几万价位区间,合资SUV市场的竞争可以说是极其激烈,其中也涌现了许多热门产品,比如威兰达、CR-V和途岳等。不过问题来了,虽说大家花十几万块钱去选购威兰达并没有问题,但是却有比它性价比更高…...

史上最小沃尔沃!沃尔沃EX30这次玩点不合群的

如今的新能源市场竞争到了白热化阶段,传统车企与新势力车企纷纷都要加入分一杯羹。为抢夺这块肥美的“大蛋糕”,现在的大部分车型逐渐演变成以大为尊,设计苟同,疯狂堆料为潮流。这时沃尔沃带着旗下最小尺寸的新能源SUV闪亮登场,不走寻常路,选择回归本质、返璞归真,为用户…...

电脑录屏怎么录?7个电脑录屏软件免费版强势来袭,赶快收藏!

电脑录屏怎么录&#xff1f;相信很多小伙伴们都不知道怎么在Windows电脑上录屏吧&#xff1f;在当今社会&#xff0c;随着互联网的快速发展&#xff0c;越来越多的小伙伴们开始通过制作视频内容来分享知识、展示技能或者记录生活。电脑录屏成为了一种简单高效的方式&#xff0c…...

(文章复现)分布式电源接入配电网承载力评估方法研究

参考文献&#xff1a; [1]郝文斌,孟志高,张勇,等.新型电力系统下多分布式电源接入配电网承载力评估方法研究[J].电力系统保护与控制,2023,51(14):23-33. 1.摘要 随着光伏和风电等多种分布式电源的接入&#xff0c;使得传统配电网的结构及其运行状态发生了较大改变。因此&…...

DiffBIR论文阅读笔记

这篇是董超老师通讯作者的一篇盲图像修复的论文&#xff0c;目前好像没看到发表在哪个会议期刊&#xff0c;应该是还在投&#xff0c;这个是arxiv版本&#xff0c;代码倒是开源了。本文所指的BIR并不是一个single模型对任何未知图像degradation都能处理&#xff0c;而是用同一个…...

tcpdump源码分析

进入tcpdump.c&#xff08;函数入口&#xff09;之前&#xff0c;先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作&#xff0c;每一个参数有对应的flag, 在tcpdump 的main 里面&#xff0c; 会根据用户的传入的参数来…...