- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 课程总结报告
启动虚拟化管理程序:在物理计算机上,虚拟化管理程序(例如KVM、Xen等)会被启动。这个管理程序负责创建和管理虚拟机,它提供了对硬件资源的访问和分配。创建虚拟机:虚拟化管理程序根据用户的需求,创建一个或多个虚拟机。每个虚拟机都是一个独立的操作系统实例,其中运行着一个或多个Linux系统。分配硬件资源:虚拟化管理程序将物理计算机的硬件资源,如CPU、内存、磁盘和网络接口等,分配给每个虚拟机。这些资源可以是静态分配的(固定资源量)或动态分配的(根据需要动态调整)。
2023-05-14 22:29:32
166
原创 Vue.js设计与实现阅读笔记(十二)
在同构渲染过程中,组件的代码会分别在服务端和浏览器中执行一次。在服务端,组件会被渲染为静态的HTML字符串,并发送给浏览器。浏览器则会渲染由服务端返回的静态的HTML内容,并下载打包在静态资源中的组件代码。当下载完毕后,浏览器会解释并执行该组件代码。当组件代码在客户端执行时,由于页面中已经存在对应的DOM元素,所以渲染器并不会执行创建DOM元素的逻辑,而是会执行激活操作。在通过Vite搭建的同构项目中,可以使用环境变量。来判断当前代码的运行环境。
2023-04-16 21:01:18
145
原创 Vue.js设计与实现阅读笔记(十一)
Vue的模板编译器用于把模板编译为渲染函数。即把</编译为工作流程如下:fill:#333;color:#333;color:#333;fill:none;模板词法分析语法分析模板AST代码生成渲染函数。
2023-04-16 18:09:47
130
原创 Vue.js设计与实现阅读笔记(十)
使用虚拟节点的vnode.type属性来存储组件对象,渲染器根据虚拟节点的该属性来判断它是否是组件。如果是组件,则渲染器会使用mountComponent和patchComponent来完成组件的挂载和更新。
2023-04-14 11:50:14
66
原创 Vue.js设计与实现阅读笔记(八)
双端Diff算法是一种同时对新旧两组子节点的两个端点进行比较的算法。因此,需要四个索引值,分别指向新旧两组子节点的端点。依次比较①②③④,当新旧节点的key值相同时,可以进行DOM复用。
2023-04-07 22:17:46
75
原创 Vue.js设计与实现阅读笔记(七)
对于新旧两组子节点的更新,若直接卸载全部旧子节点,再挂载全部新子节点,会产生极大的性能开销。改进方案:遍历新旧两组子节点中数量较少的那一组,并逐个调用patch函数进行打补丁,然后比较新旧两组子节点是数量,如果新的一组子节点数量更多,说明有新子节点需要挂载;否则说明在旧的一组子节点中,有节点需要卸载。
2023-04-06 17:57:06
119
原创 Vue.js设计与实现阅读笔记(六)
渲染器8.挂载与更新8.1挂载子节点和元素的属性function mountElement(vnode, container) { const el = createElement(vnode.type) if (typeof vnode.children === 'string') { setElementText(el, vnode.children) } else if (Array.isArray(vnode.children)) { v
2023-04-05 22:24:38
144
原创 Vue.js设计与实现阅读笔记(五)
在浏览器平台上,渲染器可以利用DOM API完成DOM元素的创建、修改和删除。为了让渲染器不直接依赖浏览器平台特有的API,将这些操作抽象成可配置的对象。用户可以在调用createRenderer函数创建渲染器的时候指定自定义的配置对象,从而实现自定义的行为。const {if(!n1) {console . log(` 创建元素 ${ tag } `) return {
2023-04-04 16:39:20
94
原创 Vue.js设计与实现阅读笔记(三)
Proxy用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。target:要使用Proxy包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。handler:一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理p的行为。一个 可撤销 的代理是可以被禁用的代理。假设我们有一个资源,并且想随时关闭对该资源的访问。我们可以做的是将它包装成可一个撤销的代理,没有任何捕捉器。
2023-04-03 17:33:28
197
原创 以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34
el0_sync在完成保存现场的工作之后,会根据ESR_EL1寄存器确定同步异常产生的原因,同步异常产生的原因很多,在ARM64 Linux中最常见的原因是svc指令触发了系统调用,所以排在最前面的就是条件判断跳转到el0_svc,el0_svc中主要负责调用C代码的el0_svc_handler处理系统调用和ret_to_user系统调用返回。为了连贯性,系统调用表及系统调用内核处理函数相关的处理细节我们稍后在讨论,我们假定系统调用处理完毕,先来看看ret_to_user系统调用返回相关的代码。
2023-03-30 20:32:27
104
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人