【存储】存储特性

news2024/12/23 8:49:23

存储特性

  • 精简配置技术(SmartThin)
    • SmartThin主要功能
    • 容量虚拟化
    • 存储空间写时分配:Capacity-on-Write
    • 读写重定向:Direct-on-Time
    • 应用场景及配置流程
  • 存储分层技术(SmartTier)
    • 存储分层
    • 工作原理
    • 关键技术
    • 容量初始分配
    • 迁移策略
    • I/O监控统计分析
    • 数据迁移
  • 服务质量控制技术(SmartQoS)
    • 工作原理
    • IO优先级调度技术
    • IO流量控制技术
  • 缓存分区技术(SmartPartition)
    • 工作原理
    • 应用场景
  • 快照技术
    • 映射表
    • COW技术
    • 快照功能原理
    • 应用场景
  • 文件系统配额管理技术(SmartQuota)
    • 在Quota Tree目录上进行资源管控
    • Quota Tree的资源用量
    • 应用场景

精简配置技术(SmartThin)

在这里插入图片描述

  • 上图展示了SmartThin提供的Thin LUN与传统LUN在空间分配上的差异。
  • SmartThin技术做了如下改进:
    • 改进一:采用SmartThin技术的LUN空间在创建时不真正分配具体空间,而在需要真正使用空间时,再分配具体空间。
    • 改进二:有了改进一的基础后,采用SmartThin技术的LUN空间可以在创建后动态调整大小。
  • 当出现数据容量超过预期的情况时,可以动态调整该LUN的空间。未使用的空间作为公共的空间可以分配给任何需要空间的LUN。这样,不存在私有的一直不能被使用到的空间,提高了利用率和效能比。同时,动态空间调整提供了在线调整LUN空间大小的能力,可以做到扩容的同时不影响业务。
    在这里插入图片描述
  • 数据集合:对存储阵列来说是可映射给主机的LUN。
  • 完全可用:可以正常读写。
  • 动态分配:写时分配资源。

SmartThin主要功能

  • 支持Thin LUN容量虛拟化。SmartThin允许主机可感知容量大于Thin LUN实际占用存储空间。
  • 支持存储空间写时分配,SmartThin允许主机在向Thin LUN写入数据时才给Thin LUN分配实际空间,写入多少分配多少。
  • 支持Thin LUN在线扩容。SmartThin提供两种在线扩容方式,分别是存储池间接扩容和Thin LUN直接扩容。
  • 支持Thin LUN空间回收。SmartThin提供两种空间回收方式,分别是标准SCSI命令空间回收和零数据释放空间回收。

容量虚拟化

在这里插入图片描述

  • SmartThin基于RAID2.0+存储虚拟资源池创建Thin LUN,即Thin LUN和传统的Thick LUN共存于同一个存储资源池中。
  • 精简LUN(Thin LUN)是在存储池中创建的并可以映射为主机直接访问的逻辑单元。
  • Thin LUN的容量大小并不是实际的物理空间,而是一个虚拟值,只有在对Thin LUN进行真正I/O读写时,才通过写时分配的策略从存储资源池中申请物理空间。
  • 在RAID2.0+环境中,系统会将存储池空间(即POOL)划分成一个个小粒度的数据块(即CHUNK),基于数据块来构建RAID组(即CKG),使得数据均匀的分布到存储池的所有硬盘上,然后以数据块为单位来进行资源管理。SmartThin使用将CKG切分为更小粒度的Extent(卷中可用于分配的最小存储单元)为单位来进行空间组织。
  • 因此,Thin LUN与Thick LUN共存在一个存储池中,同时使用该存储池中的物理存储容量,使得存储规划更加灵活和便利,避免了为Thin LUN和Thick LUN分别提供不同的存储池空间。

存储空间写时分配:Capacity-on-Write

  • Thin LUN的写I/O请求会触发空间分配。
  • Thin LUN的当前可分配物理空间低于阈值后会向存储池申请新的空间。

Capacity-on-write:当Thin LUN接收到主机写数据请求,首先会通过direct-on-time技术判断该写数据请求的逻辑存储区域是否已经分配了实际存储区,如果尚未分配就会触发空间分配,分配的最小粒度称为Grain, Grain大小为64k,然后将数据写入到新分配的实际存储区域中。

读写重定向:Direct-on-Time

