Sukai's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
深入理解Kotlin协程(三)——Kotlin协程框架初探(一)

深入理解Kotlin协程(三)——Kotlin协程框架初探(一)

前面四篇文章我们了解了如何使用createCoroutine和startCoroutine这两个API来创建和启动简单协程,并且可以使用它们来构造复合协程。但客观的说,这两个API并不太适合直接在业务开发中使用,所以Kotlin协程为开发者提供了一些更贴近业务的复合协程API,即官方协程框架kotlinx.coroutines。后面几篇文章我们就来尝试窥探一下这个庞大的框架的一角。 协程的描述对于
2021-02-16
Kotlin
#Coroutines
深入理解Kotlin协程(二)——复合协程

深入理解Kotlin协程(二)——复合协程

本篇文章我们将基于简单协程实现几种复合协程。 序列生成器仿Python的Generator实现Python中的Generator可以在函数中调用yield将当前函数挂起并返回yield的参数,效果如下: 12345678910111213141516171819val nums: (Int) -> Generator<Int> = generator { start:
2021-02-05
Kotlin
#Coroutines
深入理解Kotlin协程(一)——基本概念与原理

深入理解Kotlin协程(一)——基本概念与原理

协程的基本概念在当前主流的计算机操作系统中,进程和线程是我们比较熟悉的东西。在早期的计算机系统中,并没有线程的概念,而进程是操作系统进行资源分配和调度的基本单位,也是程序执行的最小单位,每个进程都有其单独的内存空间,使得进程之间的内存相互独立。随着计算机的发展,越来越多的场景需要多任务并发执行,而进程的创建、切换、销毁开销大,且进程之间内存无法共享等问题无法满足复杂的场景需求,这些问题促使了线程的
2021-02-01
Kotlin
#Coroutines
计算机网络知识总结

计算机网络知识总结

图片源自本人两年前校招时写的计算机网络脑图
2021-01-15
Computer Science
#Network

刷题笔记

滑动窗口滑动窗口可以解决子结构中求最值问题,例如: 3. 无重复字符的最长子串 76.最小覆盖子串 643. 子数组最大平均数 I 992. K 个不同整数的子数组 解决滑动窗口问题包含几个步骤: 确定窗口大小 移动右指针使得窗口最大,更新结果 移动左指针缩小窗口,使得窗口保持最大,更新结果 要理解滑动窗口不难,难点在于如何正确的把所有细节都写出来,以 无重复字符的最长子串为例: 给定一
2020-12-22
Algorithm
#BinarySearch

Android Studio金丝雀版更新 原生View Binding要来了?

前言今天Android Studio推特放出了Android Studio 3.6 Canary 11的更新日志,终于是在IDE层面支持了View Binding。 View Binding大家肯定都用过,常用的有Data Binding、ButterKnife和Kotlinx,一般来说Java项目中ButterKnife用的多,kotlin项目的话kotlinx synthetic用起来更快、更
2019-09-12
Android Basics
#View Binding

Android性能优化之OOM

前言OOM全称为Out Of Memory,内存溢出,指的是请求的内存超过了剩余内存的容量。在Android中,App中已经使用的内存加上新申请的内存大于Android系统分配给App进程的最大内存时,就会发生OOM,导致程序直接崩溃,使得我们的App的用户体验非常糟糕。因此如何避免OOM就成了Android内存优化中比较关键的一点, 这篇文章就是关于内存优化中如何避免OOM的总结性概要文章。 5
2019-03-20
Performance Optimization
#OOM

Android性能优化之Bitmap高效加载

为什么Bitmap需要高效加载?现在的高清大图,动辄就要好几M,而Android对单个应用锁施加的内存限制,只有小十几M,如16M,这导致加载Bitmap的时候很容易出现内存溢出。如下异常信息,便是在开发中经常需要的: java.lang.OutofMemoryError:bitmap size exceeds VM budget 为了解决这个问题,就出现了Bitmap的高效加载策略。假设通
2019-03-06
Performance Optimization
#Bitmap

LinkedHashMap原理

概述之前文章讲了HashMap。HashMap是一种非常常见、非常有用的集合,但在多线程情况下使用不当会有线程安全问题。 大多数情况下,只要不涉及线程安全问题,Map基本都可以使用HashMap,不过HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序。HashMap的这一缺点往往会带来困扰,因为有些场景,我们期待一个有序的Map。 这个时候,Linke
2019-02-16
Data Structure
#LinkedHashMap

Java中的线程池

前言Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,
2019-02-10
Java Basics
#ThreadPool
1234

搜索

Powered by Hexo , Theme Fluid