protobuf

SNMP MIB解析

◇◆丶佛笑我妖孽 提交于 2020-11-01 17:56:58
分享本人的SNMP Gen 解析工具,使用Scala BNF模块开发。。 https://git.oschina.net/newzai/SnmpGen 可以快速开发SNMP网管服务器和客户端。 使用protobuf作为客户端和服务器之间的通信接口。。 以C#作为客户端、C++作为服务端(生成SNMP PDU) C#客户端Class<-->Protobuf Msg<---> C++Class<---> SNMP PDU 根据SNMP MIB文件,解析Snmp Object、Snmp Group对象和Snmp Notify对象。 根据Snmp Object、Group、Notify等对象生成其它语言的业务对象和相关消息编解码。 1. 与SNMP通信使用ACE ASNMP库,可以轻松的切换为SNMP++库。 2. 使用google protobuf作为消息通信载体,因此同时生成了proto消息。 3.生成C++业务对象,包含C++业务对象和SNMP PDU包之间的接口。 4.生成C#业务对象,包含C#业务对象和protobuf消息之间的编解码 5.生成xaml界面,供WPF等参考。页面布局根据oid的大小。实际需要调整。 6.通过trait扩展,可以轻易的实现其他语言的业务对象。。 来源: oschina 链接: https://my.oschina.net/u/1362/blog

Protobuf语言指南,及使用

本秂侑毒 提交于 2020-05-01 18:28:45
定义User.proto文件 package test.model; option java_package = "test.model"; option java_outer_classname = "User"; message userInfo { required int32 user_id = 1; required string name = 2; required int32 age = 3; optional string phone = 4 [default = "123"];//默认值 } 运行命令生产java代码 protoc.exe --java_out=./ User.proto google文档: https://developers.google.com/protocol-buffers/docs/proto Protobuf语言指南 l 定义一个消息(message)类型 l 标量值类型 l Optional 的字段及默认值 l 枚举 l 使用其他消息类型 l 嵌套类型 l 更新一个消息类型 l 扩展 l 包(package) l 定义服务(service) l 选项(option) l 生成访问类 本指南描述了怎样使用protocolbuffer语言来构造你的protocol buffer数据,包括.proto文件语法以及怎样生成

springboot整合gprc 传输对象

别来无恙 提交于 2020-04-06 21:54:12
一,grpc简介: GRPC是google开源的一个高性能、跨语言的RPC框架,基于HTTP2协议,基于protobuf 3.x,基于Netty 4.x +。GRPC与thrift、avro-rpc等其实在总体原理上并没有太大的区别,简而言之GRPC并没有太多突破性的创新。 对于开发者而言: 1)需要使用protobuf定义接口,即.proto文件 2)然后使用compile工具生成特定语言的执行代码,比如JAVA、C/C++、Python等。类似于thrift,为了解决跨语言问题。 3)启动一个Server端,server端通过侦听指定的port,来等待Client链接请求,通常使用Netty来构建,GRPC内置了Netty的支持。 4)启动一个或者多个Client端,Client也是基于Netty,Client通过与Server建立TCP常链接,并发送请求;Request与Response均被封装成HTTP2的stream Frame,通过Netty Channel进行交互。 二,proto3: Protocol Buffers是一个跨语言、跨平台的具有可扩展机制的序列化数据工具。也就是说,我在ubuntu下用python语言序列化一个对象,并使用http协议传输到使用java语言的android客户端,java使用对用的代码工具进行反序列化,也可以得到对应的对象

google protobuf 简单实例

别来无恙 提交于 2020-04-06 21:36:38
1.定义proto文件: User.proto package netty; option java_package="myprotobuf"; option java_outer_classname="UserProto"; message User{ required int32 ID=1; required string userName=2; required string Password=3; repeated string address=4; } 2.用 protoc.exe 生成User.proto的协议文件: D:\JAVA\protoc-2.5.0-win32>protoc.exe --java_out=. User.proto // Generated by the protocol buffer compiler. DO NOT EDIT! // source: User.proto package myprotobuf; public final class UserProto { private UserProto() {} public static void registerAllExtensions( com.google.protobuf.ExtensionRegistry registry) { } public interface

Hadoop序列化机制及实例

风格不统一 提交于 2020-04-03 04:26:55
序列化 1、什么是序列化? 将结构化对象转换成字节流以便于进行网络传输或写入持久存储的过程。 2、什么是反序列化? 将字节流转换为一系列结构化对象的过程。 序列化 用途 : 1、作为一种 持久化格式 。 2、作为一种 通信的数据格式 。 3、作为一种数据拷贝、克隆机制。 Java序列化和反序列化 1、创建一个对象实现了 Serializable 2、序列化 : ObjectOutputStream.writeObject(序列化对象) 反序列化: ObjectInputStream .readObject()返回序列化对象 具体实现,可参考如下文章: http://blog.csdn.net/scgaliguodong123_/article/details/45938555 为什么Hadoop不直接使用java序列化? Hadoop 的序列化机制与 Java 的序列化机制不同,它将对象序列化到流中, 值得一提的是java的序列化机制是不断的创建对象, 但在 hadoop 的序列化机制中,用户可以复用对象,这样就减少了java对象的分配和回收,提高了应用效率。 Hadoop序列化 Hadoop的序列化不采用java的序列化,而是实现了自己的序列化机制。 Hadoop通过 Writable 接口实现的序列化机制,不过没有提供比较功能,所以和java中的 Comparable 接口合并

mac 下配置protobuf 3.0 golang环境

