2020
12 月
11 月
- 11-26 Kotlin核心编程 - lambda 和集合
- 11-24 Kotlin核心编程 - 类型系统
- 11-17 Kotlin核心编程 - 面向对象
- 11-13 Kotlin核心编程 - 基础语法
- 11-12 扫盲系列 - Android 主题
- 11-07 扫盲系列 - 从一段代码理解高阶函数和扩展函数和内联函数
- 11-06 扫盲系列 - Jetpack 之Livedata
10 月
- 10-22 卧槽系列 - JNI NewStringUTF called with pending exception java.lang.NoSuchMethodError 或许并不是你想的那样
- 10-21 代码整洁之道 - 对象和数据结构
- 10-15 代码整洁之道 - 格式
- 10-14 卧槽系列 - junit.framework.AssertionFailedError No tests found in ** 或许并不是你想的那样
- 10-08 代码整洁之道 - 注释
09 月
- 09-30 卧槽系列 - Hilt遇到的 InstantiationException *** has no zero argument constructor
- 09-28 代码整洁之道 - 函数
- 09-20 代码整洁之道 - 有意义的命名
08 月
- 08-25 扫盲系列 - kotlin 之协程 Flow 和Channel
- 08-20 扫盲系列 - Kotlin 中的标准库函数 run、with、let、also、apply、use、takeif
- 08-15 扫盲系列 - kotlin 之协程相关函数
- 08-09 扫盲系列 - kotlin 之协程简介
07 月
06 月
05 月
04 月
- 04-20 源码分析 - Glide4 之 缓存原理
- 04-17 源码分析 - LeakCanery
- 04-15 扫盲系列 - APK 打包流程
- 04-12 工作填坑 - Retrofit 上传图片
- 04-11 使用 Python 美化文本,使中文与英文,数字,标点之间添加空格
- 04-07 扫盲系列 - layoutInflater中 inflate() 参数总结
03 月
- 03-27 扫盲系列 - Mac 上 更新 rvm 版本
- 03-22 工作填坑 - OkHttp 支持 TCP 请求
- 03-16 源码分析 - OkHttp
- 03-10 工作填坑 - Retrofit 中对 addCallAdapterFactory() 的理解
- 03-09 工作填坑 - Retrofit 同时支持对 Json 格式和原始数据
- 03-05 Flutter 填坑 - Android 原生项目嵌入 Flutter
- 03-01 Flutter 疑问 - FlutterPluginRegistry 无法转换为 FlutterEngine
02 月
01 月
2019
12 月
11 月
- 11-20 卧槽系列 - Fragment already added 或许并不是你想的那样
- 11-01 源码分析 - Glide4 之 into()
- 11-01 源码分析 - Glide4 之 with() 和 load()
10 月
- 10-21 街题系列 - 进程和线程的区别
- 10-17 源码分析 - ANR 的机制
- 10-16 街题系列 - 接口和抽象类的区别
- 10-13 Pro Git 笔记
- 10-07 源码分析 - Glide4 之 概况
- 10-01 从一个小例子理解 Binder 整个流程
08 月
- 08-23 LeetCode刷题 - Z 字形变换
- 08-14 LeetCode刷题 - 最长回文子串
- 08-12 LeetCode刷题 - 寻找两个有序数组的中位数
- 08-12 LeetCode刷题 - 买卖股票的最佳时机
- 08-01 扫盲系列 - Java 泛型
07 月
06 月
- 06-30 街题系列 - Java 两个线程交替打印
- 06-15 扫盲系列 - RxJava 2.0 -- Flatmap 原理
- 06-12 扫盲系列 - RxJava 2.0 -- 线程切换原理
- 06-03 源码分析 - Andrid 输入法框架 之 InputConnection 对象创建
05 月
- 05-25 源码分析 - Andrid 输入法框架 之 键盘启动的流程
- 05-20 源码分析 - Andrid 输入法框架 之 启动服务
- 05-12 Android 性能优化 -- 内存优化
- 05-01 View 的一些知识点
04 月
03 月
- 03-26 工作填坑 - 水平方向的 RecycleView 嵌套竖直方向的 RecycleView 滑动冲突解决办法
- 03-25 Android 四大组件之 Service
- 03-15 Android 四大组件之 Activity
- 03-12 Android 四大组件 概况
02 月
01 月
- 01-27 Activity 之 setContentView() 探究
- 01-15 扫盲系列 - AppBarLayout
- 01-10 Window 创建过程
- 01-02 数据结构和算法之美 - 排序
2018
12 月
11 月
- 11-13 Mac 上 terminal 快捷键
- 11-12 拜拜了,七牛。 GitHub 才是图床的王道
- 11-12 关于乞讨
- 11-07 工作填坑 - Android 高版本中 AlarmManager , PendingIntent 的坑
10 月
09 月
08 月
07 月
- 07-27 Android 性能优化 -- Bitmap 优化
- 07-17 Android 性能优化 -- 布局优化
- 07-12 扫盲系列 - JVM 类加载器 ClassLoader
- 07-08 扫盲系列 - GC 算法
06 月
- 06-29 View 的绘制 - draw 流程, invalidate 流程 以及 requestLayout 流程
- 06-20 View 的绘制 - Layout 流程
- 06-12 View 的绘制 - Measure 流程
- 06-09 View 的绘制 - 概览
05 月
- 05-12 Android 线程池
- 05-09 街题系列 - 启动一个不在 AndroidManifest 中注册的 Activity
- 05-05 我的代码块也能显示行数,滑动,高亮和一键复制
- 05-02 扫盲系列 - Java 多线程
- 05-02 扫盲系列 - Java 锁机制
- 05-01 View 的事件分发机制
04 月
- 04-23 扫盲系列 - Groovy 语法
- 04-22 街题系列 - HashMap 实现原理。
- 04-15 adb 常用资源
- 04-14 街题系列 - java 中 "==" 和 equals() 的区别
- 04-12 街题系列 - Java 是值传递还是引用传递
- 04-11 扫盲系列 - TCP/IP
- 04-09 卧槽系列 - Android Studio 中 asserts 位置
- 04-08 扫盲系列 - JVM 的垃圾回收
- 04-02 Atom 使用技巧集合
- 04-02 街题系列 - new String("abc") 创建了几个对象?
03 月
- 03-29 Markdown 语法集合
- 03-29 扫盲系列 - MVP, MVC , MVVC 介绍
- 03-29 扫盲系列 - Data Binding
- 03-28 免输密码登录服务器的 Shell 脚本
- 03-27 Ubuntu 14.04 安装 jekyll
- 03-27 Android Studio 使用技巧集合
- 03-26 源码分析 - Retrofit
- 03-25 扫盲系列 - RxJava 基本用法
- 03-25 扫盲系列 - OkHttp 基本用法
- 03-21 Android 内存管理机制
- 03-20 扫盲系列 - Retrofit 基本用法
- 03-19 Linux 卸载和安装 Atom
- 03-17 Window 基本概念
- 03-17 Android 内存泄漏总结
- 03-17 Bitmap 的加载和 Cache 处理
- 03-17 AsyncTaks , HandlerThread , IntentService 小结
- 03-17 Android IPC 简介
- 03-17 Android Binder 总结
- 03-17 Activity 的生命周期和启动模式
- 03-17 Android 性能优化