建站运营新闻深圳市工程交易中心

web/2025/9/28 20:24:57/文章来源:
建站运营新闻,深圳市工程交易中心,卢沟桥做网站的公司,比较好的前端网站文章目录 1.环境准备2.验证码服务2.1 kratos 初始化验证码服务项目2.2 使用 Protobuf 定义验证码生成接口2.3 业务逻辑代码实现 1.环境准备 protoc和protoc-gen-go插件安装和kratos工具安装 protoc下载 下载二进制文件#xff1a;https://github.com/protocolbuffers/protobu… 文章目录 1.环境准备2.验证码服务2.1 kratos 初始化验证码服务项目2.2 使用 Protobuf 定义验证码生成接口2.3 业务逻辑代码实现 1.环境准备 protoc和protoc-gen-go插件安装和kratos工具安装 protoc下载 下载二进制文件https://github.com/protocolbuffers/protobuf/releases 下拉到最下方下载系统对应的版本将解压出来bin目录下的protoc.exe拷贝到GOPATH的bin目录下。查看protoc版本protoc --version。 protoc-gen-go插件安装 protoc是针对所有语言开发的protoc-gen-go是专门针对go语言开发因为是使用go语言开发的所以直接使用go install就可以进行安装安装后在GOPATH的bin沐目录下就会有对应的二进制文件。go install google.golang.org/protobuf/cmd/protoc-gen-golatest版本验证protoc-gen-go --versiongo install google.golang.org/grpc/cmd/protoc-gen-go-grpclatest版本验证protoc-gen-go-grpc --version kratos工具安装 kratos也是go语言编写的帮助我们快速生成代码的直接go install安装即可安装完成也会在GOPATH的bin目录中生成二进制文件。安装命令go install github.com/go-kratos/kratos/cmd/kratos/v2latest版本验证kratos -v 2.验证码服务 2.1 kratos 初始化验证码服务项目 kratos new kratos-demo03PS E:\java\go_code kratos new kratos-demo03Creating service kratos-demo03, layout repo is https://github.com/go-kratos/kratos-layout.git, please wait a moment.Already up to date.CREATED E:\java\go_code\kratos-demo03\.gitignore (590 bytes) CREATED E:\java\go_code\kratos-demo03\Dockerfile (483 bytes) CREATED E:\java\go_code\kratos-demo03\LICENSE (1087 bytes) CREATED E:\java\go_code\kratos-demo03\Makefile (2608 bytes) CREATED E:\java\go_code\kratos-demo03\README.md (1113 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\error_reason.pb.go (5126 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\error_reason.proto (306 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\greeter.pb.go (8299 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\greeter.proto (711 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\greeter_grpc.pb.go (3667 bytes) CREATED E:\java\go_code\kratos-demo03\api\helloworld\v1\greeter_http.pb.go (2213 bytes) CREATED E:\java\go_code\kratos-demo03\cmd\kratos-demo03\main.go (1834 bytes) CREATED E:\java\go_code\kratos-demo03\cmd\kratos-demo03\wire.go (645 bytes) CREATED E:\java\go_code\kratos-demo03\cmd\kratos-demo03\wire_gen.go (1121 bytes) CREATED E:\java\go_code\kratos-demo03\configs\config.yaml (306 bytes) CREATED E:\java\go_code\kratos-demo03\go.mod (1301 bytes) CREATED E:\java\go_code\kratos-demo03\go.sum (9022 bytes) CREATED E:\java\go_code\kratos-demo03\internal\biz\README.md (7 bytes) CREATED E:\java\go_code\kratos-demo03\internal\biz\biz.go (134 bytes) CREATED E:\java\go_code\kratos-demo03\internal\biz\greeter.go (1285 bytes) CREATED E:\java\go_code\kratos-demo03\internal\conf\conf.pb.go (21434 bytes) CREATED E:\java\go_code\kratos-demo03\internal\conf\conf.proto (805 bytes) CREATED E:\java\go_code\kratos-demo03\internal\data\README.md (8 bytes) CREATED E:\java\go_code\kratos-demo03\internal\data\data.go (500 bytes) CREATED E:\java\go_code\kratos-demo03\internal\data\greeter.go (880 bytes) CREATED E:\java\go_code\kratos-demo03\internal\server\grpc.go (867 bytes) CREATED E:\java\go_code\kratos-demo03\internal\server\http.go (872 bytes) CREATED E:\java\go_code\kratos-demo03\internal\server\server.go (158 bytes) CREATED E:\java\go_code\kratos-demo03\internal\service\README.md (11 bytes) CREATED E:\java\go_code\kratos-demo03\internal\service\greeter.go (723 bytes) CREATED E:\java\go_code\kratos-demo03\internal\service\service.go (142 bytes) CREATED E:\java\go_code\kratos-demo03\openapi.yaml (1169 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\README.md (15 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\errors\errors.proto (428 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\api\annotations.proto (1082 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\api\client.proto (3495 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\api\field_behavior.proto (3090 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\api\http.proto (15515 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\api\httpbody.proto (2748 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\any.proto (6067 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\api.proto (7942 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\compiler\plugin.proto (8937 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\descriptor.proto (39418 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\duration.proto (5011 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\empty.proto (2481 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\field_mask.proto (8430 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\source_context.proto (2389 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\struct.proto (3874 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\timestamp.proto (6606 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\type.proto (6313 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\google\protobuf\wrappers.proto (4165 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\openapi\v3\annotations.proto (2254 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\openapi\v3\openapi.proto (22754 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\validate\README.md (84 bytes) CREATED E:\java\go_code\kratos-demo03\third_party\validate\validate.proto (32133 bytes) Project creation succeeded kratos-demo03 $ cd kratos-demo03 $ go generate ./... $ go build -o ./bin/ ./... $ ./bin/kratos-demo03 -conf ./configs Thanks for using Kratos Tutorial: https://go-kratos.dev/docs/getting-started/start Thanks for using Kratos Tutorial: https://go-kratos.dev/docs/getting-started/start# 进入项目目录拉取依赖\ cd kratos-demo03 go mod tidy# 安装wire工具kratos使用了依赖注入来生成相关的代码所以运行项目前也需要安装 go get github.com/google/wire/cmd/wire# 生成了wire_gen.go go generate ./...# 项目运行 kratos run以上的layout的目录布局仅仅是kratos推荐的项目目录布局方式 2.2 使用 Protobuf 定义验证码生成接口 定义 protobuf 文件说明接口利用 protoc 基于 protobuf 生成必要代码将生成的代码整合到项目中完善业务逻辑 kratos proto add api/verifyCode/verifyCode.protosyntax proto3;package api.verifyCode; // 生成的go代码所在的包 option go_package kratos-demo03/api/verifyCode;verifyCode; // 定义 VerifyCode 服务 service VerifyCode {rpc GetVerifyCode (GetVerifyCodeRequest) returns (GetVerifyCodeReply); } // 类型常量 enum TYPE {DEFAULT 0;DIGIT 1;LETTER 2;MIXED 3; }; // 定义 GetVerifyCodeRequest 消息 message GetVerifyCodeRequest {// 验证码长度uint32 length 1;// 验证码类型TYPE type 2;} // 定义 GetVerifyCodeReply 消息 message GetVerifyCodeReply {// 生成的验证码string code 1; }基于verifyCode.proto生成 clientStub相关代码 kratos proto client api/verifyCode/verifyCode.protoapi/verifyCode/verifyCode.pb.go类型定义代码api/verifyCode/verifyCode_grpc.pb.gogRPC服务定义代码 基于verifyCode.proto文件生成 grpc服务代码 kratos proto server api/verifyCode/verifyCode.proto -t internal/service-t 选项指定生成文件所在位置代码会生成在internal/service目录中的internal/service/verifycode.gointernal/service/verifycode.go该文件定义了最基本的 VerifyCode 服务和对应的 GetVerifyCode 方法 package serviceimport (contextpb kratos-demo03/api/verifyCode )type VerifyCodeService struct {pb.UnimplementedVerifyCodeServer }func NewVerifyCodeService() *VerifyCodeService {return VerifyCodeService{} }func (s *VerifyCodeService) GetVerifyCode(ctx context.Context, req *pb.GetVerifyCodeRequest) (*pb.GetVerifyCodeReply, error) {return pb.GetVerifyCodeReply{}, nil }将生成的服务代码注册到 gRPC 服务中 更新 internal/service/service.go 文件告知 wire 依赖注入系统如果需要 VerifyCodeService 的话使用NewVerifyCodeService 函数来构建 将 VerifyCodeService 注册到 gRPC 服务中 更新 internal/server/grpc.go 文件 package serverimport (v1 kratos-demo03/api/helloworld/v1kratos-demo03/api/verifyCodekratos-demo03/internal/confkratos-demo03/internal/servicegithub.com/go-kratos/kratos/v2/loggithub.com/go-kratos/kratos/v2/middleware/recoverygithub.com/go-kratos/kratos/v2/transport/grpc )// NewGRPCServer new a gRPC server. func NewGRPCServer(c *conf.Server, greeter *service.GreeterService, verifyCodeService *service.VerifyCodeService, logger log.Logger) *grpc.Server {var opts []grpc.ServerOption{grpc.Middleware(recovery.Recovery(),),}if c.Grpc.Network ! {opts append(opts, grpc.Network(c.Grpc.Network))}if c.Grpc.Addr ! {opts append(opts, grpc.Address(c.Grpc.Addr))}if c.Grpc.Timeout ! nil {opts append(opts, grpc.Timeout(c.Grpc.Timeout.AsDuration()))}srv : grpc.NewServer(opts...)v1.RegisterGreeterServer(srv, greeter)verifyCode.RegisterVerifyCodeServer(srv, verifyCodeService)return srv }生成依赖注入代码go generate ./... kratos run建立ApiPost的项目 2.3 业务逻辑代码实现 GetVerifyCode方法中添加code返回添加RandCode方法返回测试字符串resultkratos启动测试 package serviceimport (contextpb kratos-demo03/api/verifyCode )type VerifyCodeService struct {pb.UnimplementedVerifyCodeServer }func NewVerifyCodeService() *VerifyCodeService {return VerifyCodeService{} }func (s *VerifyCodeService) GetVerifyCode(ctx context.Context, req *pb.GetVerifyCodeRequest) (*pb.GetVerifyCodeReply, error) {return pb.GetVerifyCodeReply{Code: RandCode(int(req.Length), req.Type),}, nil }func RandCode(l int, t pb.TYPE) string {return result }// RandCode 开放的被调用的方法用于区分类型 func RandCode(l int, t pb.TYPE) string {switch t {case pb.TYPE_DEFAULT:fallthroughcase pb.TYPE_DIGIT:return randCode(0123456789, l)case pb.TYPE_LETTER:return randCode(abcdefghijklmnopqrstuvwxyz, l)case pb.TYPE_MIXED:return randCode(0123456789abcdefghijklmnopqrstuvwxyz, l)}return }// randCode 随机的核心方法 func randCode(chars string, l int) string {charsLen : len(chars)result : make([]byte, l)for i : 0; i l; i {// 核心函数 生成[0,n]的整型随机数randIndex : rand.Intn(charsLen)result[i] chars[randIndex]}return string(result) }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公益环保网站建设信息流优化师面试常见问题

