springboot 实训总结
文章目录*做了什么*:做了一个迷你电商系统*如何做的* :1.准备好前端框架2.对前端框架进行分析3.业务流程分析4.springboot工程开始实现相应功能1. 准备好数据库2. 根据数据库自动生成controller,entity ,mapper,xml,server,impl等代码3.自动生成代码的工具类如下:4.对生成的mapper进行测试,看是否可以实现对数据库的操作4.开始写业务代码l
文章目录
实训总结
做了什么:做了一个迷你电商系统
如何做的 :
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 微服务 , 写出一个大一点的微服务项目
更多推荐
所有评论(0)