Toggle navigation
JackPeng
home
About
talk
Archive
Resource
Tags
archive
Blogs
[November 25, 2019]
Javascript中的undefined、null、""、0值和false的区别总结
[November 15, 2019]
JavaScript 的 this 原理
[November 7, 2019]
promise执行顺序总结
[August 22, 2019]
将cglib动态代理思想带入Android开发
[August 16, 2019]
okhttp内核剖析
[August 12, 2019]
Android 面试必备 - JVM 及 类加载机制
[August 9, 2019]
LeakCanary 内存泄露监测原理研究
[August 9, 2019]
Handler后台空闲线程IdleHandler
[July 17, 2019]
CSS position 属性总结
[July 6, 2019]
Java中interrupt的使用
[June 1, 2019]
Binder的核心机制分析
[May 30, 2019]
PPT模板的使用
[January 18, 2019]
python fire库的使用
[November 11, 2018]
C语言高级专题第8部分-4.8.一些杂散但值得讨论的问题
[November 10, 2018]
C语言复杂表达式与指针高级应用
[November 9, 2018]
C语言宏定义与预处理、函数和函数库
[November 6, 2018]
C语言段错误调试
[November 5, 2018]
Mac平台下使用nm命令查看文件的符号表
[November 5, 2018]
C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
[November 5, 2018]
NDK crash栈信息的错误定位
[November 3, 2018]
数组&字符串&结构体&共用体&枚举
[November 1, 2018]
用Valgrind检测内存泄漏
[November 1, 2018]
C++中的#和##运算符
[October 29, 2018]
C语言复杂表达式与指针高级应用
[October 29, 2018]
在 JNI 编程中避免内存泄漏
[October 28, 2018]
C内存话题
[October 27, 2018]
指针才是C的精髓
[October 27, 2018]
理解lvalue和rvalue
[October 27, 2018]
printf格式化输出
[October 26, 2018]
JNI开发-Java传递对象到C/C+
[October 26, 2018]
C++中双冒号::的作用浅析
[September 16, 2018]
Android Crash之Native Crash分析
[September 16, 2018]
Linux C从入门到进阶
[September 16, 2018]
Android StriceMode使用详解
[September 14, 2018]
c的free和c++的delete的区别
[September 14, 2018]
AndroidJNI 通过C++调用JAVA
[September 10, 2018]
Sublime使用技巧
[September 10, 2018]
GCC与Cmake的关系
[August 24, 2018]
Camera使用记录
[July 24, 2018]
ThreadLocal 原理
[December 26, 2017]
使用MAT比较多个heap dump文件
[November 16, 2017]
Android中Enum的替代方案
[October 26, 2017]
Android应用内多进程分析和研究
[September 29, 2017]
配置gradle.properties
[September 21, 2017]
Gradle和Groovy
[September 19, 2017]
Java中的Observer接口实践Observer模式
[September 19, 2017]
Mac OS X下Maven的安装与配置
[September 15, 2017]
浅析Android中的线程状态
[September 15, 2017]
PlantUML 高效地画图
[September 12, 2017]
Android Studio中git的使用
[September 5, 2017]
ANR的分析
[August 30, 2017]
Android Studio之maven Central,JCenter
[August 30, 2017]
漫谈AOP开发初探之AspectJ的用法
[August 28, 2017]
Java注解处理器
[August 22, 2017]
虚拟机学习系列 - 附 - OQL(对象查询语言)
[August 6, 2017]
Android注解快速入门和实用解析
[June 23, 2017]
ViewTreeObserver源码学习
[June 21, 2017]
跳出手机的Dialog---Presentation
[June 15, 2017]
LayoutInflater源码分析与应用
[May 27, 2017]
Location
[May 26, 2017]
Android下玩JNI的新老三种姿势
[May 19, 2017]
高阶函数
[May 17, 2017]
java设计模式--单例模式
[May 11, 2017]
java.lang.Thread.UncaughtExceptionHandler
[April 28, 2017]
Android进程间通信之使用Messenger
[April 24, 2017]
Android入门之窗口类型
[April 20, 2017]
Android新特性介绍,ConstraintLayout完全解析
[April 17, 2017]
Android Studio中gradle版本对应关系
[April 14, 2017]
Android 版本插桩技术方案
[April 12, 2017]
Markdown绘制流程图的方法
[April 12, 2017]
Android o
[April 11, 2017]
Android Bitmap小技巧 - 压缩时保留图片的Exif信息
[April 1, 2017]
Xposed模块开发指南
[March 30, 2017]
Xposed框架介绍与安装
[March 29, 2017]
Android ShapeDrawable之OvalShape、RectShape、PaintDrawable、ArcShape
[December 31, 2016]
Android 安全机制(1)uid 、 gid 与 pid
[December 14, 2016]
记一个launcher的bug
[December 4, 2016]
汽车变速箱原理
[December 1, 2016]
Charles从入门到精通
[November 25, 2016]
Vector 是线程安全的吗?
[November 24, 2016]
Android Studio导入Android源码
[November 24, 2016]
Android系统源码目录结构
[November 23, 2016]
ViewTreeObserver引发的内存泄漏问题
[November 22, 2016]
mac下多用户使用ssh管理配置
[November 17, 2016]
android打印调用栈的方法
[November 1, 2016]
软键盘挡住输入框问题的终极解决方案
[October 25, 2016]
Android源代码查看途径
[October 24, 2016]
Webview资源请求的拦截
[October 24, 2016]
mac环境下使用Charles抓包Https请求
[October 11, 2016]
Android暗码
[October 9, 2016]
WebView的JavaScript与本地代码三种交互方式
[September 14, 2016]
TortoiseSVN中分支和合并实践
[September 9, 2016]
Android性能:远程触发GC
[September 9, 2016]
Java上调用Object.wait()函数后,当前线程是否还拿着Object对象锁?
[September 8, 2016]
Android:通过SpannableString为TextView设置丰富的显示效果
[September 6, 2016]
如何定位Android NDK开发中遇到的错误法
[September 1, 2016]
Gradle学习系列之一——Gradle快速入门
[September 1, 2016]
adb的用法大全
[August 30, 2016]
wm命令使用方法
[August 30, 2016]
深入Java关键字null
[August 16, 2016]
Android Studio配置Git及Git文件状态说明
[August 14, 2016]
简单分支操作
[August 14, 2016]
Github Pages
[August 14, 2016]
更多 Github 技巧
[August 14, 2016]
github简介
[August 14, 2016]
浏览器中使用 github
[August 14, 2016]
Github For Mac 客户端
[August 14, 2016]
团队合作流程
[August 14, 2016]
使用github开发流程
[August 14, 2016]
版本管理工具git介绍
[August 14, 2016]
贡献开源项目的流程
[August 14, 2016]
Merge
[August 14, 2016]
Issues
[August 12, 2016]
Android上如何在发生崩溃时抓取日志
[August 11, 2016]
内部类对外部类的引用原理
[August 3, 2016]
Base64编码原理与应用
[August 2, 2016]
哈希
[July 28, 2016]
Python入门
[July 26, 2016]
Java中的动态代理
[July 22, 2016]
Android中的绑定服务
[July 18, 2016]
Android 5.0(Lollipop)中的SurfaceTexture,TextureView
[July 17, 2016]
Effective Java 异常 (57-65)
[July 17, 2016]
Effective Java之对象通用方法 (8-12)
[July 13, 2016]
https加密的几点理解
[July 12, 2016]
深入理解Java虚拟机:OutOfMemory实战
[July 11, 2016]
Android中 的Activity launchMode
[July 11, 2016]
Android Studio中的6种依赖
[July 7, 2016]
Java面试题库
[July 5, 2016]
Java ClassLoader原理分析
[July 5, 2016]
Java类中的初始化顺序
[July 4, 2016]
java源码分析之HashMap
[June 29, 2016]
经典排序算法
[June 29, 2016]
HPROF Viewer and Analyzer
[June 29, 2016]
Android MVC MVP MVVM的区别
[June 29, 2016]
覆盖equals时总要覆盖hashCode
[June 29, 2016]
Shallow Size和Retained Size
[June 29, 2016]
Android最佳性能实践(四)——布局优化技巧
[June 29, 2016]
Android最佳性能实践(二)——分析内存的使用情况
[June 29, 2016]
Android最佳性能实践(三)——高性能编码优化
[June 29, 2016]
Android最佳性能实践(一)——合理管理内存
[June 28, 2016]
Android内存泄漏终极解决篇(下)
[June 28, 2016]
Android内存泄漏终极解决篇(上)
[June 28, 2016]
Java数据结构之LinkedList
[June 28, 2016]
Java数据结构之ArrayList
[June 27, 2016]
Java多线程并发容器ConcurrentHashMap
[June 27, 2016]
Java多线程之同步集合
[June 27, 2016]
Java多线程之阻塞队列
[June 27, 2016]
Java多线程之CountDownLatch、CyclicBarrier和Semaphore,Exchanger
[June 26, 2016]
Java多线程之Callable和Future
[June 25, 2016]
RecyclerView 详解
[June 23, 2016]
Java多线程之java5并发库
[June 22, 2016]
Java多线程之传统线程机制
[June 20, 2016]
Java多线程之内存可见性
[June 20, 2016]
Java多线程之wait(), notify() and notifyAll()
[June 20, 2016]
Java23种设计模式和设计原则(solid)
[June 15, 2016]
flavors in gradle
[June 15, 2016]
谈谈移动端屏幕适配的几种方法
[June 15, 2016]
移动Web怎么做屏幕适配
[June 15, 2016]
Mobile Web适配
[June 14, 2016]
Caching Bitmaps
[June 14, 2016]
管理Bitmap的内存占用
[June 13, 2016]
Android DiskLruCache完全解析,硬盘缓存的最佳方案
[June 10, 2016]
Bugreport源码篇(一)
[June 9, 2016]
Atom编辑器
[June 8, 2016]
layoutparams分析
[June 8, 2016]
View的绘制流程
[June 6, 2016]
五分钟读懂 UML 类图
[June 6, 2016]
Welcome to Jekyll!
[June 4, 2016]
Android Broadcast广播机制分析
[May 28, 2016]
Android JNI原理分析
[May 21, 2016]
Linux系统调用(syscall)原理
[May 15, 2016]
Android EventLog含义
[May 14, 2016]
dumpsys命令用法
[April 24, 2016]
如何自学Android
[April 16, 2016]
理解杀进程的实现原理
[March 26, 2016]
理解Android进程创建流程
[March 19, 2016]
理解Android编译命令
[March 12, 2016]
startActivity流程分析(一)
[March 6, 2016]
startService流程分析
[March 5, 2016]
Binder IPC的权限控制
[February 28, 2016]
Pm命令用法
[February 27, 2016]
Am命令用法
[February 21, 2016]
ActivityManagerService启动过程(一)
[February 20, 2016]
Android系统启动-SystemServer下篇
[February 14, 2016]
Android系统启动-SystemServer上篇
[February 13, 2016]
Android系统启动-zygote篇
[February 5, 2016]
Android系统启动-init篇
[January 30, 2016]
Android系统-开篇
[January 24, 2016]
Java类加载器(ClassLoader)
[January 23, 2016]
Java注解(Annotation)
[January 17, 2016]
性能工具Traceview
[January 17, 2016]
性能工具Systrace
[January 16, 2016]
Java线程池分析
[January 10, 2016]
Android耗电统计算法
[January 9, 2016]
Jvm内存模型
[January 3, 2016]
wait、notify、sleep、interrupt对比分析
[January 2, 2016]
Android内存分析命令
[January 1, 2016]
Android消息机制3-Handler(实战)
[December 27, 2015]
Android消息机制2-Handler(Native层)
[December 26, 2015]
Android消息机制1-Handler(Java层)
[December 20, 2015]
Linux信号(signal)机制
[December 19, 2015]
进程篇—进程整理
[December 12, 2015]
进程状态的切换
[December 6, 2015]
select/poll/epoll对比分析
[December 5, 2015]
Android强弱引用
[November 28, 2015]
Binder系列10—总结
[November 23, 2015]
Binder系列9—如何使用AIDL
[November 22, 2015]
Binder系列8—如何使用Binder
[November 21, 2015]
Binder系列7—framework层分析
[November 15, 2015]
Binder系列6—获取服务(getService)
[November 14, 2015]
Binder系列5—注册服务(addService)
[November 8, 2015]
Binder系列4—获取ServiceManager
[November 7, 2015]
Binder系列3—启动ServiceManager
[November 2, 2015]
Binder系列2—Binder Driver再探
[November 1, 2015]
Binder系列1—Binder Driver初探
[October 31, 2015]
Binder系列—开篇
[October 30, 2015]
Linux内存管理
[October 26, 2015]
Jvm系列4—执行子系统
[October 25, 2015]
Jvm系列3—类的加载
[October 24, 2015]
Jvm系列2—字节码指令
[October 17, 2015]
Jvm系列1—Class文件格式
[October 11, 2015]
ps进程命令
[October 10, 2015]
Android Studio 内存工具
[October 3, 2015]
Dalvik与ART的GC调试
[October 1, 2015]
Android进程生命周期与ADJ
[October 1, 2015]
进程优先级
[September 27, 2015]
APP优化(二)
[September 26, 2015]
APP优化(一)
[September 20, 2015]
Android Launcher 1
[September 19, 2015]
Android事件分发机制
[September 18, 2015]
adb连接不上手机的解决方法
[September 13, 2015]
grep && find命令用法
[September 6, 2015]
Android Anaimator 4
[September 5, 2015]
Android Anaimator 3
[September 4, 2015]
Android Anaimator 2
[September 3, 2015]
Android Anaimator 1
[September 2, 2015]
Android多屏适配
[August 30, 2015]
数组遍历的性能分析
[August 22, 2015]
dumpsys原理简介
[August 15, 2015]
Performance Patterns(一)
[August 10, 2015]
Android开发规范
[August 8, 2015]
Android Studio 快捷键
[August 1, 2015]
Android体系架构
[July 26, 2015]
Java中的条件编译
[July 19, 2015]
Java反射之实用篇
[July 18, 2015]
Java反射之基础篇
[July 5, 2015]
设计模式-开篇
[June 28, 2015]
adb常用命令笔记
[June 27, 2015]
Git常用命令
[June 21, 2015]
浅谈HTTP RESTful架构
[June 20, 2015]
浅谈HTTP协议
[June 14, 2015]
大数据算法
[June 13, 2015]
SELinux 权限问题
[June 7, 2015]
Windows下搭建本地Jekyll
[June 6, 2015]
Markdown个人笔记
[May 31, 2015]
Activity与Service生命周期
JACKPENG
Android OS Developer
热门文章
Android 开篇
理解Android进程创建流程
Binder系列 开篇
Android 内存分析命令
startService 流程分析
如何自学 Android
打赏支持
标签
android
组件
else
权限
algorithm
web
tool
java
performance
app
debug
process
memory
jvm
linux
binder
ipc
handler
系统启动
AMS
Bitmap
mobile
gradle
wait
多线程
线程状态
并发
线程安全
数据结构
内存泄露
equals
hashcode
Android Studio
https
Effective
exception
动态代理
base64
crash
github
git
ndk
JavaScript
Charles
Android
C
ViewTreeObserver
xposed
JNI
annotations
maven
ANR
GCC
C++
printf
C语言高级专题
native
nm
最近访客