稀有猿诉

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

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厂商而不同。

实战技巧:为Android应用设置独立的多语言

通常情况下多语言的设置都在系统设置中,应用需要做的就是提供本应用所使用的字串的多语言翻译,使用时使用R.string.app_name类似的引用,然后系统会根据用户在系统设置中的选项来选择合适的具体的语言。并且这是一个全局选项,也就是说选择一个多语言后整个手机都变了。但有些时候,应用想要自己能够设置一个独自的多语言,也就是说想要给自己的应用设置一个不同于全局的多语言。今天就来研究一下这个话题。

线性排序算法总结

排序是程序设计中的最为基础也是最为重要的算法,从程序设计这一行业开始,便有了对排序的研究,至今到了人工智能大行其道的时代,算法科学家们对排序的探索仍未停止。这是因为计算机是处理信息的最为高效的工具,如何高效的处理信息则是计算机科学的重中之重,而要想高效的处理信息,就必须先对信息进行排序,因为各种高效率的信息检索必须要基于已排序的数据。

Understanding Kotlin Delegation

委托或者说委派,是一种设计机制,实现者并不真正的实现某些方法(行为),而是让另外一个对象来当真正的实现者。委拖与依赖注入和延时加载技术结合在一起会产生非常巨大的威力,让代码不但灵活方便扩展,也非常的优雅,但确实会较难以理解。委托机制(Delegation)在Kotlin中的支持是很友好的,并且非常完善,用关键字by和lazy一起就可以写出非常强大的委拖机制代码。

More About Kotlin Functions

Kotlin中的函数是一级对象,除了常规的函数式编程以外,还支持一些非常灵活的特殊用法,可以大大增强代码的可读性和简洁性,让代码更加的优雅,在业界顶级的库如Compose中有大量的应用,今天就来学习一些,以扫清学习Compose的障碍。

Jetpack Compose Road Map

Jetpack Compose是由Google在2019年Google I/O大会提出的新一代声明式UI框架,它基于Kotlin编程语言与Android Studio可以无缝衔接,在Google的大力推动下,现在已经变成了Android App的标准UI构建方式。网络上更是更是满屏的相关内容,如果说没有用过Compose都不好意思说自己会Android开发。是时候恶补一下了。

回乡见闻:感知农村的新变化

前不久休了一个星期的假,回了趟老家,一路所见所闻不少令人惊叹的事情,有必要略作小结并记录下来,也没什么特别的目的,就是把一些看到的比较有意思的事情以及产生的想法分享一下。