企业在品牌推广前需要制订一系列有针对性和连续性的步骤,这些步骤定睛于长期策略,而且要适应目标客户的使用方式和习惯。在企业内部导入品牌VI是前提,外部的宣传则是强调品牌所宣扬的内涵和精神实质,总体来说,这只是一…

个人网站设计要求互联网保险经纪公司十大排名

基本数据类型 整型 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64 其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应…

国外买域名的网站网站建设罒金手指下拉壹陆

http://www.openedv.com/docs/tool/dap/ST-LINKV2.html https://www.stmcu.com.cn/Designresource/detail/fi rmware_software/709492

宁波建设工程主管部门网站lnmp快速安装wordpress

最长公共前缀 题目说明: * 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1: * 输入:strs ["flower","flow","flight"] * …

科技公司建设网站系统开发成本可以分为哪三种

socket 一、socket是什么? socket 通常也称为“套接字”,用于描述 IP 地址和端口,是一个通讯链的句柄。应用程序通常通过 “套接字”向网络发出请求或者应答网络请求。说白了,就是一种通讯机制。它类似于公司的电话客服部门&…

官方网站建设情况网站开发公司基础产品

看到一张好图,能对MITRE ATT&CK框架做很好的概述: 可以与笔者之前写过的MITRE文章(https://blog.csdn.net/ybdesire/category_12472912.html)一起阅读,就能更好的理解MITRE。 参考: 吴沛颖.网络威胁情…

怎么设置网站石家庄情况最新消息今天

使用element-ui下拉菜单组件Dropdown时绑定点击事件,事件不生效。 click 常见于其用在Vue中的事件绑定,而实际上是 v-on 的简写,而 v-on 则是对 vue 的事件体系封装之后的 API接口。 native修饰符用于处理DOM原生事件,由于组件 …

中国建设银行网站宁波资阳住房和城乡建设厅官方网站

工作中经常会用到的把几个Excel文件合并到一个,或者是把一个Excel文件里的所有Sheet合并到一个Sheet来进行统计。下面分别提供用vba宏来解决这两个问题的方法。 1、合并Excel文件 打开一个空Excel文件,AltF11,插入一个模块,开始…

运城建网站合肥网络推广公司哪家好

【Java代码审计】越权篇 越权漏洞概述 越权漏洞概述 失效的访问控制是指未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如访问其他用户的账户、查看敏感文件、修改其他用户的数据、更改访问权限等。业界常将典型的…

南京个人网站建设企业在线咨询服务系统

文章目录 Docker简介什么是容器命名空间: Docker 的优缺点 Docker安装Docker镜像管理什么是镜像镜像管理 Docker容器管理运行容器容器启动、停止、重启拷贝文件进入容器容器与应用 DockerfileDockerfile 语法案例 总结 Docker简介 什么是容器 容器是用来装东西的&a…

如何百度搜到网站数据分析网站html模板下载

很难想象主站居然还有这漏洞 某天的一个晚上,默默的打开了电脑,娴熟的打开了Burp suite, 看到一个很熟悉的注册登录页面,开始测试。 很难想象,还有验证码时效性,于是怼了半刻钟,终于让我逮到了他的数据包…

网站建设和美工良品铺子网站规划和建设

(一) QString 1 QString的简介 QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。 对于超过 6553…

vue网站开发实例免费申请网站永久

bitmap的原理bitmap就是通过最小的单位bit(8bit 1b 0.001kb)来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。优点基于最小的单位bit进行存储,…

金华市网站建设最低价预约支付wordpress

目录 一、准备工作 二、常用配置 三、尝试 四、增删改查 1、增加 2、删除 3、修改 4、查询 五、XML的映射方法 一、准备工作 实施前的准备工作: 准备数据库表 创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动…

让别人做网站需要注意什么wordpress网站加密

图像的颜色及Halcon颜色空间转换 文章目录 图像的颜色及Halcon颜色空间转换一. 图像的色彩空间1. RGB颜色 2. 灰度图像3. HSV/ HSI二. Bayer 图像三. 颜色空间的转换1. trans_from_rgb算子2. trans_to_rgb算子3. create_color_trans_lut算子 图像的颜色能真实地反映人眼所见的真…

石家庄做网站设计当今做网站的流行趋势

1. 向项目添加app.config文件: 右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则默认的文件名称为“app.config”&…

免费网页上传网站保定行业网站

文章目录 前言废话不说,直接安装总结 前言 docker 无法安装 4.9.6 由于之前安装的版本低,有漏洞,服务器无限被攻击.没办法只能安装高版本,但是docker无法安装,仓库中根本没有这个高版本的镜像 废话不说,直接安装 官网下载: 4.9.6下载地址上传到linux的一个位置如: /data/data…

做网站需要具备的基础条件wordpress主题框架

C 库函数 - tanh()描述C 库函数 double tanh(double x) 返回 x 的双曲正切。声明下面是 tanh() 函数的声明。double tanh(double x)参数x -- 浮点值。返回值该函数返回 x 的双曲正切。实例下面的实例演示了 tanh() 函数的用法。#include#include int main (){ double x, ret;…

建设一个下载资料的网站西宁网站设计公司

快直播-基于WebRTC升级的低延时直播-腾讯云开发者社区-腾讯云 标准WebRTC支持的音视频编码格式已经无法满足国内直播行业需求。标准WebRTC支持的视频编码格式是VP8/VP9和H.264,音频编码格式是Opus,而国内推流的音视频格式基本上是H.264/H.265AAC的形式。…

正规网站开发文案局域网网站架设

将自己开发好的django项目用uwsgi部署到Linux服务器、当运行uwsgi时出现了uwsgi选择python版本的问题。因为本机器是在原来的机器上安装了python3环境和pip3, 使用命令安装uwsgi: pip3 install uwsgi 一点问题也没有,使用uwsgi部署项目时 uwsgi --http :…