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

SOA协议DDS和Some/IP对比

SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中。

SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别。
SOME/IP

SOME/IP的全称为:Scalable service-Oriented MiddlewarE over IP,是一种面向服务的传输协议。

严格地说,SOME/IP不是一款特定的产品,而是一种技术标准。

其最早由宝马在2012-2013年开发,并在2014年集成进AUTOSAR 4.2.1中。

当前,全球最大的商用SOME/IP产品供应商是Vector。

开源版的SOME/IP则是由Genivi协会来维护的。


DDS

DDS的全称为Data Distribution Service(数据分发服务),是由OMG发布的分布式通信规范,采用发布/订阅模型,提供多种QoS服务质量策略,以保障数据实时、高效、灵活地分发,可满足各种分布式实时通信的应用需求。

DDS将分布式网络中传输的数据定义为“主题”,将数据的产生和接收对象分别定义为“发布者”和“订阅者”,从而构成数据的发布/订阅传输模型。

各个节点在逻辑上无主从关系,点与点之间都是对等关系,通信方式可以是点对点、点对多、多对多等,在QoS的控制下建立连接,自动发现和配置网络参数。

DDS最早应用于美国海军,用于解决舰船复杂网络环境中大量软件升级的兼容性问题,后来扩展至航空、航天、船舶、国防、金融、通信、汽车等领域,包括作战系统、船舶导航和控制系统、船舶防御系统、无人机驾驶系统和地面控制系统、装甲车辆控制系统、仿真和培训系统、雷达处理和空中交通管理系统、金融系统等。

2018年,DDS首次被引进AUTOSAR AP,作为可选择的通信方式之一。2018年3月,DDS的主要提供者RTI公司宣布,AUTOSAR AP的最新版本(版本18-03)已经具有DDS标准的完整网络绑定。


OpenDDS 和 FastDDS

自动驾驶领域比较有影响力的开源DDS是由RTI原核心团队成员在欧洲创办的eProsima公司推出的FastDDS。

在eProsima将FastDDS的源代码开放出来后,用户可以直接在github上免费下载。

但FastDDS使用起来比较麻烦,这个时候,用户就需要通过向eProsima支付费用来取得支持。

OpenDDS 由位于圣路易斯和凤凰城的的Object Computing的 ACE/TAO 团队开发,它和FastDDS具有一定的相似性——两者都是基于RTPS实现的,面向数据的通信框架,遵循的是同一标准。这类框架的典型特征是去中心化,支持QoS机制,支持实时通信。通常会绑定如protobuf等序列化工具。

在许多情况下,FastDDS 、OpenDDS可以跟RTI的Connnext DDS互操作/通信。当然,具体还得看场景。比如开源DDS 的QoS(服务策略)有 23个,大家都用这23个QOS交互,那就能互操作;如果Connext用的是超出这23个自定义范围的QoS,那么开源DDS就解析不了。此外,如果用的是OMG没开源的DDS工具,那也没法互操作。
DDS VS Some/Ip

现阶段,SOME/IP 和 DDS是自动驾驶上用得最多的两类通信中间件。

共同点主要有:

    都是面向服务的通信协议.
    都采用了“以数据为中心”的发布和订阅模式.

对于数据吞吐量,从有效数据的占比来看,DDS和SOME/IP的性能没有明显的差别。

差异性主要有:

    资源占有大小不同
    SOME/IP强调通信,体量比较小.
    DDS功能更多,但体量比较大,需要裁剪后才能用于自动驾驶.
    使用场景不同
    DDS是一套面向数据的访问系统,适合多节点、大数据交互的应用场景;
    SOME/IP是一套面向服务的访问系统,可以很方便地用于RPC(远程过程调用)以及变更通知。
    灵活性、可伸缩性不同
    相较于SOME/IP,DDS引入了大量的标准内置特性,例如基于内容和时间的过滤、与传输无关的可靠性、持久性、存活性、延迟/截至时间监视、可扩展类型等。
    订阅方和发布方是否强耦合
    在SOME/IP中,在正常数据传输前,client需要与server建立网络连接并询问server是否提供所需服务,在这个层面上,节点间仍然具有一定耦合性。服务的订阅方需要知道server在哪里,服务的发布方需要告知server提供哪种服务;
    在DDS标准下,每个订阅方或发布方只需要在自己的程序里面订阅或发布传感器数据就行了,不需要关心任何连接。可以理解为,在DDS中,服务订阅方和发布方的解耦更加彻底,需要什么数据,写一行代码就行了,不需要再去做绑定。
    服务策略不同
    SOME/IP只有一个QoS,即可靠性的定义;
    RTI DDS和开源DDS里面分别有50多个和20多个QoS,这些QoS基本上能涵盖绝大多数可以预见到的智能驾驶场景。

