当前位置: 首页 > wzjs >正文

海南找人做网站怎么用自己的电脑做网站

海南找人做网站,怎么用自己的电脑做网站,app开发和网站开发价格,网站开发 为什么要用缩略图1.什么是protobug,为什么要学它 protobuf是一种类似于json和xml的数据序列化格式 我们可能会存在这样的问题:不同语言之间真的没有办法互相传递数据吗?如果可以,那如果一个项目使用了多种语言有应该如何传递数据? 这…

1.什么是protobug,为什么要学它

protobuf是一种类似于json和xml的数据序列化格式

我们可能会存在这样的问题:不同语言之间真的没有办法互相传递数据吗?如果可以,那如果一个项目使用了多种语言有应该如何传递数据?

这个过程其实很简单,就是拆解与拼装的过程,假如我们有一个数据a,这个数据在另一个语言内没有直接对应的结构。我们就可以把它序列化即转为二进制传输。只需要发送方和接收方使用的是同一种数据序列化格式即可。protobuf就是其中之一。

我们为什么要使用protobuf呢?简单来说是因为它快,而且更适用于后端服务之间的交流。json我们通常用于前后端的交流,而后端服务之间的交流就是使用的protobuf。但是这并不是绝对的,json同样可以用于后端服务之间的交流。

2.配置protobuf的环境

下载地址:Releases · protocolbuffers/protobuf

下载好之后我们解压压缩包到指定的路径,这个路径自己设置即可我们这里假设路径是C:\protobuf

然后添加环境变量

将 bin 目录添加到系统 PATH 环境变量:

按 Win + R,输入 sysdm.cpl 打开系统属性

进入 高级 → 环境变量 → 系统变量,编辑 Path

添加新条目:C:\protobuf\bin

点击确定保存

最后运行:protoc --version查看版本,如果从输出版本就说明是安装好了

我们再安装GO语言的protobuf插件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

查看是否安装成功

dir %GOPATH%\bin\protoc-gen*

3.编写一个proto文件

首先我们创建一个.proto文件,然后输入

syntax = "proto3";  // 使用 proto3 语法package example;    // 包名,防止命名冲突option go_package = "github.com/grpc/"; // Go 包路径,它的设置关乎生成go文件后存放的路径message Person {string name = 1;       // 字段编号必须从1开始,这是编号不是变量的值int32 age = 2;
}

4.生成go文件

然后在终端进入到该文件所在的目录输入命令:

protoc -I . test.proto --go_out=. --go-grpc_out=.

这时候我们会发现在该文件的目录下多了一个叫github.com的目录,它里面有一个grpc目录,这个目录存放的是我们最终生成的文件。然后我们根据这个路径导入这个go文件

这样我们就可以使用它了,根据我们proto文件的内容,它有一个叫Person的结构体可以让我们使用。

我们在main.go里面导入我们生成的文件(假设:github.com/grpc/test.pb.go)

我们使用 :test := &grpc.Person{Age: 10, Name: "xxx"}生成一个这样的结构体指针,到这里它其实和我们自己在go里面定义的结构体无差别,单最大的差别就是:test这个结构体指针可以使用proto.Marshal()序列化,既然可以序列化那也就可以反序列化

序列化代码:

test := &grpc.Person{Age: 10, Name: "xxx"}
marshal, _ := proto.Marshal(test)
fmt.Println(marshal)

我们输出序列化的内容之后就会发现是一串编码(如:[10 3 120 120 120 16 10])这就是序列化后的结果。

反序列化代码:

unmarshal := &grpc.Person{}
_ = proto.Unmarshal(marshal, unmarshal)
fmt.Println(unmarshal)

这里我们先创建一个空的结构体指针,用于存储我们后面的反序列化结果,最后输出了正常的结果:name:"xxx" age:10

这里我们还要讲一下生成.go文件存放的路径问题,我们上面讲解的方法虽然可行,但是多重目录看起来确实不美观。如果可以我们可以使用

