首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 高级程序设计(第 4 版)- DOM

CDATA 区块只在 XML 文档中有效,因此某些浏览比较陈旧版本会错误地 CDATA 区块解析为 Comment 或 Element 在真正 XML 文档,可以使用 document.createCDataSection...DOM文档片段定义为“轻量级”文档,能够包含和操作节点,却没有完整文档那样额外消耗。不能直接把文档片段添加到文档。相反,文档片段作用是充当其他要被添加到文档节点仓库。...使用 document.createDocumentFragment()方法创建文档片段 文档片段从 Node 类型继承了所有文档类型具备可以执行 DOM 操作方法 如果文档一个节点被添加到一个文档片段...,则该节点会从文档树移除,不会再被浏览渲染 可以通过 appendChild()或 insertBefore()方法文档片段内容添加到文档 在把文档片段作为参数传给这些方法时,文档片段所有子节点会被添加到文档相应位置...文档片段本身永远不会被添加到文档树 // 如果分 3 次给这个元素添加列表项,浏览就要重新渲染3 次页面,以反映新添加内容 // 利用文档片段可避免多次渲染 let fragment = document.createDocumentFragment

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

OpenGL ES 3.0 | 围绕HelloTriangle实战案例 展开 渲染流程分析

) 加载顶点、片段着色 创建一个程序对象, 连接顶点、片段着色, 并链接程序对象; 设置口; 清除颜色缓冲区; 渲染简单图元 使颜色缓冲区内容在EGL窗口表面(GLSurfaceView)可见...Triangle Draw函数 传入 要放在这个变量 每个顶点位置。...将用 链接到程序对象 顶点着色片段着色进行; 设置口和清除颜色缓冲区 设置口 onDrawFrame()方法用于绘制帧; GLES30.glViewport ( 0, 0, mWidth,...2D矩形; 口 由 原点坐标(x,y)和宽度、高度 定义; 清除颜色缓冲区 设置口之后,需要清除屏幕; 在OpenGL ES, 绘图中涉及多种缓冲区类型:颜色、深度、模板; HelloTriangle...加载几何形状 清除颜色缓冲区、设置口和加载程序对象之后, 指定三角形几何形状; 三角形顶点由mVerticesData数组3个坐标(x,y,z)指定; private final float

1.5K10

🚀🚀🚀Astro:一个可以同时写React、Vue、Svelte、SolidJS等多种语言框架

「服务优先」:网站在服务上渲染 HTML 时运行速度更快。「默认快速」:在 Astro 构建缓慢网站是不可能。「易于使用」:您不需要成为专家即可使用 Astro 构建某些内容。...; }); }); 指令 class:listclass:list 接收数组,其中有几种不同可能值:string:添加到 class 元素Object:添加到键值对到 class...-- 输出 --> set:htmlset:html={string} HTML 字符串注入元素,类似于设置...-- 输出:Hello World --> set:textset:text={string} 文本字符串注入元素,类似于设置 el.innerText...client:idle 一旦页面完成了初始加载,并触发 requestIdleCallback 事件,就会加载并激活组件 JavaScriptclient:visible 一旦组件进入用户口,就加载组件

1K50

Qt5 和 OpenCV4 计算机视觉项目:6~9

在该坐标系,所有坐标都限制在 -1.0 和 1.0 范围。 如果对象坐标超出此范围,则它们将不会显示在 OpenGL 口中。...栅格化:此阶段 3D 形状(在 OpenGL 主要是三角形)转换为 2D 像素。 此阶段不需要任何着色程序。 片段着色:此阶段用于着色光栅化阶段片段。...然后,着色程序作为字符串编写在代码,我们将在后面解释。 接下来,我们通过调用glCreateShader函数并向其附加源字符串来创建每个着色程序,然后对其进行编译。...在代码块,我们清除窗口上位平面区域,然后使用我们创建着色程序并绑定顶点数组对象。 此操作着色程序和数组或缓冲区与当前 OpenGL 上下文连接。...在片段着色过滤图像 在前面的小节,我们使用 OpenGL 绘制了图像。 绘制图像时,我们从片段着色纹理(与原始图像具有相同数据)中选择了颜色。

3.1K30

JVM G1GC算法与实现

