稀有猿诉

十年磨一剑,历炼出锋芒,说话千百句,不如码二行。

Kotlin Generics Revisited

在前面的文章中学习Kotlin泛型的基本知识,并且又用了一篇文章来复习了一下Java语言的泛型,有了这些基础我们就可以继续深入的学习Kotlin的泛型了。看它是如何解决Java泛型的遗留问题,再学习一下它的高级特性,最后再总结泛型的最佳实践。

深入浅出Java泛型

温故而知新,可以为师矣!

前面的一篇文章中学习了Kotlin的泛型知识,但总感觉还不够深入,因为一些深入的话题和高级的特性并未有讲清楚。但在继续深入之前还是有必要重温一下Java的泛型知识,这是因为Kotlin是基于JVM的语言,并且与Java关系暧昧,它可以与Java混合使用,可以相互调用,在某种程度上讲Kotlin可以视为Java的一种『方言』。所以,我们先回顾Java的泛型,夯实基础,并弄清楚Java泛型遗留了哪些问题,然后再看看Kotlin是如何解决这些问题的。

这回就好好聊聊Kotlin的泛型

泛型(Generics)是静态强类型编程语言中非常强大的特性,可以极大的加强代码的复用,并增强类型安全,减少运行时的类型转换错误。在这篇文章就来详细的学习一下Kotlin中对泛型的支持情况,并学会写出类型安全的可复用代码。

一文带你吃透Kotlin类与对象

Kotlin是多范式通用编程语言,对面向对象编程(OOP)自然也提供了全方位的支持。通过先前一篇文章,学习了使用Kotlin进行基本面向对象编程的方法,本文将在前文基础之上继续深入的学习面向对象编程的高级特性,以能够写出更加符合OO的代码,并能够从容应对一些复杂的OOP场景。

专家之路上的Flow高级秘籍

『君不见,黄河之水天上来,奔流到海不复回。』

学习与河流一样,一方面学无止境,又是逆水行舟,不进则退,因为其他人都在卷。前文一篇文章讲了Flow的基础,大多数情况下够用了,但是不能停止卷,因为你不卷,就会被别人卷。一旦涉及到复杂的应用场景,就需要用到一些高级的API。今天就来学习一下Flow的高级特性,当遇到问题时也能更从容的应对。

Kotlin进阶之协程从上车到起飞

通过前面的一篇文章我们理解了协程的基本概念,学会协程的基本使用方法,算是正式入门了,接下来就是要深入的学习技术细节和高级使用方法,以期完全掌握Kotlin协程并能熟练的正确的使用协程,发挥出协程应有的并发编程能力。

Kotlin进阶之协程从入门到放弃

协程Coroutine是最新式的并发编程范式,它是纯编程语言层面的东西,不受制于操作系统,轻量级,易于控制,结构严谨,不易出错,易于测试,工具和配套设施都比较完备。在新生代编程语言(如Kotlin和Swift)中支持良好,在Kotlin中有着非常友好的支持,并且是写异步和并发程序的推荐方式。为了彻底学会使用协程和理解协程背后的原理,计划用三篇文章专注来学习协程。

Understanding KMP Algorithm

字符串模式匹配问题是非常重要且基础的问题,它是解决在目标字符串str中搜索模式字符串pattern出现的次数,或者索引位置。这个问题最为高效的方法就是著名的KMP算法,但这个算法不太好理解,毕竟是解决了从O(n2)的复杂度提升到线程O(n)的,今天就来学习并理解一下KMP算法。

让你从此不再惧怕ANR

这篇文章是基于官方的Diagnose and fix ANRs翻译而来,但也不是严格的翻译,原文的内容都在,又加上了自己的理解以及自己的经验,以译注的形式对原文的作一些补充。


当一个Android应用的UI线程被阻塞时间过长,系统就会发出一个臭名昭著的“应用程序未响应”(ANR, Application Not Responding”)错误。本文将讲述不同类型的ANR,如何分析以及如何解决。文中列出的所有的超时时间范围都是基于AOSP和Pixel设备;这些时间范围可能会依OEM厂商而不同。