- 博客(8)
- 收藏
- 关注
原创 Java垃圾回收
一、自动垃圾回收算法1.引用计数法(Reference Counting)缺点:循环引用,导致红色部分引用计数一直大于零;2. 标记-清除(Mark and Sweep)缺点:STW(Stop the World),需要暂停应用程序的所有线程;二、Java中的垃圾回收1. 内存池的划分2.内存分配...
2021-08-25 12:41:05
439
原创 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
527
原创 LiveData原理
一、LiveData 设计1.观察者模式:LiveData 是一种可观察的数据存储器类;2.生命周期感知:LiveData 具有生命周期(如 Activity、Fragment 或 Service)感知能力,确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者;二、LiveData源码解析1.订阅2.数据改变...
2021-08-13 15:07:31
223
原创 goroutine和GPM调度
目录一、Go 语言的协程 goroutine1. goroutine概念2. goroutine特点二、m:n调度技术三、goroutine 调度器的实现1. 被废弃的调度器2.新调度器GPM设计思想3.P和M的数量和创建数量创建4.调度器的设计策略线程复用利用并行抢占全局 G 队列5.GPM调度流程6.调度器的生命周期M0G0一、Go 语言的协程 goroutine1. goroutine概念goroutine
2021-08-10 17:13:52
570
原创 channel数据结构
目录一、Channel数据结构1. 环状队列(缓冲区)2. 等待队列阻塞唤醒类型信息锁二、Channel读写1. 创建channel2. 向channel中写数据3. 从channel读数据4. 关闭Channel三、常见用法1. 单向channel2. select3. range一、Channel数据结构chan 数据结构:src/runtime/channel;主要构成:环状队列、类型信息、goroutine等待队.
2021-08-10 15:38:04
1900
原创 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
519
原创 slice数据结构
slice数据结构slice结构体:src/runtime/slice.goarray:切片底层数组的指针len:slice长度cap:slice容量slice创建1.通过make创建sliceslice := make([]int, len) //cap = lenslice := make([]int, len, cap)2.通过array/slice创建sliceslice := array[start:end]slice :...
2021-08-10 10:55:02
577
原创 三色标记法和混合写屏障
一、Go垃圾回收发展历史1.3之前:原始的标记清除算法(mark and sweep)1.3 减少STW暂停的时间范围1.5 三色并发标记1.8 混合写屏障(hybrid write barrier)机制
2021-08-08 23:06:07
1891
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