CSS看这一篇就够啦,CSS基础大全,可用于快速回顾知识,面试首选

1 CSS简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称。 CSS 是也是一种标记语言,主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、 边距等)以及版面的布局和外观显示样式。 更多CSS内容可以看MDN:点击传送 1.1 CSS 语法规范 所有的样式,都包含在 <head> <style> h4 { color: blue; font-size: 100px; } </style> </head> 1.2 CSS 的三大特性 CSS 有三个非常重要的三个特性:层叠性、继承性、优先级。 1.2.1 层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突 的问题 层叠性原则: 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式样式不冲突,不会层叠 1.2.2 继承性 CSS中的继承: 子标签会继承父标签的某些样式,如文本颜色和字号。 恰当地使用继承可以简化代码,降低 CSS 样式的复杂性 子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承,以及color属性) 行高的继承性 body { font:12px/1.5 Microsoft YaHei; } 行高可以跟单位也可以不跟单位如果子元素没有设置行高,则会继承父元素的行高为 1.5此时子元素的行高是:当前子元素的文字大小 * 1.5body 行高 1.5 这样写法最大的优势就是里面子元素可以根据自己文字大小自动调整行高 1.2.3 优先级 当同一个元素指定多个选择器,就会有优先级的产生。 选择器相同,则执行层叠性,选择器不同,则根据选择器权重执行 权重是有4组数字组成,但是不会有进位。可以理解为类选择器永远大于元素选择器, id选择器永远大于类选择器,以此类推…等级判断从左向右,如果某一位数值相同,则判断下一位数值。可以简单记忆法: 通配符和继承权重为0, 标签选择器为1,类(伪类)选择器为 10, id选择器 100, 行内样式表为

SDU CS 期末考回忆版合集

SDU CS 期末考回忆版合集 删除原有分散的版本,合订起来画个。 包括:机器学习、算法、图形学、操作系统、编译原理、软件工程、大数据分析管理、计算机体系结构等 2021 SDU机器学习期末考试 2019 计科 一、线性回归+牛顿法 给出了线性回归的Loss Function 证明Hessian = X T X X^TX XTX证明牛顿法一次迭代结果 和 正规方程求解结果一样 θ = ( X T X ) − 1 X T Y \theta=(X^TX)^{-1}X^TY θ=(XTX)−1XTY证明正则化的线性回归,用牛顿法一次迭代和正规方程求解结果一样 二、计算题 N a i v e B a y e s Naive Bayes NaiveBayes 给了一个表 类似于下表 A01B01C01Y00011111 问 当A=0 B=0 C=1时 N a i v e B a y e s Naive\, Bayes NaiveBayes输出y是多少

ElementPlusError:[ElPagination] 你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档

💂 个人网站: 【紫陌】【笔记分享网】 💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】 今天在做项目的时候突然发现控制台有一个警告但是不影响使用,之前还没有的,今天竟然出现。我就怀着好奇看看到底是什么问题。我用的是ElementPlus。 1.出现的问题 控制台说我分页器组件语法有问题,然后我就去看我的代码,反复看也没有问题,和文档都是一样的语法。 后面我一个一个删除运行,当我删除total就没有了警告。total是是后台接口的数据的。 我看看是不是数字类型。然后用typeof检查竟然不是Number类型。 2.解决问题 导致警告的原因是我调用后台接口,获取返回数据的时候,给前端的total赋值的数据的类型不对,才会出现警告。 在获取total数据的时候转换Number就可以了。 更改为: 然后页面就正常显示了。 今天又是踩坑的一天。。。 要是能帮到大家帮忙点点赞!!!

数据安全-分类分级 调研分析报告

