以下是学习重点 原文地址

  1. 浏览器环境
  2. JS解析和执行、绘制、事件处理、静态资源加载和处理
  3. GUI渲染线程和Javascript线程

调度策略

  1. 先到先得(FCFS)
  2. 对短进程不利
  3. I/O密集不利
  4. 单处理器进程调度中并不受欢迎
  5. 轮转 (时钟的 )
  6. 确定合适的时间片长度
  7. I/O进程还是不公平
  8. 最短进程优先(SPN)
  9. 先执行完短进程,后执行长进程。这是一种非抢占策略。
  10. 缺陷是: 如果系统有大量的短进程,那么长进程可能会饥饿得不到响应
  11. 最高响应比优先(HRRN)
  12. 为了解决长进程饥饿问题,同时提高进程的响应速率
  13. 响应比 = (等待执行时间 + 进程执行时间) / 进程执行时间
  14. 对于短进程来说,因为执行时间很短,分母很小,所以响应比比较高,会被优先执行
  15. 对于长进程来说,执行时间长,一开始响应比小,但是随着等待时间增长,它的优先级会越来越高,最终可以被执行
  16. 反馈法
  17. 每个进程一开始都有相同的优先级,每次被抢占(需要配合其他抢占策略使用,如轮转),优先级就会降低一级。因此通常它会根据优先级划分多个队列。
  18. 解决这种问题有三个方向:
  19. 1️⃣ 优化每个任务,让它有多快就多快。挤压CPU运算量
  20. 2️⃣ 快速响应用户,让用户觉得够快,不能阻塞用户的交互
  21. 3️⃣ 尝试 Worker 多线程

Fiber 架构

  1. Reconcilation(协调)
  2. React Fiber 的思想和协程的概念是契合的: React 渲染的过程可以被中断,可以将控制权交回浏览器,让位给高优先级的任务,浏览器空闲后再恢复渲染。
  3. 主动让出机制(通过requestIdleCallback实现)
  4. 模拟函数调用栈
  5. 递归进行处理的事情分解成增量的执行单元,将递归转换成迭代.
  6. 链表-> Fiber
  7. return 父节点
  8. child 子节点
  9. sibling 下一兄弟节点
  10. ⚛️ 协调阶段:可以被中断副作用(Effect)
  11. constructor
  12. shouldComponentUpdate
  13. render
  14. getSnapshotBeforeUpdate
  15. ⚛️ 提交阶段: 同步执行,不能被打断.副作用(Effects)一次性执行
  16. componentDidMount
  17. componentDidUpdate
  18. componentWillUnmount
  19. 协调阶段可能被中断、恢复,甚至重做,️React 协调阶段的生命周期钩子可能会被调用多次!,
  20. 协调阶段的生命周期钩子不要包含副作用
  21. 不会再递归去比对、而且不会马上提交变更。
  22. 结构信息
  23. 节点类型信息如divMyComp
  24. 节点的状态 - 节点的组件实例、propsstate
  25. 副作用保存在节点的effectTag 通过nextEffect连接起来
  26. 替身构建一颗新的树(官方称为workInProgress treeWIP树)还有一颗表示已渲染界面的旧树
  27. WIP 树双缓存(Double Buffering)
  28. 中断和恢复

