程序员小金鱼
1月前来过
全职 · 800/日  ·  17400/月
工作时间: 工作日20:00-23:00、周末08:00-20:00工作地点: 上海远程
服务企业: 0家累计提交: 0工时
联系方式:
********
********
********
聊一聊

使用APP扫码聊一聊

个人介绍

1. 熟练掌握JavaSE基础知识,熟悉多线程与并发编程,拥有丰富的系统设计分析能力及面向对象分析和设计能力,熟悉常用的设计模式,熟悉常见的数据结构及其算法;
2. 熟练掌握Eclipse\IDEA、SVN、GIT、Maven、Docker等开发及版本控制工具,熟练掌握Java基础技术JSP、Servlet、JDBC,熟练掌握Web应用系统开发,具备的独立开发能力;
3. 熟悉JVM参数调优、性能检测工具、生产环境服务器jvm调优配置、压力测试工具JMeter、阿里代码扫描工具;
4. 熟练使用Tomcat/Jetty服务器,发布部署web项目,熟练使用Nginx+Keepalived实现服务高可用;
5. 熟练使用Oracle、MySQL、SQLServer等关系型数据库,熟悉Redis、MongoDb等非关系型数据库及搜索服务框架Elasticsearch;
6. 熟练运用Spring、Mybatis、SpringBoot等开源框架,熟悉Spring的IOC、DI、AOP设计思想;
7. 熟悉分布式、微服务、大型网站架构,熟悉Dubbo、SpringCloudNitfix、SpringCloudAlibab等微服务框架;
8. 熟悉SpringCloud常用组件、注册中心Eureka、Nacos,负载均衡器Ribbon、客户端调用工具Rest和Feign,分布式配置中心Config和携程阿波罗,服务保护Hystrix,网关Gateway,Api管理Swagger,服务链路Zipkin等;
9. 熟练使用网络通讯协议,熟悉网络通讯技术Socket、NIO、Netty、Http,熟练使用json、xml通讯格式,熟悉RPC远程调用、熟悉常见消息中间件ActiveMQ、RocketMQ、Kafka使用;
10. 熟悉RestfulAPI开发规范,熟悉三方授权登录、对接支付接口(银联、支******
11. 熟悉分布式、集群、高可用、高并发解决方案,熟悉web开发常见问题解决方案(如:分布式job幂等性、session共享、分布式日志收集ELK、分布式生成全局ID、分布式锁等);
12. 熟悉Junit单元测试、Jmeter压力测试工具、TestNG自动化测试等主流测试框架;
13. 熟悉互联网安全架构平台设计例如XSS、SQL注入问题、防盗链等,互联网API接口幂等设计、互联网API接口安全设计等;
14. 有丰富微服务项目开发实战经验,熟悉整个微服务项目的架构流程,并实际参与过微服务项目,从项目需求讨论、研发阶段、分布式环境部署、技术难题解决;

工作经历

  • 1970-01-01 -至今上海锦竹网络科技有限公司技术研发

    1. 完成概要设计、详细设计的撰写; 2. 参与系统研发工作,负责各种模版的代码开发工作; 3. 负责软件模块详细设计、编码、单元测试、集成测试及维护与改进工作。

  • 1970-01-01 -至今上海溢米教育科技有限公司Java中高级

    1. 参与系统的需求分析,撰写相关技术文档,搭建和部署系统开发环境,完成核心代码的实现; 2. 跟进项目管理的进度、代码审查、担任开发组长职务; 3. 后期协助项目经理负责版本的发布以及制定项目开发管理计划、跟踪项目的进度。

  • 1970-01-01 -至今上海点觉信息技术有限公司Java技术经理

    1. 参与制定部门研发体系规范,其中包括:编码规范,新人带教指南,技术规范、流程以及工具的使用,促进团队高效有序的开展工作; 2. 负责点觉tms新版产品架构设计和研发工作,参与核心代码的编写,负责核心技术的问题的攻关; 3. 撰写概要设计、详细设计文档,以及负责review design和code; 4. 按照产品的开发任务和进度要求,依照软件开发需求,实现模块功能,以及版本交付,对交付的产品负责。

  • 1970-01-01 -至今上海慧贤网络科技有限公司高级研发&Scrum Master

    1. 负责公司Java相关组件包的维护、文档输出、代码开发; 2. 担任公司电商业务线Scrum Master,负责电商相关项目的迭代、上线、维护; 3. 参与公司中台相关项目设计、开发,主要负责权限中台、计费中台相关核心逻辑设计、开发。

教育经历

  • 2010-09-01 - 2014-07-01西南交通大学计算机科学与技术本科

    在西南交通大学接受本科教育,并取得相应的结业证书。

技能

NoSQL
MySQL
0
1
2
3
4
5
0
1
2
3
4
5
作品
Darwin平台-聚合支付平台

系统名称:Darwin平台-聚合支付平台 使用技术:SpringBoot+jenkins+ApiDoc+Maven 系统描述:构建微服务聚合支付平台,整合第三方支付接口(支付宝、银联支付、*支付等),封装成接口提供给服务接口使用。 责任描述: a) 与第三方支付接口平台技术人员对接 b) 聚合支付平台数据库表结构设计 c) 基于设计模式构建聚合支付平台 d) 基于MQ实现分布式事务解决方案 e) 使用xxl-job实现聚合支付对账 f) 常用遇到支付难题问题解决 技术描述: a) 与第三方支付接口平台技术人员对接 负责支付宝、*支付、银联支付等支付接口技术人员沟通对接 b) 聚合支付平台数据库表结构设计 负责聚合支付平台数据库表结构设计,payment_channel渠道表、payment_transaction流水表、payment_transaction_log日志表等实现完全可视化界面支付开关控制支付渠道。 c) 基于设计模式构建聚合支付平台 使用策略+工厂设计模式实现支付接口提交html表单元素重构、使用模版方法+工厂设计模式实现共同异步回调代码重构,采用多线程+MQ实现支付回调日志收集 d) 使用xxl-job实现聚合支付对账 使用分布式任务调度平台XXL-JOB实现支付接口产生延迟导致订单状态不同步实现自动化补偿,每天晚上两点钟时间定时触发任务,商户端主动使用支付id调用第三方支付渠道接口查询支付状态是否已经支付过,如果第三方支付渠道接口已经支付过,同步商户端订单状态。 e) 基于MQ实现分布式事务解决方案 在微服务系统中,支付服务调用积分服务接口增加对应积分,该场景存在分布式事务问题,我们采用rabbitMQ实现+补单形式保证最终一致性实现双方数据同步 f) 常用遇到支付难题问题解决 问题1:支付回调接口中,产生延迟通知?导致支付状态不一致问题 解决方案:商户端使用任务调度平台主动调用第三方接口查询,实现数据同步 问题2:重试支付回调接口时,如何保证回调接口通知幂等性问题 解决方案:因为第三方支付接口采用间隔性重试机制,使用支付全局id查询支付状态已经支付,及时响应成功状态通知给第三方支付平台不在继续重试 问题3:支付金额与商品金额如果不一致时,如何处理 解决方案:在支付回调中查询待支付表记录金额与实际回调金额是否一致,如果不一致该笔订单纳为异常订单 问题4:第三方支付平台如何与对接系统保证分布式事务问题 解决方案:使用重试+补偿+日志记录形式保证最终一致性实现数据的统一 问题5:支付服务如何与其他系统保证分布式事务问题 解决方案:LCN分布式事务解决框架解决分布式事务问题

