欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

SpringBoot2 仿 B 高性能前端 + 后端项目(已完成)

最编程 2024-06-27 11:34:32
...

SpringBoot2 仿B站高性能前端+后端项目

//xia栽ke呈 lexuecode点c0m

代码生产模块

生产代码:Mybatis-Plus自带的代码生成

包含的功能 Matrix-Web融合了开源界的优秀技术,旨在为开发者迅速搭建一个管理后端,默认包含了以下的功能:

用户管理 角色管理 菜单管理 权限管理 字段管理 业务日志管理 定时任务管理 登录日志统计 密码策略 工作流管理

开发工具和环境

JDK 1.8 IDEA Webstorm node v10.16.0 ,npm v6.9.0

如何运行Matrix-Web

git clone 在MySQL数据库中创建数据库aries,初始化的2个sql文件,依次执行task.sql、matrix-web.sql 在application配置文件配置MySQL 启动后端matrix-web-backend的Spring Boot工程 Spring Boot工程执行成功之后,再执行sql文件夹中的ac522.sql,导入样例工作流数据 前端模块需要安装ndoe.js、vue。然后进入matrix-web-admin目录下,执行以下步骤:

运行 npm install --registry= 运行npm install --unsafe-perm node-sass 运行npm run dev

SpringBoot前端+后端项目开发用户模块开发

第一步:注册功能的实现

1.1持久层的设计 1.1.1规范需要执行的SQL语句 1.用户的注册工作,相当于在做数据的插入操作

1 insert into t_user (username,password) values (?,?) 2.在用户的注册是首先需要查询当前的用户名是否存在,如果存在则不能进行注册,相当于一个查询语句

1 select * from t_user where username = ? 1.1.2设计接口和抽象方法 定义mapper接口,在项目的目录结构下首先创建一个mapper包,在这个包下根据不同的功能模块来创建mapper接口 1.创建一个userMapper 需要考虑上述的两个注意点

package com.cy.store.mapper;

import com.cy.store.pojo.User;

/**

  • 用户模块的持久化层接口 / public interface UserMapper { /*
    • 插入用户的数据->用来实现注册功能
    • @param user
    • @return 受到影响的行数(增删改查 ) */ Integer insert(User user);
    /**
    • 根据用户名查询用户的数据
    • @param username
    • @return 如果找到了则返回相对应的用户信息,找不到返回null */ User findByUsername(String username);

} 1.1.3 编写映射 1.定义xml映射文件,与对应的接口进行关联.所有饿映射文件需要放置在resource目录下,一般为了方便管理,一般在这个目录下创建一个mapper文件夹,然后在找这个文件夹存放相应的mapper 文件 2.创建接口的对应的映射文件,规则:和接口的名称保持一致即可,创建一个UserMapper.xml

1.1.4 单元测试 1.每个独立的层编写完毕需要编写单元测试方法,来测试当前的功能, 在test包下创建一个mapper包 包:test-com.cy.store.mapper.UserMapperTest

package com.cy.store.mapper;

import com.cy.store.pojo.User; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;

/**

  • @PROJECT_NAME: store

  • @DESCRIPTION:

  • @USER: 28416

  • @DATE: 2022/11/2 16:43 / @Slf4j @SpringBootTest public class UserMapperTest { /*

    • 在mapper方法上加上这个注解: @Repository */ @Autowired private UserMapper userMapper;

    /**

    • @Dat 2022年11月2日17:25:41
    • 测试成功 */ @Test public void insert(){ User user = new User(); user.setUsername("tom"); user.setPassword("123456"); Integer insert = userMapper.insert(user); log.info("插入返回的值:{}",insert);

    }

    /**

    • @Date 2022年11月2日17:27:25
    • @return 查询的结果为:User(uid=1, username=tom, password=123456, salt=null, phone=null, email=null, gender=null, avatar=null, isDelete=null)
    • 测试成功 */ @Test public void testFindByUsername(){ User tom = userMapper.findByUsername("tom"); log.info("查询的结果为:{}",tom); } }

1.2注册功能-业务层 1.2.1 规划异常 1.runtimeException异常,作为这个异常的子类,然后在定义具体的异常类型来继承这个异常,业务层异常的基类 serviceException异常,这个异常继承RuntimeException异常,以此建立异常的机制。

2.用户在进行注册时候可能会产生用户名被占用的错误,抛出一个异常 UsernameDuplicatedException

3.正在执行数据插入操作的时候,服务器、数据库宕机。处于正在执行插入的过程中,所产生的异常InsertException

1.2.2 设计接口和抽象方法 1.在service包下创建一个IUserService 2.设计一个实现类的包 3.实现类中重写 注册方法实现完全的用户注册逻辑

@Override public void reg(User user) { //调用findByUsernam 方法 判断用户名是否被注册过 String username = user.getUsername();

    User byUsername = userMapper.findByUsername(username);
    if (byUsername != null){
        throw new UsernameDuplicatedException("用户名被占用");
    }
     
    Integer insert = userMapper.insert(user);
    if (insert != 1){
        throw  new InsertException("在用户注册中产生了位置的异常");
    }
}

1.2.3 在单元测试中创建UserServiceTest类 进行相应的注册逻辑进行测试

SpringBoot2 仿B站高性能前端+后端项目 nginx反向代理

在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用。

可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以自己去找房源,但是这太花费时间精力了,而且房屋质量检测以及房屋过户等一系列手续也都得我们去办,再说现在这个社会,等我们找到房源,说不定房子都已经涨价了,那么怎么办呢?最简单快捷的方法就是找二手房中介公司(为什么?别人那里房源多啊),于是我们就委托中介公司来给我找合适的房子,以及后续的质量检测过户等操作,我们只需要选好自己想要的房子,然后交钱就行了。

代理简单来说,就是如果我们想做什么,但又不想直接去做,那么这时候就找另外一个人帮我们去做。那么这个例子里面的中介公司就是给我们做代理服务的,我们委托中介公司帮我们找房子。

Nginx 主要能够代理如下几种协议,其中用到的最多的就是做Http代理服务器。

回到顶部 2、正向代理 弄清楚什么是代理了,那么什么又是正向代理呢?

这里我再举一个例子:大家都知道,现在国内是访问不了 Google的,那么怎么才能访问 Google呢?我们又想,美国人不是能访问 Google吗(这不废话,Google就是美国的),如果我们电脑的对外公网 IP 地址能变成美国的 IP 地址,那不就可以访问 Google了。你很聪明,VPN 就是这样产生的。我们在访问 Google 时,先连上 VPN 服务器将我们的 IP 地址变成美国的 IP 地址,然后就可以顺利的访问了。

这里的 VPN 就是做正向代理的。正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端。这里客户端是要进行一些正向代理的设置的。

PS:这里介绍一下什么是 VPN,VPN 通俗的讲就是一种中转服务,当我们电脑接入 VPN 后,我们对外 IP 地址就会变成 VPN 服务器的 公网 IP,我们请求或接受任何数据都会通过这个VPN 服务器然后传入到我们本机。这样做有什么好处呢?比如 VPN 游戏加速方面的原理,我们要玩网通区的 LOL,但是本机接入的是电信的宽带,玩网通区的会比较卡,这时候就利用 VPN 将电信网络变为网通网络,然后在玩网通区的LOL就不会卡了(注意:VPN 是不能增加带宽的,不要以为不卡了是因为网速提升了)。

可能听到这里大家还是很抽象,没关系,和下面的反向代理对比理解就简单了。

回到顶部 3、反向代理 反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

推荐阅读