实训总结

做了什么:做了一个迷你电商系统

如何做的 :

1.准备好前端框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mzkCct7L-1625543659135)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624959652677.png)]

2.对前端框架进行分析

> 主页如下:
>
> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJ8ZWbod-1625543659139)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624959411262.png)]
>
> 
>
> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MuGMCp52-1625543659141)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624959528821.png)]
>
> 可以看出,首页需要是数据有全部商品分类  对应的三级分类,已经顶部的一级分类
>
> 商品分类下面的分类展示,左右两边的图片   每个商品的名字,价格,图片
>
> 需要数据:  商品的图片,价格,名字,对应的分类  以及左右两边分类下面对应的图片
>
> 

商品页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BKXdDeFU-1625543659143)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624960185248.png)]

商品页要展示名字 价格 图片

商品详情页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0b0JAfJ-1625543659144)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624960265603.png)]

商品详情页要展示名字 价格 图片 颜色 型号 库存 以及购买数量

购物车页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwcTMm4o-1625543659145)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624960603656.png)]

分别需要名称 单价 购买数量 小计

订单确认页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jtvNC64G-1625543659146)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624960704154.png)]

商品图片 :名称 购买数量 合计价格

收货人信息:用户名 登录名称 手机 邮箱 地址

订单提交页:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-da2KZ9Lz-1625543659146)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624960891017.png)]

需要选定的配送方式 支付方式 付款金额 订单号 收货人信心 地址

登录界面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bOuDXK8I-1625543659147)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961771802.png)]

需要用户名和密码

注册页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JeELG9A2-1625543659148)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961813198.png)]

用户名 密码 真实姓名 身份证 邮箱 手机

管理中心:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vAB01iBQ-1625543659149)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624962008133.png)]

用户名 性别 邮箱 手机

订单页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8sTLnUis-1625543659149)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624962175124.png)]

用户名 地址 价格合计 订单号

单个商品名称 图片 数量 单价 合计

3.业务流程分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-noKN0JGX-1625543659150)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961141477.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Gkc7iaI-1625543659151)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961155704.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lZQ738nb-1625543659153)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961318567.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R2GZ68eC-1625543659154)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961340806.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MS4usDnr-1625543659154)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961366289.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJeboMnm-1625543659155)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1624961391178.png)]

点击分类进入相应分类的商品 , 点击商品 进入对应的商品 , 点击加入购物车,数据放入购物车 点击确认订单 生成唯一订单 清除购物车 展示订单信息

4.springboot工程开始实现相应功能

1. 准备好数据库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qXSfNSxi-1625543659156)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625148729138.png)]

2. 根据数据库自动生成controller,entity ,mapper,xml,server,impl等代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sGBoXoZ8-1625543659156)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625148949380.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dosWDG3x-1625543659157)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625148966068.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YZPSJhC-1625543659157)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625148982992.png)]

3.自动生成代码的工具类如下:

package com.cz.mmall;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author ztw
 * @Date 2021/6/12 18:10
 */
public class Main {
    public static void main(String[] args) {
        AutoGenerator autoGenerator = new AutoGenerator();
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("102400");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mmall?useUnicode=true&characterEncoding=UTF-8");
        autoGenerator.setDataSource(dataSourceConfig);
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOpen(true);
        globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
        globalConfig.setAuthor("ztw");
        globalConfig.setServiceName("%sService");
        autoGenerator.setGlobalConfig(globalConfig);
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.cz.mmall");
        packageConfig.setEntity("entity");
        packageConfig.setMapper("mapper");
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        autoGenerator.setPackageInfo(packageConfig);
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);

        List<TableFill> list = new ArrayList<>();
        TableFill tableFill1 = new TableFill("create_time", FieldFill.INSERT);
        TableFill tableFill2 = new TableFill("update_time",FieldFill.INSERT_UPDATE);
        list.add(tableFill1);
        list.add(tableFill2);

        strategyConfig.setTableFillList(list);
        autoGenerator.setStrategy(strategyConfig);

        autoGenerator.execute();
    }
}

使用该工具类需要导入依赖:

<!--        自动生成代码的依赖-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

4.对生成的mapper进行测试,看是否可以实现对数据库的操作

对商品种类进行测试

package com.cz.mmall.mapper;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.*;

/**
 * @Author ztw
 * @Date 2021/6/13 0:45
 */
