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