目录 前言一、数据分类分级概述1.数据分类2.数据分级 二、数据分类分级原则三、数据分类分级的框架和方法1.数据分类分级的框架2.分类标准分类常见的方法2.1 MECE2.2 线分法和面分法及混合分法2.3 数据主题域2.4 技术选型维度2.5 以业务应用维度2.6 信息安全隐私方面的分类法 3.分级标准 四、数据分类分级基本流程1.数据梳理2.制定数据分类分级标准3.数据分类4.级别判定1)一般数据安全级别判定示例2)金融行业数据安全级别判定示例3)特定数据最低安全级别4)数据安全分类分级审核 五、敏感数据识别能力和进阶功能1. 敏感数据识别1.1 落地难点1.2技术实现1.2.1常规识别技术1.2.2 人工智能和机器学习 1.3敏感数据识别存在的问题 2.分类分级进阶功能2.1数据资产管理2.2数据分类分级2.3数据资产地图2.4敏感数据流动监控2.5数据安全风险检测2.6数据开放共享管理 六、分类分级模版七、各企业数据分类分级产品八、数据分类分级标准或指南参考 前言 随着“十四五”规划推行,数据要素概念与意识全面铺开,国家、政府机构、企业数据安全意识愈发强烈。2021年9月1号,《数据安全法》正式生效,数据资产安全进入“有法可依”时代。 数据战略上升为国家战略,数据资产成为国家各行各业的核心资产。在数字化时代,数据分类分级成为数据资产管理的重要组成部分。 一、数据分类分级概述 大数据时代,数据呈现多源异构的特点,价值各不相同,企业应根据数据的重要性、价值指数等方面予以区分,便于采取不同的数据保护措施,防止数据泄露。因此,数据分类分级管理是数据安全保护中的重要环节之一。 1.数据分类 根据数据的属性及特征,将其按一定原则和方法进行区分和归类,并建立起一定的分类体系和排列顺序的过程。数据分类一定是以各种各样的方式并存的,不存在唯一的分类方式,分类方法的采用因管理主体、管理目的、分类属性或维度的不同而不同。 1.1 业务开展使用数据的视角– 看到的是数据的业务特征,比如某企业内有研发、制造、销售、人力资源等部门,大量数据的产生天然就具备业务相关的特征,很自然的数据分类方式就是按业务分类:研发数据等等 1.2 IT部门/数据管理部门视角– 关注的不是业务分工,而是数据自身在IT系统里如何承载、管理、呈现,所以有IT/数据管理部门将数据分类为结构化、非结构化数据,主数据、交易数据、元数据等。 2.数据分级 数据分级是指按照公共数据遭到破坏(包括攻击、泄露、篡改、非法使用等)后对受侵害各体合法权益(国家安全、社会秩序、公共利益以及公民、法人和其他组织)的危害程度,对公共数据进行定级,为数据全生命周期管理的安全策略制定提供支撑 。 《数据安全法》第二十一条 国家建立数据分类分级保护制度,根据数据在经济社会发展中的重要程度,以及一旦遭到篡改、破坏、泄露或者非法获取、非法利用,对国家安全、公共利益或者个人、组织合法权益造成的危害程度,对数据实行分类分级保护 《GB/T 25069-2010信息安全技术术语》依据访问数据或信息需求,而确定的保护程度,同时赋予相应的保护等级。例:“绝密”、“机密”、“秘密” 二、数据分类分级原则 数据分类分级按照数据分类管理、分级保护的思路,依据以下原则进行划分: 1.合法合规原则: 数据分类分级应遵循有关法律法规及部门规定要求,优先对国家或行业有专门管理要求的数据进行识别和管理,满足相应的数据安全管理要求。 2.分类多维原则: 数据分类具有多种视角和维度,可从便于数据管理和使用角度,考虑国家、行业、组织等多个视角的数据分类。 3.分级明确原则: 数据分级的目的是为了保护数据安全,数据分级的各级别应界限明确,不同级别的数据应采取不同的保护措施。每个数据项原则上只属于一个类别、一个级别。 4.就高从严原则: 数据分级时采用就高不就低的原则进行定级,例如数据集包含多个级别的数据项,按照数据项的最高级别对数据集进行定级。 5.动态调整原则: 数据的类别级别可能因时间变化、政策变化、安全事件发生、不同业务场景的敏感性变化或相关行业规则不同而发生改变,因此需要对数据分类分级进行定期审核并及时调整。 三、数据分类分级的框架和方法 1.数据分类分级的框架 来源:全国信息安全标准化技术委员会秘书处 2.分类标准 数据分类具有多种视角和维度,其主要目的是便于数据管理和使用。数据处理者进行数据分类时,应优先遵循国家、行业的数据分类要求,如果所在行业没有行业数据分类规则,也可从组织经营维度进行数据分类。常见的数据分类维度,包括但不限于: 公民个人维度:将数据分为个人信息、非个人信息。公共管理维度:将数据分为公共数据、社会数据。信息传播维度:将数据分为公共传播信息、非公共传播信息。行业领域维度:将数据分为工业数据、电信数据、金融数据、交通数据、自然资源数据、卫生健康数据、教育数据、科技数据等。组织经营维度:将数据分为用户数据、业务数据、经营管理数据、系统运行和安全数据。 数据分类类别定义示例公共数据公共管理和服务机构在依法履行 公共管理和服务职责过程中收 集、产生的数据,及其他组织和 个人在提供公共服务中收集、产 生的涉及公共利益的数据如政务数据,及提供供水、供电、 供气、供热、公共交通、养老、教育、医疗健康、邮政等公共服务中 涉及公共利益的数据等个人信息以电子或者其他方式记录的与已 识别或者可识别的自然人有关的 各种信息,不包括匿名化处理后 的信息如个人身份信息、个人生物识别 信息、个人财产信息、个人通信信 息、个人位置信息、个人健康生理 信息等法人数据组织在生产经营和内部管理过程 中,收集和产生的数据如业务数据、经营管理数据、系统 运行和安全数据等 分类常见的方法 2.

Maven超细致史上最全Maven下载安装配置教学(2023更新...全版本)建议收藏...赠送IDEA配置Maven教程

Maven安装与配置 Maven 的主要目标是让开发人员能够在最短的时间内了解开发工作的完整状态。为了实现这一目标,Maven 处理了几个关注领域: 简化构建过程 提供统一的构建系统 提供优质的项目信息 鼓励更好的发展实践 基于项目对象模型 (POM,project object model) 的概念,Maven可以从中心信息块管理项目的构建、报告和文档。现在能看到的所有JavaEE项目几乎都是基于maven搭建的 Maven下载 官网:Maven官网 👉官网最新下载地址:Maven最新版本官网地址 👉官网历史下载地址:Maven历史版本官网地址 Binary是可执行版本,已经编译好可以直接使用。 Source是源代码版本,需要自己编译成可执行软件才可使用。 Windows下安装配置Maven 将下载好的解压到自己设置的目录中(路径中不要有中文等影响环境的字符) 以apache-maven-3.8.6-bin为例,在其目录内新建名为repository的文件夹,此文件夹的目的是作为本地的Maven仓库来使用。如图: 配置环境变量: 此电脑--->属性--->高级系统设置--->环境变量--->系统变量(S)--->新建 输入如下信息: 变量名:MAVEN_HOME 变量值:D:\Programming\Apache\Maven\apache-maven-3.8.6 //此处的变量值为你存放Maven的解压路径 变量名:M2_HOME 变量值:D:\Programming\Apache\Maven\apache-maven-3.8.6\repository //此处的变量值为你存放Maven的解压后目录中的文件夹的路径 //很多自动依赖的系统,如springboot、springcloud引用了该地址,建议配置上 继续执行如下步骤: 此电脑--->属性--->高级系统设置--->环境变量--->系统变量(S)--->找到Path变量--->编辑--->新建 输入如下信息: %MAVEN_HOME%\bin 如图:然后点击确定即可,一直确定,直至关闭所有对话框 Maven配置阿里云等镜像: 打开Maven解压路径下的conf文件夹下的settings.xml文件,可以使用记事本或者VScode等软件打开进行编辑。 关于VScode请看此文章:VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了_神兽汤姆猫的博客-CSDN博客_vscode最新版 打开后在<mirrors></mirrors>标签中添加 mirror 子节点:(个人建议使用第一个,在有的版本可能会出现warning) <!-- 阿里云仓库 --> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror> <!-- 或者:---> <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> 虽然mirrors可以配置多个子节点,但它只会使用其中的一个节点,即默认情况下配置多个mirror的情况下,只有第一个生效,只有当前一个mirror无法连接的时候,才会去找后一个; 我们想要的效果是:当a.jar在第一个mirror中不存在的时候,maven会去第二个mirror中查询下载,但是maven不会这样做,所以我们尽可能的将它添加到前面。 mirrors节点下可以配置多个mirror,每个mirror都有id(是mirror的唯一标识)、name、url(远程仓库地址)、mirrorsOf(代表了一个镜像的替代位置,例如central就表示代替官方的中央库),当需要去远程仓库下载jar包时不是按照位置顺序来查找的,是按钮id的字母排序来查着的,例如当配置了B和A两个mirror,无论这两个mirror的位置如何maven都会首先去A去查询,如果找到了则直接下载,如果找不到或者无法连接到A才会去B查询。 这里我们在mirrors下新建节点,使用阿里的仓库来替换默认的远程仓库 如图: 如果想使用其它代理仓库,可在<repositories></repositories>节点中加入对应的仓库使用地址。以使用spring代理仓为例: <repository> <id>spring</id> <url>https://maven.

