首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

P4语言编程详解

在文章《P4:开创数据平面可编程时代》中介绍了P4架构特性、交换机结构以及P4程序工作原理,本篇为大家介绍P4语言编码及规范,从编码角度去理解P4程序工作流程。...behavioral-model模块是架构无关,可以实现各种P4编程目标。该模块主要实现三个目标,其中最重要是simple_switch,即实现P4语言标准中抽象交换机模型。...(10)tutorials P4语言教程,内含8个教程,覆盖了P4语言解析器、动作、状态存储、匹配-动作表、等基础组件。...2.P4语言标准 当前P4语言标准最新版本为《The P4 Language Specification Version1.1》(以下简称V1.1),目前版本P4语言编译器已经基本实现了P4语言标准中绝大部分特性...这些动作高度抽象且与协议无关,以实现P4语言处理数据协议无关性。同时,复杂操作及流程可以通过组合不同基本操作(即复合操作)完成,从而保障了P4语言对各种协议支持以及扩展性。

7K54
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于P4编程语言几个误区

    近几年SDN之父Nick教授身体力行开始改造OpenFlow,网络设备第一次和计算设备一样具有了可编程能力。和OpenFlow刚刚面世一样,用于网络设备编程P4编程语言也存在众多误解。...本文主要目的就是解惑P4编程语言几个常见误区。...误区三:P4只支持可编程芯片 P4语言并不是学术界灵光闪现成果,它是业界在OpenFlow前期探索后成果,谷歌在其中发挥了重大作用。...而P4作为一种语言本身就是对网络行为描述,所以只要能够让传统非可编程网络芯片可以理解由P4定义转发流水线就能让传统芯片也支持P4定义行为。...目前谷歌SDN网络正在向可编程迈进,传统设备通过抽象层转译也可以支持P4语言,因此传统厂商支持P4不是不行而是可为不可为问题,毕竟业界老大哥携压倒性市场份额狂奔在另一条路上。 ? ?

    1.6K31

    c语言编程:P99:if语句使用实例,P99_IF_EMPTY

    这个很简单,很容易搞定: #define _child(childId) ncsGetChildObj(user_admin_wdiget->hwnd,childId) 但ncsGetChildObj返回对象类型是...mWdiget*,而mWdiget有很多子类,所以返回类型可能是可能是不同指针,有时我又希望对返回指针做强制类型转换。...childId,type) (type*)ncsGetChildObj(user_admin_wdiget->hwnd,childId) 唉,为这么点事儿,就定义俩宏,太麻烦了,最好在用一个宏搞定,这时就可以用到P99...条件语句P99_IF_EMPTY,上面的_child修改如下 // 如果type参数为空do nothing,否则对函数返回值做强制类型转(type*) #define _child(childId,...type) P99_IF_EMPTY(type)()((type*))ncsGetChildObj(user_admin_wdiget->hwnd,childId) 调用示例 指定type参数:

    64710

    P语言: 为异步、容错和不确定性而生编程语言

    译者注:P语言是一款由微软、加州大学伯克利分校和伦敦帝国学院共同研发完成编程语言,它在处理并发、故障切换等方面具有很强优势。本文介绍了P语言起源、特性及其使用场景。以下是译文。...为了应对异步计算带来挑战,我们开发了P,一种用于在异步事件驱动应用程序中建模和制定协议编程语言。该项目是微软研发人员以及加州大学伯克利分校和伦敦帝国学院学术研究人员之间通力合作结果。...基于线性输入和独特指针内存管理系统提供了安全内存管理和data-race-free并发执行机制。在这方面,P类似于现代编程语言,比如Rust。...下载P语言:https://github.com/p-org/P 更多下载,请访问微软P语言及其工具:https://github.com/p-org Reddit上精彩相关评论: 所有的编程语言设计者在对语言进行命名时候都应该考略到可搜索性...C这个名字就起很不好。为什么现在编程语言在搜索引擎上都那么难搜索呢,比如“go”和“p”。 对于Go来说,我们还能使用Golang。 这个好像跟Erlang挺像?希望它语法更好用。

    1.6K60

    C语言指针讲解:*&p和&*p

    欢迎关注微信公众号:计算机二级C语言 ,获取更多信息。 一讲到指针,不少同学就会觉得云里雾里。首先要明白,指针和地址是一个概念;然后明白指针和指针变量区别。...我们定义一个指针变量int *pp是指针变量,专门用来存放地址。 int *p=&a; 相当于int *p; p=&a;   p存放是a地址,*p也等价于 a。...*p和**p区别 int *p :一级指针,表示p所指向地址里面存放是一个int类型值 int **p :二级指针,表示p所指向地址里面存放是一个指向int类型指针(即p指向地址里面存放是一个指向...1、如果p是int *指针变量,那么*&p = p,&*p = p,都是p,但还没定义p指向哪,存是谁地址。 2、如果p是一个int变量,那么*&p = p;而&*p是非法,因为*p非法。...比如int p =10;那么*&p = *(&p) = p = 10(即从p地址取值),而&*p = &(*p) 则非法,因为p=10,*10是取内存地址为10值,这在c语言中是不合法

    4.5K12

    Python 技巧篇-开头注释怎么写最好,开头注释需要包含什么,开头注释重要性

    开头注释除了必要信息外,一些简单介绍也是尤为重要呢,比如作者、创建日期、更新日期、里面代码大体是实现什么功能简要介绍。这些介绍不但是规范,更是一种认真工作态度体现。...下面给大家展示一下我开头注释是怎么写。 #!...windows 系统是根据扩展名 .py 来关联,所以只要是 .py 结尾,直接就会用 python 来运行; 以前还有这么写,直接指明 python 绝对位置:#!...我觉得一段好代码,应该有更好兼容性,我们写了这样开头,直接就可以在 linux 下和 python2 下运行,这些还是很主流,而且对我们 windows 和 python3 一点影响也没有,多么两全其美...一个好程序员,当然要有一段好开头注释,当然最好还要有自己风格,让人一看就知道这是你写,这就是你门面,你记号。

    3.9K30

    如何选择编程语言以及编程语言分类

    想了解编程语言我们先要知道什么叫做“编程”,编程意思就是编写流程,那么只要能编写流程语言都应该叫做编程语言。...据不完全统计,所有编程语言加起来超过600种,其中用比较多也就前20种语言,Python不仅是其中一种而且这两年已经稳居第一名宝座了。...9.jpg 一、低级语言和高级语言 计算机编程语言能够实现人与机器之间交流和沟通,而计算机编程语言主要包括汇编语言、机器语言以及高级语言,具体内容如下: 汇编语言语言主要是以缩写英文作为标符进行编写...高级语言 所谓高级语言,其实是由多种编程语言结合之后总称,其可以对多条指令进行整合,将其变为单条指令完成输送,其在操作细节指令以及中间过程等方面都得到了适当简化,所以,整个程序更为简便,具有较强操作性...二、交互原理 编程语言承接就是人与机器之间交互中介,程序员通过编程语言编写一段执行命令流程代码,这段代码在执行前会被编译成底层语言,比如python就会直接编译成C语言,C语言计算机也是看不懂

    12.7K00

    零代码编程:用ChatGPT批量删除标题中开头空格

    可以在ChatGPT中输入提示词如下: 你是一个Python编程专家,要完成一个批量重命名文件标题任务,具体步骤如下: 打开本地电脑文件夹:E:\National Geographic Kids 读取文件夹里面的所有...mp4文件; 如果文本标题中开头第一个字符中是空格,则将文件标题中这个空格删除掉; 注意:每一步都要输出信息 如果删除空格后文件标题和文件夹中其他标题名重复,则在文件标题后加上一个“new”,以便进行区别...Dogs Read Aloud.mp4 发现开头空格: Cats vs. Dogs Read Aloud.mp4 重命名为:Cats vs....这可能是因为在 Windows 系统中,文件名开头和结尾空白字符会被自动忽略。 一个可能解决方案是,我们可以先把文件移动到一个临时文件夹,然后再移动回原来文件夹并重命名。...if filename.startswith(' '): print(f' 发现开头空格:{filename}') new_filename = filename.lstrip() # 删除开头空格

    7210

    p for trend p for interaction per 1 sd R语言实现

    本篇主要介绍P for trend、p for interaction、per 1 sdR语言实现,关于每一项具体含义,可参考文中给出链接,或者自己搜索学习。...P for trend P for trend是线性趋势检验P值,用于反映自变量和因变量是否存在线性趋势关系。线性趋势检验,之前介绍过Cochran Armitage检验,不过是针对分类变量。...今天要介绍P for trend主要是针对连续型变量。...此时如果我们把x1变成因子型,那在进行回归分析时会自动进行哑变量编码,就可以得到几个组OR值和95%可信区间,关于R语言中分类变量进行回归分析时常用一些编码方法,强烈你看一下这篇推文:R语言分类变量进行回归分析编码方案...p for interaction p for interaction是交互作用P值,关于其含义可以参考松哥统计这篇文章:p for interaction是什么 目前计算P for interaction

    1.3K20

    C语言——P文件操作

    如果没有文件,我们写程序数据是存储在电脑内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次程序数据,如果要将数据进行持久化保存,我们可以使用文件。...磁盘(硬盘)上⽂件是文件。但是在程序设计中,我们⼀般谈⽂件有两种:程序⽂件、数据⽂件(从⽂件功能⻆度来分类)。...2、数据文件 ⽂件内容不⼀定是程序,⽽是程序运⾏时读写数据,⽐如程序运⾏需要从中读取数据⽂件,或者输出内容⽂件。...,不同外部设备输⼊输出操作各不相同,为了⽅便程序员对各种设备进⾏⽅便操作,我们抽象出了流概念,我们可以把流想象成流淌着字符河。...每个被使用⽂件都在内存中开辟了⼀个相应文件信息区,⽤来存放⽂件相关信息(如⽂件名字,⽂件状态及⽂件当前位置等)。这些信息是保存在⼀个结构体变量中

    14710

    6.计算机语言发展 编程语言发展 编程语言类型 为什么会有编程语言 编程语言什么作用 机器语言 高级语言分类 编程语言历史 编程语言有哪些 编程语言编年史

    语言 计算机语言指用于人与计算机之间通讯语言,也即是平时说编程语言 编程 指令概念很早就形成了,其实指令本身就是一种编程 一个指令替代了一组逻辑电路或者机电式/机械式中一个计算单元 你只需要一个指令就相当于已经操作了一整个模块...这不也是一种编程思维吗,只不过是指令对应硬件 随着指令在现代计算机中应用,计算机程序得以快速发展 因为一旦你知道计算机可以执行哪些指令,其实也就是哪些功能,具有哪些能力 你就可以把这些指令按照一定逻辑顺序重排组装...不同机器有不同汇编语言 需要汇编程序翻译成计算机可以识别的二进制机器语言 本质还是面向机器低级语言 机器语言和汇编语言都是面向硬件具体操作语言对机器过分依赖,所以称之为低级语言 高级语言...为了能够更加通用解决问题,而不是专注于硬件本身,出现了高级语言 高级语言不用关注机器指令,使用接近人习惯自然语言和数学语言符号 能够专注于问题本身业务逻辑 显然高级语言也是不能直接运行于机器上...,需要翻译程序转换为机器可以执行目标代码程序 虽然高级语言不涉及寄存器这些东西,不需要你了解硬件 但是这是高级语言隐藏了她们,而不是说这些东西不存在不重要,所有的语言都逃不过这一关 始终是要编程机器语言

    15.4K20

    核心编程笔记(16.P

    硬件客户/服务器架构 软件客户/服务器架构 16.1.2 客户/服务器网络编程 16.2 套接字: 通讯端点 16.2.1 什么是套接字?...套接字是一种具有通讯端点感念计算机网络数据结构 16.2.2 套接字地址:主机与端口 主机和端口类似区号和电话号码一对组合 合法端口号范围是0到65535,小于1024端口号为系统保留端口 16.2.3...面向连接与无连接 面向连接(TCP) 套接字只有两种一种是面向连接套接字,即在通讯之前一定要建立一条连接,这种通讯方式提供了顺序,可靠不会重复数据传输,每一份要发送信息都会拆分成多份,每份都会不多不少到达目的地后重新按顺序拼装起来...(TCP/IP)和(UDP/IP)来提及 16.3 Python中网络编程 本节我们主要使用socket模块,模块中socket()函数被用来创建套接字,其有自己一套函数来提供基于套接字网络传输...,因为我们只询问服务器transport对象getPeer()函数要了主机地址信息 16.6 相关模块 网络/套接字编程相关模块 模块描述 socket底层网络接口,本章讨论过 anycore/为能异步处理客户请求网络应用程序提供底层功能

    1.3K10

    核心编程笔记(17.P

    17.2 文件传输 17.2.1 文件传输因特网协议 流行有文件传输协议(FTP),Unix-to-Unix复制协议(UUCP),以及网页超文本传 输协议(HTTP),另外,还有(Unix下)远程文件复制指令...[,cb]]])显示path目录里内容,可选参数cb是一个回 调函数,他会被传给retrlines()方法 nlst([path[,...]])与dir()类似,但返回一个文件名列表,而不 是显示这些文件名...retrlines(cmd) [, cb])给定FTP命令(如"RETR filename").用于下载 文本文件,可选回调函数cb用于处理文件 每一行 retrbinary(cmd, cb[,...Mail Server SMTP是在因特网上MTA之间用于消息交换最常用MTS,它被MTA用来把e-mail从 一台主机传送到另一台主机,在你发e-mail时候,你必须连接到一个外部SMTP...服务器,这是,你邮件程序是SMTP客户端,你SMTP服务器为你消息第一跳板 17.4.3 Python和SMTP 1.连接到服务器 2.登陆(如果需要的话) 3.发出服务请求 4.退出 下面是一些

    54410

    核心编程笔记(13.P

    john.updateEmail('john@doe.spam') Updated e-mail address for: John Doe >>> john.email 'john@doe.spam' 13.2 面向对象编程...: 13.2.1 面向对象设计与面向对象编程关系 13.2.2 现实世界中问题 13.2.3 常用术语 抽象/实现 封装/接口 合成 派生/继承/继承结构 泛化/特化 多态 自省/反射 13.3 类...现在所创建P有文档字符串(__doc__)和构造器,当我们实例化P时,他被执行 >>> p = P()    # 父类实例 created an instance of P >>> p....__class__ # 显示p所属类名 >>> P.__bases__ # 父类父类 () >>> P....方法,所以Pfoo()方法被覆盖 如何不被覆盖而是用父类foo()方法: 调用一个未绑定基类方法,明确给出子类实例: >>> P.foo(c) Hi,I am P-foo() 在子类重写方法里显式地调用基类方法

    38630
    领券