个人介绍
熟练 Java、C/C++编程语言
熟悉计算机网络 HTTP/TCP/IP 协议
熟悉设计模式、常见的数据结构和算法
了解 JVM 虚拟机
了解 Android 系统源码、了解 Linux 内核机制
开机启动、binder 驱动、Handler 消息机制、图形渲染、input 事件、Ashmeme
熟悉 NDK 开发
了解 OpenCV
人脸美容、人脸识别
熟悉 Android 主流开源框架的源码
Okhttp、Glide、ButterKnife、EventBus、Rxjava
工作经历
2022-01-01 -至今北京多来点信息技术有限公司资深开发工程师
POS应用开发,负责离线架构设计,内存优化,运行速度优化,crash抓取,日志埋点开发,APP离线断网使用,JNI开发,大图片优化处理。
2019-05-01 -至今新东方在线高级开发工程师
在新东方在线项目开发过程中,作为 Android 组的 Leader,我主要负责整体架构设计、 功能迭代、性能、体验优化。解决问题如下: 为了优化内存,了解到 zygote 在 fork 的新进程会继承预加载的 resource 资源,这些 资源基本是系统的资源,然后通过反射获取将其移除。降低内存 20M 左右 为了提升崩溃日志写入速度,使用了基于 mmap 的 MappedbyteBuffer 减少系统拷贝 到内核带来的性能损耗,提升速度数倍 为了优化包体积,采用动态加载 so,方案是往 nativeLibraryPathElements 的最前 面插入一个 NativeLibraryElement, 还包括资源加载采用 xxhdpi 一套、混淆代码 为了减少崩溃带来的用户损失率,打造了一个不闪退的 app,通过虚拟机调用 thread 的 dispatchUncaughtExecption,来到我们自己的 uncaughtException 方法,清空所有状 态信息,推出当前的 activity,不触发系统的检测(卸载 app) 优化 mvp 架构,P 调用 V
教育经历
2011-09-01 - 2013-07-31哈尔滨商业大学金融学本科
技能
android团队Leader,整体架构设计。项目开发 在新东方在线项目开发过程中,作为 Android 组的 Leader,我主要负责整体架 构设计、 功能迭代、性能、体验优化。解决问题如下: 1. 为了优化内存,了解到 zygote 在 fork 的新进程会继承预加载的 resource 资源,这些 资源基本是系统的资源,然后通过反射获取将其移除。降低内存 20M 左右 2.为了提升崩溃日志写入速 度,使用了基于 mmap 的 MappedbyteBuffer 减少系统拷贝 到内核带来的性能损耗,提升速度数倍 3. 为了优化包体积,采用动 态加载 so,方案是往 nativeLibraryPathElements 的最前 面插入一个 NativeLibraryElement, 还包括资源加载采用 xxhdpi 一套、 混淆代码 4.为了减少崩溃带来的用户损失率,打造了一个不闪退的 app,通过虚拟机调用 thread 的 dispatchUncaughtExecption,来到我们自己的 uncaughtException 方法,清空所有状 态信息,推出当前的 activity,不触发系统 的检测(卸载 app) 5.优化 mvp 架构,P 调用 V 时每次判断不为 null,在基类中采用代理统一判断,通过 注解的方式解决 V 中对应多个 P 的多次创建 6.为了检测项目运行的流畅度,使用了 Looper 配合 Choreographer 实现了每个 Activity 的帧率信息统 计。
android团队Leader,整体架构设计。项目开发 在新东方在线项目开发过程中,作为 Android 组的 Leader,我主要负责整体架 构设计、 功能迭代、性能、体验优化。解决问题如下: 1. 为了优化内存,了解到 zygote 在 fork 的新进程会继承预加载的 resource 资源,这些 资源基本是系统的资源,然后通过反射获取将其移除。降低内存 20M 左右 2.为了提升崩溃日志写入速 度,使用了基于 mmap 的 MappedbyteBuffer 减少系统拷贝 到内核带来的性能损耗,提升速度数倍 3. 为了优化包体积,采用动 态加载 so,方案是往 nativeLibraryPathElements 的最前 面插入一个 NativeLibraryElement, 还包括资源加载采用 xxhdpi 一套、 混淆代码 4.为了减少崩溃带来的用户损失率,打造了一个不闪退的 app,通过虚拟机调用 thread 的 dispatchUncaughtExecption,来到我们自己的 uncaughtException 方法,清空所有状 态信息,推出当前的 activity,不触发系统 的检测(卸载 app) 5.优化 mvp 架构,P 调用 V 时每次判断不为 null,在基类中采用代理统一判断,通过 注解的方式解决 V 中对应多个 P 的多次创建 6.为了检测项目运行的流畅度,使用了 Looper 配合 Choreographer 实现了每个 Activity 的帧率信息统 计。
android团队Leader,整体架构设计。项目开发 在新东方在线项目开发过程中,作为 Android 组的 Leader,我主要负责整体架 构设计、 功能迭代、性能、体验优化。解决问题如下: 1. 为了优化内存,了解到 zygote 在 fork 的新进程会继承预加载的 resource 资源,这些 资源基本是系统的资源,然后通过反射获取将其移除。降低内存 20M 左右 2.为了提升崩溃日志写入速 度,使用了基于 mmap 的 MappedbyteBuffer 减少系统拷贝 到内核带来的性能损耗,提升速度数倍 3. 为了优化包体积,采用动 态加载 so,方案是往 nativeLibraryPathElements 的最前 面插入一个 NativeLibraryElement, 还包括资源加载采用 xxhdpi 一套、 混淆代码 4.为了减少崩溃带来的用户损失率,打造了一个不闪退的 app,通过虚拟机调用 thread 的 dispatchUncaughtExecption,来到我们自己的 uncaughtException 方法,清空所有状 态信息,推出当前的 activity,不触发系统 的检测(卸载 app) 5.优化 mvp 架构,P 调用 V 时每次判断不为 null,在基类中采用代理统一判断,通过 注解的方式解决 V 中对应多个 P 的多次创建 6.为了检测项目运行的流畅度,使用了 Looper 配合 Choreographer 实现了每个 Activity 的帧率信息统 计。