【Java】java 环境配置(详细教程)

文章目录 前言一、jdk 下载二、windows1、jdk 安装2、环境变量的配置2.1 Java_Home 配置2.2 Path 配置2.3 CLASSPATH 配置 3、检测是否配置成功 前言 java 环境配置,网上教程很多,那我为什么还要写? 首先为了完善我的知识体系今后一些软件的安装教程也可能会用到想写一个更加详细的,因为这并不仅仅是写给 IT 行业的,其它行业可能也需要配置java环境 提示:以下是本篇文章正文内容,下面案例可供参考 一、jdk 下载 如果你电脑已经下载了 jdk ,那就恭喜你可以跳过这一步了 jdk 的下载路径:https://www.oracle.com/java/technologies/downloads 游览进去的页面是这样子的(相比以前这个页面发生很大变化了),可以看见目前 jdk 已经发行到 17 了,jdk 它又分了三个个操作系统,一个是 Linux、一个是 macOS、以及 windows,如果你是在 windows 操作系统上,那当然就下载 windows 对应的 jdk,其次的话就是还会区分你操作系统的处理器是 32 位的还是 64 位的,可以点击 我的电脑 - 属性 查看 台式电脑大概是这样的: 笔记本电脑在 系统规格 - 系统类型 查看上面大概是这样的: 那如果想要下载以前版本的 jdk 呢? 可以点击 java archive ,查看 java 档案 往下拉就可以看到旧版本的 jdk 了,一般我们用得最多的版本是 jdk 8 了,因为比较稳定 点击你想要下载的 jdk 版本,比如:我选择了 jdk 8,然后我要下载到 windows 操作系统下,那我就选择这个,点击下载就可以了

前端项目部署,阿里云服务器部署前端项目,超详细

需求背景:作为一个前端,特别身处于中小公司时,对于部署也需要有所了解。本次就介绍前端基础的项目部署。本次使用的是阿里云服务器进行的部署 部署核心步骤 1.准备打包好的前端代码(dist包)或者是一个html文件 2.购买阿里云服务器,并且连接 3.为阿里云服务器安装ngnix开启web服务 4.使用xshell和sftp将自己的前端代码放到服务器上 1.准备前端代码 这部分很简单,可以随意准备。我这边就随便起了个vue脚手架,然后打了个dist包。 大家嫌麻烦那么就直接使用一个html文件也可以,里面随意写点内容就行 2.购买阿里云服务器 如果是作为练习的话,买最便宜的就OK了。其实没什么,地域选择国内,然后配置选最低的就行了,便宜。操作系统一般都是选centOS64 ,把免费分配公网ip勾上就行 购买完成后,你可能不知道在哪里,你需要点控制台,然后找到云服务器ECS 然后你就能找到你的服务器了,其中最重要的就是实例(管理你的服务器状态)和安全组(控制可访问该服务器的端口号) 点击实例中的远程连接,看是否能正常连接。 这里的ip地址(公)就是待会你要连接的服务器的ip地址,也是别人访问你网站的地址,可以注意一下。 如果你的页面显示这个,说明你与远程连接已经成功了 3.为阿里云服务器安装ngnix开启web服务 a.准备工作:安装xshell(用来连接服务器)和xftp(用来上传你的文件)。 如何安装这两个软件:直接从360安全卫士安装吧,迅速还无毒 b.打开xshell,然后连接你的远程服务器 之后会弹出让你输用户名(一般是root)和密码。最后就是连接成功了 恭喜你,此刻已经可以和服务器通信了。虽然刚才在云服务器上也可以远程连接,但是使用xshell一般比较方便 注意点,如果你这里如果连接不上。那么你一定需要看我这一步!!!!很重要!!!去云服务器页面设置安全组,建议大家都去做这一步!!!! 添加一个22的入口(这个和xshell连接的端口号需要是一致的,xshell默认是22),其他选择如图 再添加一个80的入口,用于nginx的,跟上面的一样的步骤 c.安装反向代理nginx 命令:yum install nginx 然后中途会停一下让你选择,输入y再按回车就行了。最后就是安装成功。 有这个complete就说明成功了 但是此时你只是在服务器安装了nginx,并没有在远程服务器启动这个nginx的服务。这里就要用到几个命令了。我先全部放出来,后面会用到部分。 (注意千万不要把nginx打成了ngnix!!!!!!!!!!我老是打错) 安装nginx:yum install nginx 看是否有ngnix进程:netstat -anput | grep nginx 查看服务器端口占用情况:netstat -ntlp nginx启动:nginx nginx重启:nginx -s reload 关闭nginx: nginx -s stop : 快速停止nginx nginx -s quit :完整有序的停止nginx 查看默认的nginx配置文件路径: nginx -t d.启动nginx 命令:nginx,一般输完没有任何的反馈,如果你不确定有没有启动nginx,那么你可以使用netstat -anput | grep nginx这个命令看看有没有nginx的端口占用 上面这个图看不出来,可以输这个命令netstat -anput | grep nginx看看有没有端口占用

