黑马头条(day01)

目录

项目介绍

业务说明

技术栈

环境搭建

nacos安装

初始工程搭建

登录功能实现

需求分析

表结构分析

思路分析

登录流程

密码加密

接口实现

微服务搭建

功能实现

接口测试

网关

配置网关

全局过滤器实现网关jwt校验

思路分析

具体实现

前端集成

部署思路

配置nginx


项目介绍

业务说明

技术栈

  • Spring-Cloud-Gateway : 微服务之前架设的网关服务,实现服务注册中的API请求路由,以及控制流速控制和熔断处理都是常用的架构手段,而这些功能Gateway天然支持

  • 运用Spring Boot快速开发框架,构建项目工程;并结合Spring Cloud全家桶技术,实现后端个人中心、自媒体、管理中心等微服务。

  • 运用Spring Cloud Alibaba Nacos作为项目中的注册中心和配置中心

  • 运用mybatis-plus作为持久层提升开发效率

  • 运用Kafka完成内部系统消息通知;与客户端系统消息通知;以及实时数据计算

  • 运用Redis缓存技术,实现热数据的计算,提升系统性能指标

  • 使用Mysql存储用户数据,以保证上层数据查询的高性能

  • 使用Mongo存储用户热数据,以保证用户热数据高扩展和高性能指标

  • 使用FastDFS作为静态资源存储器,在其上实现热静态资源缓存、淘汰等功能

  • 运用Hbase技术,存储系统中的冷数据,保证系统数据的可靠性

  • 运用ES搜索技术,对冷数据、文章数据建立索引,以保证冷数据、文章查询性能

  • 运用AI技术,来完成系统自动化功能,以提升效率及节省成本。比如实名认证自动化

  • PMD&P3C : 静态代码扫描工具,在项目中扫描项目代码,检查异常点、优化点、代码规范等,为开发团队提供规范统一,提升项目代码质量

环境搭建

nacos安装

①:docker拉取镜像

docker pull nacos/nacos-server:1.2.0

②:创建容器

docker run --env MODE=standalone --name nacos --restart=always  -d -p 8848:8848 nacos/nacos-server:1.2.0
  • MODE=standalone 单机版

  • --restart=always 开机启动

  • -p 8848:8848 映射端口

  • -d 创建一个守护式容器在后台运行

③:访问地址:http://192.168.xxx.xxx:8848/nacos

初始工程搭建

①:项目依赖环境

  • JDK1.8

  • Intellij Idea

  • maven-3.6.1

  • MySQL 8

②:在链接中下载heima-leadnews.zip文件,拷贝到一个没有中文和空格的目录,使用idea打开即可

heima-leadnews.zip

③:IDEA开发工具配置

④:设置项目编码格式

登录功能实现

需求分析

  • 用户点击开始使用

    登录后的用户权限较大,可以查看,也可以操作(点赞,关注,评论)

  • 用户点击不登录,先看看

       游客只有查看的权限

表结构分析

不同模块下与之相关的内容较多,数据库采用模块分库的模式,app端用户相关的内容较多,所以单独设置一个库leadnews_user

表名称 说明
ap_user APP用户信息表
ap_user_fan APP用户粉丝信息表
ap_user_follow APP用户关注信息表
ap_user_realname APP实名认证信息表

leadnews_user.sql

在链接中下载sql文件,执行该脚本即可创建对应的数据库,数据表及表中以及准备好的数据

登录需要用到的是ap_user表,表结构如下:

项目中的持久层使用的mybatis-plus,一般都使用mybais-plus逆向生成对应的实体类

app_user表对应的实体类如下:

package com.heima.model.user.pojos;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * APP用户信息表
 * @author Dcoin
 */
@Data
@TableName("ap_user")
public class ApUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 密码、通信等加密盐
     */
    @TableField("salt")
    private String salt;

    /**
     * 用户名
     */
    @TableField("name")
    private String name;

    /**
     * 密码,md5加密
     */
    @TableField("password")
    private String password;

    /**
     * 手机号
     */
    @TableField("phone")
    private String phone;

    /**
     * 头像
     */
    @TableField("image")
    private String image;

    /**
     * 0 男
            1 女
            2 未知
     */
    @TableField("sex")
    private Boolean sex;

    /**
     * 0 未
            1 是
     */
    @TableField("is_certification")
    private Boolean certification;

    /**
     * 是否身份认证
     */
    @TableField("is_identity_authentication")
    private Boolean identityAuthentication;

    /**
     * 0正常
            1锁定
     */
    @TableField("status")
    private Boolean status;

    /**
     * 0 普通用户
            1 自媒体人
            2 大V
### 黑马头条 Day9 课程相关内容 黑马头条项目的课程体系设计较为全面,涵盖了从基础到高级的技术知识点。Day9 的课程内容通常会深入讲解微服务架构中的核心组件以及分布式系统的实践细节[^1]。 #### 可能涉及的核心主题 以下是可能属于 Day9 的一些重点内容: 1. **Spring Cloud 高级特性** Spring Cloud 是该项目的重要组成部分之一,在 Day9 中可能会进一步探讨其高级特性和最佳实践,例如 Hystrix 断路器模式、Zuul 网关的优化配置等。 2. **多线程与并发处理** 移动应用后台需要高效地管理大量请求,因此多线程编程和并发控制成为必要技能。这部分内容也可能出现在 Day9 中,并结合实际案例说明如何提升系统性能[^2]。 3. **缓存机制的设计与实现** 对于像黑马头条这样的高频访问平台来说,合理运用 Redis 或其他内存数据库作为缓存层至关重要。预计会在该日学习关于数据一致性模型及其应用场景的知识点。 4. **负载均衡策略** 当流量增加时,单台服务器难以满足需求,则需引入集群部署方案并设置合适的负载分发算法。这方面的理论知识加上动手实验将是学员们掌握的重点部分之一。 5. **监控报警体系建设** 微服务体系下各模块间相互依赖复杂度较高,建立完善的健康状态监测体系不可或缺。可以预见的是,在这一天还会接触到诸如 Prometheus 和 Grafana 这样的开源工具链用于可视化展示指标信息。 ```java // 示例代码片段:Hystrix 命令类定义 public class NewsServiceCommand extends HystrixCommand<String> { private final String name; public NewsServiceCommand(String name) { super(HystrixCommandGroupKey.Factory.asKey("ExampleGroup")); this.name = name; } @Override protected String run() throws Exception { return "Hello " + name + " from Thread " + Thread.currentThread().getName(); } } ``` 上述 Java 示例展示了如何创建一个简单的 Hystrix Command 来增强服务调用的可靠性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值