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生命周期