[转移专用记忆集合构造] 每个区域都有一个转移专用记忆集合,是通过散列表实现: 键:引用本区域其他区域地址 值:数组数组元素是引用方对象所对应的卡片索引 在上图中,区域 B 对象 b...每个应用程序线程都持有一个转移专用记忆集合日志缓冲区,其中存放是卡片索引数组。当对象 b 域被修改时,写屏障就会感知,并会将对象 b 所对应的卡片索引添加到转移专用记忆集合日志。...转移:以根转移对象为起点,扫描子孙对象,所有存活对象一并转移。此时回收集合所有存活对象都转移完成了。...对象 a 在空闲区域中新地址写入到转移前所在区域中旧位置。 将对象 a 引用所有位于回收集合对象,都添加到转移队列。转移队列临时保存待转移对象引用方。...二者区别在于完全新生代 GC 所有新生代区域选入回收集合,而部分新生代 GC 所有新生代区域,以及一部分老年代区域选入回收集合。

1.3K30

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 上

,应用程序类加载和扩展类加载字符串常量池中引用字符串对象 … 标记结束后,可从根触达对象 a、b、c 都带有标记,而对象 d、e 则会因为不带标记而被当作死亡对象处理。...散列表键是引用本区域其他区域地址,而散列表值是一个数组数组元素是引用方对象所对应的卡片索引。 在上图中,区域 B 对象 b 引用了区域 A 对象 a。...具体到这段代码,含义就是引用方对应的卡片添加到转移目标(forwarding指针)区域转移专用记忆集合(和上图中⑤作用相同)。...如果在回收集合,则执行第 17 行,子对象添加到转移队列($ evacuate_queue)(上图中③),否则执行第 19 行,调用函数 add_reference()。...该函数参数为子对象引用方 child 和子对象 *child(上图中④)。 第 21 行用来待转移对象所对应的卡片,添加到转移目标区域转移专用记忆集合(上图中⑤)。

1.5K20

第一集 主线 - 打开新世界大门

---- 2.1 GLPoint编写 为了不混乱和方便使用,创建一个GLPoint类负责点绘制测试 [1] 准备顶点着色代码和片段着色代码 [2] 准备顶点和颜色数据 [3] 加载着色代码并初始化程序..., fragmentShader);//加入片元着色 GLES30.glLinkProgram(program);//创建可执行OpenGL ES项目 return...qbb.order(ByteOrder.nativeOrder()); // 从字节缓冲区创建浮点缓冲区 buffer = qbb.asFloatBuffer(); // 坐标添加到...独立文件 着色shader是OpenGL灵魂般存在,所以直接写在代码里肯定不太好 一般放在assets文件夹里,另外值得一提是AS着色代码高亮显示插件 个人习惯片段用.fsh后缀名,...fragmentShader);//加入片元着色 GLES30.glLinkProgram(program);//创建可执行OpenGL ES项目 return program; }

62630

深入浅出 JavaScript 弱引用

在 ES6 版本,JavaScript 引入了 WeakSet 和 WeakMap。 1. 弱引用 与强引用不同,弱引用并不阻止被引用对象被垃圾收集回收或收集,即使它是内存对对象唯一引用。...如果我们通过赋值 null 来覆盖 person 值: person = null; 那么对象将被垃圾回收,"xiaan" 值无法再次访问。...在第 5 行,我们 person 添加到 WeakSet() 。在第 9 行,我们 person 引用设为空。...因此,只要数组仍然在内存,它就保存在内存。因此,它没有被垃圾回收。由于我们在上面的例子中使用了数组,我们也可以使用 map。当 map 仍然存在时,存储在其中值将不会被垃圾回收。...使用 WeakMap(),一旦对象被垃圾回收,缓存结果就会自动从内存删除。缓存是提高软件性能一种很好方法——它可以节省数据库使用、第三方 API 调用和服务对服务请求成本。

79010

了解JavaScript弱引用与垃圾回收

WeakSet和WeakMap是在ES6版本中被引入JavaScript。 弱引用 澄清一下,与强引用不同,弱引用不会阻止被引用对象被垃圾回收回收,即使它是内存对该对象唯一引用。...在第7行,我们paul添加到WeakSet(),并将其分配到classroom变量。在第11行,我们paul引用变为null。...当数据结构在内存时,数据结构属性被认为是可达,而且它们通常被保存在内存。如果我们一个对象存储在一个数组,那么只要数组在内存,即使该对象没有其他引用,仍然可以被访问。...由于弱引用,WeakMaps是不可枚举。 对于WeakMap,键必须是对象,而值可以是数字或字符串。 下面的片段说明了WeakMap工作原理和其中方法。 // 创建一个weakMap。...有了WeakMap(),一旦对象被垃圾回收,缓存结果就会自动从内存删除。缓存是提高软件性能一个很好手段——它可以节省数据库使用、第三方API调用和服务到服务请求成本。