软考:项目管理8大绩效域知识精华

项目绩效域中的工作是以项目管理原则为指导。原则是基本规范、事实或价值。项目管理原则为参与项目的人员提供了行为指导,因为它们会影响和形成绩效域以产生预期成果。虽然原则和绩效域之间在概念上存在重叠,但这些原则指导着行为,而绩效域则提供了将会展示这些行为的广泛的焦点领域。 READING 项目管理原则与项目绩效域之间的关系 1 干系人绩效域 干系人。能影响项目、项目集或项目组合的决策、活动或成果的个人、群体或组织,以及会受或自认为会受它们的决策、活动或成果影响的个人、群体或组织。 干系人分析。通过系统收集和分析各种定量与定性信息,来确定在整个项目中应该考虑哪些人的利益的一种方法。 2 团队绩效域 团队绩效域需要创建文化和环境,使不同个体的集合能够演变成为高绩效的项目团队。这包括识别促进项目团队发展所需的活动,并鼓励所有项目团队成员实施领导力行为。 项目经理。由执行组织委派,领导项目团队实现项目目标的个人。 项目管理团队。直接参与项目管理活动的项目团队成员。 项目团队。执行项目工作,以实现项目目标的一组人员。 3 开发方法和生命周期绩效域 开发方法和生命周期绩效域需要建立优化项目成果所需的开发方法、交付节奏和项目生命周期。 可交付物。为完成某一过程、阶段或项目而必须产出的任何独特并可核实的产品、结果或服务能力。开发方法。型或混合型方法。在项目生命周期内用于创建并改进产品、服务或结果的方法,例如预测型、迭代型、增量型、敏捷。 节奏。在整个项目期间所开展活动的节律。 项目阶段。一组具有逻辑关系的项目活动的集合,通常以一个或多个可交付物的完成为结束。 项目生命周期。项目从开始到结束所经历的一系列阶段。 4 规划绩效域 估算。对某一变量的可能数值或结果的定量评估,如项目成本、资源、人力投入或持续时间。 准确度。在质量管理体系中,“准确度”是指对正确程度的评估。 精确度。在质量管理体系中,精确度是指对精准程度的评估。 赶工。通过增加资源,以最小的成本代价来压缩进度工期的一种方法。 快速跟进。一种进度压缩方法,将正常情况下按顺序进行的活动或阶段改为至少部分按并行方式开展。 预算。经批准的对整个项目、任一工作分解结构 (WBS) 组件或任一进度活动所做的估算。 5 项目工作绩效域 项目工作涉及建立过程和执行工作,以便使项目团队能够交付预期的可交付物和成果。 招标文件。用于从潜在卖方征求信息、报价或建议书的所有文件。 投标人会议。清楚且一致的理解。也称承包商会议、供应商会议或投标前会议。在准备投标或建议书之前,与潜在卖方举行的会议,以便确保所有潜在卖方对本次采购都有 显性知识。可以使用文字、数字、图片等符号进行编撰的知识。 隐性知识。难以明确表达和分享的个人知识,如信念、经验和洞察。 6 交付绩效域 项目支持战略执行和商业目标的推进。项目交付聚焦于满足需求、范围和质量期望,产生预期的可交付物,以推动想要的项目成果。 需求。为满足业需要,某个产品、服务或结果必须达到的条件或具备的能力。 工作分解结构 (WBS)。对项目团队为实现项目目标、创建所需可交付物,而需要实施的全部工作范围的层级分解。 完成的定义 (DoD)。为了考虑可交付物能供客户使用,而须达到的所有准则的检查清单。 质量。一系列内在特征满足需求的程度。 质量成本 (COQ)。在整个产品生命周期所产生的以下所有成本,即:为预防产品或服务不符合要求而进行的投资,为评估产品或服务是否符合要求而产生的成本,以及因产品或服务未达到要求而带来的损失。 7 测量绩效域 测量涉及评估项目绩效和实施适当的应对措施,以保持最佳绩效。 度量指标。对项目或产品属性及其测量方式的描述。 基准。经过批准的工作产品的版本,用作与实际结果进行比较的依据。 仪表盘。一组图表和图形,显示相对于项目的重要指标所取得的进展或绩效。 8 不确定性绩效域 项目存在于具有不同程度不确定性的环境中。不确定性表现为威胁和机会,项目团队可以探索、评估并决定如何处理它们。 不确定性 (Uncertainty)。缺乏对问题、事件、要遵循的路径或要追求的解决方案的理解和认识。 模糊性 (Ambiguity)。不清晰的状态,难以识别事件的起因,或者有多个从中选择的选项。 复杂性 (Complexity)。由于人类行为、系统行为和模糊性而难以管理的项目集、项目或其环境的特征。 易变性 (Volatility)。快速且不可预测的变化的可能性。 风险。一旦发生,会对一个或多个项目目标产生积极或消极影响的不确定事件或条件。 一图掌握PMBOK第七版8大绩效域知识精华

pytorch超详细安装教程,Anaconda、PyTorch和PyCharm整套安装流程

本文介绍基于Anaconda环境以及PyCharm软件结合,安装PyTorch深度学习框架。 PyTorch深度学习框架详细安装教程 一、anaconda安装(一)下载(二)安装(三)配置环境变量(四)检查安装结果 二、PyTorch安装(一)创建虚拟环境(二)激活虚拟环境(三)安装PyTorch 三、PyCharm安装(一)下载(二)安装(三)激活专业版(四)汉化教程 四、将PyTorch环境添加到PyCharm的解释器 一、anaconda安装 (一)下载 官网下载链接: https://www.anaconda.com/清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 选择最新版Anaconda3-5.3.0-Windows-x86_64.exe(64位): (二)安装 1. 点击next 2. 点击I Agree 3. 选择All Users后,点击Next 4. 选择存放该软件的文件夹(尽量不要放在C盘),点击Next 5. 选择将anaconda加入系统变量(第一个方框打勾) (三)配置环境变量 如果上面未勾选第一个选项,则需要手动配置环境变量。 1. 打开高级系统设置,点击环境变量 2.双击系统变量的Path 3.点击新建,将下面四个路径依次加入到环境变量中 (四)检查安装结果 按下win键+R键弹出运行框,输入cmd,弹出cmd命令行窗口 1.验证anaconda环境是否安装成功: conda --version 2. 查看anaconda已经安装了哪些包 从开始界面找到anaconda prompt,点击启动 输入以下命令: conda list 可以看到已经安装了numpy、sympy等常用包。 二、PyTorch安装 (一)创建虚拟环境 1. 打开anaconda prompt,输入以下命令: conda create -n pytorch python=3.9 通过conda创建一个名为pytorch的虚拟环境,3.9是python的版本,都可以按自己需求改,一定要指定具体 python 版本。 2. 创建成功后,输入以下命令查看安装的所有环境: conda info --envs (二)激活虚拟环境 输入以下命令: conda activate pytorch 当前面从(base)变为(pytorch)时表示此时已经切换到你所创建的pytorch虚拟环境,随后正式进入安装pytorch环节。 (三)安装PyTorch 1. 打开pytorch官网:https://pytorch.