在这里插入图片描述

  • 由于采用了Capacity-on-write技术,数据的实际存储区域和逻辑存储区域的关系不再是按照确定的公式可以固定不变计算出来的,而是按照写时分配的原则随机映射确定的。
  • 所以在对Thin LUN进行读写时需要重定向实际存储区域和逻辑存储区域的关系,重定向依赖于映射表。
  • 映射表的主要作用是用来记录实际存储区域和逻辑存储区域的映射关系。在写过程中动态更新映射表,在读过程中查询映射表。因此,Direct-on-time重定向操作也就分为读重定向和写重定向。
  • 读重定向:Thin LUN接收到主机读数据请求后,先查询映射表,如果该读数据的逻辑存储区域已分配对应的实际存储区域,则将该读数据的逻辑存储区域重定向到实际存储区域,然后从实际存储区域中读取到数据后,将该数据返回给主机;如果该读数据的逻辑存储区域尚未分配空间,则将该逻辑存储区域的数据置为全0返回给主机。
  • 写重定向:Thin LUN接收到主机写数据请求后,先查询映射表,如果该写数据的逻辑存储区域已分配对应的实际存储区域,则将该写数据的逻辑存储区域重定向到实际存储区域,然后将数据写入到实际存储区域中,并返回写成功给主机;如果该写数据的逻辑存储区域尚未分配空间,则通过Capacity-on-write技术操作。

应用场景及配置流程

应用场景:

  • 对业务连续性要求较高的系统核心业务,使用智能精简配置,可以在线对系统进行扩容,不会中断业务。例如:银行票据交易系统。
  • 应用系统数据增长速度无法准确评估的业务,使用智能精简配置,可以按需分配物理存储空间,避免浪费,例如: E-mail邮箱服务、网盘服务等。
  • 多种业务系统混杂并且对存储需求不-的业务,使用智能精简配置,可以让不同业务去竞争物理存储空间,实现物理存储空间的优化配置,例如:运营商服务等。

配置流程:
在这里插入图片描述

存储分层技术(SmartTier)

在这里插入图片描述

  • SmartTier(智能数据分级)是华为公司在RAID2.0+技术之上自主研发的分级存储软件,它自动将不同活跃度的数据和不同特点的存储介质动态匹配,从而提高存储系统性能并降低用户成本。
  • 分级存储技术通过数据迁移完成数据的分级存储。目前,分级存储技术主要分手工迁移和自动迁移两类。
  • 手工迁移是系统维护人员根据当前存储系统运行的状态、各个业务系统的压力情况,手动将数据从一个LUN中迁移到另外一个LUN中。
  • 自动迁移是根据系统当前对某些文件或者块的访问频率,识别出热点与非热点数据,根据热点与非热点数据分配不同的存储介质,将频繁访问的热点数据自动迁移到高性能的存储介质中,而将低周期访问的非热点数据自动迁移到大容量,低成本的存储介质中。

存储分层

存储层级硬盘类型硬盘特点数据特点
高性能层SSD盘SSD盘的响应时间很短,每单位存储容量成本很高。高性能层适宜存储访问频率非常高的数据。
性能层SAS盘SAS盘的响应时间短,每单位存储容量成本适中。性能层适宜存储访问频率适中的数据。
容量层NL-SAS盘NL-SAS盘的响应时间长,每单位存储容量成本低。容量层适宜存储访问频率低的数据。
  • SmartTier将不同存储介质按性能高低划分为三个存储层,由高至低分别是SSD盘组成的层(简称高性能层)、SAS盘组成的层(简称性能层)、NL-SAS盘组成的层(简称容量层)。
  • 每个存储层分别使用相同的硬盘类型和RAID策略。

工作原理

在这里插入图片描述

  • 存储池是一个或多个存储层的逻辑组合,最多可支持三个级别的存储层。存储池包含的硬盘类型决定其可以创建的存储层。由单一硬盘类型组成的存储池无法创建不同存储层,因此不能应用SmartTier进行智能化数据存储管理。
  • LUN创建在存储池中,在应用SmartTier特性之前其数据分布在同一个存储池的不同存储层。
  • SmartTier将LUN数据按照一定粒度划分,该粒度被称为“数据迁移粒度”或“数据块”。数据迁移粒度在创建存储池时设置,且设置后不可更改。
  • 当存储池中存在两种或以上的硬盘类型时,用户可以应用SmartTier特性充分利用存储池中的每个存储层。数据迁移过程中,存储池以数据块为单位识别数据活跃度并将整个数据块迁移至其他存储层。
  • 存储系统经历I/O监控、数据排布分析、数据迁移三个阶段实现SmartTier。
  • 新数据写入LUN时,存储系统根据初始容量分配策略,将新写入的数据分配在相应存储层。
  • 随着数据生命周期的推移,数据的活跃度会发生变化。SmartTier将不同活跃度的数据迁移至不同性能的存储层,为存储系统提供更高的性能,并且数据迁移过程不会影响其他新数据的写入。

