- 博客(70)
- 问答 (1)
- 收藏
- 关注
原创 Flutter 状态管理 Provider
Get对应方式则是Get.put和GetBuilder,Get.put提前存储数据对象,为GetBuilder组件指定数据类型作为泛型,因为Get基于单例,所以GetBuilder可以直接通过泛型获取到存入的对象,在builder方法中暴露,使得组件和数据建立了监听关系,并在数据更新后只驱动将其作为泛型的GetBuilder组件更新。element组件中包含了_parent属性,存放其父节点element,而其又实现了buildContext接口,包含了对树结构操作的方法。
2023-08-13 16:40:28 1071
原创 Flutter 滑动控制
以PageView为例pv基于scrollable进行定制,四个完成功能的主要组件:ScrollNotification、RawGestureDetector、ScrollController和ScrollPosition、ViewPortScrollNotification:封装Notificaiton获得该类通知,根据通知信息内的偏移判断页面是否切换,然后回调onPageChanged。
2023-07-29 19:43:55 1039
原创 Flutter:架构概览
Flutter本质上是一个跨平台的UI工具集,允许在各自操作系统上复用同样的代码。尽可能提供原生体验的高性能和复用代码。开发中,Flutter应用在一个VM上运行,使得可在保留状态且无需重新编译情况下,进行热加载。发行时,Flutter应用会直接通过AOT编译为机器码或者是JS。
2023-07-11 15:01:32 2869
原创 Android:Lifecycle
Lifecycle持有者在ComponentActivity中new出来,所以Activity和Fragment自带实现了LifecycleOwner接口的类 可以获得生命周期信息类LifecycleFragment和Activity都已经实现了该接口。
2023-07-03 11:37:44 359
原创 Android:设计模式
经典的MVC架构是 用户点击View,View将用户输入转发给Controller,Controller处理业务逻辑完后让Model处理对应的数据逻辑,Model更改完数据后让View来展示。Android版本MVP 与MVC不同在于,MVC的Model更改完数据后,view会观察model变化而进行改变,而MVP则是Model必须通过presenter来更新View。定义一个Activity,作为View,并监视组件,转发用户输入,适时调用Controller的方法。
2023-07-01 13:59:44 502
原创 Android:OKHttp
在OKHttp中,设置了不设上限的线程,不保留最小线程,线程空闲时,最大存活时间为60s,保证I/O任务中高阻塞低占用的过程,不会长时间卡在阻塞上。find方法会最终执行ExchangeFinder的findConnection方法,在发送HTTP请求之前的逻辑,都是这个方法中实现。会遍历异步等待线程队列,并对正在执行的异步线程队列进行最大请求size,以及每个host最大请求size进行检查。把异步等待线程放到正在执行线程队列中,并在等待线程队列中删除该线程,这样就把等待线程变成正在执行线程。
2023-06-14 12:41:46 1091
原创 Android:事件分发机制
点击事件分为四件:down、move、up、cancel,前三个是我们要关注的事件分成层次分为四层:Activity、ViewGroup、View涉及的方法分为三个:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent。
2023-06-11 14:05:12 92
原创 Android:Handler
一个线程只有一个Looper,但可对应多个Handler,当通过Looper.prepare方法创建Looper时会调用ThreadLocal的get()方法来检查ThreadLocalMap中是否已经set过Looper。ActivityThread中的main()已经对Looper进行了prepar()操作,已经可以通过getMainLooper获取。
2023-06-10 21:21:13 2075
原创 Android Activity和Fragment的对比
Fragment的事件传递,对于层叠的Fragment,其实就相当于在一个FrameLayout里面加上一堆的View,所以,如果处于顶层的Fragment没处理点击事件,那么事件就会向下层传递,直到事件被处理。因为每个页面的Path深度是固定的,而Stack深度是不变化的,所以这个能准确的判断Fragment是否对用户可见,当然,这个仅针对整个页面有效,对于布局中的一个区域是无效的。这点就不如Activity,a被b盖住后,a会走到onStop(),同样c显示后,b也能通过onStop()感知。
2023-06-05 11:27:35 903
原创 Android-Activity生命周期
Activity的startActivity方法启动目标ActivityInstrumentation的方法execStartActivity,方便Instrumentation对交互进行监測以上部分是在App1的进程中运行。之后会通过进程间通信调用到AMS服务中调用AMS的startActivity方法。此时进入SystemServer进程。然后由AMS中管理Acticity核心调度的类ActivityStackSupervisor的方法startActivityMayWait来处理。
2023-06-05 08:50:26 674
原创 计算机网络-应用层
对应用程序的通信提供服务:文件传输、访管FTP、电子邮件SMTP、虚拟终端HTTP应用层协议定义了报文类型、语法、语义、发送/响应报文的规则。
2023-06-03 15:28:15 1780 4
原创 计算机网络-层级架构
计算机网络将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由软件实现资源共享和信息传递,同时也是一些互联的、自治的计算机系统的集合。
2023-06-03 08:57:46 1095
原创 计算机网络-数据链路层
结点:主机、路由器链路:结点间物理通道数据链路:结点间逻辑通道,控制数据传输协议的硬件和软件加到链路上构成数据链路帧:链路层的协议数据单元,封装网络层数据报数据链路层负责通过一条链路从一个结点与其相邻的结点传送数据报。
2023-06-01 15:22:22 834
原创 操作系统复习4.2.0-磁盘组织和管理
FCFS先来先服务带有公平属性,但在访问的磁道分散时会疲于寻道,降低性能SSTF则是优先处理离磁头近的磁道,保证每次寻道时间短,但可能产生饥饿,且整体时间未必最优SCAN则是每次扫描到磁道边界才返回,平均寻道时间短,不饥饿,但移动强制碰到边界才能改变方向,磁道响应频率不平均LOOK则是解决了SCAN的扫描方向问题,移动方向上没有别的请求就改变磁头移动方向S-SCAN则解决SCAN对各个磁道的响应频率不平均,在碰到边界才返回的基础上,增加了返回时不处理任何请求,直至返回起始端。
2023-05-31 11:08:22 670
原创 操作系统复习3.2.1-虚拟内存
将要用的部分载入内存,不用的部分调出外存,逻辑上扩大内存虚拟内存的最大容量为计算机的寻址范围决定实际容量则为内外存之和和寻址范围其中的最小值多次性:无需在作业时一次性装入,而是多次调入内存对换性:作业运行时无需常驻内存,允许换入换出虚拟性:逻辑上扩充内存容量需要的信息不在内存时,调入内存内存不够时,将暂时不用的调出内存。
2023-05-30 11:58:00 596
原创 操作系统复习3.1.1-内存非连续存储
固定分区带来的是内部内存碎片难以利用而动态分配带来的外部内存碎片难以利用而基本分页存储管理解决了这个问题,将一个进程分散地装入不同分区,避免了紧凑的处理。
2023-05-29 19:07:42 671
原创 操作系统复习3.1.0-内存
程序是由内存放到CPU才可处理,前面一直有提到外存、内存,外存I/O速度十分慢,而内存I/O速度快,CPU I/O速度也快。因此内存是缓和外存和CPU间I/O速率差异问题为区分并发环境下程序数据存放地方,就给内存的存储单元编址,单位为存储单元按字节编址,每个存储单元为1字节,1B,8bit按字编址,每个存储单元为1字,16bit2^10 = 1 k2^20 = 1 M2^30 = 1 G。
2023-05-29 15:00:32 836
原创 操作系统复习2.3.4-进程同步问题
系统中有一组生产者进程和一组消费者进程两者共享一个初始为空,大小为n的缓冲区缓冲区没满,生产者才能放入缓冲区没空,消费者才能取出互斥地访问缓冲区互斥要在同步之后,不然会导致想要同步,但由于没有锁而导致死锁遵循先V后P。
2023-05-28 19:24:32 570
原创 操作系统复习2.3.3-信息量机制
为了更好的解决进程互斥与同步的问题前面的提到的多种进程互斥实现方法,都无法解决让权等待问题用户进程通过使用操作系统提供的一对原语wait(s)和signal(s)来对信号量进行操作wait、signal原语简称为PV操作,P(S)、V(S)
2023-05-28 16:11:26 216
原创 操作系统复习2.3.2-临界区的软件硬件实现方法
在进入区设置并检查一些标志来得知是否有进程已经在临界区,有则循环检查等待,无则直接进入,进程进入/离开临界区时修改标志。
2023-05-28 15:00:55 632
原创 操作系统复习2.2.1-处理机调度
资源有限,需要确定规则来决定任务执行顺序,处理机调用就是从就绪队列中按照一定的算法选择一个进程并并将处理机分配给它运行,实现并发执行。
2023-05-27 20:42:53 52
原创 操作系统复习2.1.4-进程间通信
当写入的数据量小于等于PIPE_BUF时,linux保证写入的原子性,若此时管道空闲区不足要容纳的字节数,则进入睡眠,直到当缓冲区能够容纳要写入的字节数时才进行一次性写操作。通常情况下,没标志的情况下,为读而打开FIFO时,需要已经有进程已经为写而打开FIFO,才能成功返回,反过来亦然,只读open则立即返回,只写则返回ENXIO错误。由于进程是分配系统资源的单位,因此各进程拥有的内存地址空间相互独立,为保证安全,一个进程不能直接访问另一个进程的地址空间,因此需要通过其他方法实现进程通信。
2023-05-27 19:22:27 48
原创 操作系统复习2.1.2-进程状态
进程失去时间片或被高优先级进程抢占。进程运行完成或遇到不可修复的错误。进行请求资源或等待某事发生。资源分配到位,就等时间片了。进程获取时间片,被调度。系统分配资源,创建进程。
2023-05-27 15:31:50 31
空空如也
NOI1.5鸡尾酒疗法不懂就问,找不出错的理由
2020-10-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人