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

婚介网站开发中国纪检监察

婚介网站开发,中国纪检监察,国家商标网查询入口,爱情动作片做网站grpc 是一个高性能、开源和通用的 RPC 框架#xff0c;面向服务端和移动端#xff0c;基于 HTTP/2 设计。目前支持c、java和go#xff0c;分别是grpc、grpc-java、grpc-go#xff0c;目前c版本支持c、c、node.js、ruby、python、objective-c、php和c#。grpc官网 grpc-go P…grpc 是一个高性能、开源和通用的 RPC 框架面向服务端和移动端基于 HTTP/2 设计。目前支持c、java和go分别是grpc、grpc-java、grpc-go目前c版本支持c、c、node.js、ruby、python、objective-c、php和c#。grpc官网 grpc-go ProtoBuf全称Protocol Buffer是数据结构序列化和反序列化框架ProtoBuf是Google推出的一款轻量高效的数据化数据存储格式性能比json、xml强ProtoBuf经历了ProtoBuf2和ProtoBuf3ProtoBuf3比ProtoBuf简化了很多目前主流的是ProtoBuf3. 优点 1.性能压缩性好、序列化和反序列化快比xml和json快2-100倍、传输速度快 2.便捷性使用简单自动生成序列化和反序列化代码、维护成本低只支持proto文件、向后兼容不必破坏旧格式、加密型号 3.跨语言跨平台、支持各种主流语言 缺点 1.通用性差json可以任何语言都支持但是protobuf需要专门的解析库 2.自解释性差只有通过proto文件才能了解数据结构 protoBuf安装并配置环境变量官网 1.编辑环境变量文件‌vim ~/.zshrc ‌2.添加环境变量‌ export PATH$PATH:/usr/local/go/src/GolangStudy/protoc-28.2-osx-x86_64/bin3.使配置生效‌保存并关闭编辑器后在终端中输入source ~/.zshrc 命令使更改生效。 4.验证 protoc --version安装protoBuf的go依赖包 go get github.com/golang/protobuf/protoc-gen-gohelloworld.proto syntax proto3;// 生成 proto 文件所在包路径 package protos; // 影响go文件生成位置和包名 option go_package GolangStudy/Introduction/grpc/protos; message HelloRquest{string name1;//1是编号不是值 }项目目录结构 转换命令第一种命令使用grpc会比第二种多很多 protoc --go_out. --go_optpathssource_relative --go-grpc_out. --go-grpc_optpathssource_relative helloworld.proto protoc --go_out/usr/local/go/src/GolangStudy/GolangStudy --proto_path/usr/local/go/src/GolangStudy/GolangStudy/Introduction/grpc/protos --go_optmoduleGolangStudy helloworld.proto调用并比较跟json格式的区别 package mainimport (GolangStudy/Introduction/grpc/protosencoding/jsonfmtgithub.com/golang/protobuf/proto )type Hello struct {Name string json:name }func main() {req : protos.HelloRquest{Name: bobby,}jsonStruct : Hello{Name: bobby}jsonRsp, _ : json.Marshal(jsonStruct)fmt.Println(len(string(jsonRsp)))rsp, _ : proto.Marshal(req)fmt.Println(len(string(rsp))) }json长度是15而protobuf长度是7 grpc四种数据流 简单模式simple rpc客户端发起一次请求服务端响应一个数据 服务端数据流模式server-side streaming rpc客户端发起一次请求服务端返回一段连续的数据流。客户端向服务端发送一个股票代码服务端就把该股票的实时数据源源不断的返回给客户端 客户端数据流模式client-side streaming rpc客户端源源不断的项向服务端发送数据流而在发送结束后由服务器返回一个响应物流网终端向服务器报送数据 双向数据流模式bidirectional streaming rpc客户端和服务端都可以向双方发送数据流双方的数据可以同时互相发送可以实现实时交互聊天机器人 grpc简单模式 目录结构 proto代码 syntax proto3;// 生成proto文件所在包路径 package protos; option go_package .;proto; // 影响go文件生成位置和包名 service Greeter{rpc SayHello(HelloRquest)returns(HelloReply);//hello接口 } message HelloRquest{string name1;//1是编号不是值 } message HelloReply{string message1; }生成go文件 protoc --go_out. --go_optpathssource_relative --go-grpc_out. --go-grpc_optpathssource_relative helloworld.proto使用接口删除这一行可能是生成方式的问题 server端 package mainimport (GolangStudy/Introduction/grpc/example2/protocontextnetgoogle.golang.org/grpc )type Server struct { }func (s *Server) SayHello(ctx context.Context, request *proto.HelloRquest) (*proto.HelloReply, error) {return proto.HelloReply{Message: helo request.Name,}, nil } func main() {g : grpc.NewServer()proto.RegisterGreeterServer(g, Server{})lis, err : net.Listen(tcp, 0.0.0.0:8080)if err ! nil {panic(failed to listen: err.Error())}err g.Serve(lis)if err ! nil {panic(failed to start )} } client端 package mainimport (GolangStudy/Introduction/grpc/example2/protocontextfmtgoogle.golang.org/grpc )func main() {conn, err : grpc.Dial(127.0.0.1:8080, grpc.WithInsecure())if err ! nil {panic(err)}defer conn.Close()c : proto.NewGreeterClient(conn)r, err : c.SayHello(context.Background(), proto.HelloRquest{Name: bobby,})if err ! nil {panic(err)}fmt.Println(r.Message) } grpc流模式 proto syntax proto3;// 生成proto文件所在包路径 package protos; option go_package .;proto; // 影响go文件生成位置和包名 service Greeter{rpc GetStream(StreamReqData)returns(stream SteramResData);//服务端流模式rpc PostStream(stream StreamReqData)returns(stream SteramResData);//客户端流模式rpc AllStream(stream StreamReqData)returns(stream SteramResData);//双向流模式 } message StreamReqData{string data1; } message SteramResData{string data1; }生成go文件 protoc --go_out. --go_optpathssource_relative --go-grpc_out. --go-grpc_optpathssource_relative stream.proto删除 server package mainimport (GolangStudy/Introduction/grpc/stream_grpc_test/protofmtnetsynctimegoogle.golang.org/grpc )const PORT :50052type server struct { }func (s *server) GetStream(req *proto.StreamReqData, res proto.Greeter_GetStreamServer) error {i : 0for {i_ res.Send(proto.SteramResData{Data: fmt.Sprintf(%v, time.Now().Unix()),})time.Sleep(time.Second)if i 10 {break}}return nil } func (s *server) PostStream(cliStr proto.Greeter_PostStreamServer) error {for {if a, err : cliStr.Recv(); err ! nil {fmt.Println(err)break} else {fmt.Println(a.Data)}}return nil } func (s *server) AllStream(allStr proto.Greeter_AllStreamServer) error {wg : sync.WaitGroup{}wg.Add(2)go func() {defer wg.Done()for {data, _ : allStr.Recv()fmt.Println(收到客户端消息: data.Data)}}()go func() {defer wg.Done()for {allStr.Send(proto.SteramResData{Data: 我是服务器,})time.Sleep(time.Second)}}()wg.Wait()return nil } func main() {lis, err : net.Listen(tcp, PORT)if err ! nil {panic(err)}s : grpc.NewServer()proto.RegisterGreeterServer(s, server{})err s.Serve(lis)if err ! nil {panic(failed to start )} } client package mainimport (GolangStudy/Introduction/grpc/stream_grpc_test/protocontextfmtsynctimegoogle.golang.org/grpc )func main() {conn, err : grpc.Dial(127.0.0.1:50052, grpc.WithInsecure())if err ! nil {panic(err)}defer conn.Close()//服务端流模式// c : proto.NewGreeterClient(conn)// res, _ : c.GetStream(context.Background(), proto.StreamReqData{Data: mooc})// for {// a, err : res.Recv() //socket编程send recv// if err ! nil {// fmt.Println(err)// break// }// fmt.Println(a)// }// //客户端流模式// c : proto.NewGreeterClient(conn)// putS, _ : c.PostStream(context.Background())// i : 0// for {// i// _ putS.Send(proto.StreamReqData{// Data: fmt.Sprintf(mooc%d, i),// })// time.Sleep(time.Second)// if i 10 {// break// }// }//双向流模式c : proto.NewGreeterClient(conn)allStr, _ : c.AllStream(context.Background())wg : sync.WaitGroup{}wg.Add(2)go func() {defer wg.Done()for {data, _ : allStr.Recv()fmt.Println(收到服务器消息: data.Data)}}()go func() {defer wg.Done()for {allStr.Send(proto.StreamReqData{Data: 我是客户端,})time.Sleep(time.Second)}}()wg.Wait() }
http://www.dnsts.com.cn/news/54106.html