关键技术

在这里插入图片描述

容量初始分配

在这里插入图片描述
初始容量分配策略包括四类:自动分配、优先从高性能层分配、优先从性能层分配、优先从容量层分配。

迁移策略

在这里插入图片描述

  • 自动迁移:LUN配置了自动迁移策略,该LUN的数据块按照访问频度做迁移,访问频度最高的迁往高性能层,访问频度适中的迁往性能层,访问频度最低的迁往容量层。无特殊要求,推荐配置自动迁移,总体性能提升最佳。
  • 向高性能层迁移:LUN配置了向高性能层迁移,无论数据块访问频度是高还是低,该LUN的所有数据块都会迁往高性能层级,会占用较多高性能存储资源。只有对该LUN的性能有特殊要求时,才配置向高性能层迁移。
  • 向低性能层迁移:LUN配置了向低性能层迁移,无论数据块访问频度是高还是低,该LUN的所有数据块都会迁往容量层。当某个LUN用于归档业务,或者用于对性能要求低的业务,可配置向低性能层迁移。
  • 不迁移:LUN配置了不迁移,该LUN的所有数据块都不会做迁移,这是LUN创建时的默认策略,只有购买了SmartTier的License,才能修改为其他迁移策略。

I/O监控统计分析

在这里插入图片描述

  • 热数据和冷数据并没有用一个绝对值做区分。存储池高性能层容量可以存放A个数据块,性能层容量可以存放B个数据块, 在迁移时把该存储池的所有自动迁移策略的LUN的所有数据块按访问频度拉通排序,在迁移时把访问频度最高的A个数据块存放到高性能层,把访问频度较高的B个数据块存放到性能层,访问频度排在后面的其他数据块放到容量层。
  • 原则是尽量让访问频度高的数据块使用性能好的存储介质。

数据迁移

  • 迁移速度可以设置为高速、中速和低速,分别对应的具体迁移速度位单控制器100M/S、20M/S和10M/S,默认的迁移速度为低。
  • 为了减少SmartTier数据迁移对主机业务性能的影响,设置的迁移速度是数据迁移速度允许的上限值。数据迁移让主机业务优先,利用存储设备的空闲资源做迁移,依据主机业务压力实时调整迁移的速度。主机业务压力小时,迁移速度调大;主机业务压力小时,迁移速度调小;无论如何调整,迁移速度都不会大于设置的迁移速度。
    • 低速:适合在选择的数据迁移时段有较大的业务压力时使用。
    • 中速:适合在选择的数据迁移时段有较适中的业务压力时使用。
    • 高速:适合在选择的数据迁移时段几乎没有业务,或主机业务对性能要求不敏感的情况下使用。
  • 数据迁移粒度
    • 512KB~64MB(根据业务配置,例如视频监控业务,适合大的迁移粒度)
  • 数据迁移计划
    • 手动方式:可在任意时刻设置时间段进行数据迁移
    • 定时方式:只能在预先设置的时间计划内进行数据迁移
  • 数据迁移速率
    • 可提供三种不同级别的迁移速率:高、中、低
    • 根据当前业务负载,动态调整速率,确保不会对当前业务造成明显影响

服务质量控制技术(SmartQoS)

在这里插入图片描述

  • SmartQoS特性是华为OceanStor V3 融合存储系统上提供的一项存储QoS功能。
  • 如图所示,它能够对存储系统中的资源进行智能分配和调节,在整个存储路径上进行端到端的细粒度控制,从而满足多种不同重要性业务在同一台存储设备上的不同QoS要求。

