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

练手Java做网站厦门seo网站推广优化

练手Java做网站,厦门seo网站推广优化,接网站制作,wordpress如何管理员密码往期回顾: Go语言开发小技巧&易错点100例(一)Go语言开发小技巧&易错点100例(二)Go语言开发小技巧&易错点100例(三)Go语言开发小技巧&易错点100例(四)Go…

往期回顾:

  • Go语言开发小技巧&易错点100例(一)
  • Go语言开发小技巧&易错点100例(二)
  • Go语言开发小技巧&易错点100例(三)
  • Go语言开发小技巧&易错点100例(四)
  • Go语言开发小技巧&易错点100例(五)
  • Go语言开发小技巧&易错点100例(六)
  • Go语言开发小技巧&易错点100例(七)

本期看点(技巧类用【技】表示,易错点用【易】表示)

  • JSON Marshal和Proto Marshal在Protobuf Message结构体上使用的不同【易】
  • channel方式代替time.Sleep()方法【技】

正文开始

JSON Marshal和Proto Marshal在gRPC Message上使用的不同

我们先定义一个Proto Buffer文件,内容为一个Message,有两个属性,其中一个属性为string类型,一个为onef类型:

syntax = "proto3";option go_package = "/test";package cmd;message UserInfo {string name = 1;oneof address {string school_addr = 2;string home_addr = 3;}
}

接下来我们编译成pb.go文件

protoc -I=. --go_out=.. ./hello.proto

具体编译后的结构体:

type UserInfo struct {state         protoimpl.MessageStatesizeCache     protoimpl.SizeCacheunknownFields protoimpl.UnknownFieldsName string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`// Types that are assignable to Address://	*UserInfo_SchoolAddr//	*UserInfo_HomeAddrAddress isUserInfo_Address `protobuf_oneof:"address"`
}// ...type UserInfo_SchoolAddr struct {SchoolAddr string `protobuf:"bytes,2,opt,name=school_addr,json=schoolAddr,proto3,oneof"`
}// ...type UserInfo_HomeAddr struct {HomeAddr string `protobuf:"bytes,3,opt,name=home_addr,json=homeAddr,proto3,oneof"`
}

然后我们写两个测试方法:

方法一:JSON Marshl的方式序列化结构体

func TestJSONMarshal(t *testing.T) {u := UserInfo{Name:    "zs",Address: &UserInfo_HomeAddr{HomeAddr: "Beijing"},}marshal, _ := json.Marshal(u)fmt.Println(string(marshal))var u2 UserInfo_ = json.Unmarshal(marshal, &u2)fmt.Println(u2)
}

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUlVgySx-1690033591008)(Go语言开发小技巧&易错点100例(八).assets/image-20230722211709041.png)]

方法二:Proto Marshal的方式序列化结构体

func TestProtoMarshal(t *testing.T) {u := UserInfo{Name:    "zs",Address: &UserInfo_HomeAddr{HomeAddr: "Beijing"},}marshal, _ := proto.Marshal(u)fmt.Println(string(marshal))var u2 UserInfo_ = proto.Unmarshal(marshal, u2)fmt.Println(u2)
}

结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i5L9h37K-1690033591011)(Go语言开发小技巧&易错点100例(八).assets/image-20230722211642116.png)]

对比上述的结果,我们会发现有些不同

  • 序列化后的内容不同,JSON Marshal序列化后的内容可读性较高但是内容占用空间多
  • 反序列化时Proto Marshal的方式能够自动识别oneof类型的属性

因此我们得出结论,在直接序列化Message时最好使用Proto Marshal的方式进行序列化,防止特殊的属性不能够识别,而且该序列化的方式更加节省空间,缺点则是序列化的结果可读性不高。

channel方式代替time.Sleep()方法

最新发现的新操作,直接上代码:

func TestSleep(t *testing.T) {<-time.After(time.Second) // 相当于time.Sleep(time.Second)}

本期到此结束~

http://www.wangmingla.cn/news/17122.html

相关文章:

  • 0716网站建设女生学电子商务后悔了
  • 常见的网站类型百度贴吧官网
  • 二级域名单独做网站seo排名首页
  • 免费做长图的网站提高工作效率图片
  • 鹿泉区城乡建设局网站淘宝指数查询
  • 杭州微网站建设公司网络推广运营优化
  • 自己做网站 什么太原高级seo主管
  • 做国外营销型网站设计网站维护主要做什么
  • 长春网站制作网络推广重庆网站seo公司
  • 织梦企业模板去一品资源网深圳seo技术
  • 中心网站建设方法上海网络seo
  • 网站开发专业简历网站推广有哪些方式
  • 青岛做商城网站搜索引擎营销的方式
  • 怎样做 网站做seo怎么让网站排名上去
  • 信用体系建设网站维运工作制度查网站关键词工具
  • 专业供应的重庆注册公司济南seo关键词排名工具
  • 生鲜网站开发背景如何用google搜索产品关键词
  • wordpress页面php代码恩城seo的网站
  • 独立网站如何推广搜索关键词网站
  • 网站建设阝金手指专业十四网站排名优化价格
  • 网站开发banner新媒体运营是做什么
  • 飞沐网站建设公司北京2024年新闻摘抄
  • 网站慢用台服务器做跳板最近新闻热点大事件
  • 上海有制作网站的电话吗营销知识和技巧
  • ubuntu怎么做网站外贸营销网站制作
  • 互联网网站备案流程网络推广引流是做什么的
  • wordpress 全部文章seo关键词优化培训班
  • 有网站怎么做淘宝客酒店推广渠道有哪些
  • 哈尔滨疫情最新情况东莞seo项目优化方法
  • 建站abc怎样济南百度推广优化