@SpringBootTest
class ProductCategoryMapperTest {
    @Autowired
    private ProductCategoryMapper mapper;
    @Test
    void test(){
        mapper.selectList(null).forEach(System.out::println);
    }
}

4.开始写业务代码

login

  • 前端传来的数据:

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVucNmOR-1625543659159)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625150300441.png)]

  • 后端以对应的接收

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wapkDLvI-1625543659161)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625150351569.png)]

/**
     * 登录
     * @param loginName
     * @param password
     * @param session
     * @return
     */
    @PostMapping("/login")
    public String login(String loginName, String password, HttpSession session){
       //以传入的数据做条件 在数据库中查询
        QueryWrapper wrapper = new QueryWrapper<>();
        wrapper.eq("login_name",loginName);
        wrapper.eq("password",password);
        User user = userService.getOne(wrapper);
        //不存在值,重新回到login页面
        if (user ==null){
            return "login";
        //否则重定向到  productCategory/list  即是首页
        }else {
            session.setAttribute("user",user);
            return "redirect:/productCategory/list";
        }
    }

基本没一个页面的都是这样的,前端给需要的数据请求传到后端,后端获取到数据后传入前端,前端给数据取出放到对应的页面

main

最开始进前端页面分析了,所以只需要给相应的数据从数据库中查询出来,传到页面进行渲染就OK了,但是所需要的数据库中没有可以直接拿来用的

由于数据表结构 和视图层结构不对应,没有办法操作 所以需要viewobject使数据库数据结构转换为视图需要的结果* 做法:建立vo类 和视图结构对应 如下children中嵌套了ProductCategoryVO

做法如下:

ProductCategoryVO

讲需要的数据封装到一个vo

package com.cz.mmall.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @Author ztw
 * @Date 2021/6/13 0:51
 * viewobject
 * 由于数据表结构 和视图层结构不对应,没有办法操作 所以需要viewobject使数据库数据结构转换为视图需要的结果
 * 做法:建立vo类 和视图结构对应  如下children中嵌套了ProductCategoryVO
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProductCategoryVO {
    private Integer id;
    private String name;
    //商品分类 二级菜单
    private List<ProductCategoryVO> children;
    //图片
    private String bannerImg;
    private String topImg;
    //需要的商品数据
    private List<ProductVO> productVOList;
    //只需要ID 和name
    public ProductCategoryVO(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
}

productvo

package com.cz.mmall.vo;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * @Author ztw
 * @Date 2021/6/13 18:53
 */
@Data
@AllArgsConstructor
public class ProductVO {
    private Integer id;
    private String name;
    private float price;
    private String filename;



}

ProductCategoryServiceImpl

此处是三级分类,需要讲查询到的商品数据循环嵌套放入productVOList中

大致意思是:以商品类型为条件,查询到所有的数据,讲需要的数据保存在ProductCategoryVO

数据结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJmAdOKQ-1625543659162)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625185982007.png)]

package com.cz.mmall.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cz.mmall.entity.Product;
import com.cz.mmall.entity.ProductCategory;
import com.cz.mmall.mapper.ProductCategoryMapper;
import com.cz.mmall.mapper.ProductMapper;
import com.cz.mmall.service.ProductCategoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cz.mmall.vo.ProductCategoryVO;
import com.cz.mmall.vo.ProductVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author ztw
 * @since 2021-06-12
 */
@Service
public class ProductCategoryServiceImpl extends ServiceImpl<ProductCategoryMapper, ProductCategory> implements ProductCategoryService {
    /**
     * 此处的productCategoryMapper 等在idea会爆红是一个警告
     */
    @Autowired
    private ProductCategoryMapper productCategoryMapper;
    @Autowired
    private ProductMapper productMapper;