工作原理

  • IO优先级调度技术:通过区分不同业务的重要性来划分业务响应的优先级。在存储系统为不同业务分配计算资源的时候,优先保证高优先级业务的资源分配请求。在计算资源紧张的情况下,为高优先级的资源分配较多的资源,以此尽可能保证高优先级业务的服务质量。当前用户可以配置的优先级分为高、中、低三个等级。
  • IO流量控制技术:基于传统的令牌桶机制,针对用户设置的性能控制目标(IOPS、带宽)进行流量限制,通过IO流控机制,限制某些业务由于流量过大而影响其它业务。
  • IO性能保障技术:基于按权重调度的方式,允许用户为高优先级业务指定最低性能目标(最小IOPS、 最小带宽、最大时延),当该业务的最低性能无法保障时,系统内部通过对保障业务与非保障业务按照权重进行调度,从而尽力使保障业务达到最低性能目标。

IO优先级调度技术

在这里插入图片描述

  • SmartQoS特性的优先级调度技术基于LUN和文件系统的优先级实现。
  • 因此每个LUN和文件系统对象都有一个优先级属性,这个属性由用户配置并保存在数据库中,当一个IO从主机发送到阵列,这个IO将会根据其归属的LUN或文件系统来获得这个优先级属性,并且在整个IO路径上携带这个优先级信息。
  • 用户在创建LUN或文件系统的时候需要指定所创建的LUN或文件系统的优先级。如果用户不进行指定,则所创建的LUN或文件系统的优先级属性默认为低优先级。
    LUN或文件系统创建后,其优先级属性可以根据用户的需要手动修改。

IO流量控制技术

在这里插入图片描述

  • SmartQoS特性的IO流量控制技术的性能目标是基于令牌的分发和控制实现的。当用户为某个流控组设置了性能上限,那么这个性能上限会被转化成对应的令牌。在存储系统中,如果用户要限制的流量类型是IOPS,那么一个IO即对应一个令牌;如果设定的性能目标是带宽,那么一个扇区对应一个令牌。
  • 每个流控队列都有一个令牌桶,SmartQoS会定期向每个流控队列的令牌桶中放入一定数量的令牌,令牌的数量取决于用户设定的这个流控组的性能上限。即如果用户设定性能上限为IOPS =10000,则令牌分发算法就会在每秒将此流控组的令牌桶中的令牌数设置为10000。
  • 当流控队列进行出队处理的时候,会查看此队列的令牌桶中是否有足够的令牌,如果有,则取出一个IO进行处理,并消耗这个IO对应的令牌;如果没有令牌,则必须等待令牌桶中有足够的令牌可以用为止。

缓存分区技术(SmartPartition)

  • SmartPartition (智能缓存分区)是OceanStor V3融合存储系统为应对存储融合趋势下QoS的挑战而设计的智能缓存分区技术,其核心思想是通过对系统核心资源的分区,保证关键应用的性能。管理员可以针对不同的应用配置不同大小的缓存分区,系统将保证该分区中的缓存资源被该应用独占,并根据业务实际情况实时动态调配不同分区中的其他资源,从而保证位于该分区的应用性能。
  • SmartPartion本质上就是一种Cache分 区技术,Cache分 区在业界是比较成熟的一项技术,推出的时间也比较长。当前主流的存储厂商,比如EMC和HDS,均推出了各自的Cache分区特性。从技术层面来看,各大厂商实现的方式基本一致, 都是将有限的Cache资源划分为多个逻辑区域进行管理,区别主要在于Cache分区内部的具体的一些算法和调整策略。
    在这里插入图片描述
  • 典型的IT系统架构由计算、网络、存储三大部分组成,在传统的“烟囱式”架构中,不同的应用系统相对独立,单个存储需要面对的应用数量不多(一般在5个以下)。
  • 图中每种颜色代表了一种不同的业务。可以看到,这些业务的I/O模式是不同的,对缓存及访盘并发的需求也是不同的。
  • 多种业务混合争抢并发资源和缓存资源,导致服务质量不可保证。比如,业务N抢占的访盘并发同其主机并发并不匹配,其结果就是缓存中业务N的数据会越来越多,对其他业务性能造成影响;而业务3如果是关键业务,就意味着其业务性能不能得到保证。

工作原理