半城伤御伤魂 提交于 2020-04-01 12:58:28
protobuf 3.0 与 之前的 protobuf 2.6 的语法是不一样的。需要重新安装一下,本机的环境是 OS X Yosemite 10.10.2 1. 不采用home brew安装,用homebrew安装的话会遇到一个open issue https://github.com/Homebrew/homebrew/issues/30320 的问题,没有仔细研究,索性就直接进行手工安装了; 不过这里可以记录一下自定义brew的 formula的方法: (1) 如果直接使用 brew INSTALL protobuf 进行安装的话,目前默认的安装版本还是 2.6.1的,所以需要修改一个brew 的formula,让brew去寻找3.0的版本;方法如下: sudo brew create https://github.com/google/protobuf/archive/v3.0.0-alpha-3.tar.gz 之后会要求输入formula的名字,输入protobuf即可, 如果之前已经安装过protobuf,会报出protobuf.rb已经存在的错误,直接删除那个protobuf.rb文件就可以; 还有如果之前安装了别的版本的protobuf,可以用sudo brew remove protobuf删除; (2) 上述部署做完之后,会弹出一个vim的编辑页面

protobuf数据描述语言

☆樱花仙子☆ 提交于 2020-03-23 15:35:01
1.简介 Protocol Buffers是Google开发的一种数据描述语言,能够将数据进行序列化,可用于数据存储、通信协议等方面。 可以理解成更快、更简单、更小的JSON或者XML,区别在于Protocol Buffers是二进制格式,而JSON和XML是文本格式。 相对于XML,Protocol Buffers有如下几个优点: 1.简洁。 2.体积小,消息大小只有XML的1/10到1/3。 3.速度快,解析速度比XML快20~100倍。 4.使用Protocol Buffers的编译器,可以生成更容易在编程中使用的数据访问代码。 5.更好的兼容性,Protocol Buffers设计的一个原则就是要能够很好的支持向下或向上兼容。 使用不同的数据描述语言序列化后的字节个数比对: 使用不同的数据描述语言进行序列化以及反序列化的响应时间比对: * 数据在网络进行传输时要经历三个阶段: 发送方对数据进行序列化、网络中传输、接收方反序列化。 将对象序列化成protobuf、xml、json结构时,protobuf所占的字节数量最少、有效数据的比重最大、总数据最少,因此决定了数据在网络进行传输时所耗费的时间最少。 将对象序列化成protobuf、xml、json结构以及反序列化成对象时,protobuf所耗费的时间最少。 结论 :数据使用protobuf序列化格式能够大大提高生产效率

win7 64 旗舰版虚拟GPU-VMware下+vs2013安装caffe+matlab+python

牧云@^-^@ 提交于 2020-03-22 04:32:55
转发请说明来处 Win7 配置 caffe (无 GPU ) 配置环境: 必须:win7 64 + vs2013 Win7 64位旗舰版要升级到service spack(因为是在vs2013下,想安装vs2013,得将旗舰版升级到Service Pack1),如下图 Vs2013 本人申请的服务器,无GPU,如图: 计算机-属性-设备管理器 (如果你的是NVIDIA,需要下载CUDA,不着急下面先看) 本人python2.7.12(不是安装的anaconda,当然建议安装这个) Matlab2016a 步骤就是按照happernear大神写的来的, 中文版安装教程: http://blog.csdn.net/happynear/article/details/45372231 英文版教程:(如果你运行成功,请给happynear大神点赞) https://github.com/happynear/caffe-windows 现在我再详细的演示一下: 1. 从caffe官方master分支fork过来的源代码: https://www.github.com/happynear/caffe-windows 有大神自己亲手制作的第三方库(是20160510而不是0326的): http://pan.baidu.com/s/1eStyfrc 2.解压这两个,且将D:\deeptools

【Caffe】Ubuntu 安装 Caffe gpu版

☆樱花仙子☆ 提交于 2020-03-18 06:12:40
安装环境:Ubuntu 16.04lts 64位, gcc5.4 gpu1050ti,cuda8.0,cudnn5.1.10 1. 安装依赖库 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev libboost-all-dev protobuf-compiler sudo apt-get install libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev 2. 安装caffe   终端输入命令: git clone git://github.com/BVLC/caffe.git   然后找到caffe文件夹,打开后会发现Makefile.config.example 文件,   这时候将Makefile.config.example复制一份命名为Makefile.config,并打开,将 #USE_CUDNN := 1 # CUDA_DIR := /usr/local/cuda # CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \   #-gencode arch=compute_20,code=sm_21 \

Netty题目总结

蓝咒 提交于 2020-03-17 08:59:05
1.BIO、NIO 和 AIO 的区别? BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线 程开销大。 伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用 器轮询到连接有 I/O 请求时才启动一个线程进行处理。 AIO:一个有效请求一个线程,客户端的 I/O 请求都是由 OS 先完成了再通知服务器应用去 启动线程进行处理, BIO 是面向流的,NIO 是面向缓冲区的;BIO 的各种流是阻塞的。而 NIO 是非阻塞的;BIO 的 Stream 是单向的,而 NIO 的 channel 是双向的。 NIO的特点:事件驱动模型、单线程处理多任务、非阻塞 I/O,I/O 读写不再阻塞,而是返 回 0、基于 block 的传输比基于流的传输更高效、更高级的 IO 函数 zero-copy、IO 多路复用 大大提高了 Java 网络应用的可伸缩性和实用性。基于 Reactor 线程模型。 在 Reactor 模式中,事件分发器等待某个事件或者可应用或个操作的状态发生,事件分发 器就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操 作。如在 Reactor 中实现读:注册读就绪事件和相应的事件处理器、事件分发器等待事 件、事件到来