基础知识:
1. 掌握链表、树、栈、队列和哈希表等数据结构,以及它们的操作;
2. 掌握二分查找、归并排序、快速排序、冒泡排序、插入排序、选择排序等查找排序算法;
3. 掌握 JVM 堆、栈、垃圾收集算法、收集器、实操虚拟机性能监控与故障处理工具。
4. 掌握 Java 并发机制的底层实现、Java 内存模式、Java 中的 synchronize 锁机制、ConcurrentHashMap 等 容器框架的实现原理、Java 中的并发工具类、底层的 Unsafe 类及其 CAS 循环锁都有研究。 5. 掌握 Oracle、Mysql 等数据库的视图、存储过程、函数、序列、触发器、Mysql 的索引优化、慢查询语句分 析、存储引擎、数据库备份与恢复、数据库事务隔离级别以及锁的机制等进行应用。
6. 掌握 Java 线程池实现原理和使用,对 Executors 工具类与 ThreadPoolExecutor 实现类熟练掌握。
7. 熟练 Linux 的常用命令、Shell 脚本的编写、文件的权限和变量的取用与设置以及生产日志的查询与分析。
框架类知识:
8. 掌握 Spring 底层 IOC、AOP 的核心源码与 Spring 事务和 Spring MVC 等子项目的实现逻辑;
9. 掌握 Reids 缓存机制、分布式锁、主从同步、Cluster、Sentinel、Reids 事务和 Reids 的线程模式等;
10. 掌握 Java IO/NIO 以及 NIO 的框架 Netty 的粘包与拆包、客户端与服务端源码。以及对 Netty 的 ByteBuf、 Channel、ChannelPipeline、ChannelHandler、EventLoop 与 EventLoopGroup 等底层源码进行探索。
11. 掌握跨语言的序列化框架 Google 的 Protobuf 和 Facebook 的 Thrift 并与 Netty 结合使用。
12. 掌握 RPC 服务的原理,对 gRPC 与 Dubbo 中的集群容错机制与负载均衡以及服务降级等功能熟悉,并对 Dubbo 的源码及其实现进行了探索。
13. 掌握 23 中设计模式和七大设计原则。在 Spring 与 Netty 的源码学习中,对设计模式的变种进行总
项目名称(一):FICC 交易通系统【2019.03 – 至今】
使用的主要技术:
1. 采用 Dubbox+SSM(Spring+SpringMVC+Mybatis)搭建分布式应用。
2. 系统界面设计使用的是 easyUI 框架技术,页面传值使用标签技术及 Ajax 等。
3. 登录模块使用 CAS 与 SpringSecurity 组合技术,实现多节点的登录和验证功能,加密使用 MD5 算法。
4. 使用 Spring 声明式事务管理事务,连接池采用 C3P0、事务管理器为 DataSourceTransactionManager。
5. 使用 Mysql 数据库,存储引擎选择默认的 InnoDB 引擎。采用 Mycat 进行数据库分库分表操作。
6. 采用 SpringDataRedis 的 Zset 数据结构存储牌价信息。使用“心跳检测”技术监控牌价信息。
7. Spring 整合消息中间件 Kafka 进行数据价格的接收、询价和报价等,并对消息进行 JDBC 持久化操作。
8. 搭建 Nginx 集群环境,配置负载均衡与反向代理,保证项目在高并发下能够正常运行。
9. 使用模板模式设计签约模块、观察者模式设计询价模块、桥接模式设计产品模块,多处使用工厂模式等。
10. 通过 SpringTask 轮询挂单交易,利用线程池管理线程进行签约,并使用线程封装技术对共享数据进行处理。
功能模块描述:
1. 牌价模块:实时接收市场牌价,对放入缓存的牌价进行超时检测并通知用户,并根据市场推送的“标准期限” 价格,通过“两点式方程”算法计算非标准期限的价格等;
2. 外汇模块:根据实盘价格,发起即、远、掉签约交易。根据客户等级与金额取对应升贴水和授信,当为询价交 易时,需要通过消息总线向报价引擎询价。交易落地时需向核心发送账务信息,并对发送失败的账务信息进行 晚间批量发送。同时将交易信息异步发送 Murex 系统,价格需要进行拆分。对保证金和授信进行释放等;
3. 外汇存续期模块:对交易的远、掉交易进行特殊事件处理,根据客户需求可进行违约、提前交割、原价展期、 市价展期、强平、宽限等特殊处理。
4. 保证金与授信模块:实现部分与整体的增补与释放,以及根据保证金金额和风险因子进行估值与套查功能。
5. 账务模块:对所有的签约及特殊交易事件配置账务规则,根据客户号、机构、货币对等要素组装账务明细。对 金额的正确性要求极高,此模块不断进行代码走查、优化和重构,是系统最核心的模块。
6. 统计模块:统计未交割金额、已反平金额、展期金额、交割金额、损益金额等根据客户、机构进行结算。
职责描述:
1. 作为外汇模块的负责人,根据《用户需求说明书》分析用户需求并完成《软件需求规格说明书》。设计软件功 能和实现技术、算法和设计模式,完成《详细设计说明书》初稿。并对开发人员进行外汇业务培训。
2. 搭建 SSM 架构和 Redis、Kafka、Nginx 等开发环境,对服务地址等重要信息整理成数据字典,放便查阅。
3. 阶段性组织同事参加晨会,对开发进度和遇到的问题进行答复。每周举行周会对《项目开发计划》进行调整。
4. 根据开发计划完成核心模块开发,解决同事遇到的业务和技术问题。走查同事代码,整理存在缺陷与可重构代 码,并给出优化方案。整理外汇模块的应急卡片和参考学习文档。
5. 组织同事之间进行技术交流培训,并根据公司规范编写培训文档和视频录制,方便后期工作的交接和维护。制 作的 Redis 培训文档被评为优秀文档并纳入月刊和学习资料中。
项目名称(二):网银系统【2018.03 – 2019.02】
使用的主要技术:
1. 使用 Netty 与量化系统进行通信。并使用 Thrift 作为数据的编解码框架,实现跨语言的通信。
2. 采用 SpringBoot 进行单模块开发,嵌入 Tomcat 做为 Web 容器,与阿里大于整合实现短信通知等功能。
3. 使用 SpringCloud 搭建分布式架构,消息总线、分布式配置中心、负载均衡等技术对微服务进行管理。
4. 采用 Kafka 作为中间件,并与 Spring Cloud Bus 进行整合使用,降低与外部系统的耦合。
5. 使用 Mysql 数据库作为关系型数据库、Redis 作为非关系型数据库存储数据。使用 Spring 整合数组库中间件 MyBatis 进行数据操作,通过 MyBatis-Generator 逆向生成工程文件。
6. 使用 Git 进行版本管理、Freemarker 实现网页静态化、线程池管理多线程、有界阻塞队列存放消息、Docker 解
FICC 交易通系统 使用的主要技术: 1. 采用 Dubbox+SSM(Spring+SpringMVC+Mybatis)搭建分布式应用。 2. 系统界面设计使用的是 easyUI 框架技术,页面传值使用标签技术及 Ajax 等。 3. 登录模块使用 CAS 与
网银系统 使用的主要技术: 1. 使用 Netty 与量化系统进行通信。并使用 Thrift 作为数据的编解码框架,实现跨语言的通信。 2. 采用 SpringBoot 进行单模块开发,嵌入 Tomcat 做为 Web 容器,与阿里大于整合实现短信通知等功能。 3.