DDS适用于自动驾驶域,而SOME/IP则可以延伸到整车域。

实际运用过程中,二者可以共存在一套系统中。
 

感觉原文作者是一个DDS的扈拥,字里行间都在贬低SOME/IP。所以,看看就好。

SOME/IPDDSNotes
概念SOME/IP和DDS都允许分布式应用程序使用发布/订阅模式和服务请求/回复模式(RPC)进行通信。 但是也存在重大差异。 SOME/IP专为汽车行业设计。 SOME/IP是作为AUTOSAR一部分而开发的一系列规范,描述了其序列化协议,服务发现以及集成在Classic AUTOSAR中的协议标准接口。DDS(数据分发服务)的目标是更广泛的工业物联网领域。它是对象管理组(OMG)发布的一系列开放标准。它是专为分布式实时系统设计的,并用于许多行业,包括交通,能源,医疗系统,工业自动化,航空航天和国防等。在商业和开源领域都有许多独立的实现。 DDS系列的第一个规范于2004年发布,此后已发展为一组12个DDS标准,其中包括标准线协议(DDS-RTPS),API(DDS-PSM-CXX,DDS-PSM-JAVA以及从IDL到C,Ada等的映射),类型系统(DDS-XTYPES),数据传递模式(DDS用于以数据为中心的发布-订阅,用于请求答复的DDS-RPC),安全性(DDS-SECURITY),系统描述(DDS-XML),数据建模(IDL)和其他通信框架的网关(DDS-WEB,DDS-OPCUA和DDS-XRCE)。
通讯方式SOME/IP可以看作是基于对象的面向服务的体系结构。通过实例化的服务对象将信息提供给系统,客户端应用程序可以访问这些信息。客户端应用程序会为其需要访问的每个服务实例实例化相应的“代理”对象。 客户端应用程序通过将代理对象附加到服务对象并使用它来监视事件和字段更改来订阅信息。 他们还可以在服务对象上调用操作以执行远程过程调用或读取/写入特定字段。DDS从根本上提供了一个分离的,以数据为中心的发布订阅模型。 Aso称为“数据总线”模式。 应用程序参与对等的DataBus,并且可以发布/订阅任何数据(由DDS-Topic名称标识),以及调用或实现任何服务操作(由DDS-Service名称标识)。 DDS是完全对等的,中间不需要任何代理。 有一种发现机制可以持续运行,以检测引用相同主题名称的兼容发布者和订阅者应用程序。 一旦检测到它们,便开始直接交换信息。 订户应用程序可以指定过滤器(基于内容或基于时间的)以指示他们想要接收的信息。也可以在发布方进行筛选,以减少在线上传递的信息。DDS与SOME/IP之间的重要区别在于,使用DDS,应用程序不需要绑定到特定的服务实现。 它简单地引用了主题和服务,并且可以完全透明地一对一或一对多地进行通信,而无需更改应用程序代码。 虽然它需要跟踪单独对等方的存在或响应对等方的加入或离开来管理任何新对象。 这都是自动处理的。 从这个意义上讲,它比SOME/IP更灵活。
应用程序接口SOME/IP没有定义标准API,具体的实现中通常提供了C++ API,但它们不能跨实现移植。 当然,通常来说,可以将SOME/IP看作AUTOSAR的一部分,这样的话,确实可以认为它定义了一些标准API。DDS具有用于多种语言的标准API。 对于C ++和Java,它们包含在DDS-PSM-JAVA和DDS-PSM-CXX规范中。 标准C和ADA API是从IDL到C和ADA规范派生的。 除此之外,还有针对C#和其他语言的特定于供应商的API。 因此,通常可以移植DDS应用程序并在DDS实现之间进行切换。译者案:这个说法不太客观。如果从IDL角度来谈的话,SOME/IP和DDS看起来并没有不同。
网络传输SOME / IP支持UDP和TCP进行数据传输。 AUTOSAR 4.3引入了对大于1400字节的UDP载荷进行分段的支持。 即便如此,为了进行可靠的通信,SOME/IP还是推荐使用TCP。DDS使用称为RTPS(实时发布订阅)的有线协议,该协议在独立于平台的模型中定义,可以映射到不同的网络传输协议。 大多数DDS(DDS-RTPS)实现至少支持UDP,TCP和共享内存。 RTPS实现了与传输无关的可靠性和分段协议,该协议可在任何传输之上运行,包括带有多播的UDP。 因此,使用DDS可以通过多播UDP处理大数据和可靠数据。 SOME/IP无法做到这一点。许多DDS实现提供了“自定义传输” SDK,因此可以在不牺牲任何功能和QoS的情况下,通过自己的自定义传输运行DDS。 对于SOME/IP,这是不可能的,因为某些功能(如可靠性和分段性)必须由传输来实现。译者案:SOME/IP也可以通过TP-Message实现大数据广播。当然,可能DDS提供了更安全的策略?
安全一般来说,SOME/IP还依赖于传输来保证安全性。 因此,要安全使用它,就必须在TLS或DTLS上运行。也可以在TLS或DTLS上作为传输运行DDS,但这不是首选的解决方案。 相反,对于DDS,最好使用DDS安全规范中定义的与传输无关的机制。 DDS安全性还提供了对安全性的更细粒度的控制以及一种用于进行访问控制的语言,因此可以分别保护DDS域和主题,并区分对主题的读写权限。 而且,由于DDS安全性与传输无关,因此可以与任何传输一起使用,包括共享内存,多播或自定义应用程序定义的传输。
QoS支持SOME/IP仅提供一种用于选择UDP与TCP的“可靠性” QoS设置。 其他任何事情都必须使用自定义应用程序逻辑来实现,而这取决于QoS策略,这可能非常困难。 而且,应用程序层代码不是那么可移植的,并且要求所有应用程序都包含相同的代码,或者至少链接公共的非标准库。DDS提供了许多QoS策略,使用户可以声明性地指定发布者和订阅者之间如何交换信息。 DDS标准定义了20多个单独的策略。这些策略不仅控制可靠性,还控制其他方面,例如资源使用,数据优先级,数据可用性和故障转移。例如,QoS设置可以确定发布者或订阅者应用程序未能以特定速率发送或传递信息时提供通知的截止日期的功能;设置数据的持久性,以便可以将其重新发送给在生成和发送信息之后加入的订户应用程序;配置发布者和订阅者应用程序的历史深度;部署冗余系统,该系统根据所有权强度自动在众多资源中选择一种来源,配置自动实时消息,以确定远程应用程序是否仍然有效,并在应用程序无响应时执行自动故障转移。您可以从DDS规范的2.2.3节或其他实现的文档中获得更多详细信息(例如,请参见此来自RTI Connext DDS的Qos速查表。
在其他需求中使用SOME/IP主要被AUTOSAR应用于车载应用领域。DDS具有更横向的用途。 它通常直接用作连接框架。 实际上,它已被工业互联网联盟(IIC)确定为IIoT的“核心连接框架”之一(请参阅工业物联网连接框架 文件)。 它也被用作其他标准和框架的一部分,例如OpenFMB、ROS2, MD PnP,FACE,并且它也被包含在AUTOSAR Adaptive(从版本18.03开始)。

相关文章:

SOA协议DDS和Some/IP对比

SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中。 SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别。 SOME/IP SOME/IP的全称为:Scalable service-Oriented MiddlewarE over IP,是一种面向服务…...

Sass使用

前言: 这份记录,主要是记录学习sass的学习记录,用于记录一些本人认为可能以后会用到的比较常用的一些知识点,更详细的请看sass官网 功能1-嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的…...

超大excel文件读,避免内存溢出

excel40M&#xff0c;但是用传统的读取excel方法&#xff0c;会报内存溢出的错误。 所以采用了下面的方式&#xff0c;能解决此问题&#xff1a; maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><ve…...

第0章 学习之前的准备

突然想写点关于linux的东西&#xff0c;一是将自己几十年来零碎的知识作以串联&#xff0c;二是能为正在学习路上的新手作些指引。而恰好作者的孩子是一位初一的学生&#xff0c;我写的这些东西也正是我手把手教授他的&#xff0c;现在分享出来并且命名为《linux中学教程》&…...

数组排序sort()方法

sort() 方法对数组的项目进行排序。 排序顺序可以是按字母或数字&#xff0c;也可以是升序&#xff08;向上&#xff09;或降序&#xff08;向下&#xff09;。 默认情况下&#xff0c;sort() 方法将按字母和升序将值作为字符串进行排序。 一、语法 array.sort(compareFunct…...

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的&#xff0c;让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中&#xff0c;作为开发者你可能将面临几种改变&#xff1a; GPT 模型到来后&#xff0c;如何去架构好企业解决方案…...

散列查找实验(开散列) 题目编号:583

题目描述 请设计一个整型开散列表&#xff0c;散列函数为除留余数法&#xff0c;其中散列表的长度、除留余数法的模和关键码的个数由键盘输入&#xff0c;再根据输入由键盘输入所有的关键码。分别对三个待查值在散列表中进行查找&#xff0c;输出查找结果采用头插法。 输入描…...

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...

Go type关键字定义新类型和类型别名的区别

type关键字再定义类型和类型别名有很大的区别&#xff0c;前者是新定义一个数据类型&#xff0c;后者是对类型的重命名。 type NewString stringtype OldString stringtype NewString string声明了一个NewString类型&#xff0c;和string具有完全一致的数据结构&#xff0c;确…...

Neural Network学习笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…...

用@Value注解为bean的属性赋值

1.Value注解 Value注解的源码&#xff0c;如下所示 Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface Value {String value(); }从Value注解的源码中…...

拨云见日:深入理解 HTML 解析器与有限状态机

文章目录 参考描述状态机状态机有限状态机与无限状态机有限状态机与自动售货机无限状态机与计算器 HTML 解析器HTML 解析器HTML 与有限状态机 HTML 解析器的常见状态初始状态DOCTYPE 状态注释状态标签状态开始标签状态属性状态属性名状态属性值状态 结束标签状态自闭和标签状态…...

Java线程池及其实现原理

线程池概述 线程池&#xff08;Thread Pool&#xff09;是一种基于池化思想管理线程的工具&#xff0c;经常出现在多线程服务器中&#xff0c;如MySQL。 线程过多会带来额外的开销&#xff0c;其中包括创建销毁线程的开销、调度线程的开销等等&#xff0c;同时也降低了计算机…...

进程替换函数组介绍exec*

目录 前述 execl execlp execle execv execvp execvpe 前述 介绍后缀的意义&#xff1a; l &#xff08;list&#xff09;&#xff1a;表示参数采用列表。 v&#xff08;vector&#xff09;&#xff1a;参数同数组表示。 p&#xff08;path&#xff09;&#xff1a;自…...

欧科云链OKLink:2023年4月安全事件盘点

一、基本信息 2023年4月安全事件共造约6000万美金的损失&#xff0c;与上个月相比&#xff0c;损失金额有所降落&#xff0c;但安全事件数量依旧不减。其中&#xff0c;Yearn Finance因参数配置错误&#xff0c;导致了1000多万美金的损失。同时&#xff0c;有一些已经出现过的…...

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置&#xff08;可选…...

使用PyQt5设计一款简单的计算器

目录 一、环境配置&#xff1a; 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器&#xff0c;可以通过界面交互实现加减乘除的功能&#xff0c;希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况&#xff0c;htop就是一种互动式的进程查查看器&#xff0c;整齐用下来感觉比top的逼格高&#xff0c;造作可视化都更方便些&#xff0c;我觉得还…...

PostgreSQL Linux安装

安装依赖&#xff1a; sudo yum -y install readline-devel zlib-devel 安装Postgres&#xff1a; ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...

亚商投资顾问 早餐FM/0509车辆电动化

01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值&#xff0c;促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东&#xff1a;推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签&#xff1a;降幅…...

AI绘画天花板——Midjourney注册使用保姆级教程(5月5日验证有效)

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加我&#xff0c;备注&#xff1a;aigc&#xff0c;拉你进群。 现在市面上AI绘图大概有三大阵营&#xff1a;Midjourney、Stable Diffusion&#xff0c;还有一个就是OpenAI实…...

学习笔记(2)项目结构描述 - manifest.json和pages.json

目录 1&#xff0c;manifest.json2&#xff0c;pages.json2.1&#xff0c;pages2.2&#xff0c;globalStyle2.3&#xff0c;tabBar 1&#xff0c;manifest.json 官方详情 uni-app 的 appid 由 DCloud 云端分配&#xff0c;主要用于 DCloud 相关的云服务&#xff0c;请勿自行修…...

vector、deque、list相关知识点

vector erase返回迭代器指向删除元素后的元素insert返回迭代器指插入的元素reserve只给容器底层开指定大小内存空间&#xff0c;并不添加新元素 deque 底层数据结构 动态开辟的二维数组&#xff0c;一维数组从2开始&#xff0c;以2倍方式扩容&#xff0c;每次扩容和&#x…...

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比

多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比 目录 多维时序 | MATLAB实现基于VMD-SSA-LSSVM、SSA-LSSVM、VMD-LSSVM、LSSVM的多变量时间序列预测对比预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 多维时序 …...

设计模式——适配器模式(类适配器、对象适配器)

是什么&#xff1f; 我们平时的有线耳机接口分为USB的和Type-C的接口&#xff0c;但是手机的耳机插口却只有一个&#xff0c;像华为的耳机插口现在基本都是Type-c的&#xff0c;那如果我们现在只有USB接口的耳机怎么办呢&#xff0c;这个时候就需要使用到一个转换器&#xff0c…...

iOS开发多target

场景 背景:设想一下有一个场景,一个业务分为多种身份,他们大部分功能是相同的,但是也有自己的差异性。这种情况,想要构建出不同身份的APP。你会怎么做??? 当然,你可以拷贝一份代码出来,给项目重新命名。这样做的好处是,他们互相不会冲突,不用去关心是否有逻辑的冲…...

100种思维模型之每日评估思维模型-58

曾子曰&#xff1a;吾日三省吾省&#xff0c;为人谋而不忠乎&#xff1f;与朋友交不信乎&#xff1f;传不习乎&#xff1f; 曾国藩&#xff0c;坚持每日写复盘日记&#xff0c;最后他用自己的实践经历向我们证明&#xff1a;一个智商很平庸、出身很普通且有着各种毛病的人&…...

libreoffice api

libreOffice API是用于访问libreOffice的编程接口。可以使用libreOffice API创建、打开、修改和打印libreOffice文档。 LibreOffice API支持Basic、Java、C/C、Javascript、Python语言。 这是通过一种称为通用网络对象 (Universal Network Objects, UNO) 的技术实现的&#xff…...

全网最火,Web自动化测试驱动模型详全,一语点通超实用...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 自动化测试模型&a…...

如何写软件测试简历项目经验,靠这个面试都要赶场

一、前言&#xff1a;浅谈面试 面试是我们进入一个公司的门槛&#xff0c;通过了面试才能进入公司&#xff0c;你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试&#xff0c;得到公司的认可呢?面试软件测试要注意哪些问题呢?下面和笔者一起来看看吧。这里分享一…...

苹果手机怎么做ppt下载网站/网络营销大赛策划书

jQuery UI 设计主题文件结构主题是以特定的方式来增加他们的易用性。通常&#xff0c;文件目录结构如下所示&#xff1a;themename/ – 您的主题必须完全包含在一个单独的以主题名称命名的文件夹内。themename/themename.css – 这是基本的 CSS 文件。无论使用了哪个插件&#…...

工业设计完整作品集/手机优化专家

declare begindate as datetime declare enddate as datetime declare period as int --修改期间开始时间 set begindate2010-7-7 --修改期间终止时间 set enddate2010-7-8 --修改会计期间 set period7 --生成起点凭证 select * into #tmp_zz_begin from ( select gav.iperiod …...

张家口做网站公司/云搜索app

小米一纸公告宣布米聊关闭&#xff0c;这背后的影响可能将是相当深远&#xff0c;或许说明小米更适合做硬件业务&#xff0c;缺乏互联网基因&#xff0c;这导致它的硬件业务做得越来越成功&#xff0c;而互联网业务却似乎进入瓶颈。小米业绩增长主要靠硬件业务小米在2020年Q3公…...

最近国内新闻大事20条/浙江网站seo

在linux socket网络编程中&#xff0c;大规模并发TCP或UDP连接时&#xff0c;经常会用到端口复用&#xff1a; int opt 1;if(setsockopt(sockfd, SOL_SOCKET,SO_REUSEADDR, (const void *) &opt, sizeof(opt))){perror("setsockopt");return -1;}那么什么是端口…...

rttheme 18 wordpress/各城市首轮感染高峰期预测

1.问题描述 n个强盗&#xff08;编号1,2,3,…,n&#xff09;分赃m个金币。先由强盗1提出分配方案&#xff0c;所有的强盗投票&#xff0c;超过半数支持则方案通过&#xff0c;否则将强盗1杀死、由强盗2继续提方案&#xff0c;以此类推。假设所有的强盗都足够聪明&#xff0c;并…...

盐城网站建设费用/看广告收益的正规平台

java 面向对象思想编程第一章 概述版权声明此文档由王健旭(http://www.wangjianxu.com ginger547gmail.com )负责整理总结&#xff0c;并对该文档保有有限责任权利&#xff0c;此文档只能用于学习以及教学&#xff0c;请勿用作商业用途&#xff0c;因此而产生的法…...