protobuf 在Java、C#中使用

什么是protobuf

protobuf是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

下载文件

github下载链接

protobuf-java-3.3.0.zip

protobuf-csharp-3.3.0.zip

protoc-3.3.0-win32.zip

生成C# DLL文件

1.进入src打开.sln工程文件。 Tip:最好使用vs2017

2.选择release build工程

3.在google-protobuf中即生成dll文件

tip:现在官方还没有出unity版本,现有的unity版本 可能不兼容IOS

生成JAR文件

需要使用maven,下载链接

apache-maven-3.5.0-bin.zip

解压下载文件,配置环境变量到\bin目录

cmd进入到protobuf-java文件夹

mvn test//测试 要等一会  tip:可能会有错误,来不及排查,之后再来补

mvn install

mvn pakage//打包文件,即可在文件夹中看见jar包

生成Java、C#文件

解压win32,找到protoc.exe,配置环境变量

创建根目录文件夹protobuf,在创建Java、CSharp子文件夹

在protobuf创建.proto文件,根据示例编写 .proto文件

cmd进入到protobuf目录,执行protoc –help 查看操作命令

rotoc -I=. –java_out=./java . /helloworld.proto//在java文件夹下生成 Java文件

rotoc -I=. –java_out=./csharp . /helloworld.proto//在csharp文件夹下生成 C#文件

tip:可以使用bat文件 批量执行

scoket 字节流传输粘包,分包处理

分包

分包, 传输过程中对一个报文进拆分发送。比如传输一个字符串“aabbcc”,那么在接收方可能先收到aa 然后 bb 最后cc。​

粘包

粘包,是指发送端发送的两个报文,在接收端被拼在一起。由于TCP是面向流的协议,报文与报文之间是没有分界符号的。在接收端,所有的数据都逻辑上拼在一起给你。举例来说,你分10次发送10个长度为10的报文,在接收端,你可能只收到一个长度为100的报文,而不会收到10个消息。

解决方法

分包解决方法:发送消息前先把消息的长度发送出去,这个长度可以定义成一个固定的字节长度,接收的时候先接收长度,根据这个值判断是否已经接收完毕,没接收完等待下一次的接收内容,长度达到就可读取整条消息处理了。

粘包解决方法:同分包一样可以先将消息的长度发送过去,在接收之后,先拿消息的长度,然后根据长度获取消息内容。剩下的部分在获取长度,如果长度够的话,继续处理消息,如果获取长度后发现不够等待下次接收进行处理。

算法:

  1. 接收到字节流后进入循环
  2. 判断当前字节流里的长度是否够消息长度的字节如果不足退出循环等待下一次接收,如果够进入3
  3. 获取长度,判断剩余字节流是否够用,如果不够用,将长度字节原样放回字节流,跳出循环,如果足够进入4
  4. 取出当前长度的字节流,进行消息解析
  5. 继续循环

Continue Reading »

c# 四则混合运算算法

中缀表达式转后缀表达式

1.中缀表达式:

是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。

2.后缀表达式:

后缀表达式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,没有括号)。

3.中缀表达式转后缀表达式:

  1. 开始扫描表达式
  2. 如果是数字,加入后缀表达式
  3. 如果是‘(’,入栈
  4. 如果是‘)’,则依次把栈中的的运算符加入后缀表达式中,直到出现'(‘,从栈中删除'(‘ ;
  5. 如果是除括号外的其他运算符, 当其优先级高于除'(‘以外的栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号为止。
  6. 当扫描的中缀表达式结束时,栈中的的所有运算符出栈加入到后缀表达式

Continue Reading »

Windows + IIS下搭建WordPress环境

前期准备:

Continue Reading »

IIS下配置PHP

1.安装CGI

如果已经安装直接跳到2

1.选择角色-web服务器IIS-角色服务-添加角色服务

2.确认CGI已经勾选,之后一路next

2.配置Php

1.安装Php(已安装则跳过此步骤)

  • 解压下载好的php
  • 复制一份php.ini-development  改名为 php.ini

Continue Reading »

分类目录