React 日常记录的更多相关文章

  1. React学习记录

    托webpack的福,我终于可以开始写React了.==ORZ 我感觉我接近webpack工程师更进一步了哈哈哈. 以下所有内容均来自小红书,仅是我的个人记录,如想系统学习,请移步:React小书 : ...

  2. React学习记录一

    半路出家直接上手React,其实有点吃力,所以开始研究create-react-app,从这里下手吧. create-react-app 官方网站:https://github.com/faceboo ...

  3. React日常填坑手册(持续更新)

    1.react中自己定义的组件第一个字母一定要大写,如<app />会不显示,<App />才能正常显示. 2.在react中点击事件里面setState时会使this重新定义 ...

  4. Unity日常记录-本地保存未来时间实现倒计时

    本地保存未来时间实现倒计时 TimeTool工具类:获取当前时间.未来时间.两时间差 using System; using UnityEngine; public class TimeTool { ...

  5. react+spring 记录跨域问题的解决方法

    react 跨域访问后台,默认是有跨域问题,并且火弧和谷歌浏览器,对跨域问题展示还不一样. 谷歌浏览器如下图: 此处状态是200,然而在Response却没有任何信息,如下图 然而火弧浏览器,对该问题 ...

  6. React 实践记录 04 Flux demo

    Introduction flux应用架构如下图所示,本文并不是讲述怎么立即做一个酷炫的应用,而是讲述如何依照这种框架,来进行代码的组织. 我们先把这个流程转述为文字:抛开与webAPI的交互不谈,以 ...

  7. React 实践记录 03 React router

    Introduction 本文主要参考了react router 的官方文档. React Router是一套完整的配合React的路由解决方案,可能你已经知道前端路由,或者知道后端有路由的概念,如下 ...

  8. React 实践记录 02 Flux introduction

    Introduction 本文组成: React 官方文档翻译 相关实践心得. 内容上是Flux的介绍,例子将会在以后写出. 一旦稍微多了解一点React,很难避免听到Flux这个名词. Flux是一 ...

  9. React 实践记录 01 组件开发入门

    Introduction 本文组成: Ryan Clark文章Getting started with React的翻译. 博主的实践心得. React由Facebook的程序员创建,是一个非常强大的 ...

随机推荐

  1. sql中数据统计

    今天来说一下使用sql统计数据. 用的H2数据库,用的是DBeaver连接工具.有三表,打印表PRINT_JOB,复印表COPY_JOB和扫描表SCANNER_JOB (这段可以忽略)任务是要统计相同 ...

  2. Nebula Graph 在网易游戏业务中的实践

    本文首发于 Nebula Graph Community 公众号 当游戏上知识图谱,网易游戏是如何应对大规模图数据的管理问题,Nebula Graph 又是如何帮助网易游戏落地游戏内复杂的图的业务呢? ...

  3. Joplin开源笔记软件使用入门

    Joplin是一款开源免费的笔记软件,可以记录笔记.待办清单,支持Markdown,可导出Markdown格式.HTML格式.PDF格式的文档,具备自动同步功能,可定时自动备份到文件系统或网盘. Jo ...

  4. 摆烂期的Android学习笔记一

    Android大致分为四层架构1.Linux内核层:提供各种硬件驱动,如显示驱动,音频驱动,相机驱 动,蓝牙驱动.... 2.系统运行库层:通过C/c++库为android地图提供支持 3.应用框架层 ...

  5. 什么是Hystrix?

    防雪崩利器,具备服务降级,服务熔断,依赖隔离,监控(Hystrix Dashboard)服务降级:双十一 提示 哎哟喂,被挤爆了. app秒杀 网络开小差了,请稍后再试.优先核心服务,非核心服务不可用 ...

  6. 分布式HDFS的安装和启动(二)

    一.分布式HDFS的安装和启动①在$HADOOP_HOME/etc/hadoop/core-site.xml文件<property> <name>fs.defaultFS< ...

  7. promethues常用的函数

    prometheus函数常用 时数据 (Instant vector): 包含一组时序,每个时序只有一个点,例如:http_requests_total区间数据 (Range vector): 包含一 ...

  8. BootstrapBlazor 智能生成神器(一)AutoGenerateColumnAttribute 特性介绍

    原文连接:https://www.cnblogs.com/ysmc/p/16074645.html BootstrapBlazor 官网地址:https://www.blazor.zone 介绍 Bo ...

  9. js技术之转换为大写toUpperCase()

    案例:把所有单词以空格为分割并将首字母转为大写 <!DOCTYPE html><html lang="en"><head> <meta c ...

  10. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...