宁佳晨
×
宁佳晨

宁佳晨

Java工程师

中文, 英文

Background


About

About

一名技能广泛的程序员,从业7年,动手能力较强,熟悉JavaEE,Android,PHP领域.

Work Experience

Work Experience

  • Java软件工程师

    Sep, 2018 - Jul, 201910 months

    我们做了款社交app叫一罐,面向孤独、社交恐惧的用户群体。在这里我的职务是负责后端和管理后台的研发,以及工具、技术的调研。

    • 重构和维护整个管理后台系统。后台系统的功能包括登陆认证,权限控制,日记内容过滤和审核,处理用户举报,运营话题推送,优质内容推荐,用户反馈管理等。

    • 从Mysql迁移大表到HBase,制定迁移计划,包括rowkey设计,性能测试,边界测试,新数据双写,老数据迁移。

    • 调研和搭建HBase集群,微服务化HBase模块。整合HBase client和SpringBoot框架,封装一些通用逻辑,例如断线重连、查询结果组装成Java POJO。设计HBase的rowkey,满足业务查询需求。正式环境关闭自动分裂,配合pre-split,分散数据到不同服务器。

    • 调研Percona的pt-online-schema-change用来解决mysql数据库的在线更改需求。包括导出真实数据搭建离线测试平台,测试边缘情况(比如负载很大,utf8数据etc),正式环境dry run,业务低谷期正式上线。 mysql自带的online ddl功能在业务量大的情况下会带来很大性能压力而影响用户请求,所以需要调研并测试pt-osc来解决在线表的变更性能问题。

    • 维护自研的IM服务,满足PM的feature,满足低延迟高并发的技术要求。IM接口数据大部分基于Protocol Buffer做编码解码。

    • 搭建自动化部署流程,基于Jenkins,Gitlab,Supervisor。

    • 写一些Groovy脚本,把关系型数据库表转换成Java POJO,避免重复性工作。

    • 写一些bash脚本,简化部署流程和方便运维服务器。例如:定时备份数据库,定时更新https证书,定时清理过期文件。

  • 软件工程师

    Jul, 2016 - Sep, 20182 years 2 months

    Zeonic是一家致力于公共交通出行的初创公司。我在这里的职务是协调技术团队完成项目,同时我也是主力Java后端工程师。我们做的扫码坐公交app,比申通metro大都会更早上线。完成第一代二维码支付方案的核心部分。

    • 完成估算算法,可以计算公交车还有多久到车站以及目前的位置,

    • 设计整个二维码支付平台,包括服务端下发临时二维码,车上pos机校验二维码,异步回传乘车凭证。因为公交车的弱网环境,需要设计离线的二维码校验流程。

    • 对合作伙伴输出乘车二维码功能,这部分基于Oauth2认证。因为手机端的特殊性,引用了Oauth2的扩展协议(RFC7662 Token Introspection)

    • 优化Android应用,使得操作更流畅,动画更自然。动画部分基于Lottie

    • 写Android端基于PBOC的交通卡充值和查询功能

    • 从0搭建公司的Java项目,主要用了SpringBoot,JPA和Gradle,这阵子打算引入ProtoBuf

    • 杂项:写单元测试,搭建Jenkins,Bitbucket,Jira,服务器端自动备份脚本,etc

  • Android和PHP工程师

    Jul, 2015 - Mar, 20168 months

    我在比较早期加入的四邻金融。我们的客户是一些没有研发能力的初创团队,我们帮助他们完成初期的业务平台,组建技术团队。我在公司的职位是Android和PHP工程师,也担任技术顾问解答琐碎问题。

    • 写混合开发的移动应用,统一app-api登陆和app-webview登陆状态。

    • 用Jsbridge完成app native端和app内嵌web端的方法互调。

    • 构造有限状态机,完成订单系统(后端)

    • 基于Http Digest和加盐md5解决多个业务服务器间互相信任难题。

  • 全栈工程师

    Sep, 2014 - Jul, 201510 months

    我的第二份工作是在一家叫即科金融的初创公司。它是一家拿了红杉投资A轮的消费金融公司。 我们帮客户打造他们的网站和app,顺便提供我们的金融贷款服务。

    • 协助完成初代的贷款业务平台开发(PHP)

    • 独立完成Android pad端的贷款app

    • 协助完成网页端贷款app,能在微信中使用(Angular)

    • 基于Crontab和Redis完成非阻塞的订单处理模型

  • Java工程师

    Jul, 2012 - Sep, 20142 years 2 months

    我第一份工作是编写企业级应用的Java工程师. 一个项目是给南京禄口机场提供每日排班和航班延误告警功能。一个项目是给上海申通提供企业OA如新闻发布,生成工单,项目预算。

    • 构造基于Spring的服务器应用和Java桌面应用

    • 写存储过程和视图来整合数据,最后导出pdf报表

    • 构造Java和Groovy混编项目

    • 有时候也会去救救火,比如修复iOS项目的bug(虽然并没学过oc)

Skills

Skills

  • Java

    SpringBoot

    Mysql, Redis, Mongodb

    HBase

    Dubbo

    pt-online-schema-change

    Gradle

    UnitTest

  • Android

    Dagger

    Retrofit

    Lottie

    ReactNative

  • Web

    Angular

    Gulp

    Bootstrap

    Webpack

  • PHP

    Codeigniter

    Infinite state machine

    Composer

    Crontab

    Nginx+fpm

Education

Education

  • 计算机科学与技术, 本科, 上海大学

    Sep, 2008 - Jun, 2012

    线性代数

    操作系统

    关系型数据库

    数据结构

Interests

Interests

  • 阅读

    小说设计