面对大河我无限惭愧
我年华虚度空有一身疲倦
系列文章目录
- 项目搭建
- app登录
一、项目介绍
1. 项目背景
项目概述:
类似于新闻头条,是一个新闻资讯类项目
(这里之后放项目APP端的截图)
技术架构:
项目术语:
术语 | 描述 | 平台 |
---|---|---|
用户 | 移动端头条APP用户 | 移动端APP |
媒体人 | 通过自媒体系统发送文章的用户 | PC端自媒体系统 |
管理员 | 使用PC端头条管理系统的用户 | PC端管理系统 |
2. 技术栈说明
基础层:
服务层:
3. 流程规划
开发流程:
内容 | 技术点 |
---|---|
环境搭建 | springboot、springcloud、nacos、swagger |
文章列表查看 | freemarker、OSS、CDN、ElasticSearch、Redis |
热点文章计算 | kafka、kafkaStream、xxl-job、Redis |
CMS自媒体端文章发布审核 | 第三方接口、延迟队列 |
项目部署、数据迁徙 | Hbase、Jenkins、Git、Docker |
设计知识点:
- 综合知识的运用: springboot、springcloud、nacos、redis、docker、elasticSearch、kafka、seata…
- 业务或技术解决方案: 分布式事物、分布式任务调度、延迟队列、异步线程、热数据的处理、评论系统、关注点赞…
- 软硬编程思想提升: 业务分析、设计、编码、测试、部署…
二、Nacos
1. vmware
vmware虚拟机安装地址: https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
安装完成后,下载虚拟机镜像: https://pan.baidu.com/s/1tBOqX5TKu18iCGSeMZKDzQ?pwd=abcd
打开虚拟机 解压后的镜像
修改虚拟网络地址(NAT)为 200
修改虚拟机的网络模式为NAT
启动虚拟机:
用户名:root,密码:itcast,ip:192.168.200.130
2. FinalShell
FinalShell安装包地址: https://pan.baidu.com/s/1UmIUqgQhsYKno2LuYBZpng?pwd=abcd
连接虚拟机(SSH连接,账号密码:root/itcast):
3. Nacos
Nacos访问地址: http://192.168.200.130:8848/nacos
Nacos的拉取和容器创建已经提前做了,命令如下:
# docker拉取镜像
docker pull nacos/nacos-server:1.2.0
# 查看全部镜像
docker images
# 创建容器
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
# 列出容器
docker ps
# 查看日志
docker logs -f 【容器id】
二、初始工程搭建
1. 环境准备
JDK1.8、maven-3.6.1
轻量级初始工程: https://pan.baidu.com/s/1VeSL11Lg8-V32ciBcWtGjA?pwd=abcd
maven仓库地址: https://pan.baidu.com/s/1I-ZQraD4M08F33HS5Mv-Ww?pwd=abcd
编码编码格式
2. 工程结构
- heima-leadnews - - - - - 父工程统一管理项目依赖,继承springboot
- heima-leadnews-common - - - - - 一些通用的配置
- heima-leadnews-feign-api - - - - - feign对外的接口
- heima-leadnews-model - - - - - pojo、dto
- heima-leadnews-utils - - - - - 通用的工具
- heima-leadnews-gateway - - - - - 管理网关工程
- heima-leadnews-service - - - - - 管理微服务
- heima-leadnews-test - - - - - 一些测试案例
3. 全局异常
不可控异常处理(了解)src/main/java/com/heima/common/exception/ExceptionCatch.java
:
@ControllerAdvice //控制器增强类
@Slf4j
public class ExceptionCatch {
/**
* 处理不可控异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseResult exception(Exception e){
e.printStackTrace();
log.error("catch exception:{}",e.getMessage());
return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR);
}
/**
* 处理可控异常 自定义异常
* @param e
* @return
*/
@ExceptionHandler(CustomException.class)
@ResponseBody
public ResponseResult exception(CustomException e){
log.error("catch exception:{}",e);
return ResponseResult.errorResult(e.getAppHttpCodeEnum());
}
}