Protocol Buffers

奈学教育:Hadoop源码编译全流程分享

有些话、适合烂在心里 提交于 2020-08-06 13:38:47
首先准备一个hadoop源码包,我选择的hadoop版本是:hadoop-2.7.7-src.tar.gz,在hadoop-2.7.7的源码包的根目录下有一个文档叫做BUILDING.txt,这其中说明了编译hadoop所需要的一些编译环境相关的东西。不同的hadoop版本的要求都不一样,对应的版本参照BUILDING.txt 安装对应软件(必须联网) 安装openssl-devel yum -y install svn yum -y install autoconf automake libtool cmake zlib-devel lzo-devel yum -y install ncurses-devel yum -y install openssl-devel yum -y install zlib1g-dev libssl-dev 安装gcc 检测gcc是否已经安装:gcc -v 如果最后一行出现gcc版本信息日志,表示已经安装成功过了 命令安装: yum install -y gcc 安装gcc-c++ 命令安装:yum -y install gcc-c++ 安装JDK 安装包:jdk-7u80-linux-x64.tar.gz 解压安装:tar -zxvf /root/jdk-7u80-linux-x64.tar.gz -C /root/apps/ 配置环境变量:

快速序列化组件MessagePack介绍

冷暖自知 提交于 2020-08-06 11:52:08
简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。 MessagePack for C#具有内置的LZ4压缩功能,可以实现超快速序列化和二进制占用空间小。 性能永远是重要的! 可用于游戏,分布式计算,微服务,数据存储到Redis等。支持.NET, .NET Core, Unity, Xamarin。 从上图我们看出MessagePack for C#在性能测试中是最好的,这里解释一下第三个MsgPack-Cli是MessagePack官方实现的。第一和第二都是MessagePack for C#,第一项相比第二项具有稍快一点的序列化和反序列化速度,但是第二项采用了L4压缩功能,显著的减少了二进制的大小。在实际使用中推荐使用L4压缩功能。 使用 该组件已经发布在Nuget,使用命令加入项目。 Install-Package MessagePack 分析器 Install-Package MessagePackAnalyzer 扩展 Install-Package MessagePack.ImmutableCollection Install-Package MessagePack.ReactiveProperty

ProtoBuf与JSON的比较

 ̄綄美尐妖づ 提交于 2020-08-06 07:17:52
介绍 ProtoBuf 是google团队开发的用于高效存储和读取结构化数据的工具。什么是结构化数据呢,正如字面上表达的,就是带有一定结构的数据。比如电话簿上有很多记录数据,每条记录包含姓名、ID、邮件、电话等,这种结构重复出现。 同类 XML、JSON 也可以用来存储此类结构化数据,但是使用ProtoBuf表示的数据能更加高效,并且将数据压缩得更小。 原理 ProtoBuf 是通过ProtoBuf编译器将与编程语言无关的特有的 .proto 后缀的数据结构文件编译成各个编程语言(Java,C/C++,Python)专用的类文件,然后通过Google提供的各个编程语言的支持库lib即可调用API。(关于proto结构体怎么编写,可自行查阅文档) 总结 编解码性能 次数在1千以下,ProtoBuf 的编码与解码性能,都与JSON不相上下,甚至还有比JSON差的趋势。 次数在2千以上,ProtoBuf的编码解码性能,都比JSON高出很多。 次数在10万以上,ProtoBuf的编解码性能就很明显了,远远高出JSON的性能。 内存占用 ProtoBuf的内存34,而JSON到达106 ,ProtoBuf的内存占用只有JSON的1/3. 原文链接: https://my.oschina.net/xiaolei123/blog/3085607 详细内容要看原文,这边只是截一小部分 来源:

第三十七节:系统证书管理和gRPC基于数字证书的认证和授权

本小妞迷上赌 提交于 2020-08-06 01:21:32
一. 证书管理 1. 如何生成证书 (1). 关于阿里云证书和证书的相关概念  详见:https://www.cnblogs.com/yaopengfei/p/10648151.html (抽时间重新配置一遍) (2). 本地生成测试证书  详见:https://docs.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps  这里使用案例9:【New-SelfSignedCertificate -Subject "localhost" -TextExtension @("2.5.29.17={text}DNS=localhost&IPAddress=127.0.0.1&IPAddress=::1")】 2. 本地计算机证书管理 (1).查看计算已有的证书  cmd命令行→输入certmgr→可以查看当前用户下的证书以及受信任的颁发机构 (2).证书导入和添加信任  cmd命令行→输入mmc→进入控制台页面(默认空白)→选中文件中的‘添加/删除管理单元’→将'证书'一项添加进去 导入步骤:  A.以管理员的身份运行powershell,运行证书生成指令【New-SelfSignedCertificate -Subject "ypf" -TextExtension

RabbitMQ的应用场景以及基本原理介绍

≯℡__Kan透↙ 提交于 2020-08-05 04:39:44
RabbitMQ 是一个由 erlang 开发的 AMQP(Advanced Message Queuing Protocol)的开源实现。 AMQP:高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 一、应用场景 异步处理 应用解耦 流量削峰 二、RabbitMQ 特性 RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括: # 可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。 # 灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现

IM开发干货分享:我是如何解决大量离线消息导致客户端卡顿的