在这里插入图片描述

  • Cache分区技术通过隔离不同的业务所需要的资源,保证某些关键业务的服务质量。
  • 在存储系统中,某个业务能够使用的缓存容量是影响其服务质量的一个主要因素。
  • 该业务在该存储系统上可以占有的缓存大小是影响存储系统性能的最主要因素:
    • 对写业务来说,更多的缓存意味着更高的写合并率、写命中率(同一块数据在缓存中被再次写中的比率)和更好的访盘顺序度;对读业务来说,更多的缓存通常意味着更高的读命中率。
    • 同时,不同类型的业务对缓存的需求也有很大不同:对顺序类业务来说,缓存不需要很大,只需要满足I/O合并要求即可;而对随机类业务来说,更大的缓存通常意味着更好的访盘顺序度,从而带来性能的提升。
  • SmartPartition可以针对不同的业务(实际控制对象为LUN和文件系统)分配不同大小的缓存分区资源,从而保证关键业务的服务质量。

应用场景

在这里插入图片描述

  • 随着存储系统的性能和容量不断增强增大,将多个应用同时部署在一台存储系统上,不仅简化用户的存储系统架构,还能减少用户配置和管理成本。部署在同一台存储系统上的多个应用,会争抢存储资源,将导致各业务的性能受到严重影响。
  • 通过SmartPartition特性可以为不同的业务指定不同的缓存分区,满足关键业务的运行要求。同时,根据业务读写压力,可以分别设置相应读分区和写分区大小。如读业务量较大,可为其分配更多的读分区容量;若全是写业务,则可以配置较小的读分区容量。

快照技术

  • 定义:快照是指源数据在某个时间点的一致性数据副本。快照生成后可以被主机读取,也可以作为某个时间点的数据备份。
  • 快照的主要特点包括:
    • 瞬间生成:存储系统可以在几秒钟内生成一-个快照, 获取源数据的一致性副本。
    • 占用存储空间少:生成的快照数据并非完整的物理数据拷贝,不会占用大量存储空间。所以即使源数据量很大,也只会占用很少的存储空间。

映射表

在这里插入图片描述

  • 映射表用来表示快照的实际数据所在。
  • 映射表分为两类:独享映射表和共享映射表。其原理是相同的,不同的地方在于独享映射表记录写快照发生的数据变更,共享映射表记录的是写源LUN发生的变更。

COW技术

当快照被激活时(此时刻称为快照时间点),主机读写的具体操作如下:

  1. 激活快照后,源LUN有数据写入。
  2. 首先将查询快照映射表,如果映射表中对应该地址的映射项不存在时,需要进行copy-on-write(写前拷贝),写前拷贝完成后在映射表中记录备份的源LUN数据信息。如果映射项存在,则直接覆盖写入源LUN的对应位置。
  3. 写前拷贝,即读取源LUN对应位置的数据写入COW卷的空间。
  4. COW卷空间与源LUN空间分布在同一个POOL中,写入COW卷即写入POOL的空间区域。
  5. 写前拷贝完成后,再将主机数据写入源LUN所在的POOL空间。

快照功能原理

  • 快照创建并激活后,会生成与源卷一致的数据副本。存储系统在源卷中划分出COW数据空间并自动生成快照卷。
  • 由于对源卷没有写操作,COW Meta区域和COW Data区域中均没有记录。
  • 由于对快照卷没有写操作,Snapshot Meta Volume和Snapshot Data Volume中均没有记录。
  • 快照激活后,当应用服务器对源卷有数据写入请求时,存储系统不会立即写入新数据。存储系统利用写前拷贝机制先将写前拷贝数据拷贝到COW数据空间中,并修改映射表中的映射关系,然后将新数据写入源卷。
  • 说明:在一个快照周期内,同一位置的数据只执行一次写前拷贝,根据映射表中相应值确定。再次写入数据时,将直接覆盖。例如:对于数据“DataX”,查询到 映射表中相应值为“1”,表示已经进行过一次写前拷贝;如再有写数据请求,将直接写入,不再将“DataX”拷贝到COW数据空间中。
  • 快照激活后,应用服务器可以对快照卷进行写操作。应用服务器下发的写请求后,数据将直接写入快照卷,并在映射表(独享部分)中记录数据在快照卷中的存放位置。
  • 快照激活后,应用服务器可以对快读快照卷(快照卷已写入数据)进行读操作。 应用服务器下发读快照请求后,通过映射表(独享部分)确定快照数据的存放位置,并读取数据。
  • 快照激活后,应用服务器可以对快读快照卷(快照卷未写入数据)进行读操作。 应用服务器下发读快照请求后,通过映射表(共享部分)确定快照数据的存放位置,并读取数据。

应用场景

