BFS 广度优先搜索
· ☕ 1 min read
之前看过的 BFS(Breadth First Search), 最近遇到类似问题时却没有想起. 在此再回顾一下, 并留下记录. 好记性毕竟不如坏笔头.

洗牌-乱序一个数组
· ☕ 1 min read
设计一个方法, 把一个数组随机打乱, 每一个元素不能在原来的位置上

理解 Fragment
· ☕ 8 min read
理解 Fragment 的实现原理, FragmentTransaction 的事务机制等.

螺旋输出矩阵
· ☕ 2 min read
一个 m*n 的矩阵, 螺旋遍历输出每一项

HTTPS 的 TLS 握手
· ☕ 5 min read
通过 Wireshark 抓包理解 HTTPS 的 SSL/TLS 握手

关于 std::move
· ☕ 4 min read
最近在看一些框架的 c++ 源码中, 发现它们在许多函数传参时会使用 `std::move` 调用, 于是想弄清这个目的是什么.

小根堆-大根堆
· ☕ 3 min read
理解堆的定义, 使用堆实现一个优先级队列, 查看 `java.util.Timer` 中的小根堆实现

Android 中 MessageQueue 的 nativePollOnce
· ☕ 7 min read

Android SDK 中的事件循环已经是一个老生常谈的问题了, 像 Handler Looper MessageQueue 这几个类也是被大家研究透彻了.
但是再回头看以前自己的分析, 总感觉差点什么, 不够透彻. 心里隐隐感觉自己没有把事情完全吃透, 于是今日又回顾 Android 中的事件循环机制, 注意到
MessageQueue 中获取下一条消息时会执行一个 native 调用 nativePollOnce, 翻看 Android 系统源码发现有内容.


优化 ObjectOutputStream 的使用
· ☕ 2 min read

最近阅读《Android移动性能实战》看到手机QQ测试团队给出的一个案列 「Object Ouput Stream 4000 多次的写操作」,
其原因就是直接使用了 ObjectOutputStream + FileOutputStream 做对象的序列化到磁盘。印象中我们的项目中也有这样的代码
SerializeUtil#serializeObject:


Android init 进程的启动过程
· ☕ 8 min read

init 进程是 Android 系统中用户空间的第一个进程,进程号为 1。作为第一个进程,它被赋予了很多重要的职责,比如创建 Zygote 进程和属性服务等。

init 进程由多个源文件共同组成,这些文件位于源码目录 system/core/init 中。