- 博客(8)
- 收藏
- 关注
原创 Java垃圾回收
一、自动垃圾回收算法 1.引用计数法(Reference Counting) 缺点:循环引用,导致红色部分引用计数一直大于零; 2. 标记-清除(Mark and Sweep) 缺点:STW(Stop the World),需要暂停应用程序的所有线程; 二、Java中的垃圾回收 1. 内存池的划分 2.内存分配 ...
2021-08-25 12:41:05 389
原创 Room原理(一):Room简单使用
一、导入依赖 1. 添加kotlin-kapt插件 plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } 2.添加Room依赖 dependencies { implementation "androidx.room:room-runtime:2.2.5" kapt "androidx.room:room-compiler:2.2.5" } 二、创建
2021-08-19 16:48:45 445
原创 LiveData原理
一、LiveData 设计 1.观察者模式: LiveData 是一种可观察的数据存储器类; 2.生命周期感知: LiveData 具有生命周期(如 Activity、Fragment 或 Service)感知能力,确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者; 二、LiveData源码解析 1.订阅 2.数据改变 ...
2021-08-13 15:07:31 169
原创 goroutine和GPM调度
目录 一、Go 语言的协程 goroutine 1. goroutine概念 2. goroutine特点 二、m:n调度技术 三、goroutine 调度器的实现 1. 被废弃的调度器 2.新调度器GPM设计思想 3.P和M的数量和创建 数量 创建 4.调度器的设计策略 线程复用 利用并行 抢占 全局 G 队列 5.GPM调度流程 6.调度器的生命周期 M0 G0 一、Go 语言的协程 goroutine 1. goroutine概念 goroutine
2021-08-10 17:13:52 496
原创 channel数据结构
目录 一、Channel数据结构 1. 环状队列(缓冲区) 2. 等待队列 阻塞 唤醒 类型信息 锁 二、Channel读写 1. 创建channel 2. 向channel中写数据 3. 从channel读数据 4. 关闭Channel 三、常见用法 1. 单向channel 2. select 3. range 一、Channel数据结构 chan 数据结构:src/runtime/channel; 主要构成:环状队列、类型信息、goroutine等待队.
2021-08-10 15:38:04 1728
原创 string数据结构
一、string数据结构 type stringStruct struct { str unsafe.Pointer len int } str:字符串的首地址; len:字符串的长度; 二、切片和字符串转换 1. byte切片转string 需要一次内存拷贝,转换过程: 【申请空间】:跟据切片的长度申请内存空间,假设内存地址为p,切片长度为len(b); 【构建string】:string.str = p;string.len = len; 【拷贝数据】:切...
2021-08-10 11:07:56 463
原创 slice数据结构
slice数据结构 slice结构体:src/runtime/slice.go array:切片底层数组的指针 len:slice长度 cap:slice容量 slice创建 1.通过make创建slice slice := make([]int, len) //cap = len slice := make([]int, len, cap) 2.通过array/slice创建slice slice := array[start:end] slice :...
2021-08-10 10:55:02 509
原创 三色标记法和混合写屏障
一、Go垃圾回收发展历史 1.3之前:原始的标记清除算法(mark and sweep) 1.3 减少STW暂停的时间范围 1.5 三色并发标记 1.8 混合写屏障(hybrid write barrier)机制
2021-08-08 23:06:07 1668
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人