隐身守侯 提交于 2020-08-04 14:33:10
1、引言 好久没写技术文章了,今天这篇不是原理性文章,而是为大家分享一下由笔者主导开发实施的IM即时通讯聊天系统,针对大量离线消息(包括消息漫游)导致的用户体验问题的升级改造全过程。 文章中,我将从如下几个方面进行介绍: 1)这款IM产品的主要业务及特点; 2)IM系统业务现状和痛点; 3)升级改造之路; 4)消息ACK逻辑的优化。 下述内容都是根据笔者开发IM的亲身经历总结下来的宝贵经验,干货满满,期待你的点赞。 本文已同步发布于“即时通讯技术圈”公众号。 2、此IM产品的主要业务及特点 和传统互联网行业有所不同,笔者所在的公司(名字就不透露了)是一家做娱乐社交app的公司,包括小游戏、聊天、朋友圈feed等。 大家应该都有体会: 游戏业务在技术上和产品形态上与电商、旅游等行业有着本质上的区别。 大部分做后端开发的朋友,都在开发接口。客户端或浏览器h5通过HTTP请求到我们后端的Controller接口,后端查数据库等返回JSON给客户端。大家都知道,HTTP协议有短连接、无状态、三次握手四次挥手等特点。而像游戏、实时通信等业务反而很不适合用HTTP协议。 原因如下: 1)HTTP达不到实时通信的效果,可以用客户端轮询但是太浪费资源; 2)三次握手四次挥手有严重的性能问题; 3)无状态。 比如说,两个用户通过App聊天,一方发出去的消息,对方要实时感知到消息的到来

protobuf 安装笔记

送分小仙女□ 提交于 2020-07-29 10:53:20
#if GOOGLE_PROTOBUF_VERSION < 3000000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #endif #if 3000000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #endif java用的: https://github.com/CodeBhushan/FreeLancing https://github.com/chai2010/protorpc3-cxx Install CMake and MSVC(Windows) or MinGW(Windows) or gcc(Unix) cd ${protorpc_root} and build with cmake protobuf xls2protobuf 不是c++用的

ubuntu安装protobuf

蹲街弑〆低调 提交于 2020-07-28 20:54:30
这个安装没成功: 1、git clone https://github.com/protocolbuffers/protobuf.git 2、sudo apt-get install autoconf automake libtool curl make g++ unzip 3、cd protobuf/ 4、git submodule update --init --recursive 5、make check 6、sudo make install 7、sudo ldconfig 8、protoc --version 此时就会显示安装成功了 参考: https://blog.csdn.net/Zyong139064359/article/details/102543602 cd protobuf autogen.sh ./configure make make check make install 来源: oschina 链接: https://my.oschina.net/u/4344814/blog/4335788

golang 使用 protobuf 的教程

99封情书 提交于 2020-07-28 15:06:03
原文链接: https://www.cnblogs.com/jkko123/p/7161843.html 1、下载protobuf的编译器protoc 地址: https://github.com/google/protobuf/releases window: 下载: protoc-3.3.0-win32.zip 解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。 当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exe linux: 下载:protoc-3.3.0-linux-x86_64.zip 或 protoc-3.3.0-linux-x86_32.zip 解压,把bin目录下的protoc复制到GOPATH/bin下,GOPATH/bin加入环境变量。 如果喜欢编译安装的,也可下载源码自行安装,最后将可执行文件加入环境变量。 2、获取protobuf的编译器插件protoc-gen-go 进入GOPATH目录 运行 go get -u github.com/golang/protobuf/protoc-gen-go 如果成功,会在GOPATH/bin下生成protoc-gen-go.exe文件 3、获取protobuf的运行库google.golang.org/protobuf

听说go语言越来越火了?那么请收下这一份go语言书单吧!

£可爱£侵袭症+ 提交于 2020-07-28 12:40:31
关注公众号【程序员书单】后回复“book”即可领取30+精品免费电子书 ​ Go 是一种简单、小巧、令人愉悦的语言。它也有一些犄角旮旯,但绝大部分是经过精心设计的。它的学习速度令人难以置信,并且规避了其他语言中一些不那么广为人知的特性。 现如今越来越多的互联网公司开始使用go语言,有的初创公司开始使用go语言打造基础架构,而知乎这样的公司也基本上踏上了go语言的路子,或许,未来的互联网公司会越来越多地使用golang,那么,你想学习一下这门未来的语言么,今天就来推荐一份go语言书单吧。 go语言系列书单 ​ Go语言核心编程 Go语言的核心语言特性包括:类型系统、接口、并发。这三部分是Go语言精华、优美、也是重要的特征,本书紧密围绕这三个主题展开。以“类型系统”为例,Go语言中的类型有:简单类型、复合类型、命名类型、未命名类型、静态类型、动态类型、底层类型、接口类型、具体类型以及类型字面量等诸多概念,这些概念在其他Go类图书里面鲜有介绍,本书试图帮助读者梳理清楚这些类型的含义,建立概念,认清类型本质并学会正确使用; 在接口章节,不单介绍了接口概念和用法,还深入分析了接口的机制,使读者对Go语言非侵入式的接口有更深入的理解;在并发编程章节,书中给出了5个并发编程范式,并用图描述并发程序的模型,通俗易懂,这也是本书读特点。 此外本书还拿出一整章内容介绍Go语言编程过程中可能遇到的陷阱