直接使用快照进行数据备份。使用快照备份可以在以下场景中迅速恢复数据:

  • 病毒感染。
  • 人为误操作。
  • 恶意篡改。
  • 系统宕机造成的数据损坏。
  • 应用程序BUG造成的数据损坏。
  • 存储系统BUG造成的数据损坏。
  • 存储介质损坏(只有基于split mirror技术的快照能够恢复数据)。

文件系统配额管理技术(SmartQuota)

在这里插入图片描述

  • 随着虚拟化的大行其道,云计算技术的发展,IT系统面临着资源利用效率、以及如何有效管理的挑战。在典型的IT存储系统中,只要存储资源(磁盘空间)是可用的,就会被用户使用,直至耗尽。从经济角度来说,需要一种方法控制存储资源的使用及其增长。
  • 在NAS文件服务环境中,通常以共享目录的方式将资源提供给使用的部门、组织或个人。而每个部门或个人,都有其独特的资源需求或限制。因此,系统需要基于共享目录,因地制宜地对各个使用者,进行资源分配和限制。SmartQuota(文件系统配额)正是用于解决这个需求的技术,该技术可以针对目录、用户、用户组这三类资源的使用者分别进行资源控制。
  • SmartQuota的主要作用是方便系统管理员管控资源使用者(包括目录、用户、用户组)的存储资源,以限制指定使用者可使用的磁盘空间,从而避免出现某些用户过度占用资源的问题。

在Quota Tree目录上进行资源管控

在这里插入图片描述

  • 在SmartQuota特性中,Quota Tree是一个重要的概念。简单来说,Quota Tree就是文件的一级目录。但从管理角度看, Quota Tree不仅是一个目录,更是一个配置对象。这就意味着,Quota Tree只能通过管理终端(命令行或GUI管理界面)来创建、删除和修改,而不能通过客户端主机来修改。另外,作为配置配额时的载体,目录配额、用户配额、以及组配额都只能在Quota Tree上配置。我们总结一下Quota Tree与普通目录存在的差别:
  • Quota Tree只能由管理员通过命令行或GUI管理界面,进行创建、删除、重命名等操作,且管理员只能删除空的Quota Tree。
  • Quota Tree可以通过协议进行共享,且正在共享时,不允许被改名和删除。
  • 不允许跨Quota Tree进行移动文件(NFS协议)或剪切文件(CIFS协议)操作,即不允许在两个不同Quota Tree目录之间进行文件的MV操作(NFS协议)或剪切操作(CIFS协议)。
  • 不允许跨Quota Tree的硬链接,即不允许在两个不同的Quota Tree之间进行硬链接操作。

Quota Tree的资源用量

在这里插入图片描述

  • 目录的资源用量(目录配额的统计值)。
    • Quota Tree目录中所有文件的存储容量、文件数的总量。
  • 用户/用户组的资源用量(用户/用户组配额的统计值)。
    • Quota Tree目录中所有创建者为特定用户/用户组的文件的存储容量、文件数的总量

应用场景

在这里插入图片描述

  • 在单个Quota Tree内部,管理员可配置目录配额限制对应部门总的资源,然后为部门内部的使用者、群组分别配置用户配额、用户组配额,灵活限制一个部门内各使用者的资源。
    • Share为研发部门的共享目录(Quota Tree 0):
    • 配置Quota Tree 0的目录配额,限制研发部总的可用资源。
    • 配置经理A的私有用户配额,单独限制经理A的可用资源。
    • 配置项目组G/E的私有用户组配额,限制项目组G/E的可用资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价,高效运营 ★ 市场实用,布局物联网未来 ★ 更好客户体验 ★ 降低系统成本,具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗,常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…

position:sticky 粘性定位

1、什么是粘性定位? 粘性定位它基于用户的滚动位置来定位。 粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。 它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position…

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢? 对于别的类型的神经网络,往往我们都是处理一些类似网…

win环境nginx下载安装和基本操作使用解析

win环境nginx下载安装和基本操作是我们技术人员必备的技能,今天我们大概梳理一下: 下载 地址:nginx: download 进入后点击: 选择某个版本,就可以下载了,然后解压到某个目录,进入配置文件&…

RAM IP Core

官方文档:ZYNQ 存储资源指导手册 (DS109) RAM 全称 Random Access Memory,随机存取存储器。 随时将数据写入任意指定地址的存储单元,或从任意地址读出数据。读写的速度是由时钟频率决定的。 RAM主要用于存放程序运行的中间数据、运算结果等…

