<1>Java基础扎实 、熟练掌握JVM原理 、多线程 、反射 、泛型 、注解 、动态代理 、基本数据结构等 。
<2>对Java并发机制有深入理解,熟悉AQS 、CAS 、Lock 、Volatilte、syncchronized等 。熟练使用常用Java集合
类 。
<3>深入理解Redis核心数据结构,了解各种缓存高并发的使用场景,比如缓存雪崩,缓存穿透,缓存击穿等,熟悉过
期策略 、淘汰策略等 。
<4>深入理解JVM底层原理,熟悉JVM各种垃圾收集器的使用以及核心参数的调优 。
<5>深入理解spring ,spring mvc mybatis等开源框架设计原理及底层架构,研究过部分核心功能源码,具备一定的
框架定制开发能力 。
<6>熟悉MySQL,以及索引设计,知道数据库的MVCC机制,事务隔离级别,明白explain对数据库调优 。
<7>了解Spring Boot ,Spring Cloud ,Zookeeper等微服务架构的设计原理及底层架构 。
<8>对于高性能IO通信模型以及开源组件Netty等源码有过一定研究,了解Netty线程模型 。
<9>了解一些分布式场景技术,比如分布式锁,分布式事务等 。
一、数字人民币:
业务逻辑设计 、代码逻辑开发。涉及功能点:批量链、服务编排(工作流) 文件解析 任务拆分
数字人民币兑换
先介绍下项目整体流程,数字人民币智能兑换,对私对公客户签约兑换规则,每日跑批进行兑换交易
具体逻辑:
1 、客户签约,即数币签报-银行卡 、银行卡-数币钱包签约一组兑换规则,兑换周期(按日 按周 按月 隔日) ,以及生效日期 、状态等 。
2 、每日跑批:每日根据当前日期需要执行的兑换数据进行兑换交易
a 、生成需要兑换的数据:根据当前日期获取可执行的数据,首先是生效状态的和已经到生效日期的,如果是按周
看当天是否是对应的星期,如果是按月看当天是不是签约的那一天,查询出需要执行的数据并放入文件中
b 、获取文件并解析入库
c 、拆分入库明细进行兑换交易,交易完成后更新明细状态
d 、兑换交易,获取签约数据,获取数币token,计算交易金额根据签约数据(定额 保底 全额 限额) ,通道交易,交
易失败累计失败次数,交易成功重置失败次数,达到一定失败次数解约签约数据
二、系统升级重构
系统设计 、技术选型
使用spring boot和spring cloud对公司项目进行升级 。
1 、从无到有的搭建微服务项目,其中包括管理功能微服务 、数据库微服务 、缓存微服务 、授权认证API 、工具类
等;
2 、使用shiro和jwt做权限认证( 此过程将权限做成jar,公共部分,供其他微服务权限认证使用), 用redis做缓存机 制,使用JWT生成Token,并用redis缓存Token,使用JWT和redis过期时间来实现长短Token,以便返回给前端新T
oken;
3 、使用mybatis做多数据源;
4 、使用redis做缓存,缓存token,以及用户 、菜单 、字典信息等;
5 、使用Feign和RestTemplate进行服务之间的调用,其中反复尝试并解决了服务之间传参和返回值的形式;
6 、并使用zuul向前端提供统一接口;使用eureka做服务注册中心;