0
2023-05-05 22:04
TMS系统-commons服务

系统名称:TMS系统-commons服务 使用技术:SpringBoot+ Swagger2+Maven 项目描述:封装短信、推送、上传下载文件、OCR、地址解析等三方接口调用 责任描述: a) 搭建系统框架、整体结构设计 b) 系统优化与部分功能实现 技术描述: a) 使用Maven构建项目,Swagger对外提供接口文档 b) 每次系统调用都将生成唯一的业务id并将调用记录记录入库,实现调用频率限制、记录查看 c) 短信、推送等功能使用异步实现,线程池进行调度 系统名称:TMS系统-message服务 使用技术:SpringBoot+ Swagger2+Redis+XXL-Job+Maven 项目描述:系统对消息提醒业务需求加大,为简化开发,针对业务系统提供统一的消息发送入口 责任描述: a) 梳理原有项目结构,优化工程 b) 封装接口,设计实现方案 技术描述: a) 优化原消息工程,公共依赖从父pom继承,优化包结构 b) 统一消息接口设计与实现 消息分类为短信、站内信、推送、邮件等 每种消息都有对应的模板进行维护,发送消息时只需指定对应模板及传入业务参数即可 接口接受请求进行简单的数据校验入库,即返回成功,后台异步压入队列,使用线程池管理异步任务进行消费,每次操作都会记录记录的状态 使用定时任务扫描失败记录并进行重试,达到重试次数后不再重试 系统名称:TMS系统-report服务 使用技术:SpringBoot+ Swagger2+Canal+Maven 项目描述:提供运单、费用、客户等多维度报表服务 责任描述: a) 报表需求的梳理、优化 b) 报表实现方案的设计 c) 报表的技术选型与核心功能的实现 技术描述: a) 需求梳理、优化 原有报表功能页面反应慢,样式杂乱,统计维度不足,为解决用户需求,增加报表模块,统一交互方式,提供多方面多维度的报表查询 b) 方案设计 原报表响应慢是因为统计一个维度往往要查询好几张甚至更多张表,关联查询后统计计算得出结果,故抽象数据模型,提前将查询结果进行缓存,通过单表或缓存进行查询 采用阿里开源组件Canal解析数据库增量日志,进行数据同步 c) 技术实现 设计抽取数据模型,基本使得每次查询都能基于单表查询 进行一次数据初始化,将数据都加工计算后缓存在单表之中 配置Canal,使CanalServer端监听MySQL的binlog,binlog设置为row模式 在CanalClient端接受server端的解析消息,将MySQL的增量变动加工后修改该缓存表 实现一个高效率的“实时”的报表查询系统

