熟练运用 pgSql、Mysql、Oracle 等主流关系型数据库,掌握 mysql 锁、索引等原
理、具备 SQL 优化能力;
掌握 Spring,掌握核心源码,并熟练运用 SpringMVC、Mybatis、Mybatis-Plus
等主流开发框架;
掌握 SpringBoot,SpringCloud 微服务框架的使用;
熟悉 JVM,包括内存模型、垃圾回收机制等,具备 jvm 调优经验;
熟悉 IO、Netty,具备 netty 编码能力;
掌握 JUC 并发编程,具备熟练的多线程并发经验;
熟悉 Kotlin,能流畅使用 Kotlin 进行编码。 对算法有一定了解,熟悉常用的设计模式;
掌握 redis 数据库的使用及其核心原理;
掌握 Docker 容器的使用;
熟悉 RPC,并掌握 dubbo 的使用;
掌握 RabbitMQ 的使用及其核心原理;
掌握 Linux 常用命令,具备 shell 编写能力;
掌握 nginx、zookeeper、GateWay、Nacos、seata 常见组件,Feigh 动态代理
以及 Elasticsearch 分布式搜索引擎的使用;
熟练使用 git、maven、svn、gitlab、禅道工具;
熟悉使用 Axure 软件绘制高保真原型图;
有良好的代码规范、追求写出干净优质的代码。
项目名称:intePLM
项目描述:是针对产品全生命周期管理的系统,是面向制造企业产品生命周期信息化管理的整体解决方案。功能主要有 CAD(图纸)
管理、part(部件)管理、doc(文档)管理、 ec(需求变更)管理、高级搜索管理。
技术选型:springboot,MybatisPlus,Pgsql,Redis,es,nacos,seata,rabbitmq。
个人职责:
负责所分配功能模块的详细设计、功能开发;
单元测试,代码优化工作;
和前端联调,解决项目 bug。
项目名称:中台旗舰版
项目描述:是基于华为中台二次开发的企业管理项目、包括立项管理、项目管理、任务管理、工时管理等。
技术选型:springboot,MybatisPlus,Pgsql,Redis,es,nacos,seata,http 远程调用 restTemplate,rabbitmq。
个人职责:(同上)
技术突破:
参与开发 CAD 模块,因为 cad 模块数据量较大,对接口性能要求较高,多次参与接口重构,sql 优化,曾将一个 20w 返回数据
的接口由 8s 提升至 2s,性能提升 400%;
参与项目管理模块开发,包括工时管理、项目管理等,期间独立完成动态数据源功能的开发,并主动针对项目运行期间多次莫名
奇妙发生写库的操作跑到读库去的 bug 定位出了原因,即线程变量+线程池使用导致、线程变量没及时清理导致;
参与高级搜索模块开发,数据存储主为 pg 和 es,并独立搭建调通 canal 和 rabbitmq 信息同步,参与了 pg 和 es 数据同步开发;
曾独立定位出项目中角色成员管理出现漏加的 bug,问题在于多个用户同时添加某个角色下的成员产生的并发线程安全问题,本
来是想添加 5 个,结果只添加了 4 个。基于当时项目初期是单机部署的情况,用 synchronized 配合双检查解决了问题。后面项
目采用了微服务架构,jvm 级别的锁失效了,为避免再次出现此类问题,主动向项目组提出评审,添加分布式锁框架 redission。
项目名称:NetEDS
项目描述:是一款基于商用窑码算法与技术实现的高性能数据安全产品。功能包含密钥管理、KMIP、通用加解密、数据库切面加解
密、切面 Hmac、脱敏管理等多种安全服务。
技术选型:springboot,MybatisPlus,Mysql,Netty。
个人职责:
完成相关服务模块的设计与开发,配合前端完成开发;
完成测试过程中的 BUG 修改;
配合运维完成服务上线。
技术突破:
Jvm 调优:有个客户生产环境只要数据量超过 1000w,很容易发生堆内存溢出。通过 jcmd 获得目标服务的进程 id,然后通过
jmap 查看进程内存使用情况,发现有个算法供应商类有 1000 多万的实例存活。然后通过 jstat 命令分析堆内存使用情况,发现
老年代使用率飙高不下,并且触发了多次 fullgc。怀疑是错误的大量创建对象或者内存泄漏导致。通过 jmap 命令拿到堆转储文
件,通过 visualvm 导入查看实例引用,最终定位到加解密方法有个算法供应商类入参传参不对,引用得不到释放,导致内存泄
漏,最终堆内存溢出。解决办法为定义一个全局静态变量,代替每次加解密都 new 一个算法供应商对象。
1000w 数据加密性能优化:业务需要将数据从库里读取出来,然后加密后批量更新入库。之前是挨着读取出来然后加密入库,不
仅性能低,还有内存溢出的风险。
第一步优化:运用线程池,读写并行,通过阻塞队列保存读取的数据,写入数据时取数据。速度优化了一倍。但是通过日志
发现读取的速度是写的 5 倍,仍有优化空间;
第二步优化:采用一对多生产消费模型,1 个线程读取,5 个线程取数据写入。速度提高了 20%,通过日志发现 5 个读线
程去竞争取数据的时间增加,导致并不理想;
第三步优化:采用多个阻塞队列,一个写线程监听一个队列,大大减少了互斥竞争消耗。
最终采用读写一对三的模式并行读写,整体速度提高了 130%。
切面增强 logback、log4j 实现日志加密输出。
使用 netty 实现服务通讯和心跳检测:使用 netty 代理项目之前定时任务调用 http 接口的方式进行服务连通性检测,降低了网
络开销,而且结构更优雅
可兼职时间
可兼职地点
0条评论 雇主评价