protobuf

Ubuntu P4编程环境搭建

ⅰ亾dé卋堺 提交于 2020-02-28 03:34:51
前言 最近由于科研的需要,搭建SDN的P4编程环境,但是这个过程比较麻烦。网上相关的资源较老,P4的库依赖众多,出现了很多库版本不对导致的错误。最后以GitHub上P4项目 教程的实验环境的配置文档 和一些相关的文档为参考而搭建成功。 下面对整个搭建环境过程进行一下总结。 系统环境 Ubuntu 16.04 Python 2.7 内存 4G+ 内核 4.15 系统内核版本一定要更新到4.15及以上的版本,不然在安装P4C的过程中会出现error。同时内存太小的情况下,执行脚本过程中系统容易崩溃。 环境组件 P4编程环境主要需要5个组件。 p4c是最新的p4编译器。 Bmv2是支持P4编程的软件交换机。 PI是P4 runtime的实现,用于Control Plane对数据平面的控制。 Mininet的功能是构建一个虚拟的网络拓扑。 它通过linux内核的一些特性(net命名空间),在一个主机上划分出多个虚拟网络空间,各个网络空间之间相互隔离,有自己的端口, ip等等。 p4 tutorials 提供了用于学习的实例代码,它提供了很多个带有方向性的实际场景,例如负载均衡,简单的隧道机制,源路由等。 搭建过程 1.安装依赖 sudo apt - get update sudo apt - get upgrade sudo apt - get install automake cmake

GRPC搭建 : Python篇

让人想犯罪 __ 提交于 2020-02-27 23:47:41
Python 安装, 下载后直接安装 2. Pip 安装 $ curl https : //bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ sudo python get - pip . py # 运行安装脚本 3. grpc安装 gRPC 的安装: $ pip install grpcio 安装 ProtoBuf 相关的 python 依赖库: $ pip install protobuf 安装 python grpc 的 protobuf 编译工具: $ pip install grpcio-tools 4. grpc简单使用 (1) proto 文件 (2) 生成grpc和protobuf的python文件 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./person.proto (3) 客户端 # -*- coding: utf-8 -*- import grpc import person_pb2_grpc import person_pb2 def run(): conn = grpc.insecure_channel('localhost:1020') client = person_pb2_grpc

GRPC搭建: Golang篇

血红的双手。 提交于 2020-02-27 11:41:48
一. Protobuffer 搭建篇 1. 下载golang版的protobuf 国内墙等的问题, 直接访问github下载即可 https://github.com/golang/protobuf 2. 编译 (1) 下载好之后解压 (2) 解压后使用命令行跳到protobuf的路径下 (3) 命令行输入 go build ./protoc-gen-go, 等待编译, 一小会之后, 到protoc-gen-go目录查看, 便会看到protoc-gen-go.exe (4) 将编译好的protoc-gen-go.exe 放到之前备好的protoc.exe同目录下, 即可使用protoc.exe --go_out=. ./xx.proto (5) 最后一步也是极其重要的一步, 将库放到gopath下, 在生成的文件发现 import (proto "github.com/golang/protobuf/proto"), 所以不将protobuf的go源文件放到对应gopath的路径下, 使用时将出现引用查找不到的问题, 路径参考 “xxx/src/github.com/golang” Note: 没有事先准备好protoc.exe的朋友自行下载 https://github.com/protocolbuffers/protobuf/releases 二. Grpc搭建篇 1.

unity xlua protobuf

99封情书 提交于 2020-02-27 01:52:39
https://www.jianshu.com/p/d997e1f5e2ed 项目后期接入xlua,做代码的热更新。其中项目要求是任何逻辑都可以被热更,也可以完全的新增任何功能。其中消息用的是protobuf。 因为google 的protobuf c# 版本需要先对消息进行序列化好,然后作为c# 类使用的。但是这样非常的不利于做代码的热更新。 所以决定把pb接入到xlua里。看了下xlua 作者已经提供了集成pb的GitHub。 链接 https://github.com/chexiongsheng/build_xlua_with_libs 关于集成其他库 git上说的很清楚了。 这要是记录一下怎么使用 xlua hotfix 等配置好之后,在c# 侧初始化的时候调用 Luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf); main.lua 加载protobufmain.lua protobufmain.lua : -- 核心解析 pb = require "pb" -- 添加protoc protoc = require "protobuf.protoc" -- 监听消息-》解析 -- 此处是监听c# 原有的网络层回调,是一串二进制消息体 luadencode = require "protobuf.prasemsg"

解决知乎倒立验证码识别

五迷三道 提交于 2020-02-27 00:23:13
众所周知,知乎对反爬的措施位列全网第一梯队。我在爬取知乎的过程中也是遇到了倒立验证码的问题。 解决的办法是开源github项目: zheye 。 首先安装项目依赖包。 Keras==2.0.1 Pillow==3.4.2 #jupyter==1.0.0 #matplotlib==1.5.3 numpy==1.12.1 scikit-learn==0.18.1 tensorflow==1.0.1 h5py==2.6.0 经过我的尝试,这里列出的包除了tensorflow,其他全部安装最新版本即可。需要注意的是tensorflow的安装。 之前的tensorflow我都是在mac上使用的,没想到这次在windows上安装tensorflow给我造成了很大麻烦。现将我总结的tensorflow+numpy+mkl+protobuf整理如下(tensorflow依赖于后面三个包,安装过程要十分注意这四个包的版本) 1.使用清华镜像安装tensorflow1.2.1 经过我的尝试,tensorflow2似乎无法成功运行zheye,我在tensorflow1.2.1版本下成功运行,故推荐大家使用1.2.1及以下版本。 注意: 这里我是在anaconda虚拟环境下安装的,故加了 python -m 。 如果之前安装过了有问题或版本过高的tensorflow,请先删除之前的版本 python -m