0
2023-05-05 22:05
TMS系统-dataio服务

系统名称:TMS系统-dataio服务 使用技术:SpringBoot+Swagger2+poi+jedis+Maven 项目描述: 由于项目中基本每个模块都有导入、导出功能,旨在统一封装导入导出重复操作,为客户端提供统一入口 责任描述: a) 导入导出通用方案的业务抽象、设计 b) 导入导出的技术方案选型 c) 导入导出核心功能实现与优化 技术描述: a) 业务设计 统一抽象功能,只包含导入、导出两个入口,把解析excel、封装对象、组装excel等与具体业务无关的操作抽离,根据各模块的具体模板来进行数据的抽取和封装,然后调用具体业务的接口进行数据落地操作 由于导入导出数据量较大、耗时较长,提供导入、导出历史,将具体操作结果整理至excel,可供用户下载查看 b) 技术方案与实现 使用Apache的poi工具进行excel的解析与导出,dataio服务根据模板做简单的数据格式方面的校验,若校验通过则通过feign调用具体业务进行数据深度校验、逻辑计算与入库,有任一环节失败则统一返回错误对象,dataio进行操作结果的excel组装,整个过程在后台用过线程池进行调度,用户点击按钮后即可进行其他操作 导出根据用户操作组装参数分页请求具体业务系统列表接口,解析翻页结果导出excel,然后上传OSS,同步至导出历史 c) 持续优化 问题1:有时转换excel耗时特别长,偶尔出现内存溢出 解决方案:通过新版的SXSSFWorkbook来解决,可通过其构造函数执指定在内存中缓存的行数,剩余的会自动缓存在硬盘的临时目录上,同时,并不会存在页面卡顿的情况 问题2:同一租户下多用户同时进行导入操作时会出现数据重复等脏数据 解决方案:该问题主要因为并发时线程安全以及数据库事务的隔离级别造成的脏数据,使操作变成同步即可。借助于队列先进先出的特性,将导入任务储存至redis的队列之中,dataio服务去从队列中取出任务执行即可。多租户并行则创建n个队列,使用租户标识hash后模n,存入对应队列中 问题3:需要实现实时查看导入导出进度 解决方案:使用观察者模式,当任务处理的数据条数有变时通知观察者,观察者根据策略将进度信息存入Redis,对外提供WebSocket访问

0
2023-05-05 22:07
更新于: 2022-02-10 浏览: 176