12 2021 档案
Jvm运行时区域的学习
摘要:一:结构总览 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。 heap: 堆,整个虚拟机共用一个堆。类对象的实例放在这里。 M
kotlin协程suspend背后的逻辑和状态机思想
摘要:一:前置知识 1:状态机是什么 状态机state machine是什么?它就是用来表示一个对象处于什么状态然后决定正确状态下做正确的事。 比如说:饮料机在没有扫码的时候处于0状态,就不能调用开门这个方法,而扫码之后,饮料机的状态改变,才可以开门,但是扫了码就不能再扫了,状态不同,做的事也不同,状态之
三次握手的作用
摘要:三次握手的作用: 防止因网络阻塞原因,导致服务端无缘无故打开连接。场景1:客户端先发送一个请求连接报文a,但是网络阻塞,所以客户端(没收到回复判断请求报文阻塞了)再发送了一个请求连接报文b。但是呢,服务端先收到请求a,然后(假设是两次握手)服务端就建立连接了!!,它发送了一个回复报文给客户端,但客户
Tcp四次挥手
摘要:客户端: 我没有东西要发送了,给个包你 服务端:我还有呢,等等,先给个包你 服务端:我没有了哦,给个包你 客户端:OK,那你可以关了,我等会再关,给个包你。 为什么需要四次挥手,因为服务端可能存在”我还有“的这种情况啊。
Jetpack compose问题的记录
摘要:一:setContent的调用者 在activity中会调用一个setContent,然后里面放上我们的Jetpack compose之旅.... 在view体系中我遍历一个空的activity——xml什么都没有,的decor view的所有子view,与一个compose体系中setConten
理解Android的四种启动模式
摘要:一:前言 四种模式分别为standard, singleTop, singleTask, singleInstance。自己应该明确一个概念先,single到底要single什么。每一个应用app都有一个包名,然后每一个应用都会有一个task,这个task和包名对应起来,如果要创建一个新task,名
Handler消息机制 笔记
摘要:这是笔记,没有源码分析和详细过程,只有自己总结出来的重点,源码分析看参考资料,前辈写的很好。 一个线程,一个Looper,一个MessageQueue,多个Handler MessageQueue单链表结构 使用ThreadLocal机制保证一个线程一个Looper:https://www.cnbl
ViewRootImpl的连接时机
摘要:ActivityThread在使用handleResumeActivity方法调用了activity的onResume方法之后,就调用了 wm.addView(decor, LayoutParams) wm其实是WindowManagerGlobal 所以调用了 WindowManagerGloba
Activity启动流程 stop的理解
摘要:当启动一个activity的时候 onCreate --> onStart > onResume 当启动另一个activity的时候: old activity onPause new activity onCreate --> onStart > onResume old activity onS
viewmodel的存取流程
摘要:一:获取view model的代码 public <T extends ViewModel> T get(@NonNull String key, @NonNull Class<T> modelClass) { ViewModel viewModel = mViewModelStore.get(ke
转 协程掌握系列 by Manuel Vivo
摘要:https://medium.com/androiddevelopers/coroutines-first-things-first-e6187bf3bb21 https://medium.com/androiddevelopers/cancellation-in-coroutines-aa6b90
在jetpack compose中获取Application实例的方法/避免作用域结束导致协程取消
摘要:前言: 想知道如何获取这个application实例的起因是关于协程的取消。 于是我创建了一个Application类,并在其中创建了一个CoroutineScope的变量。 class MyApplication:Application() { val applicationScope = Cor
kotlin协程问题
摘要:一:拦截器可以有多个吗 不可以,因为CoroutineContext在组合在一起的时候,是从左往右累加的,具有相同Key值的Element,左边的会丢弃。而拦截都继承的 ContinuationInterceptor 它内部代码是这样的 public interface ContinuationIn
未定稿
摘要:一:view的自定义和compose的自定义中测量的对比 自定义的view的测量和compose的自定义Layout有很多相似的地方: 自定义view compose的Layout 作用 measuredWidth = resolveSize(XXXX) measurable.measure(con
如何在子线程中更新UI
摘要:一:报错情况 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at androi
view 自定义 layout模板
摘要:class TagLayout(context: Context?, attrs: AttributeSet?) : ViewGroup(context, attrs) { private val childrenBounds = mutableListOf<Rect>()//用于存储摆放子view
快速排序Java
摘要:代码 public static void quickSort(int[] arr, int start, int end) { //start和end以下标0开始为基准 if (start < end) { int k = partition(arr, start, end); quickSort
堆
摘要:一: 理论基础 y一棵二叉树共 n 个结点, 按1 —— n编号, 如果一个结点序号为 i 有左孩子, 那么左孩子序号为 2 * i, 如果有右孩子, 右孩子序号为2 * i + 1 二:三种二叉树遍历 class TreeNode { int val; TreeNode left; TreeNod