MySQL实战45讲深入浅出索引下

select * from T where k between 3 and 5这个语句的执行流程是: 在 k 索引树上找到 k3 的记录,取得 ID 300;再到 ID 索引树查到 ID300 对应的 R3;在 k 索引树取下一个值 k5,取得 ID500.再回到 ID 索引树查到 ID500 …

深度学习-第T1周——实现mnist手写数字识别

深度学习-第T1周——实现mnist手写数字识别深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片5、调整图片格式四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预…

【Python】Jupyter .ipynb

Jupyter启动Hello JupyterMarkdown纵然 Anaconda Pycharm 非常好用,但是既然学到 Jupyter,那就多掌握一份技能,毕竟 Jupyter 的确有他的优势在。 我认为 Jupyter 对于 Python 初学者来说,非常友善,他将一整个代码划分…

c#学习笔记

目录1.语句块2.Write和WriteLine的区别:3.params4.托管代码和非托管代码5.DllImport的使用:6.WriteLine、ReadLine和ReadKey:7.C#中访问修饰符8.类型的实例化9.成员可以分为两种:数据成员和函数成员10.枚举enum和结构struct的区别…

使用Debussy加载设计项目

Debussy是NOVAS Software, Inc(思源科技)用来进行HDL Debug & Analysis的工具,这套软体主要不是用来跑模拟或看波形,它最强大的功能是:能够在HDL source code、schematic diagram、waveform、state bubble diagram之间,即时做…

蓝桥杯-考勤刷卡

蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…

电子技术——数字逻辑反相器

电子技术——数字逻辑反相器 在学习完如何通过CMOS数字电路实现组合逻辑,接下来我们评估这种数字CMOS电路的性能。首先,我们考虑最基本的部件——反相器。 电压传导特性 下图是一个反相器的原理图: 在之前,我们已经介绍了MOSFE…

ATTCK v12版本战术介绍持久化(三)

一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术(一)及(二)知识,本期我们为大家介绍ATT&CK 14项战术中持久化战术(三)涉及的剩余子技术&…

汇编语言程序设计(一)

前言 在学习汇编语言之前,我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言,学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而…

高通平台开发系列讲解(显示篇)Gralloc模块

文章目录 一、什么是Gralloc模块二、Gralloc加载流程三、Gralloc模块的加载四、Gralloc设备的加载五、 fb设备的加载沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍显示过程中Gralloc模块。 一、什么是Gralloc模块 通过加载Gralloc抽象层,可以打开fb设备和…

【游戏逆向】寻路函数隐藏检测点分析

案例: 某游戏出现调用寻路函数失败异常崩溃。 基本情况分析: 在刚登陆游戏的时候直接调用寻路函数崩溃。 手动寻路以后再调用寻路不崩溃。(排除了函数编写错误的可能) 猜测可能检测方法: 有某一个标志位(全局类型)在游戏刚登陆的时候没…

【VS】【Qt】vs+ qt .natvis 失效问题

【VS】【Qt】vs qt .natvis 失效问题 .natvis文件用于调试时候自定义显示自定义类型的可视化提示。 一般这类文件存在 C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\Common7\Packages\Debugger\Visualizers路径下。 .natvis文件的规则在此不介绍&#xf…

剑指 Offer 23 链表中环的入口结点

摘要 链表中环的入口结点_牛客题霸_牛客网 剑指 Offer II 022. 链表中环的入口节点 141. 环形链表 142. 环形链表 II 一、是否有环(快慢指针) 我们可以根据上述思路来解决本题。具体地,我们定义两个指针,一快一慢。慢指针每次…

了解Cesium的笛卡尔类型和位置变量的单位

var position Cesium.Cartesian3.fromDegrees(100, 100, 2); 前文输出了position变量,是一个六位数,还带有多位小数;下面来看一下相关类的定义和position的单位;单位如果不对的话放置的模型可能到屏幕外面; 看一下相…

太赫兹频段耦合器设计相关经验总结

1拿到耦合器的频段后,确定中心频率和波导的宽度和高度 此处贴一张不同频段对应的波导尺寸图 需要注意的是1英寸 2.54厘米,需注意换算 具体网址:矩形波导尺寸 | 扩维 (qualwave.com) 仅列举我比较常用的太赫兹频段部分 2.以220~320GHz频段&a…