Beetle在Tcp通讯中使用Protobuf

前提是你 提交于 2020-02-26 02:09:02
  Protobuf是google制定的一种对象序列化格式,而在.net下的实现有 protobuf - net. 而protobuf - net在序列化方面有着出色的性能,效率是.net二进制序列化几倍,而序列化后所占的空间也少于.net二进制序列化;除了以上两个优势外Protobuf有着一个更大的优势就是和其他平台交互的兼容性,在现有大部分流行的语言平台中基本都有Protobuf的实现.因此采用protobuf进行对象序列化是个不错的选择.接下来详细讲解Beetle实现对protobuf - net支持. 定义协议格式 为了保证TCP数据流正确处理,首先要做的事情还是要制定一个处理协议,来保证数据处理的有效性. 数据包同样也是两部分组件,头描述消息总长度,消息体是主内容.由于Protobuf-net序列化的数据交不包括消息类型,所以在协议中必须包括类型名称用于提供给对方实始化对应的类型过行反序列化操作. 实现具体的分析器和消息适配器 协议制定后就可以进行分析器的实现,由于采用头4字节描述大小,所以分析器从HeadSizeOfPackage基础类派生下载重写相关方法即可;完整实现代码如下: using System; using System.Collections.Generic; using System.Text; using Beetle; namespace

Java protobuf框架使用向导

て烟熏妆下的殇ゞ 提交于 2020-02-26 02:07:57
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。 下面介绍的是使用 Java ProtoBuf 的基本步骤: 1. http://code.google.com/p/protobuf/downloads/list ,选择其中的 win 版本下载 2. 下载一个 protobuf-java-2.4.1.jar 文件(注意,要与你刚才下的 proto.exe 版本相同,否则可能出现编译通不过现象) http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1 3. 在 proto.exe 同级目录,编写一个 msg.proto 文件: package tutorial; option java_package = "com.protobuftest.protobuf"; option java_outer_classname = "PersonProbuf"; message Person { required string name = 1; required int32 id = 2; optional string

protobuf java 使用 window

别说谁变了你拦得住时间么 提交于 2020-02-26 02:07:28
1.到http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载,我选择的是protoc-2.4.1-win32.zip 2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同) 然后就开始开发了。 步骤: 1.用记事本编写一个.proto文件: }如:我编写的是test.proto package protobuf; option java_package = "com.sq.protobuf"; option java_outer_classname = "FirstProtobuf"; message testBuf { required int32 ID = 1; required string Url = 2; } 将其放在与刚解压的protoc.exe同级目录中。 2. 在cmd中,到protoc-2.4.1-win32文件夹下, 执行 E:\protoc-2.4.1-win32>protoc.exe --java_out=./ test.proto 则可以找到的一个生成的FirstProtobuf.java文件。 3. 在MyEclipse中新建一个java project,建立包com.sq.protobuf

Go学习笔记(一)

為{幸葍}努か 提交于 2020-02-26 01:45:47
软件安装 # go get -u github.com/golang/protobuf/{proto,protoc-gen-go} # go get -u google.golang.org/grpc 生成protoc # git clone https://github.com/google/protobuf.git # git checkout v3.4.1 ### 下面的命令在 Developer Command Prompt for VS2012 命令行执行 # cd D:\Project\protobuf\cmake\ # mkdir build # cd build # cmake -Dprotobuf_BUILD_TESTS=OFF .. 使用VS2012打开build目录下的protobuf.sln文件,在protoc上右键->生成,最终生成的protoc.exe位于build的Debug目录下 向PATH添加protoc.exe路径 剩余步骤参考 go RPC官方教程 原生net/rpc 服务端代码 import ( "net" "net/rpc" "time" "math/rand" "fmt" "strconv") type Arith int func (t *Arith) Hello(arg *int, reply *string) error {

protobuf使用

旧巷老猫 提交于 2020-02-23 21:23:18
一、protobuf环境搭建 Github 地址: https://github.com/protocolbuffers/protobuf 然后进入下载页 https://github.com/protocolbuffers/protobuf/releases 下载系统对应版本编译器 我这里使用的是window 64位 下好之后解压,然后把bin里面的protoc.exe加入到环境变量, 并且把protoc.exe拷贝到C:\Windows\System32 二、创建Student.proto 文件 syntax = "proto2"; package com.example.protobuf; option optimize_for = SPEED; option java_package = "com.example.protobuf"; option java_outer_classname = "DataInfo"; message Student{ required string name = 1; optional int32 age = 2; optional string address = 3; }    在工程中增加依赖 <dependency> <groupId>com.google.protobuf</groupId> <artifactId