前面一篇文章讲解了DFS的基本概念和基础的使用方法,但不够深入,DFS的应用是很广泛的,不论是枚举状态或者路径,还是递归,其本质上都是DFS。今天就来好好的理解一下DFS的内在本质,并学会在树,在图以及在回溯中的应用。
BFS in Graph Made Easy
前面一篇文章讲解过BFS和DFS的基本概念常见用法,今天专注于图论中的BFS,来深入的探讨一下BFS在图论的搜索中的应用,并总结相关解题技巧。
悼念耗子叔
惊闻耗子叔突然辞世,悲伤不已。仍活跃在一线的技术大神,前几天仍在社交网络上活跃的大牛,突然就这么走了,犹如一首高亢激昂的交响乐曲,嘎然而止,亦如波涛奔涌的大江,瞬间冰封,不免让人心痛,亦会唏嘘感慨生命的短暂。
Android Scoped Storage Puzzles
安卓对于文件存储这块,其实是相当混乱的,在早期的版本中对存储甚至是没有所谓的管理的,有多种方法可以操作文件存储,比如通过Java原生的方式(File/InputStream/OutputStream),以及通过ContentProvider的方式(openFile/openOutputStream)。文件的路径也是相当混乱的,有公共存储区域,App的沙盒,外部存储中的App沙盒,但其实整个文件系统中的文件都是可读的,除了系统目录,其他应用的沙盒(内部和外部)以外也都是可写的。这就造成了,安卓的文件系统特别的混乱,加之应用使用不规范,对存储造成极大的滥用,外部存储空间产生大量的垃圾文件,应用卸载后仍然存在,这也催生了一系列的清理软件。
Understanding Kotlin Scope Functions
String Problems Archive
基础利器之Stack和Queue
Table Tennis Road Map
学过Compose后,回头再看看Jetpack
Android Jetpack是一个由谷歌官方提供的安卓开发套件(套件是一组组件的意思),目的是帮助安卓开发者解决兼容性问题,减少重复代码,提升体验和性能,最重要的是提升开发效率。安卓以碎片化著名,不同的版本,不同的OEM厂商导致整个安卓设备碎片化严重,对App生态来说是很不友好,加之安卓本身的原因导致像流畅度,体验和性能始终逊水果不止一筹。后来谷歌推出一系列的Android SDK之外的一系列开发组件如support library来解决兼容性(App compat)和新的开发组件(RecyclerView, CardView, Pager等),后来这些东西就演变成了现在的Android Jetpack。
Understanding Kotlin Based DSL
DSL Domain Specific Langauge是解决特定领域内问题的编程语言,它的特点通常是简洁,虽不通用,但可读性强,呈描述式和声明式,比较典型的例子就是SQL语句和正则表达式,以及一些文本处理工具如Sed和AWK。与之对应的就是通用编程语言GPL General Purpose Language,能解决几乎所有的计算机问题,没有为特定领域进行定制,但语句可读性远不及DSL,它们的语句一般都是命令式的,如熟悉的C/C++, Java和Python等。