【10个适合新手的人工智能项目 - 02】手写数字识别:使用Python和机器学习算法,编写一个手写数字识别程序,能够识别手写数字图像并将其转换为数字。

为了编写一个手写数字识别程序,我们需要使用Python编程语言和一些机器学习算法。在这个项目中,我们将使用深度学习神经网络模型,它被广泛应用于图像识别任务。 以下是手写数字识别程序的基本步骤: 数据集获取与预处理 首先,我们需要一个数据集,用于训练和测试我们的模型。一个常用的数据集是MNIST,它包含了大量的手写数字图像和它们所对应的标签。可以使用tensorflow或keras库中的函数轻松地加载该数据集。 由于神经网络模型的输入必须是固定大小的张量,因此我们需要对数据进行预处理,使其符合输入格式要求。对于MNIST数据集,每个图像都是28x28像素的灰度图像,因此我们需要将它们转换为一个长度为784的向量,以便将其馈送到神经网络模型中。 模型构建与训练 接下来,我们将构建一个神经网络模型。这里,我们将使用tensorflow或keras库中的函数来定义一个包含多个卷积层、池化层和全连接层的模型。为了提高模型的准确性,我们可以使用一些常用的技术,如dropout、batch normalization、数据增强等。 然后,我们将使用MNIST数据集来训练我们的模型。我们可以使用keras库中的fit()函数来完成这一任务。在训练过程中,我们需要选择一个合适的损失函数和优化算法。常用的损失函数包括交叉熵损失和均方误差损失,常用的优化算法包括随机梯度下降、Adam等。 测试与评估 完成训练后,我们需要对模型进行测试。我们可以使用测试集中的样本来评估模型的性能。使用keras库中的evaluate()函数,我们可以获得测试集上的准确率等指标。 预测 最后,我们可以使用训练好的模型来进行预测。我们可以将输入图像转换为与训练数据相同的格式,并使用模型的predict()函数来获得数字识别的结果。 这就是手写数字识别程序的基本流程。接下来,我们将在Python中实现这个程序。 以下是使用Python和TensorFlow/Keras实现手写数字识别程序的详细步骤: 导入所需的库 import tensorflow as tf from tensorflow import keras import numpy as np import matplotlib.pyplot as plt 在这个步骤中,我们导入了TensorFlow和Keras深度学习库,以及用于数据处理和可视化的numpy和matplotlib库。 加载数据集 mnist = keras.datasets.mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data() 在这个步骤中,我们使用Keras内置的mnist数据集加载了手写数字图像及其标签。mnist数据集包含60,000张28x28像素的训练图像和10,000张测试图像。 数据预处理 train_images = train_images / 255.0 test_images = test_images / 255.0 在这个步骤中,我们对训练图像和测试图像进行了归一化处理,将像素值从0-255压缩到0-1之间。这样做的目的是为了使模型更容易学习和处理数据。 构建模型 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation='softmax') ]) 在这个步骤中,我们使用compile函数编译了模型,指定了Adam优化器和交叉熵损失函数,并选择了准确率作为评估指标。

【深度强化学习】(4) Actor-Critic 模型解析,附Pytorch完整代码

大家好,今天和各位分享一下深度强化学习中的 Actor-Critic 演员评论家算法,Actor-Critic 算法是一种综合了策略迭代和价值迭代的集成算法。我将使用该模型结合 OpenAI 中的 Gym 环境完成一个小游戏,完整代码可以从我的 GitHub 中获得: https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1. 算法原理 根据 agent 选择动作方法的不同,可以把强化学习方法分为三大类:行动者方法(Actor-only),评论家方法(Critic-only),行动者评论家方法(Actor-critic)。 行动者方法中不会对值函数进行估计,直接按照当前策略和环境进行交互。通过交互后得到的立即奖赏值直接优化当前策略。例如:Policy Gradients 评论家方法没有需要维护的策略,评论家方法的策略是直接通过当前的值函数获得的,并通过值函数获得的策略与环境交互。交互得到的立即奖赏值用来优化当前值函数。例如:DQN 行动者评论家方法是由行动者和评论家两个部分构成。行动者用于选择动作,评论家评论选择动作的好坏。行动者选择动作的方法不是依据当前的值函数,而是依据存储的策略。评论家的评论一般采用时间差分误差的形式,时间差分误差是根据当前的值函数计算获得的。时间差分误差是是评论家的唯一输出,并且驱动了行动者和评论家之间的所有学习。 2. 公式推导 根据策略梯度算法的定义,策略优化目标函数如下: 令 ,,称 为优势函数。采用 n 步时序差分法求解时, 可以表示如下: 当 n 为一个完整的状态序列大小时,该算法与蒙特卡洛算法等价。 Actor-Critic 算法一共分为两个部分,Critic 和 Actor 网络。 Critic 是评判网络,当输入为环境状态时,它可以评估当前状态的价值,当输入为环境状态和采取的动作时,它可以评估当前状态下采取该动作的价值。 Actor 为策略网络,以当前的状态作为输入,输出为动作的概率分布或者连续动作值,再由 Critic 网络来评价该动作的好坏从而调整策略。Actor-Critic算法将动作价值评估和策略更新过程分开,Actor 可以对当前环境进行充分探索并缓慢进行策略更新,Critic 只需要负责评价策略的好坏,所以这种集成算法有相对较好的性能。 Critic 网络的输入一般有两种形式,(1)如果输入为状态,则该评价网络的作用为评价当前状态价值;(2)如果输入为状态和动作,则该评价网络的作用为评价当前状态的动作价值。 如果评价网络 Critic 为状态价值 state value 的评价网络,输入为状态。Critic 网络的损失函数计算公式采用均方误差损失函数,即 TD 误差值的累计平方值的均值,表达式如下: Actor 网络的优化目标可以如下: 其中, 代表最优策略,由于该公式表达的含义为当 TD 误差值大于 0 时增强该动作选择概率,当 TD 误差值小于 0 时减小该动作选择概率,所以目标为最小化损失函数 如果评价网络 Critic 为动作价值 action value 的评价网络,即输入为状态和动作,则Critic 网络的损失函数如下:

