首页 > 其他分享 >OJ项目环境搭建

OJ项目环境搭建

时间:2022-10-14 16:12:28浏览次数:90  
标签:SET OJ DEFAULT utf8 环境 -- COLLATE NULL 搭建

OJ项目环境搭建

数据库

建库:
problem,user,submit,category

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50740
 Source Host           : localhost:3306
 Source Schema         : gin_gorm_oj

 Target Server Type    : MySQL
 Target Server Version : 50740
 File Encoding         : 65001

 Date: 14/10/2022 15:57:22
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for category
-- ----------------------------
DROP TABLE IF EXISTS `category`;
CREATE TABLE `category`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类类别',
  `parent_id` int(11) NULL DEFAULT NULL COMMENT '父级ID',
  `created_at` datetime(0) NULL DEFAULT NULL,
  `updated_at` datetime(0) NULL DEFAULT NULL,
  `deleted_at` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of category
-- ----------------------------

-- ----------------------------
-- Table structure for problem
-- ----------------------------
DROP TABLE IF EXISTS `problem`;
CREATE TABLE `problem`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `category_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '以逗号分割的单位',
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '问题的题目',
  `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '问题的正文描述',
  `max_runtime` int(11) NULL DEFAULT NULL COMMENT '最大的运行时间',
  `max_mem` int(11) NULL DEFAULT NULL COMMENT '最大的运行内存',
  `created_at` datetime(0) NULL DEFAULT NULL,
  `updated_at` datetime(0) NULL DEFAULT NULL,
  `deleted_at` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of problem
-- ----------------------------
INSERT INTO `problem` VALUES (1, '00001', '1', '标题1', '内容1', 10, 20, '2022-10-14 15:13:24', '2022-10-14 15:13:27', NULL);

-- ----------------------------
-- Table structure for submit
-- ----------------------------
DROP TABLE IF EXISTS `submit`;
CREATE TABLE `submit`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `problem_identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '问题的唯一标识',
  `user_identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户的唯一标识',
  `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '代码的路径',
  `status` tinyint(1) NULL DEFAULT NULL COMMENT '[0-待判断,1-答案正确,2-答案错误,3-运行超时,4-运行超内存]',
  `created_at` datetime(0) NULL DEFAULT NULL,
  `updated_at` datetime(0) NULL DEFAULT NULL,
  `deleted_at` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of submit
-- ----------------------------

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `identity` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
  `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
  `mail` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `created_at` datetime(0) NULL DEFAULT NULL,
  `updated_at` datetime(0) NULL DEFAULT NULL,
  `deleted_at` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------

SET FOREIGN_KEY_CHECKS = 1;

Go依赖配置

gorm

下载 go get -u gorm.io/gorm
文档 https://learnku.com/docs/gorm/v2

小示例

func TestGormTest(t *testing.T) {
	dsn := "root:123456@tcp(127.0.0.1:3306)/gin_gorm_oj?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		t.Fatal(err)
	}
	data := make([]*models.Problem, 0)
	err = db.Find(&data).Error
	if err != nil {
		t.Fatal(err)
	}
	for _, v := range data {
		fmt.Printf("Problem ===> %v /n", v)
	}
}

gin

下载 go get -u -v github.com/gin-gonic/gin
文档 https://learnku.com/docs/gin-gonic/1.7

func Router() *gin.Engine {
	r := gin.Default()

	// Swagger配置
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	// 做些操作,路由规则
	r.GET("/ping", service.Ping)
	r.GET("/problem-list", service.GetProblemList)

	return r
}

swagger

下载 go get -u github.com/swaggo/swag/cmd/swag
文档 https://github.com/swaggo/gin-swagger
每次新增接口都要使用 swag init,这样才会刷新它增加的内容
image

下载gin-swagger

go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files

接口访问:

http://localhost:8080/swagger/index.html

配置操作

  1. 在router里面要在gin的engine里面配置/swagger/*any的路径,让我们可以处理swagger
	// Swagger配置
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
  1. 在接口服务上要添加注解,让swagger能够扫描到
// GetProblemList
// @Tags 公共方法
// @Summary 问题列表
// @Param page query int false "请输入当前页,默认第一页"
// @Param size query int false "size"
// @Success 200 {string} json "{"code":"200","msg","","data":""}"
// @Router /problem-list [get]
func GetProblemList(c *gin.Context) {
	models.GetProblemList()
	c.String(http.StatusOK, "Get Problem List")
}

image

标签:SET,OJ,DEFAULT,utf8,环境,--,COLLATE,NULL,搭建
From: https://www.cnblogs.com/azxx/p/16790474.html

相关文章

  • uni-app 6发现页搭建
    find.nvue文件<template><viewclass="page"><!--导航栏--><free-nav-bartitle="发现"></free-nav-bar><free-list-itemtitle="朋友圈"showRight>......
  • 使用openssl实现私有CA的搭建和证书的颁发
    CA的相关该概念PKI:PublicKeyInfrastructure公共密钥加密体系CA:CertificateAuthority,证书签发机构.实现身份的验证的一个机构。CA工作逻辑A和B通信需要将......
  • TZOJ 1693:银牛派对(最短路/dijstra)
    描述 N个农场(1≤ N ≤1000)中的每一个都有一头奶牛,编号为1.. N将参加在农场# X(1≤ X ≤ N)举行的大型奶牛聚会。总共有M (1≤ M ≤100,000)条单向(单向......
  • 公网对讲SDK| 快速搭建公网对讲应用
    公网PoC(Push-to-TalkOverCellular)对讲是依托运营商移动通信网络建立起来的,由于其不限距离,不限地域,只要有运营商网络的地方就可以使用;公网对讲以其便利性以及覆盖广、成......
  • 游戏对战平台搭建要选什么服务器​
    游戏对战平台搭建要选什么服务器​服务器是游戏平台数据传输的重要载体,事关我们游戏创业发展的稳定性、安全性。那么,游戏平台搭建要选什么服务器?有什么参考指标?本文艾西将带......
  • React专题(1)-环境配置
    此节把开发react需要的所有可能的环境都先描述一下,以方便后面的开发。在react开发中主要依赖的是node,主要需要配置以下内容:nvm:需要单独安装,主要是对项目使用的node.js解释器......
  • PostgreSQL的流复制搭建
    单机版流复制测试环境搭建搭建规划主库备库数据目录/pgdata/12/data/pgdata/1202/data归档目录/pgdata/12/arch/pgdata/1202/arch端口54325433创建流复制用户createrolere......
  • vue+elementui+axios环境搭建
    1.去官网下载安装node.js,安装后用命令检测版本信息node-vnpm-v2.安装vue环境#安装淘宝npmnpminstall-gcnpm--registry=https://registry.npm.......
  • 通过kubeadm搭建k8s集群
    ======通过kubeadm搭建k8s集群======1、版本统一Docker18.09.0---kubeadm-1.14.0-0kubelet-1.14.0-0kubectl-1.14.0-0---k8s.gcr.io/kube-......
  • [转]利用 Everything 搭建文件服务器
    本文转自:https://mp.weixin.qq.com/s/emKmSKoNeL9FuwLNCxyreQEverything是voidtools出品的本地文件搜索工具,它自带的HTTP服务可以用来搭建资料分享网站。在Everyth......