vivo软件开发马拉松大赛学习总结

  • 后端技术
    • 部署
      • 使用到的docker镜像
      • MySQL部署
      • 后端项目部署
      • jenkinsfile
    • swagger配置
    • 跨域解决
  • 其他

后端技术

部署

后端部分是使用docker来进行部署的,部署在服务器的/home/vivo-backend/目录下


使用到的docker镜像

  • MySQL:5.7
  • 基于openjdk:8构建的后端镜像

MySQL部署

MySQL部分文件部署在/home/vivo-backend/mysql/目录下

  1. 在上述目录下创建一个版本为5.7的MySQL容器,取名为c_mysql

    • 端口映射为9712
    • 挂载数据卷,在/home/vivo-backend/mysql/目录下存放MySQL的日志,配置,数据等信息
    • 设置密码为root
cd /home/vivo-backend/mysql/
docker run -id \
-p 9712:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
  1. 配置后测试能否远程连接上该数据库

  2. 远程在服务器的MySQL容器里新建一个名为vivo-backend 的数据库,字符集选择使用utf8 -- UTF-8 Unicode

  3. 将在本机的数据库里的数据导出为sql文件,并远程移植到服务器的MySQL容器的数据库vivo-backend

  4. 在服务器里通过如下指令,如果能查询到记录则部署MySQL成功

    docker exec -it c_mysql bash
    mysql -uroot -proot #-p后面没有空格!
    use vivo-backend;
    show tables;
    select * from t_user;
    

后端项目部署

后端部分文件部署在/home/vivo-backend/backend/目录下

  1. 往该目录上传有Dockerfilevivo-backend.jar,分别是docker制定镜像指令文件和后端项目的jar包。该目录下还有一个文件夹resources,是用来挂载之后生成后端容器的数据的,后端生成的文件都会保存在这里
cd /
mkdir /home/vivo-backend
mkdir /home/vivo-backend/backend
mkdir /home/vivo-backend/backend/resources
  1. 进入/home/vivo-backend/backend目录,生成后端镜像,取名为fun ,版本是1.0
cd /home/vivo-backend/backend/
docker build -f ./Dockerfile -t fun:1.0 .
  1. 根据后端镜像创建容器,取名为vivo-backend,并挂载数据卷
  • 容器和宿主机的端口号都是使用的9713
  • 把容器里的文件挂载到/home/vivo-backend/backend/resources/ 目录下
  • 生成容器即以守护进程形式在后台运行
docker run -id -p 9713:9713 --name=vivo-backend vivo:1.0
  • 可以通过如下指令来查看数据卷是否挂载成功
cd /home/vivo-backend/backend/resources/
ls
docker exec -it backend bash
cd /usr/local/vivo-backend/resources/
ls
  1. 在浏览器访问 i p : {ip}: ip: p o r t {port} port/swagger-ui.html,如果能访问成功,则后端部署成功。同时该url也是后端项目的API文档,可以用于测试

jenkinsfile

这个因为环境没配好所以应该是错的

