python做網(wǎng)站缺點品牌推廣策劃方案
文章目錄
- 注意!!!
- 1、多模塊開發(fā)(后端)
- (1).Maven依賴
- (2)swagger配置
- 2、判題機開發(fā)
- (1)docker
??前言:大二剛開始接手了本學院的oj,并管理了一段時間,后來老師給我說我可以開發(fā)一個 oj 用來當做畢設。
??我:嗯…(知道開發(fā)一個比較困難)
??來來回回最終下定決心開始了 oj 的開發(fā),由于我都是略懂一點(這個最難受了),所以做起來比較困難,也沒有什么人可以請教,只能自己一點一點的找網(wǎng)上的。
??在我管理的 oj 中,使用 php 開發(fā)的,但是但是,我學的主要的是 java 因此想寫一個 java 版本的。在之前,學長接手的時候?qū)τ诒緦W院 oj 項目的記錄可以說是為零,雖然在我接手的時候不敢說是一片空白,但是也差不多 (>_<) ,經(jīng)歷了一個學期,基本摸清了項目的主要結(jié)構(gòu),并對項目的一些 bug 進行修改,比如:限制同一賬號同時登錄多個;補充了對于用戶的刪除(徹底的),后面的修改 id(這個是 primary key)還沒有寫,準備帶著下一屆的學弟開發(fā)(因為我也要轉(zhuǎn)手了)。
不足的:
還沒有了解他的判題機制(當時也是 十分茫然、無助。。。。)
還可以的:
對項目主要結(jié)構(gòu)寫了自認為可以的解析文檔,對以后的開發(fā)確定的大致的方向,并留下一些開發(fā)經(jīng)驗
繼續(xù)說本項目:
??在此之前聽了 dl 學長的建議使用 docker
進行環(huán)境的部署,經(jīng)過好長時間的嘗試,還是在 win11
中進行了安裝,因為用了好長時間,工具比較全,也不想在去弄別的了。注:Win11 家庭版可以安裝 docker !!! 簡單使用還是可以的(對我目前的需求來講)
使用主要工具:
idea 2023
docker 25.0.6
(win版)
vsCode
使用主要框架
springBoot 2.6.11
注意!!!
在進行Maven引用或注解引用的時候,一定考慮版本適配問題(剛開始沒注意springboot版本適配問題,一直報錯)
1、多模塊開發(fā)(后端)
如何使用多模塊開發(fā),可以自己參考其他的
(1).Maven依賴
<dependencies><!-- 郵箱驗證碼依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!-- lvrdqmmdvfgcbdcc--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.32</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-core</artifactId><version>6.4.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.35</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version></dependency><!--druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.16</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.26</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.6</version></dependency><!-- docker-java--><!-- <dependency>--><!-- <groupId>com.github.docker-java</groupId>--><!-- <artifactId>docker-java</artifactId>--><!-- <version>3.2.13</version>--><!-- </dependency>--><!-- <dependency>--><!-- <groupId>com.github.docker-java</groupId>--><!-- <artifactId>docker-java-core</artifactId>--><!-- <version>3.2.13</version>--><!-- </dependency>--><!-- <dependency>--><!-- <groupId>com.github.docker-java</groupId>--><!-- <artifactId>docker-java-transport-httpclient5</artifactId>--><!-- <version>3.2.13</version>--><!-- </dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.25.Final</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.4</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20220924</version></dependency><!-- 集成redis依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>redis.clients</groupId><artifactId>jedis</artifactId></exclusion><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><!-- weka--><dependency><groupId>nz.ac.waikato.cms.weka</groupId><artifactId>weka-stable</artifactId><version>3.8.6</version></dependency><!-- minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency></dependencies>
(2)swagger配置
剛開始可以只寫一個空的Swagger2Config
類,注意在啟動類上加上@EnableSwagger2 @EnableWebMvc
注解
對于 swagger 的使用可以自行學習
接口文檔地址:http://localhost:8080/swagger-ui/index.html#/
(注意本項目的根路徑為 /
)
@Configuration
@EnableSwagger2
@EnableWebMvc
public class Swagger2Config {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).enable(true).groupName("判題測試接口").tags(new Tag("judge相關接口", "ee")).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.ant("/judge/**")).build();}@Beanpublic Docket api01(){return new Docket(DocumentationType.SWAGGER_2).enable(true) .groupName("user管理接口").tags(new Tag("用戶管理相關接口","Test01Controller")).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.ant("/user/**")).build();}// //構(gòu)建 api文檔的詳細信息函數(shù)
// private ApiInfo apiInfo() {
// return new ApiInfoBuilder()
// //頁面標題
// .title("XX平臺API接口文檔")
// //創(chuàng)建人
// .contact(new Contact("馮冬冬", "http://www.javachat.cc",
// "3049352171@qq.com"))
// //版本號
// .version("1.0")
// //描述
// .description("系統(tǒng)API描述")
// .build();
// }
}
2、判題機開發(fā)
主要是使用docker
鏡像拉取環(huán)境,每次判題的時候新建容器,結(jié)束后刪除容器
(1)docker
鏡像配置:
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buildkit": true},"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}