Dorck's Blog

乾坤未定,你我皆是黑马。

揭开 Kotlin 中的 companion object 的奥秘

Kotlin 中有个所谓的伴生对象(companion object),一般使用过程中我们会将它作为 Java 静态成员使用方式的替代品: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class LoginActivity : AppCompatActivity() { override fun onCreate(savedInstanceS...

行为型设计模式一览

设计模式要干的事情就是解耦,创建型模式是将创建和使用代码解耦,结构型模式是将不同功能代码解耦,行为型模式是将不同的行为代码解耦。借助设计模式,我们利用更好的代码结构,将一大坨代码拆分成职责更单一的小类,让其满足开闭原则、高内聚低耦合等特性,以此来控制和应对代码的复杂性,提高代码的可扩展性。 观察者模式 1. 定义 观察者模式(Observer Design Pattern)也被...

Sublime Text在Mac上开机自启动问题

去年自从重新下载了 Sublime Text 来作为主要的代码及文本阅读工具后就一直“苦开机自启动问题久矣”,每次开机Sublime Text 都会自动打开一个空的文件,极度影响使用体验(我又不是每次打开电脑都需要用 sublime🤮)。于是乎,稍微 Google 搜索了下如何关闭 Sublime Text 自启动,其实也很简单,此处记录下以防忘记。 系统偏好设置 进入 Mac 的系统偏...

Gradle 组件依赖版本管理

日常 Android 开发过程中,我们总需要在各个 module 中依赖各种第三方远程组件,像下面这样: 1 2 3 4 5 6 7 8 9 10 11 12 13 implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32' implementation 'androidx.core:core-ktx:1.6.0' ...

如何维护一个全局 Context

一般来说,App 在运行的时候,势必存在一个 Application 对象,而日常开发中我们离不开 Context,获取资源、启动组件等等都需要这位“管家”的帮助。那么,平时我们是怎么获取 Context 的? 最常见的方式 先来看以下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // First usage class Contex...

常见排序算法整理

今日寄语:靡不有初,鲜克有终。 排序是数据结构和算法中非常重要的一环,如今各种排序算法可谓是呈“百家争鸣”之态。最近在温习算法,刚好借此机会记录一些常见的排序算法,便于日后温故知新。 本章前暂时涉及到的算法有:冒泡排序、插入排序、选择排序、归并排序、快速排序、希尔排序、桶排序、计数排序和基数排序等,后面将不定期补充其他排序算法。 冒泡排序(Bubble Sort) 原理:每次...

操作系统地址空间与内存分配

内存分层体系 内存的分层体系:运行内存(主存) / 磁盘(虚拟内存)。主存是在运行程序时所需要保存的数据空间,而磁盘是用于持久化数据保存的数据空间。 CPU 可以访问的内存包括两大类 : 寄存器 / cache (L1缓存 / L2缓存)。大体的调用关系如下, 首先要考虑最为快速的缓存,其存取速度与 CPU 主频相同。缓存的使用是我们所不能意识到的,因为其依靠硬件实现。但内存和虚存是我们...

操作系统的启动过程

操作系统启动过程 操作系统的启动与 BIOS 息息相关,具体流程参考:https://www.cnblogs.com/tyong/articles/10141205.html BIOS 内存中一部分存储是 ROM(Read-Only Memory),启动程序的代码存在 ROM 中。计算机加电之后,首先读取(或许因此叫基本输入输出系统 Basic Input/Output Sys...

操作系统原理的基本概念和组成

操作系统概念 我们很难对操作系统下一个完整,精确的定义,但是我们可以通过分析操作系统的在计算机工作时起的作用,来认识操作系统究竟是什么? 1. 从用户角度上,操作系统是一个控制软件 2. 操作系统管理应用程序,为应用程序提供服务 3. 操作系统管理内设,分配资源 4. 在计算机层次结构中,位于硬件之上,应用程序之下 操作系统是一种系统软件,对外有两种接口:Shell,GUI。 ...

Git emoji 提交规约

执行 git commit 时使用 emoji 为本次提交打上一个 “标签”, 使得此次 commit 的主要工作得以凸现,也能够使得其在整个提交历史中易于区分与查找。 截取的 gitmoji 快照: commit 格式 git commit 时,提交信息遵循以下格式: 1 2 3 4 5 :emoji1: :emoji2: 不超过 50 个字的摘要,首字母大写,使用祈使语气,句...