标签:kotlin
共 27 篇文章:
- Channel — Channel 是一种热流(Hot Stream) 的通信机制,类似于Go语言中的channel。它允许协程之间进行数据传递和同步。Channel可以被多个生产者和消费者共享,支持双向通信。
- 协程上下文 — CoroutineContext 是一个协程的运行环境容器,决定协程的生命周期、运行线程、错误处理机制等核心行为。它由若干个元素组成。
- Mutex — Mutex 是一个轻量级的同步原语,是kt协程中用于实现互斥锁的工具,它通过确保同一时刻只有一个协程能访问某个资源,避免竟态条件和数据不一致的问题。工作原理类似于传统的线程互斥锁。是协程级别的,不会阻塞线程,而是挂起当前协程直到锁被释放。
- 高并发场景下的协程调度与调优 — | 特性 | withContext() | launch() | |:--------------😐:-----------------------------😐:----------------------------------😐 | 是否为挂起函?
- coroutineContext — coroutineContext 是一个 CoroutineContext 类型的对象,它是一个不可变的集合,能够存储和访问协程的多个不同上下文元素。每个元素在协程执行时都有特定的作用,允许你灵活控制协程的行为。
- 协程Job — Job 是协程的生命周期管理者。每一个协程都有一个关联的 Job, Job 可以用来控制协程的 执行、取消、等待等操作。
- 协程生命周期 — 协程中的执行任务由job代表。其能控制协程的生命周期。job可以通过状态来反映协程的执行进程。
- 协程的异常处理 — 被取消的协程会挂在起点抛出 CancellationException 并且会被协程的机制忽略。 协程构建器有两种形式:自动传播异常(launch:启动不返回值的协程) 或 向用户暴露异常(async 与 produce: 启动协程并期望返回结果)。当构建器用?
- 操作符重载 — 在Kotlin中,操作符重载(Operator Overloading)允许你为类定义或修改运算符的行为。通过定义特定的函数,你可以自定义一些常见的运算符(如 +, -, *, / 等)的行为。Kotlin使用operator关键字来标记这些函数,以表明它们是?
- 类别名 — 在Kotlin中,类别名(type alias)是一种功能,它允许为现有的类型创建别名,以便简化代码或提高可读性。 typealias 关键字用于定义类别名。
- 序列 — 在kotlin中, 序列(Sequence) 是一个支持 惰性计算 的集合类型,类似于java的Stream API。序列的主要特点是,它会延迟计算,只在有需要的时候才执行计算,这使得其特别适合处理大型集合或者链式调用中的中间操作。
- 类型擦除 — 类型擦除(Type Erasure) 是Java 和 Kotlin 中的一种机制。在编译时,泛型信息(类型参数)会被移除或者擦除,从而使得在运行时无法直接获取泛型的具体类型。
- 中缀函数 — 在kotlin中,中缀函数是一种特殊类型的函数,可以使用中缀符号(不需要点符合和圆括号)来调用函数。
- 协程作用域 — 在Android开发中,Kotlin的协程提供了强大的异步编程能力,而不同的协程作用域用于管理协程的生命周期。以下是Android中常用的协程作用域及其区别:
- 逆变和协变 — 逆变与协变用来描述类型转换后的继承关系
- Flow — kotlin的 Flow 是kotlin协程库的一部分,用于处理异步数据流。类似于RxJava的observable,但是基于Kotlin协程,提供了更简洁的处理异步数据流的方式。
- reified — 在Kotlin中,reified是一个特殊的关键字,用于修饰内联函数中的类型参数。这使得在函数内部可以访问类型参数的具体类型。通常情况下,由于类型擦除(type erasure),在运行时是无法直接获取泛型类型参数的具体类型的。reified关键字解决了这个问?
- 范围表达式 — Kotlin 的范围表达式(Range Expressions)用于表示一个区间,可以用于检查某个值是否在某个范围内、遍历该范围内的所有值、生成序列等操作。范围表达式主要通过 .. 运算符创建,并且支持多种类型,包括整数、字符等。
- 作用域函数 — Kotlin中,有一些用于扩展 & 方便开发者编码的内置函数,能大大提高开发者的开发效率, 主要有以下几种:
- 内联函数 — 当 makeTest() 被inline 修饰时, 在 main() 中原来调用 makeTest() 的地方被替换成了 makeTest() 里面的代码。 也就是说在编译时期,把调用这个函数的地方用这个函数的方法体进行替换
- 泛型 — Kotlin 的泛型(Generics)提供了一种方式,使类型参数化,允许编写更加通用和可重用的代码。 泛型在 Kotlin 中的使用和 Java 类似,但也有一些独特的特性和改进。下面是对 Kotlin 泛型的详细介绍,包括泛型类、泛型函数、型变(协变与逆变?
- 集合 — 集合是用于处理一组对象的容器。常见的集合有三种类型。列表类、Set类、Map类。
- [by lazy和lazy](/Kotlin/by lazy和lazy) — 委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基本技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。
- kotlin中的挂起函数 — 在Kotlin中,可以使用suspend关键字标记函数,以指示它们可以被暂停和恢复。这些函数是长时间运行的函数,可以在协程中使用,是协程生态系统的核心部分。 许多库(如retrofit、room)在其API中使用这些挂起函数从网络或数据库加载数据。
- Object关键字 — object 关键字在 Kotlin 中用于定义单例对象,即只有一个实例的类。它为该实例的全局访问点的创建提供了便利。
- 协程 — 协程是一个轻量化线程,协程Coroutine是最新式的并发编程范式,它是纯编程语言层面的东西,不受制于操作系统。
- 可见性修饰符 — Kotlin 是一种功能强大且简洁的编程语言,以其现代特性和清晰的语法而闻名。其中在代码组织和安全性方面扮演重要角色的一个关键因素是可见性修饰符。本文将探讨 Kotlin 中的可见性修饰符是什么以及它们在 Kotlin 中的工作原理,通过简单的代码示例帮助您理?
