具备良好的java基础,如集合的应用,面向对象开发,单例模式的应用等;
具备一定的前端web基础,如HTML,CSS,JS,Ajax,Vue等;
掌握Spring,SpringMVC,Mybatis,SpringBoot框架的使用;
掌握Mysql数据库的基本操作,对sql优化有一定的了解;
了解Linux的一些基础应用,如:通过Linux虚拟机发布项目;
对微服务SpringCloud框架有一定的了解,且了解一些微服务的相关组件使用,如:Nacos,Sentinel,Feign,Gateway等;
掌握的开发工具,如:idea,Maven,HBuilderX,SQLyog,Node,Nginx,Redis,Postman,Git等;
具备良好的异常处理能力;
商品管理系统
项目描述:
该系统可以方便用户管理商品的发布,使用状态,库存数量,价格,以及商品的删除修改操作;
项目模块:
用户登录校验,用户列表管理,商品管理(包括:商品分类管理和商品列表管理),用户权限管理,系统日志管理;
负责模块: 商品管理模块
涉及技术:
Springboot,SpringMVC,Mybatis,Mysql,HashMap应用
工作内容:
商品模糊查询,商品添加操作,商品修改操作,商品删除操作,商品分页查询操作,三级分类列表展示,分类新增,分类的多级删除,分类的修改
项目难点:
①用多表联查方式实现多级分类分列表查询时有效率低的问题,然而利用Map集合封装数据,只执行一次查询,获取数据时直接从Map集合中获取即可,二次查询时效率可提高数倍;
②多级分类在封装过程中抛出的空指针异常(原因是由于一级分类下没有子级导致三级分类封装找不父类),这个异常在编译时期不会报错,通过查看运行时期抛出异常进行分析得以解决;
③商品新增业务中,图片上传需要考虑文件的合法性,另外需要考虑图片保存的路径,以及图片回显效果时需要配置反向代理(Nginx);
④客户端在操作页面时显示操作失败,而数据库却执行成功操作了,在同一个方法中存在多个sql操作时,每个sql操作默认是开启事务的,当sql之间除了运行期异常(入算术异常),那么就有可能会一部分sql执行了,而另一部分sql没有成功执行,失去数据库的原子性,解决方案在接口实现类的怎删改方法上添加@Transactional注解,,防止运行时期的异常导致用户操作与数据库操作不一致;
认证登录系统
项目描述:
该系统主要通过单点登录访问实现多个服务的访问权限控制,是一个比较简便的微服务架构
项目模块:
公共组件,资源操作服务,用户系统服务,认证服务,网关服务,前端页面服务
负责模块: 认证服务模块
涉及技术:
SpringSSM框架,Mybatis-plus,Nacos,Feign,Oauth2,Jwt令牌,Mysql
工作内容:
①实现UserDetail接口,这是一个认证服务执行链中的一个组件
②写token配置类(包括:Tokenstore令牌存储的方式定义,令牌的创建和解析对象)
③安全认证配置类(包括:加密方式定义,认证管理对象,定义认证的访问规则)
④Oauth2认证配置类(包括:指定要使用的token策略,指定要使用的安全认证策略)大体上就是一个认证的增强
项目难点:
由于Oauth2使用的时候很陌生,需要去参考spring官网中的源码去模仿写
叮叮影院后台服务
项目描述:
该系统可以为影院提供一些简便的电影管理,用户交互管理的操作
项目模块:
用户管理、电影管理、订单管理、评论管理、放映厅管理、日志管理模块等
负责模块: 日志管理
涉及技术:
Springboot,SpringMVC,Mybatis,AOP应用,Async
工作内容
封装日志实体类(id,用户名,操作名称,方法名,参数,执行时间,日志创建时间,错误信息),自定义注解(后面用于切点挂载),自定义切面对象(包含切点定义,以及环绕通知),后台系统中提供查询日志,删除日志的功能
项目难点
①日志的新增操作可能会影响到web服务访问效率,所以这里用到了一个@EnableAsync 和 @Async注解,前者放在启动类上,后者用在日志添加和删除的方法上,好处时不会长时间阻塞web服务,异步操作资源使用的是spring自带线程池执行
②获取注解中的参数值(操作名称)-获取参数所在的注解-获取注解所在的方法-获取方法所在类,最后我参考了SentinelResourceAspect官方代码
③用户名获取,参考了Security官方代码写