个人介绍
1、10年以上Java一线开发经验,4年以上技术架构设计
2、系统架构能力:精通系统架构设计与J2EE 编程,精通数据库建模、多线程并发编程,及SQL编程优化;熟悉常用设计模式,熟悉DDD领域模式编程,具备良好的编码能力。
软件研发能力:
熟悉JVM原理及优化,多线程,消息队列,缓存,负载均衡 熟悉SSM,SpringMvc,Spring Boot技术栈 熟练掌握Spring Cloud等微服务框架构建分布式微服务系统 熟练SQL语言及Mysql调优,对索引优化及存储引擎有深入理解,熟悉Mysql高可用集群搭建,熟悉mycat,ShardingSphere分库分表 熟悉常用缓存中间件Redis,Memcached,encache,对Redis数据持久化机制、多种数据类型缓存应用、高可用机制及多种分布式集群实现有深入理解 熟练掌握Kafka、RabbitMQ、RocketMQ等消息中间件及集群部署 熟悉基于Redis、Zookeeper实现的分布式锁方案 数据库:精通掌握MySQL,MongoDB,Oracle等,精通数据库建模 了解掌握基于jenkins,Docker,k8s搭建自动化部署集群工作经历
2018-01-01 -2021-09-01北明软件有限公司软件架构师
开发各种企业应用系统,帮助企业实现信息化数据化
2015-10-01 -2017-12-01天峰普惠信息咨询有限公司高级软件工程师
开发运维峰向标互联网金融系统及网站
2012-06-01 -2015-09-01天云融创软件技术有限公司高级软件工程师
基于elaster的云计算引擎开发云平台产品
2010-06-01 -2012-06-01北京宽连十方数字技术公司高级软件工程师
电信运营商ISP代理商业务相关软件开发及运营维护
2006-08-01 -2010-05-01蓝色快车计算机工程技术有限公司软件工程师
负责IBM转包的电信或企业内部项目开发
2004-05-01 -2006-07-01大连日光科技有限公司软件工程师
对日本地区企业软件外包项目相关开发,
教育经历
1995-09-01 - 1999-07-01齐齐哈尔大学计算机科学与技术本科
技能
●项目描述:带领团队搭建技术框架,设计产品数据库模型,产品上线运营管理。 ●项目职责: 1.技术选型:前端采用jqueryJs实现的单网页模式设计,后端采用jsonp实现跨越与前端项目分离; 2.技术攻关:独自设计开发了单网页框架,支撑web和h5*端前端,并负责诸多前端组件的开发。 3.后端模块:参与了借款管理、权限管理、产品管理、财务管理、系统配置参数管理等诸多模块开发; 4.开发策略:由于前后端分离,所以才有一套api接口支撑web与h5及*app,节省了开发工作量降低了 维护的复杂性、 5.技术相关:springMvc、html/jqueryJs、jsonp、MySQL、mybatis、redis、tomcat、zookeeper、dubbo.
项目描述:该业务系统为知识产权代理机构、企业及个人、国内外客户提供咨询、核查、代缴专利费用等。客户原始案件信息实行人机多重复核,缴费提醒可根据客户需求灵活配置提醒功能及提醒周期。通过该系统可以方便地向代理商提供缴费指令,缴费专利年费,接收已缴纳年费的电子数据,实现实时查询缴费信息、统计案件信息等功能,将操作实用性、系统准确性和安全性相结合,保障公司业务零失误率、保持行业内良好口碑。 ● 项目职责: 负责架构代码开发设计、业务模块接口开发 1、需求调研与技术框架选型:项目采用mysql数据库,采用springBoot+nacos的微服务架构,采用自研的基于SpringAOP技术的定时器调度框架。 2、技术特点: 2.1. 因为项目中大量的是增删改查以及提交审批等基础操作,采用了基于反射和继承的设计接口方式,实现了基于表名的entityKey的公共接口,如果公共接口无法满足,再适当在公共接口的入参或出参部位增加业务处理插件方法进行扩展。这样设计有利有弊,好处是节省开发实际适合快速开发,缺点是接口的耦合度有点高,调试调整比较多。为了方便用户后期脱离技术人员依赖,将大量的计算和协调的定时器改为可数据库和后台管动态修改参数,且无需重启微服务的技术实现。 2.2. 项目中还多次采用基于数据库的定时器配置和记录的,基于SpringAOP技术的定时器调度框架,方便随时可以依据业务或运维需要动态调整定时器执行时间和类型(等间隔/制定时间)。 ● 项目心得: 1、沿用了之前项目中积累研发的定时器框架,还借鉴升级了之前另外项目的基于反射和继承的对mybatis封装的框架,实现了跨项目的框架技术应用。开始尝试把更多高级实用的技术积累应用在实际的项目中,提升项目开发的品质。 2、在此项目中首次尝试开发通用接口,以节约开发时间,但是也遇到了接口耦合度高,带来的调试困难,兼顾多种情况的问题。公用接口还是应该只处理最基础的功能,不能赋予太多业务上的需求,不然难以维护。开发通用接口也带来一个好处就是提升了系统化思维能力,尽量在全局大范围考虑实际需要。
项目描述:作为全媒体采编发平台的组成部分,主要完成采、编、发、供、馈业务全流程信息获取、数据汇总统计、生产力分析模型构建、稿件全域追溯;初步建设覆盖全流程、多渠道、多维度的业务管理系统,实现对全媒体采编供业务进行全流程运行监管和数据统计分析,实时掌握报道进展和稿件落地情况,科学评估采编人员工作效率和绩效。 ● 项目职责: 1.负责基础数据的统计模块开发,业务人员的业绩考核统计架构设计 2.需求调研与技术框架选型:采用MongoDB数据库方便字段扩展,及考虑MongoDB的性能优势;采用多线程计算,结合以位长度时间刻度的数据单元及多维度进行聚合计算存储,并在前端微服务做二次聚合,灵活应对日期的查询要求。 3.项目开发进程:项目中根据需求变化多次进行深度重构优化,大幅改进了查询性能,包括前端查询的多线程优化,最终选择时长单位从以小时到日为单位的改进,降低了统计结果的数据条数,有效提升了前端二次聚合计算的效率,提升了用户体验。得到了用户的好评。 4.技术选型:MongoDB、springCloud、多线程/池。MongoDB聚合框架的应用、原生多线程池和spring注解线程池的应用及踩坑、分布式事务锁的应用、shell脚本在微服务中应用。 5.技术特点:为了方便用户后期脱离技术人员依赖,将大量的计算和协调的定时器改为可数据库和后台管动态修改参数,且无需重启微服务的技术实现。项目中还多次采用基于数据库的分布式锁技术,协调上下游操纵或计算的连贯和通讯。项目中考核部分,需要每年的考核指标数据项是可变的,设计为表头存储于表头表中,动态获取和生成考核表。项目中大量采用定时器处理数据的采集和统计计算及索引源数据生成等任务 ● 项目心得: 1.独自开发了基于Spring AOP技术实现的可以灵活调度的定时器框架,它可以用数据库管理和改变而不需要重启项目的,取代了spring注解方式的定时器。深刻理解了指定时间模式和间隔周期模式的实现原理。期间实现过基于代理模式的第一版,但是发现模板代码较多,不利于推广到项目中使用,之后采用SpringAOP方式实现,扩展的业务定时器模板代码量较小,可以快速被同事学习吸收。该框架可以随时动态调整定时器的时间参数、类型参数和启/停等功能,并实现了定时器处理事务记录和追踪,从而有效解决了,原有定时器不能动态调度问题。既可以快速解决运维中需要临时调度定时器到新的时间点执行的问题,还可以实现随着业务逻辑需要动态调整调度定时器,非常方便灵活。因为有了AOP的实际经验,为以后实现其他基于AOP的技术奠定了基础,比如统一日志管理,统一缓存实现,公共接口与定制化业务插件实现等。 2.不可尽信官方文档与参考书。项目中发现spring注解线程池十分不可靠,尤其是与java原生线程池混用或有多层注解线程池时,会发生回执不了,导致程序假死,进而导致我的定时器无法继续周期性工作,最后为了避免写原生线程池的代码量(原生线程池时可靠的)只好放弃最外2层的回执(这两层在业务场景下可以不关心回执),才算最终完美解决。 3.做架构和负责团队带领,一定要培养1~2个跟得上思路思维敏捷的后辈,这样对项目和团队的效率非常重要,不能凡事都要亲力亲为,但是关键的思绪和业务需要跟踪跟进和掌握在自己手中。在项目中积累和发现的好用的技术一定要释放共享出来给团队,要保持开放的心态。这样对团队成员的成长也是非常有好处的。 4. 项目起始一定要亲自动手写好关键业务流程样例代码,供团队复制使用参考,形成规范动作,方便团队成员相互修改或延续开发时,没有交流上的障碍,所有人像一个人的代码风格。最后大家只是在业务细节上不同,但是相似场景的代码格统一。新进入团队的成员也被强制推荐采用。架构师开始是累些,但是后期维护难度大大降低,而且要不定期审阅团队其他成员的代码,发现问题及时指出。