pipeline {agent anytools{maven 'maven_3.6.3'}stages {stage('拉取代码') {steps {git credentialsId: '8b4bb2a985c6acd7ef7ed4fd9df90db4ca6d7d2e', url: 'https://git.nju.edu.cn/vivo/vivo_backend.git'echo '拉取成功'}}stage('执行构建') {steps {cd /home/vivo-backend/backend/sh "mvn clean package"echo '构建完成'}}stage('把jar包构建为docker镜像并运行') {steps {# 停止容器docker stop vivo:1.0echo "删除容器"# 删除容器docker rm vivo:1.0# 删除镜像docker rmi vivo:1.0echo "打包镜像"# 打包镜像docker build -f ./Dockerfile -t vivo:1.0 .echo "运行镜像"# 运行镜像docker run -id -p 9713:8082 --name=vivo-backend vivo:1.0echo '运行成功'}}}
}

swagger配置

写个config即可

@Configuration
@EnableSwagger2
public class SwaggerConfig {}

跨域解决

@CrossOrigin好像没用
参考这篇,把方法三写在方法二就好了,原理待了解

@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*")// 设置允许跨域请求的域名.allowedHeaders("*")// 设置允许的请求头.allowCredentials(true)// 是否允许证书.allowedMethods("*")// 允许的方法.maxAge(3600);// 跨域允许时间}@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true);config.addAllowedOriginPattern("*");config.addAllowedHeader("*");config.addAllowedMethod("*");source.registerCorsConfiguration("/**", config); // CORS 配置对所有接口都有效return new CorsFilter(source);}}

其他

  1. 阿里云OSS:参考
    https://www.cnblogs.com/pxblog/p/13402120.html
    https://blog.csdn.net/weixin_45834777/article/details/116211468
  2. wrapper很好用,但xml自定义sql暂时还不会,参考:https://blog.csdn.net/qq_43413788/article/details/103080573
  3. VO里面不用写id
  4. update当然要传id,只传VO的话怎么改
  5. add的接口返回对应的id
  6. 返回数据给前端同学时最好返回java对象,然后会转换为字符串,这样通过key value可以知道数据是什么
  7. builder在构造方法里很好用,加个注解就行
  8. mybatis-plus的set好像有时候会失效,应该是我的原因x
  9. 25小时的马拉松大赛技术大家都大差不差,重点在创意和需求上,答辩要更加分析场景、用户等,用户没必要范围很大,瞄准一部分小群体也是可以的。创意上不要太虚也不要太实,炫酷的库还是要加,融入ai等元素,不然显得太传统。

vivo软件开发马拉松大赛学习总结相关推荐

  1. 转行软件开发的通用学习路径(转自刘校长亲笔)

    [序言] 哈!2015年到啦,我知道好些个朋友今天都许下心愿.立下誓言:"从今天起好好学习 .天天向上,一定要以XXXX方面取得成功!"其中就不乏有朋友是打算在今年从某个" ...

  2. 软件开发专业需要学习多少年

    作为一名IT行业的从业者,同时也在指导计算机专业的研究生,所以我来探讨一下这个问题. 软件开发专业的人才培养通常分为三个阶段,第一个阶段主要是基础知识教育,重点内容在于基础学科和计算机基础课程,包括数 ...

  3. 【献计一刻】软件开发小工的学习和工作清单

    目录 学习基础知识.专业知识和领域知识 工作检查单 软件开发过程中的一些习惯 英语是软件开发的一种语言 图片来源:https://www.dreamstime.com/illustration/nov ...

  4. 第一次写博客-C/C++软件开发工程师需要学习哪些东西?

    学习路线概述 概述 数据结构和算法 操作系统 计算机网络 数据库 设计模式 概述 作为一名本科机械电子,研究生研究计算机视觉方向的211应届毕业生,如何才能从事C/C++软件开发类的工程师呢?如果能有 ...

  5. 软件开发人员PMP学习与考试心得

    背景 从事软件开发及软件项目开发管理将近20年,期间参加过公司组织的若干次项目管理方面的培训,包括PMP.PRINCE 2等.通过这些培训,对软件项目管理标准和知识体系有了一定的了解,对之后的工作也带 ...

  6. 2018校招vivo软件开发岗(提前批)笔试考点

    vivio校招软件开发岗(提前批) 题目类型:总共38道题目,60分钟 25道选择题,10道填空题,2道问答题,1道编程题 软件开发岗涉及到的语言有:C, C++ Java (不要以为投的是C, C+ ...

  7. 2020软件开发趋势预测(学习总结)

    数字化,工业4.0,对软件开发人员的巨大需求. 云计算/云服务.容器技术.软件架构.编程语言.Web开发.APP.深度学习.数据库.数据湖.批处理.流处理.字节码(ByteCode).无代码(No-c ...

  8. [精易软件开发工程师Leo学习笔记]010模块化开发+API

    模块化开发 现在模块化开发分为两种,但是他们也可以说成是一种,都是 1.是模块化设计思维,是把一个产品分为若干个功能(模块),然后若干个子功能拼接起来,就是一个产品 2.减少不必要的重复工作,某个功能 ...

  9. vivo软件开发工程师(Java方向)(2019年春招)

    总结 2019-03-27 初面 2019-04-02 hr面 2019-04-04 签约通知 首先,文章开头还是要感谢我的面试官给我这个机会,让我过了这个面试.感谢他们相信我的能力.我当时已经经历了 ...

最新文章

  1. 阿里云移动数据分析服务使用教程
  2. OpenGL编程指南6:顶点数组
  3. code ./打不开vscode编辑器
  4. Python之SQLAlchemy学习
  5. 在MAC中配置Tomcat+Nginx代理
  6. [转载] python| map()函数应用详解
  7. 热文:if(a==1且a==2且a==3),有没有可能为true?
  8. effective java 枚举_Effective.Java第34-44条(枚举)
  9. URLDecoder/URLEncoder使用场景
  10. 使用 ActiveReports 报表工具,动态创建报表模板
  11. 49个Excel常用技巧
  12. ntfsdos pro v5.0
  13. cat3 utp是不是网线_五类100对屏蔽双绞线UTPCAT3
  14. n服登陆显示从服务器断开,魔兽世界N服卡认证、断开连接的解决方法
  15. Servlet入门学习(二)
  16. Vue Bootstrap 结合学习笔记(一)
  17. 实战Vue:基于Vue的移动端购物商城
  18. 5W1H聊开源之Who——谁“发明”了开源?
  19. 电气工程与计算机最好的大学,加州大学伯克利分校电气工程与计算机科学研究生怎么样?好不好...
  20. 甲骨文考虑收购市值775亿美元的埃森哲

热门文章

  1. java实现初始化三角形数组_Java 数组、多维数组,动态、静态初始化,数组JVM内存模型分析...
  2. 解决 wget Connecting to archive.cloudera.com|151.101.0.167|:443... failed: Connection refused.
  3. AMiner 会议论文推荐第十三期
  4. C语言:【入门】文具店的折扣
  5. 企业上网行为管理软件能为企业带来哪些好处?
  6. 多显示器(Multiple Display Monitors)编程-关于多重独立显示(Multiple independent displays)和桌面扩展(Large desktops)
  7. 基于Python3虚拟环境安装Apache Airflow
  8. OFDM系统的基本原理以及PAPR问题
  9. 记录一个关于上行交换机出现异常情况
  10. [APISpace] 方便开发者寻找、测试API