相关文章:

  • 网站1g空间多少钱做网站怎么移动图片
  • 深圳最好的营销网站建设公司哪家好大连龙采做网站行不行
  • 建设网站采用的网络技术软件应用下载安装
  • 如何网上建设网站WordPress状态栏替换
  • 茂名网站制作策划国有企业参股管理暂行办法
  • 做网站还有流量么网站建设网站建设哪里有
  • 建网站和建网页的区别镇海seo关键词优化费用
  • 儿童 网站模板网站打开速度慢优化
  • 杭州平台网站建设青岛百度排名优化
  • 北京智能模板建站网页设计代码源
  • 一级a做爰片付费网站站长工具app官方下载
  • 网站维护中 源码短视频培训要多少学费
  • 成都网站seo费用大连seo外包平台
  • 企业形象网站解决方案荥阳网站建设荥阳
  • 网站建设 站内搜索wordpress萌
  • 自己服务器建网站个人网站建设方案书实例
  • 陕西省住房和城乡建设厅执业资格注册中心网站公司网站制作的教程
  • 英语作文网站大连做网站首选领超科技
  • 哪些网站做外贸效果好网站开发外包
  • 网站证书怎么做网站建设费用一年
  • 高端装饰公司网站设计广州网站提升排名
  • 深圳专门网站制作汽车保养网站模板
  • 网站制作的总结与体会网站怎么做统计
  • 滨海做网站哪家好小公司做网站还是微博
  • 长沙网站建设流程企业级建站
  • 网站规划建设与安全管理官网seo优化找哪家做
  • 哈尔滨快速制作网站长春科技网站建设
  • 营销型网站制作培训商品分类标准
  • 天津怎样做网站推广如何建立一家公司
  • 河北网站建设搭建网站建设图总结