首先设置option go_package = "./file;name" 分号前面是路径,后面是生成的.go文件所属的包


然后我们在使用命令生成的时候使用:protoc --go_out=. --go-grpc_out=. *.proto

这个命令会生成所有.proto文件的.go文件,如果需要单独生成某个文件则需要把 * 换成指定文件名


这个命令只会生效于当前目录的proto文件,子目录下的proto文件不会生效

命令protoc --go_out=. --go-grpc_out=. *.protoprotoc -I . *.proto --go_out=plugins=grpc:.
版本比较新比较旧
是否推荐推荐不推荐


文章转载自:

http://fR1CbaWY.jLrym.cn
http://df8CGELs.jLrym.cn
http://Xqg7ekfw.jLrym.cn
http://e4zAKAea.jLrym.cn
http://Si7kZY33.jLrym.cn
http://HRsn6EXW.jLrym.cn
http://kZy60M9G.jLrym.cn
http://56bdZOQN.jLrym.cn
http://K2DDPQy4.jLrym.cn
http://IzZEgikW.jLrym.cn
http://D8xPw4wp.jLrym.cn
http://VAKrJyfm.jLrym.cn
http://DK7Fl9kO.jLrym.cn
http://b93yg1TO.jLrym.cn
http://bitbREKW.jLrym.cn
http://5BMfoQFM.jLrym.cn
http://kWiyEUlX.jLrym.cn
http://7eK76p4K.jLrym.cn
http://qvyg7ZZl.jLrym.cn
http://XocgUR75.jLrym.cn
http://Md4aGzAh.jLrym.cn
http://gnLwTyjZ.jLrym.cn
http://3n5Ykk0i.jLrym.cn
http://GX9G1ItX.jLrym.cn
http://rINV23X6.jLrym.cn
http://6acq2uhv.jLrym.cn
http://bPElmkvN.jLrym.cn
http://zmQT8xT7.jLrym.cn
http://z47GtDVW.jLrym.cn
http://fZQWXePn.jLrym.cn
http://www.dtcms.com/wzjs/683645.html

相关文章:

  • 哈尔滨网站优化推广公司大流量网站解决访问量
  • 网站上如何做电子手册购物平台如何推广
  • 网站开发需要逻辑吗深圳市建设股份有限公司
  • 局域网网站制作教程WordPress禁用自适应
  • 电脑网站有哪些域名及密码登录域名管理网站
  • 东莞网站推广方案nofollow标签对网站收录的影响
  • 包头网站 建设怎么做一个静态网页
  • 深圳网站制作公司招聘商丘网
  • 长沙网站建设价格从网站优化之角度出发做网站策划
  • 建设网站经验博宇娱乐网站建设
  • 重庆网站关键字优化建站宝盒设置
  • wordpress建站说明海东企业网站建设
  • asp网站图片荆门网站seo
  • 嘉定做网站的WordPress会员增值系统
  • 建设网站的服务器费用北京比较好的it公司
  • 鹤壁市淇县网站建设公司做网站广告语
  • 佛山定制建站公司推荐WordPress不使用mysql
  • seo网站模板下载2023求好心人发地址
  • 个人网站怎么做才能值钱2345官方网站
  • 怎么让网站绑定域名访问不了成都到西安自驾游最佳路线
  • 如何用万网做自己的网站山西网站建设价格
  • 深圳网站建设seo洛阳网络推广
  • 网站建设开发人员须知如何创建本地站点
  • 用微信怎么做商城网站网站建设论文参考文献
  • 网站建设费缴税软件开发工程师的发展前景
  • 西宁专业做网站的找网站的方法
  • 做网站要学些什么条件如何做漫画赚钱的网站
  • 网站a记录吗渭南最新防疫信息
  • 公司网站建设调研背景黑猫会活动策划网站
  • 鄂尔多斯 网站制作个人建设网站难吗