wordpress站群搭建2代码初始化

embedded/2024/12/22 9:32:52/

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

1.后端环境

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

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

goctl__9">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

goswagger__23">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文件

go">//基础请求体
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.ppmy.cn/embedded/50169.html

相关文章

【计算机组成原理】存储系统

一、存储系统的基本概念 1.1 存储器的分类: 1.1.1 按在计算机中的作用(层次)分类 主存储器:主存,又称内存储器(内存),用来存放计算机运行期间所需的程序和数据,CPU可以…

论文阅读U-KAN Makes Strong Backbone for MedicalImage Segmentation and Generation

作为一种非常有潜力的代替MLP的模型,KAN最终获得了学术界极大的关注。在我昨天的博客里,解读了最近的热门模型KAN: 论文阅读KAN: Kolmogorov–Arnold Networks-CSDN博客 KAN的原文作者提到了很多不足。本文算是对其中两个现有不足的回应&am…

查询ubuntu的ip方法

命令如下 #这个命令比较详细 ip addr show enp1s0 #enp1s0是网卡名#这个也详细 nmcli device show enp1s0如果发现同个网卡出现多个ip,则可以删除其中一个ip sudo ip addr del 192.168.1.80/24 dev enp1s0重启网络管理 sudo systemctl restart NetworkManager查询…

设计灵感源泉!7个令人赞叹的网页界面设计展示

网页的界面设计主要是指视觉设计和风格设计。高质量的界面更容易吸引用户的注意力,从而更准确地向用户传达信息。对于设计师来说,他们需要从高质量的作品中获得稳定的灵感,以帮助他们更高效地实现设计目标。在本文中,梳理了7个高质…

Qt实现单例模式:Q_GLOBAL_STATIC和Q_GLOBAL_STATIC_WITH_ARGS

目录 1.引言 2.了解Q_GLOBAL_STATIC 3.了解Q_GLOBAL_STATIC_WITH_ARGS 4.实现原理 4.1.对象的创建 4.2.QGlobalStatic 4.3.宏定义实现 4.4.注意事项 5.总结 1.引言 设计模式之单例模式-CSDN博客 所谓的全局静态对象,大多是在单例类中所见,在之前…

pytest中失败用例重跑

pip install pytest-rerunfailures 下载rerunfailures插件包 配置文件中加入命令 --reruns 次数 也可在命令行中pytest --rerun-failures2 可以在allure报告中看到重试效果

算法设计与分析复习(第5章 回溯法)

7-1 子集和问题 #include<iostream> using namespace std;int n; int c; int final0; //当前元素加到最后一个元素 的总和 int sum0; //已选元素之和 int a[10000]; //原数组 bool b[10000]; //判断元素选不选bool Backtrack(int t){ if(sumc) return true; //已…

java溯本求源之基础(二十四)之--常见List的实现共同点

兄弟们终于到了上代码讲代码的环节了&#xff0c;之前的一些代码都是小打小闹&#xff0c;现在才是重头戏&#xff0c;今天来简单说说一些集合&#xff0c;首先这些都是基于数组实现的&#xff0c;当然Collections.emptyList不算奥&#xff0c;别犟。剩下的不多墨迹直接上重点&…