1.5K104

从零开始学习BOM&DOM

作为浏览窗口时,提供了对浏览操作相关API; Window全局对象 在浏览,window对象就是之前经常提到全局对象 比如在全局通过var声明变量,会被添加到全局环境变量,也就是会被添加到...: 路径; search: 查询字符串; hash: 哈希值; username:URLusername(很多浏览已经禁用); password:URLpassword(很多浏览已经禁用);...可以在里面保存将来会添加到文档节点。...总结 DOM1级HTML和XML文档看作一个层次化节点树,方便js来直接操作。...scrollTop可以用来确定当前元素滚动状态 确定元素大小 getBoundClientRect()返回一个矩形对象,包含四个属性 left top right bottom,给出了元素在页面相对于位置

56220

遗传算法可视化项目(3):创建图数据结构

继续遗传算法可视化项目,之前文章没看或者今天才关注点历史消息或者这里: 遗传算法可视化项目(1):概述 遗传算法可视化项目(2):获取信息 好了,该进入今天工作了,创建图数据结构,图定义(主要是二元组和三元组两种定义...#define ROW 106表示图中有106个结点(自己情况而定,我以前在学校就爬出来106个点,然后回到家重新爬一次发现没有106个点,我也不清楚是为什么,具体怎么爬看之前推送。...这个不用管,那个文本文件(海南省所有镇经纬度.txt)有多少行ROW就是多少),最后我还定义了一个Graph类型全局变量,为什么要定义这个全局变量是因为和Python交互时使用,如果局部变量函数一结束就直接回收了...然后就是打开文件(海南省所有镇经纬度.txt),把文件内容读到内存,以后方便处理,代码如下: ? 我在这里就是把文件内容存放到char*类型str变量,然后就是字符串分割,代码如下: ?...这样就把str整个字符串分成了ROW行3列char*类型二维数组,二维数组是变量strArray,然后利用atof函数把经纬度从char*类型转变为double类型,存入图中,代码如下: ?

71720

iOS开发——MJExtension实际使用,JSON格式解析

现在iOS在跟服务进行交互式,采取常用数据格式是XML和JSON,而今天就探讨一个JSON解析框架 —— MJExtension。...今天我打算举一个很简单例子,来告诉大家,实际项目中该如何使用MJExtension框架来处理Model数据。 首先我们先来看一个JSON数据格式。...}, "rows": null, "total": 0 } 观察这个JSON数据,我们能发现它里面装着数组属性,而数组又装着其他模型。这里主要就是要提取group这个数组数据。...之后我们解析group这个数组数据,把room字符串提取出来存在Modelroom里,把roomgroup里字典分别提取出来,存在RoomModel类型Model里,并且把RoomModel...添加到GroupRoomModeldeviceDetail这个可变数组

3.7K30

Android入门教程 | Fragment 基础概念

当执行此类片段事务时,也可将其添加到由 Activity 管理返回栈 — Activity 每个返回栈条目都是一条已发生片段事务记录。借助返回栈,用户可以通过按返回按钮撤消片段事务(后退)。...(在本例,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局创建一个多余视图组。) 接下来,需将该片段添加到 Activity 。...可以通过两种方式向 Activity 布局添加片段(以下为代码片段,并非完整代码)。 静态方式 在 Activity 布局文件声明片段。 在本例,您可以片段当作视图来为其指定布局属性。...Java代码加载Fragment 或者,通过编程方式片段添加到某个现有 ViewGroup。 在 Activity 运行期间,您可以随时片段添加到 Activity 布局。...去除掉然后当前 Fragment添加到容器

3.5K40

【原创】Java基础面试题①

