wordpress站群搭建2代码初始化

海鸥技术下午茶-wordpress站群搭建2项目代码初始化

1.后端环境

项目框架使用 go-zore https://go-zero.dev/docs/tasks

集成了各种工程实践的 web 和 rpc 框架。含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go。可以很大程度上提高开发效率,统一开发结构。

1.1 goctl 安装

go install github.com/zeromicro/go-zero/tools/goctl@latest

1.2 protoc 安装

通过 goctl 可以一键安装 protocprotoc-gen-goprotoc-gen-go-grpc 相关组件,你可以执行如下命令:

goctl env check --install --verbose --force

1.3 goswagger 安装

文档 https://goswagger.io/go-swagger/

go install github.com/go-swagger/go-swagger/cmd/swagger@latest

1.4 初始化station工作区

mkdir station && cd  station
go work init # 创建station 工作区
go get -u github.com/zeromicro/go-zero@latest #安装go-zore

1.5 初始化 api、rpc、job和pkg项目(在station工作区中)

cd station
mkdir api,rpc,job,pkg
cd api && go mod init api && cd ..
cd rpc && go mod init rpc && cd ..
cd job && go mod init job && cd ..
cd pkg && go mod init pkg && cd ..
go work use api rpc job pkg

2.代码生成

api代码生成

进入api目录,创建 station.api文件

//基础请求体
type BaseResponse {Code    int    `json:"code"`Message string `json:"message"`Data    string `json:"data"`
}@server(group: base
)
service station-api {@handler helloget /station/api/hello  returns (BaseResponse)
}

进入到 api 目录生成 station api 项目

goctl api go -api station.api -dir .go mod tidy 

rpc代码生成

进入rpc,创建station.proto 文件

// 声明 proto 语法版本,固定值
syntax = "proto3";
// proto 包名
package station;
// 生成 golang 代码后的包名
option go_package = "example/proto/greet";
// 定义请求体
message SayHelloReq {}
// 定义响应体
message SayHelloResp {}
// 定义 Greet 服务
service Greet {// 定义一个 SayHello 一元 rpc 方法,请求体和响应体必填。rpc SayHello(SayHelloReq) returns (SayHelloResp);
}

生成代码

goctl rpc protoc station.proto --go_out=. --go-grpc_out=. --zrpc_out=. -mgo mod tidy 

生成数据库代码

进入 rpc项目目录,创建 model目录

准备sql,创建station.sql文件

CREATE TABLE `station_users` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '姓名 页面显示',`email` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',`slug` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户标识符',`username` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登录名称',`password` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登录密码',`create_time` datetime(3) DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',`update_time` datetime(3) DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_slug` (`slug`) USING BTREE,UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='站点用户表';

加上 cache --cache 增加缓存加快查询

goctl model mysql ddl --src station.sql --dir . cache --cachego mod tidy 

使用goctl 生成的代码逻辑基本都在 logic中

3.后端代码联调

api 调用 rpc

# 在Config.go中增加rpc配置
RpcConf zrpc.RpcClientConf

在 station.yaml增加配置

RpcConf:Target: dns:///127.0.0.1:8080Timeout: 10000 #rpc 超时时间

在 servicecontext.go 上下文配置

# ServiceContext 增加
GreetRpc greet.Greet
# NewServiceContext 方法中增加
GreetRpc: greet.NewGreet(zrpc.MustNewClient(c.RpcConf)),

rpc配置model ,调用数据库

进入rpc目录: new model 目录

在配置文件中增加数据库配置

DB:DataSource: root:GHZJsi7tzS@tcp(10.0.0.238:3306)/station?charset=utf8mb4&parseTime=True&loc=Local

在 servicecontext.go配置

# ServiceContext 增加
StationUsersModel model.StationUsersModel
# NewServiceContext 方法中增加
cnn := sqlx.NewMysql(c.DB.DataSource)StationUsersModel: model.NewStationUsersModel(cnn),

生成swagger文档

goctl api plugin -plugin goctl-swagger="swagger -filename station.json -host 127.0.0.1:8888" -api station.api -dir .

运行swagger

 swagger serve --no-open -F=swagger --port 36666 station.json

编写业务代码

业务代码基本都在logic中编写

4.前端代码准备

首先准备node环境,最好使用nvm进行node版本管理

获取源码

git clone https://github.com/kailong321200875/vue-element-plus-admin.git

项目源码地址

上一篇: wordpress站群搭建1需求分析

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

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

相关文章

代码随想录算法训练营第三十六天|LeetCode56 合并区间、LeetCode738 单调递增的数字

题1: 指路:56. 合并区间 - 力扣(LeetCode) 思路与代码: 相似于昨天的引爆气球(第三题),这个题的题意更为清晰。我们只要取有交集元素的并集区间即可,其他区间照常返回。同样,我们…

React Router 路由详解

文章目录 1. 安装 react-router-dom2. 创建路由3. 创建链接和导航4. 渲染路由参数和查询字符串 在React中,我们通常使用 react-router-dom 这个库来处理路由。 1. 安装 react-router-dom 首先,你需要安装 react-router-dom ,可以使用 npm 或…

Centos离线安装Python3

目录 1.准备工作 2.解压python压缩包 3.编译 4.安装、更改环境变量 5.建立pip连接 使用的是Centos7服务器,Py版本是py3.9.0 1.准备工作 首先确保服务器中存在相关的编译器,例如GCC;这里不做过多叙述,需要者前往&#xff1a…

