Apache Portals

React 16

我们两清 提交于 2021-01-17 14:51:39
一.特性 fragment 模版支持fragment和string类型,对应ReactElement数组和字符串 v16.2.0还提供了JSX的fragment支持:<></> error boundary 组件级错误处理,支持捕获子组件树内部异常,UI层的兜底方案 portal 允许组件树与DOM树结构不一致,用于hovercards,tooltips等场景 例如tooltip在DOM结构上target与tip一般是兄弟关系(布局需要),而逻辑上tip是属于target的,是父子关系,portals特性用来处理这种场景 特殊的,事件冒泡经过处理,portals组件的父组件仍然能接到冒泡通知(React 16之前就内置了用来抹平DOM事件冒泡差异的事件系统,这里顺便支持拐弯冒泡 示例) support for custom DOM attributes 之前内置了HTML/SVG属性名白名单,自定义属性会被拦截并忽略掉,React 16去掉了这个限制 去掉该限制有2个原因,其一,这层内置的属性过滤对于非标准的(比如proposal阶段的)新属性和其它库/框架(比如Angular、Polymer)很不友好;其二,bundle里要内置一份体积不小的属性白名单,维护起来还挺麻烦 improved server-side rendering 号称比React 15快3倍

Unity 3D 遮挡剔除(仅专业版) Occlusion Culling Pro only

允我心安 提交于 2020-12-29 19:13:19
Occlusion Culling is a feature that disables rendering of objects when they are not currently seen by the camera because they are obscured by other objects. This does not happen automatically in 3D computer graphics since most of the time objects farthest away from the camera are drawn first and closer objects are drawn over the top of them (this is called "overdraw"). Occlusion Culling is different from Frustum Culling. Frustum Culling only disables the renderers for objects that are outside the camera's viewing area but does not disable anything hidden from view by overdraw. Note that when

图形学 遮挡剔除算法综述

血红的双手。 提交于 2020-12-29 17:49:58
1. Hidden Line Removal (HLR) 在光栅化的文章中,我们使用Z-Buffer来判断三角形面片是否遮挡,但Z-Buffer不适用于纯线框的模型的遮挡剔除。原因如下。 就如同上图左侧,在A点的位置,左侧的三角形由于只画边不画面,所以A点它是不画的,所以就没有Z值来与右侧的三角形的A点的Z值做比较,因此就没法判断A点是谁在前谁在后。 HLR算法总结 Raycasting(光线投射) 算出每条光线在屏幕上某个像素点上的交点位置 在该像素点上只保留最近的交点 Painter’s Algorithm(画家算法) 简单粗暴,先画后面的物体,后画前面的物体,就像画画一样,后涂的颜色会覆盖掉先涂的颜色。 比较两个物体,当前视角来看,如果A的点全都在B的点前面,那么先画B再画A 但缺点也很明显: 1)如果A的点不全的B的前面,即A有些点从当前视角看是在B的某些点后面,就会失败。 2)物体之间有相交的面时,会失败。 (好像飞机的雷达显示是用的这个算法?) Warnock Algorithm (沃诺克算法) 核心:分而治之 不停的四分屏幕(一般是四分,也可以二分或者其他分),直到被细分的子空间只存在简单的前后关系(就是画家算法的那个要求),或者子空间已经细分到了一个像素点的大小。 在曲面和抗锯齿中很有用。 1)当前子空间没有多边形:完成! 2)当前子空间只有一个多边形:画! 3

iscsi共享(磁盘共享)

烈酒焚心 提交于 2020-11-30 20:54:52
前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。\ iSCSI共享 internet scsi 磁盘共享 软件包: 服务端: targetcli(centos7) ; scsi-target-utils(centos6) 客户端: iscsi-initiator-utils 系统服务: 服务端: target 客户端: iscsid 默认端口: 3260 ·做iscsi服务需要三个概念: ①.backstore(后端存储):后端真正的存储设备(实物); ②.target(目标):共享磁盘名(虚拟); target共享名的要求:iqn规范 iqn规范 = iqn.yyyy-mm.主机域名反写:任意字串 例:iqn.2018-02.com.example:data ③.lun(逻辑单元):Logic Unit Number ,绑定、关联存储设备。 搭建iscsi共享 一、iscsi服务端: 0.准备后端存储磁盘: ]# lsblk /dev/vdb #后端存储必须是分区、LV或磁盘镜像 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vdb 252:16 0 20G 0 disk 1.安装服务端软件targetcli : ]# yum -y install targetcli 2.启动和设置自启服务: ]#

软SAN 课堂内容

我只是一个虾纸丫 提交于 2020-10-27 17:51:57
配置服务端(存储) 安装targetcli,重启下服务 /> ls o- / ........................................................................... [...] o- backstores .............................................................. [...] | o- block .......磁盘.................................... [Storage Objects: 0] | o- fileio ......文件.................................... [Storage Objects: 0] | o- pscsi ......scsi磁盘................................. [Storage Objects: 0] | o- ramdisk ....把内存当硬盘............................. [Storage Objects: 0] o- iscsi ........................................................... [Targets: 0] o-

Greenplum的工作负载及资源管理