强推!30个遥感数据下载网站整理分享

1、中国遥感数据共享网 (http://rs.ceode.ac.cn/) 国内存档周期最长的数据网站,对Landsat数据免费共享,也可订购国外商业卫星数据。注册账号,通过审核就可直接下载。 2、中国资源卫星应用中心 (https://data.cresda.cn/#/home) 我国三大卫星应用中心之一,汇集国产卫星数据,注册后可下载HJ卫星数据,高分数据下载需要审核。 3、地理空间数据云 (http://www.gscloud.cn/sources) 数据资源更新比较稳定,免费数据包括Landsat系列、中巴资源卫星、MODIS数据的各种产品、DEM数字高程数据、EO-1数据、NOAAA VHRR数据产品、Sentinel数据等。账号注册,通过审核直接下载即可。 4、全球变化科学研究数据出版系统 (http://www.geodoi.ac.cn/WebCn/Default.aspx) 数据种类非常丰富,涉及领域较多,根据需要自己查找。账号注册,直接下载即可。 5、地球系统科学数据共享网、可再生资源与环境世界数据中心 ( http://eng.wdc.cn/) 中国科学院地理科学与资源研究所主办,中国资源和环境领域的长期数据归档和共享中心。账号注册,直接下载即可。 6、空间科学虚拟观测台 (http://vsso.cssdc.ac.cn) 空间科学虚拟观测台数据资源覆盖空间物理、空间天文、行星科学、空间地球科学四大学科,已建成24个专业数据库。 7、国家地球系统科学数据中心共享服务平台 (http://www.geodata.cn/data/publisher.html) 包含各学科数据,整合集成分布在国内外数据中心群、高等院校、科研院所以及科学家个人产生的数据资源,引进国际数据资源,接收国家重大科研项目产生的数据资源,在此基础上生产加工数据产品。健全标准规范和运行机制,通过地球系统科学数据共享网络平台和专业服务队伍,为地球系统科学研究和社会经济可持续发展提供数据支撑。账号注册,直接下载即可。 8、中国南北极数据中心 (http://www.chinare.org.cn/en/index/) 国家海洋局中国极地中心主办的极地数据共享与服务管理平台,开展极地科学数据的国内外交流与共享。极地区域中心的数据资源全部免费共享。账号注册、直接下载即可。 9、国家林业和草原科学数据中心 (http://www.forestdata.cn/) 林业数据中心整合了森林资源、草原资源、湿地资源、荒漠化资源、自然保护资源、林业生态环境资源、森林保护、森林培育、木材科学与技术、林业科技文献、林业科技项目及林业行业发展等科学数据,以提供数据共享服务。用户用注册登录后,填写项目用途,部分数据收费下载。 10、国家综合地球观测数据共享平台 (http://www.chinageoss.org/dsp/home/index.jsp) 国内卫星数据:资源、高分、气象、海洋、环境、快舟、北京一号等。 国外卫星数据:Landsat系列、MODIS、EO-1、IRS-P6、ENVISAT-1、ERS-2、RESOURCESAT-1。 大部分数据可共享下载。 11、地理国情监测云平台 (http://www.dsac.cn/) 云平台主要包含两部分——时空数据平台和数值模拟研究平台,特别是在现已建成的生态环境科学模型库的基础上,发展了数值模拟相关的工具库,并与时空数据平台进行集成,形成了具有国内领先水平的生态环境科学数值研究环境。针对研究、规划、政策制定及决策等不同需求提供科学可靠的空间信息定制产品和系统解决方案,满足从个人用户到国家政府部门的各级用户需求。部分数据免费。 12、遥感集市 (http://www.rscloudmart.com/) 感集市是遥感行业首个一站式遥感云服务平台,由中科遥感集团与中国资源卫星应用中心联合发布。部分数据免费,大部分数据需付费购买。 13、美国地质调查局USGS (https://www.usgs.gov/) 这个网站需要安装JAVA,打不开可以多换几个浏览器尝试。数据资源有Landsat、MODIS、时序产品等,下载较慢的话可以使用网站上的bulk download工具批量下载。账号注册,通过审核直接下载。 14、欧空局ESA 哨兵数据 (https://scihub.copernicus.eu/) sentinel-1号SAR数据和sentinel-2号光学数据免费下载,数据质量很好。数据下载很慢,经常会断,建议采用迅雷下载。账号注册,通过审核直接下载。 15、美国国家海洋和大气管理局 (http://ngdc.noaa.gov/ngdcinfo/onlineaccess.html) NOAA数据种类很多,涉及领域比较多,可根据需要下载。目前NOAA的国家地球数据中心提供DMSP-OLS和NPP-VIIRS两种夜间灯光遥感数据,可以免费下载。 16、WELD (http://globalmonitoring.sdstate.edu/projects/weld/) 目前提供全球和美国区域LANDSAT时序定量遥感产品 17、and processes distributed active archive center(LP DACC) (https://lpdaac.usgs.gov/dataset_discovery) LP DAAC处理,归档和分发对地观测数据产品,其数据产品普遍可访问。 18、美国国家航空航天局地球观测系统数据和信息系统(EOSDIS) (http://sedac.ciesin.columbia.edu/data/sets/browse) NASA联合美国大学做的社会经济数据共享系统,涉及的领域广泛,数据的描述十分详细 19、世界银行空间数据库 (http://www.worldbank.org/)

【CSS】CSS 背景设置 ② ( 背景位置 | 背景位置-方位值设置 )

文章目录 一、背景位置1、语法说明2、注意事项 二、背景位置-方位值设置1、效果展示2、完整代码示例 一、背景位置 1、语法说明 如果 盒子的大小 大于 背景图片的大小 , 默认的 图片 位置是 左上角 ; 设置背景位置的 CSS 语法如下 : background-position : length length background-position : position position background-position 属性值 可以是 length 长度 , 也可以是 position 方位 ; length 长度 : 百分数 : 如 50% ;浮点数 + 单位 : 如 : 150.5px ; position 方位 : 设置的是 x 坐标的方位 和 y 坐标的方位 , 二者使用空格隔开 ; 左上右下 : top , bottom , left , right ;中间 : center 2、注意事项 background-position 属性值使用注意事项 :

MATLAB——FFT(快速傅里叶变换)

基础知识 FFT即快速傅里叶变换,利用周期性和可约性,减少了DFT的运算量。常见的有按时间抽取的基2算法(DIT-FFT)按频率抽取的基2算法(DIF-FFT)。 1.利用自带函数fft进行快速傅里叶变换 若已知序列 x = [ 4 , 3 , 2 , 6 , 7 , 8 , 9 , 0 ] x=[4,3,2,6,7,8,9,0] x=[4,3,2,6,7,8,9,0],求 X ( k ) = D F T [ x ( n ) ] X(k)=DFT[x(n)] X(k)=DFT[x(n)] 代码非常简单,只有两行 x=[4,3,2,6,7,8,9,0]; xk=fft(x) 一般,对MATLAB而言,要想让它显示出结果,计算的部分不要加分号。 2.绘制128点DFT的幅频图 已知信号由15Hz幅值0.5的正弦信号和40Hz幅值2的正弦信号组成,数据采样频率为100Hz,试绘制N=128点DFT的幅频图。 关于下列代码的解释 f=(0:N-1)'*fs/N; 其中(0:N-1)'是生成了一个长度为N,间隔为1的列向量转置所得到的行向量。fs/N是指频域上的频率间隔。 若N点序列x(n)(n=0,1,…,N-1)是在采样频率fs(Hz)下获得的。它的FFT也是N点序列,即X(k)(k=0,1,…,N-1),则第K点对应实际频率值为: f=k*fs/N clc; fs=100; Ts=1/fs;%采样时间间隔 N=128; n=0:N-1; t=n*Ts; %x不是直接关于n的函数,因为是固定的采样时间点 x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); y=fft(x,N); f=(0:N-1)'*fs/N; stem(f,abs(y)); 运行结果 同时也可以可看到这个幅度谱是关于fN对称的。 3.利用FFT进行功率谱的噪声分析 已知带有测量噪声信号 x ( t ) = s i n ( 2 π f 1 t ) + s i n ( 2 π f 2 t ) + 2 w ( t ) x(t)=sin(2πf1t)+sin(2πf2t)+2w(t) x(t)=sin(2πf1t)+sin(2πf2t)+2w(t) 其中f1=50Hz,f2=120Hz, w(t)为均值为零、方差为1的随机信号,采样频率为1000Hz,数据点数N=512。试绘制信号的功率谱图。