类,在AbStraStringBuilder也是字符串保存在字符数组,但没有被final关键字修饰。...Map子接口:HashMap,TreeMap。 2. List集合: ArrayList:本质是一个动态数组,当添加到集合最后一位时,会自动进行扩容,扩容为原理长度1.5倍。...反射使用场景: MybatisMapperXml文件等标签resultType属性值为类完全限定名,即通过反射机制数据封装到类 Spring框架Bean标签,使用类完全限定名实例化类对象...xml解析 xml使用自定义标签方式,完成结构化数据保存,在项目开发主要进行项目的配置。xml是需要定义标签规范或者约束,保证能对xml文件正常解析。...xml文件应用场景:在项目开发主要进行项目的配置 xml文件解析方式: DOM解析:jdk提供,Java官方解析,使用了dom解析,xml文件一次性加载到内存,形成一颗dom树,解析

28410

图解浏览

他们模块重构成独立服务(Service),服务运行在独立进程,想要访问的话必须使用定义好接口,通过 IPC 来进行通信。这样架构无疑更加聚、松耦合、易于维护和扩展。...堆垃圾回收需要用到垃圾回收,分为主垃圾回收和副垃圾回收。 副垃圾回收 负责新生区垃圾回收,新生区区域不大(为了执行效率),回收频繁。...为了提供良好用户体验,网站应努力使CLS分数小于0.1。 布局偏移分数 浏览查看视口大小以及两个渲染帧之间口中不稳定元素移动。...在上图中,有一个元素在一帧占据了一半。然后,在下一帧,元素下移口高度 25%。...在上图中,最大口尺寸是高度,不稳定元素已经移动了口高度 25%,所以距离分数是 0.25。

1.5K30

程序员30大Mybatis面试问题及答案

MyBatis 可以使用 XML 或注解进 行配置和映射, MyBatis 通过参数映射到配置 SQL 形成最终执行 SQL 语句 ,最后执行 SQL 结果映射成 Java对象返回。...${}是字符串替换,#{}是预编译处理。一般用#{}防止 sql注入问题。 9.Mybatis9个动态标签是?...片段,为不支持自增主键生成策略标签。...SOFT(软引用) : 移除基于垃圾回收状态和软引用规则对象 。 WEAK (弱引用) : 更积极地移除基于垃圾收集状态和弱引用规则对象 。...缓存数据会在虚拟机重启 过程写入磁盘。 可 以通过 RMI、可插入 API 等方式进行分布式缓存。 .具有缓存和缓存管理侦 昕接口。 支持多缓存管理实例 以及一个实例多个缓存区域。

24320

OpenGL学习笔记 (一)- 综述、渲染管线

不过裁剪过程也可能会产生新顶点。比如,裁剪一个部分在屏幕图形就需要在“屏幕边缘”补点防止裁剪后无法构成图形。 透视除法 透视除法投影后齐次坐标进行处理。...口变换 口变换,坐标将会被转化为真实屏幕上显示坐标——也就是屏幕空间坐标(screen-space coordinates)。...光栅化 光栅化接受几何数据、像素数据,并把它们转化为片段(fragment),也就是对应屏幕像素一个方块。在这一步骤,会考虑图元绘制方式,决定片段多少,然后图元转化为多个片段位置信息。...图中标蓝部分就是我们可以编程替换着色——顶点着色、几何着色片段着色(当然还有更高级着色,比如细分着色等等,目前暂不讨论)。...GLSL同样支持数组和结构体,此外GLSL还支持一种特殊结构体uniform块,这将在之后小节中介绍。 此外,GLSL还提供了采样,这将在后续文章中进行介绍。

1.5K11

用纹理增加细节

一.理解纹理   OpenGL纹理可以用来表示照片,图像。每个二维纹理都由许多小纹理元素组成,他们是小块数据,类似于我们前面讨论片段和像素。要使用纹理,最直接方式是从图像文件加载数据。...二.把纹理加载进OpenGL   我们第一个任务是一副图像文件数据加载到一个OpenGL纹理,我们创建一个新类TextureHelper,并在其中完成加载纹理工作。...片段着色也通过u_TextureUnit变量接收实际纹理数据,u_TextureUnit被定义为一个sampler2D类型,它指定是一个二维纹理数据数组。...被插值纹理坐标和纹理数据被传递给着色函数texture(),它会读入纹理那个特定坐标处颜色值,然后把结果赋值给fragColor,以便设置片段颜色。...四.为顶点数据创建新类结构   首先,我们要把顶点数组分离到不同,每个类代表一个物理对象类型。我们为桌子创建一个新类,并为木槌创建另一个类。

10010
领券