帅比萌擦擦* 提交于 2020-08-12 09:39:57
工作负载及资源管理 查询分析-查看EXPLAIN输出 EXPLAIN输出一个计划为节点组成的树 每个节点表示一个独立的操作 计划应该从下向上读,每个节点得到的记录向上传递 成本评估项: cost - 获取的磁盘页数,1.0等于一个连续的磁盘页读取;第一个评估是开始成本,第二个评估是总成本 rows - 输出的记录数,通常小于真实处理的数量。顶层节点评估的数量最接近真实值 width - 输出的总字节数。 devdw= # explain select * from tb_cp_02 t where t.id = 1; QUERY PLAN ----------------------------------------------------------------------------------- Gather Motion 1 : 1 (slice1; segments: 1 ) (cost= 0.00 . .6 .08 rows= 7 width= 22 ) -> Append (cost= 0.00 . .6 .08 rows= 4 width= 22 ) -> Seq Scan on tb_cp_02_1_prt_extra t (cost= 0.00 . .2 .08 rows= 2 width= 18 ) Filter : id = 1 -> Seq Scan

React Component(生命周期)

独自空忆成欢 提交于 2020-07-29 00:50:16
RN 组件的生命周期如下图: 生命周期回调函数 挂载 当组件实例被创建并插入 DOM 中时,其生命周期调用顺序如下: constructor() static getDerivedStateFromProps() render() componentDidMount() 注意: 下述生命周期方法即将过时,在新代码中应该 避免使用它们 : UNSAFE_componentWillMount() 更新 当组件的 props 或 state 发生变化时会触发更新。组件更新的生命周期调用顺序如下: static getDerivedStateFromProps() shouldComponentUpdate() render() getSnapshotBeforeUpdate() componentDidUpdate() 注意: 下述方法即将过时,在新代码中应该 避免使用它们 : UNSAFE_componentWillUpdate() UNSAFE_componentWillReceiveProps() 卸载 当组件从 DOM 中移除时会调用如下方法: componentWillUnmount() 错误处理 当渲染过程,生命周期,或子组件的构造函数中抛出错误时,会调用如下方法: static getDerivedStateFromError() componentDidCatch()

好程序员web前端培训分享React学习笔记(三)

巧了我就是萌 提交于 2020-04-28 20:29:28
  好程序员web前端培训分享React学习笔记(三),组件的生命周期   React中组件也有生命周期,也就是说也有很多钩子函数供我们使用, 组件的生命周期,我们会分为四个阶段,初始化、运行中、销毁、错误处理(16.3之后) 初始化 在组件初始化阶段会执行 .constructor .static getDerivedStateFromProps() .componentWillMount() / UNSAFE_componentWillMount() .render() .componentDidMount() 更新阶段 props或state的改变可能会引起组件的更新,组件重新渲染的过程中会调用以下方法: .componentWillReceiveProps() / UNSAFE_componentWillReceiveProps() .static getDerivedStateFromProps() .shouldComponentUpdate() .componentWillUpdate() / UNSAFE_componentWillUpdate() .render() .getSnapshotBeforeUpdate() .componentDidUpdate() 卸载阶段 .componentWillUnmount() 错误处理

OpenStack中的Multipath faulty device的成因及解决(part 1)

 ̄綄美尐妖づ 提交于 2020-04-26 06:12:35
| 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。如有问题,可以邮件:wangxu198709@gmail.com 简介: Multipath:这个多路径软件在Linux平台广泛使用,它的功能就是可以把一个快设备对应的多条路径聚合成一个单一的multipath device。主要目的有如下两点: 多路径冗余(redundancy):当配置在 Active/Passive 模式下,只有一半的路径会用来做IO,如果IO路径上有任何失败(包括,交换机故障,线路故障,后端存储故障等),可以自动切换的备用路线上,对上层应用做到基本无感知。 提高性能(Performance): 当配置在 Active/Active 模式下,所以路径都可以用来跑IO(如以round-robin模式),可以提高IO速率或者延时。 multipath不是本文的重点,如有需要,请移步: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/dm_multipath/setup_overview 安装及使用: Multipath:这个多路径软件在Linux平台广泛使用,在Debian/Ubuntu平台可以通过 sudo apt-get install

Vue3中的大热门——其他技术

半城伤御伤魂 提交于 2020-04-06 05:48:24
全局安装/配置API更改 在Vue2.x中对全局属性和全局API函数是这么玩的 import Vue from 'vue' import App from './App.vue' Vue.config.ignoredElements = [/^app-/] Vue.use(/* ... */) Vue.mixin(/* ... */) Vue.component(/* ... */) Vue.directive(/* ... */) new Vue({ render: h => h(App) }).$mount('#app') 现在,让我们看看它如何在Vue 3中运行: import { createApp } from 'vue' import App from './App.vue' const app = createApp(App) app.config.ignoredElements = [/^app-/] app.use(/* ... */) app.mixin(/* ... */) app.component(/* ... */) app.directive(/* ... */) app.mount('#app') 您可能已经注意到,每个配置都限于使用定义的某个Vue应用程序createApp。 它可以使您的代码更易于理解,并且不易出现由第三方插件引起的意外问题。当前