自动化压测工具开发(MFC)

1. 背景 为了减轻测试人员在进行MFC程序压力测试时的重复手动操作,本文档描述了开发一个自动化压力测试工具的过程。该工具能够根据程序界面某块区域的预定状态变化,自动执行鼠标点击或键盘输入操作。 2. 技术概览 串口控制:用于控制外部设…

空间搜索geohash概述;redis的geo命令

概述 通常在一些2C业务场景中会根据用户的位置来搜索一些内容。通常提供位置搜索的都是直接通过redis/mongodb/es等中间件实现的。 但是这些中间件又是怎么实现位置搜索的呢; 查了一番资料,发现背后一个公共的算法Geohash。 搜索的时候可以根据距离对…

Vitis HLS 学习笔记--移除内存分配malloc

目录 1. 简介 2. 示例解析 2.1 源码解释 2.2 malloc 分析 2.3 替代方案分析 3. 总结 1. 简介 Vitis HLS 也不支持动态创建或删除 C/C 对象(用于综合)。 本文探究如何在C/C代码中避免使用显式的malloc函数来分配内存。在硬件设计和FPGA开发中&…

Xcode无法使用设备:Failed to prepare the device for development

问题: Xcode无法使用设备开发,失败报错如下: Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need…

致 粉丝de信

致 粉丝 -本文呢看不下去别看,但是学业是真的重要(平常有信奥😫),电脑没收……更新可能得到暑假, 同学:小没苯agoe (aaa,学霸!!!&…

GGML简单介绍

GGML是一个用于机器学习的张量库,可以在商用硬件上实现大型模型和高性能。它被llama.cpp和whisper.cpp使用 C语言编写 16位浮点支撑 整数量化支持(如4位、5位、8位) 自动分化 内置优化算法(如ADAM, L-BFGS) 针对苹果芯片进行优化 在x86架构上利用AVX / AVX2的内在特…

A股上市公司MSCI ESG评级面板数据(2017-2023)

数据简介:MSCI ESG(Environmental, Social, and Governance)评级是由 MSCI Inc. 提供的一项服务,旨在评估公司在环境、社会和治理方面的表现。MSCI 是一家全球领先的投资研究和指数提供商,其 ESG 评级被广泛用于评估企…

C++ Primer 第五版 第16章 模板与泛型编程

模板是C中泛型编程的基础。一个模板就是一个创建类或函数的蓝图或者说公式。当使用一个vector这样的泛型类型,或者find这样的泛型函数时,我们提供足够的信息,将蓝图转换为特定的类或函数。这种转换发生在编译时。 一、定义模板 1. 函数模板…

windows11 建立批处理bat文件来删除指定目录下的所有隐藏的文件。

今天在导入项目的时候发现之前项目中的文件夹中有很多隐藏的临时文件,这个文件应该是版本控制产生的,导致导入后文件夹上有X,然后里面文件是一个没有错。 我们来建立一个bat来,进行批量删除隐藏文件就可以了: echo o…

安装前端与Web前端:深度探索与实践

安装前端与Web前端:深度探索与实践 在数字化时代,前端技术作为用户界面的直接呈现者,其重要性不言而喻。然而,对于初学者而言,安装前端与Web前端的过程往往充满了困惑与挑战。本文将从四个方面、五个方面、六个方面和…

[12] 使用 CUDA 进行图像处理

使用 CUDA 进行图像处理 当下生活在高清摄像头的时代,这种摄像头能捕获高达1920*1920像素的高解析度画幅。想要实施的处理这么多的数据,往往需要几个TFlops地浮点处理性能,这些要求CPU也无法满足通过在代码中使用CUDA,可以利用GPU提供的强大地计算能力CUDA支持多维地Grid和…

鸿蒙开发电话服务:【@ohos.contact (联系人)】

联系人 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import contact from ohos.contact;contact.addContact addContact(contact:Contact, callback:AsyncCallback): void 添加联…

纯C实现的ymodem库,无额外依赖

本文目录 1、引言2、理论2.1 YMODEM协议的主要特点2.2 YMODEM的工作原理 3、代码3.1 main.cpp3.2 ymodem.c 3.3 ymodem.h 4、验证4.1 ymodem发送4.2 ymodem接收 5、移植说明 文章对应视频教程: 暂无,可以关注我的B站账号等待更新。 点击图片或链接访问我…

源码解析:从零解读SAM(Segment Anything Model)大模型!

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

TF-IDF算法教程

前言 TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本分析技术,广泛应用于信息检索和文本挖掘领域。它是一种统计方法,用于评估一个词语在一个文档中的重要程度。TF-IDF的核心思想是:如果一个词语…

在 Windows 操作系统中,可以通过命令行工具来杀死进程

1. 使用 taskkill 命令 taskkill 命令是一个用于终止进程的命令行工具,可以通过进程名称或进程 ID (PID) 来杀死进程。 按进程名称杀死进程 taskkill /IM processname.exe /Fprocessname.exe 是进程的名称。/F 参数表示强制终止进程。 例如,终止名为…

VS2019+QT5.15调用动态库dll带有命名空间

VS2019QT5.15调用动态库dll带有命名空间 vs创建动态库 参考: QT调用vs2019生成的c动态库-CSDN博客 demo的dll头文件: // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLL3_EXPORTS // 符号…