刘茂林简历
联系方式
- 手机:18001184827
- Email:951442843@qq.com
个人信息
- 刘茂林/男/1991
- csdn技术博客:https://liudao.blog.csdn.net
- GitHub:https://github.com/liudao01
- 个人网站:https://liuml.co
- 期望城市:北京
- 学历: 本科 北京科技大学 计算机科学与技术
工作经历
2017年12月 ~ 2024年3月 中化能源科技有限公司
2016年5月 ~ 2017年12月 北京蜗牛车联网科技有限公司
2015年4月 ~ 2016年5月 宝利至诚(北京)软件有限公司
2014年1月 ~ 2015年3月 上海融视广告传媒有限公司北京分公司
专业技能
- 熟练掌握Java语言,拥有面向对象分析设计能力,熟悉常用的设计模式并运用到项目中
- 熟悉java多线程开发,自定义注解,动态代理,反射技术
- 熟练掌握UI,熟悉自定义View,对UI界面设计和优化有实际工作经验
- 对启动优化,内存优化,包体积,网络等app的性能有实际调优经验
- 有实际写过JNI代码进行NDK底层代码封装的经验
- 熟练掌握okhttp,glide,eventbus等第三方开源框架
- 熟悉MVP,MVVM,有MVP架构搭建项目的实际开发经验,并能根据实际项目需要进行调优,
- 熟悉JavaScript,小程序,kotlin,ReactNative技术,有小程序,vue,react的实际开发经验
- 版本管理、文档和自动化部署工具:Git/jenkins
项目经验
中化油生活(2020 -至今)
油站面向C端用户的加油APP,千万级用户量
使用技术: MVP架构 + okhttp + glide + viewbinding + lifecycle + kotlin+ webview购物商城展示 + Jenkins + 360加固
责任描述:
- 给Android app 设计编写架构,研发框架
- 封装公共模块功能,解决各种疑难杂症
- 对应用启动、流畅度、Apk瘦身等方面的优化;
POS加油收银系统(2022 )
油站面向C端用户的加油pos端
使用技术: MVC架构 + okhttp + viewbinding + webview展示
责任描述:
- 给Android app 设计编写架构,封装Webview框架
- 与H5端进行交互联调,完成业务需求
技术描述:
mvp架构搭建
客户端采用了面向接口编程思想将View层与Model层进行分离,业务代码和逻辑代码解耦,结合LiftCycle对View生命周期更好地管理.使用注解+反射方式创建Persenter减少模板代码.
图片显示方案:
基于Glide做了图片显示的优化,尤其是对GIF图片的优化,原生Glide加载GIF图片性能低,在原生基础上进行了二次源码层面的优化,内存降低了10M左右. 并整理为文章glide4.11.0封装gfilib优化gif图片加载
性能优化方案:
对app进行性能优化,使用工具检测并结合项目代码针对性优化.采用关闭页面遍历viewTree回收资源的兜底策略,全局单一loading加载框,迁移SharedPreferences到mmkv进行轻量级数据存储.整体优化结束后,内存从300M降至平均180M左右,冷启动从1000ms降至700ms左右
模块化方案:
采用代理模式对okhttp/retrofit进行二次封装,形成独立的module,为应用层提供了丰富的功能接口,使用建造者模式传参,例如get/post/upload/download/显示对话框/显示错误提示等.方便了开发者的使用. 运用代理模式解耦推送模块,网络请求模块.
开发调试模块:
针对前后端联调耗时过多问题,加入自研的调试库,可在应用上实时显示网络请求数据,实时显示Crash日志,也可切换域名,节省了联调时间. 开源后上传到JitPack后可通过gradle引用Android开发帮助工具库
项目安全方案:
因app涉及大量金额交易,为了数据的安全,采用对称加密与非对称加密,公钥私钥结合使用,让数据在传输中更安全,项目上线后未发生一起盗刷事故.
webview 框架模块:
在POS加油收银系统中,针对webview和h5交互的业务逻辑过多,抽取了webview 框架
后采用DSbridge方案,让业务代码和webview解耦,js交互单独封装,让业务更清晰,开发更便捷
开源后上传到JitPack后可通过gradle引用 webview封装框架
日志收集模块:
实现自定义统计功能(无埋点),主要记录用户所有的点击事件,以及时长.并保存本地后上传.开源项目 android自定义(无埋点)收集用户行为统计
项目管理和打包
为了能快速提测发版和上线,使用了Jenkins构建应用,结合Gradle与Shell脚本的配置,搭建了一套可以应用发版、区分环境、自动提测并上传、企业微信提醒、git提交记录展示的项目管理和打包系统。 并整理为文章
1. Jenkins+Gradle实现android 自动打包 并且上传蒲公英
2. 持续集成企业微信提醒
其他项目
- 参与硬件手持n900pos设备开发,具有打印小票,蓝牙通信等功能
- Android中化油管家/油达人/e站长/能源纪检项目
- 智慧大屏(支付宝小程序开发)
- 2023年参与B端小化加油后台管理项目(vue) 等前端项目
其他效率开发方面
- 参与了findviewByMe插件开发(Android Studio插件),增加了搜索功能.
- 加入了自研的调试工具库,节约了开发人员的沟通成本.
- 使用mvpAutoCodePlus插件生成mvp模板,节省开发人员编写模板代码的时间
蜗牛货车项目(2016.5 - 2017.12)
官网链接地址
责任描述:
- 负责项目日常开发任务
- 完成产品功能模块抽取以及迭代
技术点描述
- 将卖车上传图片的裁剪相关代码抽取出来, 并且实现自定义比例的裁剪, 这样以后产品对裁剪比例有调整,只需改几行代码即实现需求. 并整理为文章android 自定义比例裁剪图片(拍照 相册)
- 集成ReactNative,实现城市列表组件(字母滑动,搜索,排序,页面跳转). 并整理为文章 ReactNative 滑动字母选择城市 以及搜索功能
- 写了一些自定义控件,例如 自定义进度条,自定义图表等.并整理为文章 自定义进度条
- 使用了leakcanary,引入库后,优化了10余处内存泄露的问题,由原来运行7~8 分钟内存飙升到200M+到现在内存稳定150M左右。
其他技术文章
自我评价
- 有自我管理、自我驱动、自我优化能力
- 有技术热情和好奇心、 爱折腾,爱学习,爱总结。
- 有一定的知识广度,了解后端、运维、测试、跨平台
致谢
感谢您花时间阅读我的简历,期待能有机会和您共事。