一次 CPU 问题的排查

前言

最近来了个新环境,做了第一个需求——直播答题

这边的风格大致就是:先在能使用的库的基础上快速完成需求,整个开发时间大概在2-3周,客户端总共俩人,我主要负责直播间内的业务逻辑。

再看 Kotlin Coroutines

前言

https://www.youtube.com/watch?v=Mj5P47F6nJg

这个演讲太棒了,演讲人是 Roman Elizarov - Project Lead for the Kotlin Programming Language

按照他的 PPT 我自己总结了一下

Kotlin Coroutines Design Story

首先 kotlin 的协程库 = 线程池 + 任务调度,但是这个调度过程比较复杂,而且整个过程也并没有直接接管 JVM 或者 操作系统层面的东西,所以也没有 go routines 的神奇的抢占调度。 然后只有一个关键字 suspend, suspend 函数机制

好玩的 Kotlin

前言

又好久好久没更新了,主要是最近研究的东西对我来说都比较难,内功不够 的情况下,写不出东西来。

C/C++ 被我暂时搁置了

最近本来是打算捡起来 C++ 的(也 Hello World 了一下 Rust,这个语言感觉对于以前写 Java 的人来说, 看起来理解起来都好别扭啊···)。

给你科普科普跨端

前言

鉴于好多人对于跨端技术觉得玄之又玄,我自己虽然没有实际从0到1的写过跨端框架,但是使用过 Yoga(React-Native 的布局引擎)做过一些简易的跨端的事且后来使用过 Weex,对于跨端研究过一阵,所以来科普一下。

一个简单的 RxJava 例子解读

前言

RxJava 是一个经常让人出错的库,有的同事第一次接触完全搞不懂,个人感觉是没抓住核心的理念(其实我个人对于 RxJava 是有偏见的),抓住核心的理念应该会很好理解,其实就是一个事件流的问题。

ReferenceQueue and Rumtime.gc()

前言

内存泄漏对于日常简单的业务开发而言 很常见也不常见(如果你还是说 Handler 那一套的话,除非你使用 Handler 做 timer,否则 总有一个时间 会释放所谓的内部类引用的 Activity 等对象)。一般作为业务开发能制造内存泄漏的情景,我遇到的有几种(当然可能存在更多的情况):

MMKV 和 mmap

前言

最近看了点 MMKV 的代码,其核心就是通过 mmap 来读写文件。当然还有多进程、序列化、扩容重排 key等问题(这些随便找篇文章都有讲)。本文主要通过 mmap 实现简单的文件的读写。

Bundle Parcel 和 ClassLoader

前言

前几天看到同事在讨论 动态代理类加载器 的一些问题,其实这些技术无论是客户端还是后端都已经用烂掉了。

动态代理 cglibjdk.Proxy 基本是 Java 后端面试的 “八股” 送分题。

DataBinding 解读

前言

Android 的应用层架构,其实一直在缓慢的进步,但是 Android 开发工程师却很少有进步。比如我,直到 2021 年才开始使用 dataBinding。

我初步在 RecyclerView 的 item 中试用了一下,感觉还是挺不错的。