    @Override
    public List<ProductCategoryVO> getAllProductCategoryVO() {
//        List<ProductCategory> productCategoryList = productCategoryMapper.selectList(null);
//        ProductCategoryVO productCategoryVO = new ProductCategoryVO();
//        for (ProductCategory productCategory : productCategoryList) {
//            //讲第一个中的值,复制到第二个中
//            BeanUtils.copyProperties(productCategory,productCategoryVO);
//        }
//        QueryWrapper wrapper = new QueryWrapper<>();
//        wrapper.eq("type",1);
//        List<ProductCategory> levelOne = productCategoryMapper.selectList(wrapper);
//        wrapper.eq("type",2);
//        List<ProductCategory> levelTwo = productCategoryMapper.selectList(wrapper);
//        wrapper.eq("type",3);
//        List<ProductCategory> levelThere = productCategoryMapper.selectList(wrapper);
        QueryWrapper wrapper = new QueryWrapper<>();
        wrapper.eq("type", 1);
        List<ProductCategory> levelOne = productCategoryMapper.selectList(wrapper);
        List<ProductCategoryVO> levelOneVO = levelOne.stream().map(e -> new ProductCategoryVO(e.getId(), e.getName())).collect(Collectors.toList());

        //图片赋值
        //商品信息赋值
        //将数据查出来  所需要数据进行封装 装入vo中
        for (int i = 0; i < levelOneVO.size(); i++) {
            levelOneVO.get(i).setBannerImg("/images/banner"+i+".png");
            levelOneVO.get(i).setTopImg("/images/top"+i+".png");
            wrapper = new QueryWrapper<>();
            wrapper.eq("categorylevelone_id",levelOneVO.get(i).getId());
            List<Product> productList = productMapper.selectList(wrapper);
            //productList 的值 取出来 放入productVOList 中
            List<ProductVO> productVOList = productList.stream().map(e ->new ProductVO(
                    e.getId(),
                    e.getName(),
                    e.getPrice(),
                    e.getFileName()


            )).collect(Collectors.toList());
            levelOneVO.get(i).setProductVOList(productVOList);
        }

        for (ProductCategoryVO leveloneproductCategoryVO : levelOneVO) {
            wrapper = new QueryWrapper<>();
            wrapper.eq("type", 2);
            wrapper.eq("parent_id", leveloneproductCategoryVO.getId());
            List<ProductCategory> levelTwo = productCategoryMapper.selectList(wrapper);
            List<ProductCategoryVO> levelTwoVO = levelTwo.stream().map(e -> new ProductCategoryVO(e.getId(), e.getName())).collect(Collectors.toList());
            leveloneproductCategoryVO.setChildren(levelTwoVO);
            for (ProductCategoryVO levelTwoproductCategoryVO : levelTwoVO) {
                wrapper = new QueryWrapper<>();
                wrapper.eq("type", 3);
                wrapper.eq("parent_id", levelTwoproductCategoryVO.getId());
                List<ProductCategory> levelThree = productCategoryMapper.selectList(wrapper);
                List<ProductCategoryVO> levelThreeVO = levelThree.stream().map(e -> new ProductCategoryVO(e.getId(), e.getName())).collect(Collectors.toList());
                levelTwoproductCategoryVO.setChildren(levelThreeVO);

            }

        }
        return levelOneVO;

    }

}

其他的大致也是这样,只是细节的地方不一样

还有一些其他的功能 , 比如过滤器 , 自定义异常 , vo , 通过Enum 来判断库存的值 , 和男女 , 日志等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZHHUCWgL-1625543659163)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625191970016.png)]

5.开发完成,部署上线

准备一个服务器,可以去买云服务器或者安装一个centos 虚拟机

1. 安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

2.在宝塔安装如下(redis不用)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSB2pNTL-1625543659164)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625186496035.png)]

3.数据库使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sA4zwo3L-1625543659166)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625186755878.png)]

4.部署

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRQ0bhki-1625543659166)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625186915530.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GJxRV1H0-1625543659167)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625186997489.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0j0U602-1625543659168)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187013683.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PuNuOwFp-1625543659169)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187038279.png)]

5. 接下来上传java jar包

可以直接拖拽进去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-luRkDOZf-1625543659170)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187234965.png)]

6.运行

进入目标文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HhCUG6i-1625543659171)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187295447.png)]

java -jar mmall-0.0.1-SNAPSHOT.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PTsFKs3f-1625543659172)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187400912.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dEJWt7Gw-1625543659173)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625187447333.png)]

后台运行命令

nohup java -jar shareniu.jar &

所做的结果 :

http://8.142.165.209:8081/

基本完成了一个简易电商系统该有的功能,浏览 , 登录,注册,加入购物车 ,下单 ,填写地址,生成商品订单等功能

完成了视频教程没有实现的一些功能, 修复了多个视频教程留下的bug , 也修复了一些部署上线后,发现的bug

实训后自己所取得的进步 :

​ 这次实训收货还是挺大的 , 完成了这么久以来 一直想完成的,拥有一个自己的网站,别人可以访问的

