● 熟悉Java Core,熟悉面向对象设计、异常、集合、多线程、文件与IO流、枚举类、注解、反射、Lambda表达式、网络编程
● 熟悉Java EE, 熟悉Servlet、Filter、Listener、JSP等;
● 熟悉JDBC,熟悉PreparedStatement接口、事务管理、事务隔离、连接池等;
● 熟悉JVM的工作原理,熟悉类加载子系统、虚拟机栈、堆空间、元空间、执行引擎、相关的垃圾回
收器以及相关的垃圾回收算法;
● 熟悉设计模式,如单例模式、工厂模式、代理模式、适配器模式、建造者模式、责任链模式、观察
者模式、模板模式、原型模式、组合模式等,了解代码解耦和扩展的原则;
● 熟悉Maven自动化构建,熟悉依赖的作用范围、生命周期以及依赖冲突时的一些解决策略;
● 熟悉Spring框架,熟悉IOC、AOP、JDBCTemplate、事务管理的工作原理,阅读并研究过源码;
● 熟悉SpringMVC框架 熟悉框架的工作流程,熟悉REST风格的编程;
● 熟悉Mybatis框架,熟悉映射文件的配置、懒加载机制、动态Sql、缓存机制;
● 熟悉SpringBoot框架,熟悉自动化配置的原理、熟悉启动器加载依赖原理、熟悉SpringBoot2下的注
解开发、熟悉SpringBoot运行的流程;
● 了解SpringCloud微服务框架;
● 熟悉Mysql数据库,熟悉SQL查询、explain分析查询、索引的原理,熟悉锁机制,熟悉存储过程;
● 熟悉Redis缓存数据库,熟悉Redis中基本数据类型、主从复制、分布式锁、哨兵;
● 熟悉Linux系统,了解Linux的基本命令,了解权限设置,了解进程查看命令等;
凯迪仕微信小程序
开发技术:Nacos + Seata + SpringBoot + SpringMVC + Mybatis + MySql + Redis
● 购物车模块:在这个模块当中,客户端频繁进行添加和删除,出于性能上的考虑,这里用到了Redis作为缓存,用户在增加和删除购物车信息的时候,都是把对应了信息放在了Hash类型的数据中,键值分别记录了该用户选中那的产品id和数量。
● 商品限时特卖模块:这个模块当中,在redis中设置了有限数量的特价产品的数量,而每个用户限购一份,这里用Hset的数据类型,记录限购成功的客户id,每次在抢购之前先验证该用户之前是否进行过抢购,如果已经有记录,则购买失败;此外在并发环境下,每次下单成功之后,限购的商品数量都要自减,这里有数据覆盖的问题,所以考虑用Redis的乐观锁机制处理。
● 订单模块:用户点击支付的时候,订单生成,这里订单状态有未支付、已支付、交易关闭这几种状态,当用户调用微信支付接口并支付成功的时候,更新订单状态为已支付;如果用户取消了支付,则订单状态为未支付,同时开启了一个TaskSchedule定时任务对象,如果用户在30分钟内没有完成支付,则更新订单状态为交易关闭;
● 支付模块:这里主要是调用了微信的支付接口,根据用户的参数如openid完成对接。这个在用户发起支付的时候,要远程调用购物车模块进行相应商品项的清除,之后生成订单的相关信息。
● 订单查询模块:这里主要是在后台管理系统中对订单的一些统计,这里常用的查询条件有订单号、日期、用户openid。订单表中的主键并不考虑用KDS+时间戳的方式,因为索引字段过大,会影响存储性能,这里考虑用自增的id序列作为主键,自增的索引存储也更加紧凑。优化查询方面,未订单号建立了单值索引,订单号也很长,主要是截取了前面的7位作为索引的键,因为统计过前7位分布比较均匀;
角色 | 职位 |
负责人 | java中级开发 全栈 |
队员 | 前端工程师 |
队员 | 后端工程师 |