六种常用滤波算法代码实现及效果

总结一下比较常用的一些数据滤波算法,一阶算法可以算是比较基础,通过基本的原理可以引出其他多阶算法或者组合算法 六种常用滤波算法 mcu平台c code 1. 中值滤波2. 滑动均值滤波3. rc-低通滤波4. rc-高通滤波5. rc-带通滤波6. 卡尔曼滤波 1. 中值滤波 中值滤波顾名思义就是将连续的数据取其大小的中值代替,通常用在信号平滑且存在噪声突刺情况可以有效过滤异常数据,缺点是当信号噪声过密时滤波效果不明显,排序算法需要优化以减小ram与计算时间。 //头文件 #define MID_AVG_FILTER_SIZE (7U) //定义滤波窗口大小通常位奇数 typedef struct { float dataBuf[MID_AVG_FILTER_SIZE]; //采样数据区 u16 index; //实现循环队列的队尾下标 } mid_avg_filter_t; float Mid_avg_filter(mid_avg_filter_t* const filter, const float data); //源文件 /******************************************************************************* * @fn Mid_avg_filter * @brief 实现中值滤波 * @param filter 滤波器 * @param data 最新数据 * @return 滤波后的结果 ******************************************************************************/ float Mid_avg_filter(mid_avg_filter_t * const filter, const float data) { float tem; u16 i, j; static mid_avg_filter_t f_tmp; //临时副本,用于排序 //采用循环队列形式将最新数据入队 filter->dataBuf[filter->index] = data; filter->index = (filter->index + 1) % MID_AVG_SIZE; //采用冒泡法将滤波器内数据升序排序 f_tmp=*filter; for (i = 0; i < MID_AVG_SIZE - 1; i ++) //MID_AVG_FILTER_SIZE-1不用与自己比较 { u16 count = 0; for (j = 0; j < MID_AVG_SIZE - 1 - i; j++) { if (f_tmp.

vue运行报错Error: Cannot find module ‘@vue/cli-plugin-babel‘