基本了解了一个springboot项目的所有流程,下一次,也可以不用照着视频敲了(提供好前端页面和数据库) ,当然花的时间可能要长一点

​ 在写代码的时候遇到了一些问题,感觉代码没有写错,但是,获取到是数据要么是空 ,要么值是不对的 , 百思不得其解, 由于没有报错 ,于是学习如何debug(以前只是知道有这个功能 , debug的能力很重要,但是自己还是不以为然 , 因为我不会 , 现在掌握了一点皮毛 ,感觉用着真香 ) ,看视频 , 博客 ,文档 , 掌握了基本的用法 ,发现是vo哪点的问题,由于写快了 没仔细看 levelTwoVO 用了两次,导致数据对不上, levelThree 没显示空的数据

​ 此次实训的主要三个收获:

1.熟悉了一个springboot项目的完整流程

2.学会了使用debug解决问题(和自己的要求对不上的)

3.每一步都要细心(不然很容易出错) 与 细致 (每一块都可以做到极致 , 比如此次项目的库存 , 当库存不足的使用,为了防止用户界面出现报错 , 下单了没有商品, 直接发了下单的请求(程序员才会,也不排除客服误打误撞) ,我们可以在 前端页面 进行拦截 ,在后端以过滤器拦截 , 发送请假的时候继续对请求进行判断 )

为什么要细心了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhT8qQWJ-1625543659173)(C:\Users\初凉\AppData\Roaming\Typora\typora-user-images\1625190402353.png)]

就一个小小的引号

还有很多的问题都是因为自己的不细心造成的 , 浪费了 很多的时间(头都大了)

实训后自己还在哪些方面存大不足 :

​ 知识储备不足 , 跟着老师敲 , 敲的也快 , 遇到的问题也少, 自己去实现的时候 , bug 一大堆 , 特别是视频看完后 , 自己完成老师没有写的几个页面 和一些没有修复的bug(老师讲的时候,没有去测试,所以bug还是挺多的) , 跟着老师的视频敲 差不多用了四天的时间(放假那几天 ,差不多一个星期都在宿舍 , 早上敲到晚上, 有两天 , 晚上两点了还在搞 哈哈哈) ,但是自己写老师没有完成的两个页面 和修复存在的bug 和部署的时候出现的bug ,话费了5天左右吧 ,自己写那两个没有实现的页面花了一天半 , 修复bug三天半

​ 如果知识储备充足的话 , 遇到问题可以很快的排查并解决(比如现在的我在去写一个springboot项目 , 再次遇到问题的处理能力肯定有所提高 ) , 在写项目的时候 , 基本没有一次是顺利的 , 多多少少 大大小小都要出一些问题 , 踩了很多的坑

今后打算如何去克服 :

继续学 , 使劲学 , 拼命学 , 多敲代码 , 提高知识储备

接下来的目标 :

​ 学习 springcould 微服务 , 写出一个大一点的微服务项目

就一个小小的引号

还有很多的问题都是因为自己的不细心造成的 , 浪费了 很多的时间(头都大了)

实训后自己还在哪些方面存大不足 :

​ 知识储备不足 , 跟着老师敲 , 敲的也快 , 遇到的问题也少, 自己去实现的时候 , bug 一大堆 , 特别是视频看完后 , 自己完成老师没有写的几个页面 和一些没有修复的bug(老师讲的时候,没有去测试,所以bug还是挺多的) , 跟着老师的视频敲 差不多用了四天的时间(放假那几天 ,差不多一个星期都在宿舍 , 早上敲到晚上, 有两天 , 晚上两点了还在搞 哈哈哈) ,但是自己写老师没有完成的两个页面 和修复存在的bug 和部署的时候出现的bug ,话费了5天左右吧 ,自己写那两个没有实现的页面花了一天半 , 修复bug三天半

​ 如果知识储备充足的话 , 遇到问题可以很快的排查并解决(比如现在的我在去写一个springboot项目 , 再次遇到问题的处理能力肯定有所提高 ) , 在写项目的时候 , 基本没有一次是顺利的 , 多多少少 大大小小都要出一些问题 , 踩了很多的坑

今后打算如何去克服 :

继续学 , 使劲学 , 拼命学 , 多敲代码 , 提高知识储备

接下来的目标 :

​ 学习 springcould 微服务 , 写出一个大一点的微服务项目

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