今天将VUE项目迁移到新的电脑上,配置不一样,导致报错: Error: Cannot find module '@vue/cli-plugin-babel' Require stack: - D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8- D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\lib\Service.js - D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8- D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\bin\vue-cli-service.js at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) at Module._load (node:internal/modules/cjs/loader:920:27) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at idToPlugin (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8 at idToPlugin (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\lib\Service.js:172:14) at D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8 at D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\lib\Service.js:211:20 at Service.resolvePlugins (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8 at Service.resolvePlugins (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\lib\Service.js:198:10) at Object.<anonymous> (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+ cli-service@5.0.8 at Object.<anonymous> (D:\WWW\VUE\xxxxxx\node_modules\.store\@vue+cli-service@5.0.8\node_modules\@vue\cli-service\bin\vue-cli-service.js:15:17) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\WWW\\VUE\\xxxxxx\\node_modules\\.store\\@vue+ cli-service@5.0.8 'D:\\WWW\\VUE\\xxxxxx\\node_modules\\.store\\@vue+cli-service@5.0.8\\node_modules\\@vue\\cli-service\\lib\\Service.js', 'D:\\WWW\\VUE\\xxxxxx\\node_modules\\.store\\@vue+ cli-service@5.0.8\\node_modules\\@vue\\cli-service\\bin\\vue-cli-service.js' ] } 删除node_modules文件夹后执行命令 npm update 仍然报错缺少“@vue/cli-plugin-babel”

LSTM时间序列预测MATLAB代码模板(无需调试)

多序列:http://t.csdn.cn/yfjoh 数据在评论区,导入自己的数据即可预测并画图 %% 1.环境清理 clear, clc, close all; %% 2.导入数据,单序列 D=readmatrix('B.xlsx'); data=D(:,2);%要求行向量 data1=data; % 原始数据绘图 figure plot(data,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255) legend('原始数据','Location','NorthWest','FontName','华文宋体'); xlabel('样本','fontsize',12,'FontName','华文宋体'); ylabel('数值','fontsize',12,'FontName','华文宋体'); %% 3.数据处理 nn=1500;%训练数据集大小 numTimeStepsTrain = floor(nn);%nn数据训练 ,N-nn个用来验证 [XTrain,YTrain,XTest,YTest,mu,sig] = shujuchuli(data,numTimeStepsTrain); %% 4.定义LSTM结构参数 numFeatures= 1;%输入节点 numResponses = 1;%输出节点 numHiddenUnits = 500;%隐含层神经元节点数 %构建 LSTM网络 layers = [sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) %lstm函数 dropoutLayer(0.2)%丢弃层概率 reluLayer('name','relu')% 激励函数 RELU fullyConnectedLayer(numResponses) regressionLayer]; XTrain=XTrain'; YTrain=YTrain'; %% 5.定义LSTM函数参数 def_options(); %% 6.训练LSTM网络 net = trainNetwork(XTrain,YTrain,layers,options); %% 7.建立训练模型 net = predictAndUpdateState(net,XTrain); %% 8.

大数据技术之HBase(超级详细)

大数据技术之HBase 第1章 HBase简介 1.1 什么是HBase HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储。 官方网站:http://hbase.apache.org – 2006年Google发表BigTable白皮书 – 2006年开始开发HBase – 2008年北京成功开奥运会,程序员默默地将HBase弄成了Hadoop的子项目 – 2010年HBase成为Apache顶级项目 – 现在很多公司二次开发出了很多发行版本,你也开始使用了。 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBase是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。 1.2 HBase特点 1)海量存储 Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正式因为Hbase良好的扩展性,才为海量数据的存储提供了便利。 2)列式存储 这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。列族下面可以有非常多的列,列族在创建表的时候就必须指定。 3)极易扩展 Hbase的扩展性主要体现在两个方面,一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。 通过横向添加RegionSever的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbsae服务更多Region的能力。 备注:RegionServer的作用是管理region、承接业务的访问,这个后面会详细的介绍通过横向添加Datanode的机器,进行存储层扩容,提升Hbase的数据存储能力和提升后端存储的读写能力。 4)高并发 由于目前大部分使用Hbase的架构,都是采用的廉价PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要是在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发、低延迟的服务。 5)稀疏 稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。 从图中可以看出Hbase是由Client、Zookeeper、Master、HRegionServer、HDFS等几个组件组成,下面来介绍一下几个组件的相关功能: 1)Client Client包含了访问Hbase的接口,另外Client还维护了对应的cache来加速Hbase的访问,比如cache的.META.元数据的信息。 2)Zookeeper HBase通过Zookeeper来做master的高可用、RegionServer的监控、元数据的入口以及集群配置的维护等工作。具体工作如下: 通过Zoopkeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务 通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息 通过Zoopkeeper存储元数据的统一入口地址 3)Hmaster master节点的主要职责如下: 为RegionServer分配Region 维护整个集群的负载均衡 维护集群的元数据信息 发现失效的Region,并将失效的Region分配到正常的RegionServer上 当RegionSever失效的时候,协调对应Hlog的拆分 4)HregionServer HregionServer直接对接用户的读写请求,是真正的“干活”的节点。它的功能概括如下: 管理master为其分配的Region 处理来自客户端的读写请求 负责和底层HDFS的交互,存储数据到HDFS 负责Region变大以后的拆分 负责Storefile的合并工作 5)HDFS HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持,具体功能概括如下: 提供元数据和表数据的底层分布式存储服务 数据多副本,保证的高可靠和高可用性 1.3 HBase中的角色 1.

Vue3 中 createWebHistory 和 createWebHashHistory 的区别

Vue3 是目前比较流行的前端框架之一,它提供了很多方便的 API 来帮助我们开发高效、可维护的应用程序。在使用 Vue Router 进行路由管理时,我们可以使用 createWebHistory 和 createWebHashHistory 来创建不同类型的路由模式。本文将介绍这两种模式的区别和如何选择合适的模式。 createWebHistory createWebHistory 是 Vue Router 提供的一种基于浏览器 history API 的路由模式,它使用了 HTML5 中的 history.pushState 和 history.replaceState 方法来实现路由跳转。这种模式可以使得 URL 更加直观,而且不会在 URL 中添加任何特殊字符。例如,我们可以将路由设置为 /home、/about 等等。 使用 createWebHistory 可以通过以下方式创建一个路由: import { createRouter, createWebHistory } from 'vue-router' import Home from '@/views/Home.vue' import About from '@/views/About.vue' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/home', name: 'home', component: Home }, { path: '/about', name: 'about', component: About } ] }) 在使用 createWebHistory 时,需要注意以下几点: