当前位置: 首页 > news >正文

HBase高手之路4-Shell操作

文章目录

  • HBase高手之路3—HBase的shell操作
    • 一、hbase的shell命令汇总
    • 二、需求
    • 三、表的操作
      • 1.进入shell命令行
      • 2.创建表
      • 3.查看表的定义
      • 4.列出所有的表
      • 5.删除表
        • 1)禁用表
        • 2)启用表
        • 3)删除表
    • 四、数据的操作
      • 1.添加数据
      • 2.获取(查看)数据
        • 1)获取一行数据
        • 2)获取单个数据
      • 3.更新(修改)数据
      • 4.删除数据
        • 1)删除指定列的数据
        • 2)删除整行数据
        • 3)清空表
    • 五、导入数据
      • 1.数据文件的准备
      • 2.把数据文件上次到服务器
      • 3.创建表,根据数据文件的定义
      • 4.执行命令导入命令数据文件
      • 5.查看数据
    • 六、计数操作
      • 1.计数命令
      • 2.MR程序计数
    • 七、扫描操作
      • 1.全表扫描
      • 2.限定记录数
      • 3.限定列
      • 4.限定rowkey
    • 八、HBase的过滤器
      • 1.简介
      • 2.过滤器
      • 3.过滤器的用法
        • 1)比较运算符
        • 2)比较器
        • 3)比较器表达式
      • 4.案例一:查询指定订单id的数据
        • 1)需求
        • 2)分析
        • 3)实现
      • 5.案例二:查询状态为已付款的订单
        • 1)需求
        • 2)分析
      • 6.案例三:组合多条件过滤1
        • 1)需求
        • 2)分析
      • 7. 案例四:组合多条件过滤2
        • 1)需求
        • 2)分析
      • 8.作业
    • 九、INCR
      • 1. 需求
      • 2. incr操作
      • 3.基本使用
      • 4.导入准备好的数据
      • 5.获取计数器值的命令
      • 6.使用incr进行累加操作,修改计数器的值
    • 十、Shell管理操作
      • 1.status
      • 2.whoami
      • 3.list
      • 4.count
      • 5.describe
      • 6.exists
      • 7.is_enabled、is_disabled
      • 8.alter
    • 参考文章

image-20230220084553544

HBase高手之路3—HBase的shell操作

一、hbase的shell命令汇总

命令功能
create创建表
put插入或者更新数据
get获取限定行或者列的数据
scan全表扫描或扫描表并返回表的数据
describe查看表的结构
count统计行数
delete删除指定的行或列的数据
deleteall删除整个行或者列的数据
truncate删除表的数据,结构还在
drop删除整个表(包括数据)

二、需求

有以下的订单数据,需要将其保存在HBase中

订单id订单状态支付金额支付方式用户id操作时间商品分类
001已付款189.511000012023-3-6 9:10:24手机

三、表的操作

1.进入shell命令行

注意:需要提前启动 ZooKeeper、hdfs、hbase集群

image-20230308223358923

2.创建表

命令格式:

create '表名','列簇名1'[,'列簇名2',...]

image-20230308223646357

注意:create要小写,一个表可以有多个列簇

3.查看表的定义

命令格式:

describe '表名'

image-20230308223933406

4.列出所有的表

命令格式:

list

5.删除表

1)禁用表

命令格式:

disable '表名'

image-20230308224302201

2)启用表

命令格式:

enable '表名'

image-20230308224446904

3)删除表

命令格式:

drop '表名'

image-20230308224735495

注意:表处于启用状态时是无法删除的,若要删除表需要先禁用表,在进行删除。

四、数据的操作

1.添加数据

命令格式:

put '表名','rowkey行键','列簇名:列名',

image-20230308225608868

依次添加其他的数据

image-20230308225753624

注意:如果显示中文乱码,是因为hbase的shell中显示的是中文的十六进制编码,要解决中文乱码,需要添加选项,jrubby语法格式:

{属性名=>属性值}

如果有多个属性,中间用逗号格式

image-20230308225948457

image-20230308230110211

image-20230308230424118

image-20230308230707310

再次添加另一个rowkey的数据

image-20230308231006936

image-20230308231411706

2.获取(查看)数据

1)获取一行数据

命令格式:

get '表名','rowkey'

image-20230308231611538

image-20230308231709673

2)获取单个数据

命令格式:

get '表名','rowkey','列簇名:列名'

image-20230308232121937

3.更新(修改)数据

命令格式:

put '表名','rowkey行键','列簇名:列名',新值

在这里插入图片描述

说明:

  • put命令如果键值存在则修改,如果不存在则添加
  • 在HBase中会自动维护表中数据的版本,即时间戳
  • 每执行一次put操作,都会生产一个新的时间戳

4.删除数据

1)删除指定列的数据

命令格式:

delete '表名','行键','列簇名:列名'

image-20230309000017422

2)删除整行数据

image-20230309000134939

命令格式:

deleteall '表名','行键'

image-20230309000258041

3)清空表

命令格式:

truncate '表名'

image-20230309000521697

五、导入数据

1.数据文件的准备

image-20230315122148022

2.把数据文件上次到服务器

image-20230315122451670

3.创建表,根据数据文件的定义

注意:集群启动

  1. 启动ZooKeeper
  2. 启动hdfs
  3. 启动HBASE
  4. 进入shell命令行
create 'ORDER_INFO' ,'C1'

image-20230315123914770

4.执行命令导入命令数据文件

image-20230315124035164

5.查看数据

在这里插入图片描述

此时,HBase的数据在HDFS上是的存储查看

image-20230315124432172

六、计数操作

统计表中有多少条数据

1.计数命令

语法:

count '表名'

功能:统计rowkey不同的行数

image-20230315124714994

注意:当数据量很大的时候,这个操作是比较耗时的

2.MR程序计数

当数据量很大很大的时候,可以通过HBase提供的MR程序进行计数,这个mr程序是

org.apache.hadoop.hbase.mapreduce.RowCounter,语法格式:

hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名'

此时需启动yarn

image-20230315125009979

image-20230315125047846

启动计数命令

hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'

image-20230315125250306

image-20230315125312801

image-20230315125335912

七、扫描操作

1.全表扫描

语法:
scan ‘表名’,{FORMATTER=>‘toString’}

image-20230315125606533

注意:尽量避免全表扫描一张很大很大的表

2.限定记录数

语法:

scan ‘表名’,{FORMATTER=>'toString',LIMIT=>数字}

image-20230315125947678

3.限定列

Rubby语法:

scan ‘表名’,{FORMATTER=>'toString',COLUMNS=>[‘列簇名1:列名1,’列簇名1:列名2,...]}
scan "ORDER_INFO",{FORMATTER=>'toString',LIMIT=>3,COLUMNS=>['C1:CATEGORY','C1:PAY_MONEY']}

image-20230315130445624

4.限定rowkey

语法:

scan ‘表名’,{FORMATTER=>'toString',ROWPREFIXFILTER=>’rowkey一部分’}
scan "ORDER_INFO",{FORMATTER=>'toString',COLUMNS=>['C1:CATEGORY','C1:PAY_MONEY'],ROWPREFIXFILTER=>'e'}

image-20230315130743173

image-20230315130853326

八、HBase的过滤器

1.简介

在HBase中,如果要对海量的数据进行扫描查询,尤其是全表扫描效率很低,可以使用过滤器Filter来提高查询的效率。过滤器Filter可以根据主键、列簇、列、版本号(时间戳)等条件对数据进行查询过滤。

在HBase中,使用过滤器有两种方式,一种就是使用命令行基于jRubby语法的选项实现交互式查询,另一种是基于HBase的JAVA API的方式进行编程开发。

官网文档:https://hbase.apache.org/devapidocs/index.html

2.过滤器

可以通过show_filters命令,查看hbase内置的过滤器

image-20230315140420882

我们来解释一下这些过滤器的用法:

类型过滤器功能
rowkey过滤器RowFilter实现行键字符串的比较和过滤
PrefixFilterrowkey的前缀过滤器
KeyOnlyFilter只对单元格的键过滤不显示值
FirstKeyOnlyFilter只扫描显示相同键的第一个单元格,其对应的键值会显示出来
列过滤器FamilyFilter列簇过滤器
QualifierFilter列限定符过滤器,只显示对应列簇列名的数据
ColumnPrefixFilter对列名的前缀进行限定
MultipleColumnPrefixFilter对多个列名的前缀进行限定
ColumnRangeFilter列名称范围的过滤器
值过滤器ValueFilter值过滤器,查询符合条件的键值对
SingleColumnValueFilter对单个值进行过滤
ColumnValueFilter列值的过滤器
SingleColumnValueExcludeFilter排除匹配成功的值
其他过滤器ColumnPaginationFilter列分页过滤器,返回offset、limit的列
PageFilter分页过滤器,分页显示
TimestampsFilter时间戳过滤器
ColumnCountGetFilter限制每个逻辑行返回值对的个数
DependentColumnFilter依赖列过滤器

3.过滤器的用法

过滤器一般结合scan来使用

scan "ORDER_INFO",{FORMATTER=>'toString',FILTER=>"RowFilter(=,'binary:02602f66-adc7-40d4-8485-76b5632b5b53')"}

image-20230315141149174

一般语法:

scan ‘表名’,{FILTER=>”过滤器的名称(参数列表(如比较运算符,比较器))}

1)比较运算符

比较运算符是我们比较常见的。

运算符功能
=等于
>大于
<小于
>=大于等于
<=小于等于
!=不等于

2)比较器

比较器功能
BinaryComparator匹配完整的字节数组
BinaryPrefixComparator匹配字节数组的前缀
BitComparator匹配比特位
NullComparator匹配空值
RegexStringComparator匹配正则表达式
SubstringComparator匹配子字符串

3)比较器表达式

比较器表达式缩写
BinaryComparatorbinary:值
BinaryPrefixComparatorbinaryprefix:值
BitComparatorbit:值
NullComparatornull
RegexStringComparatorregexstring:正则表达式
SubstringComparatorsubstring:值

4.案例一:查询指定订单id的数据

1)需求

查询指定订单的数据,订单号为“e8b3bb37-1019-4492-93c7-305177271a71”,订单状态及支付方式

2)分析

  • 因为订单id就说表的rowkey,所以应该使用rowkey过滤器RowFilter

image-20230315142049236

只需要两个参数

  • 比较运算符:=
  • 比较器表达式:binary:订单号

3)实现

scan 'ORDER_INFO',{FORMATTER=>'toString',COLUMNS=>['C1:STATUS','C1:PAYWAY'],FILTER=>"RowFilter(=,'binary:e8b3bb37-1019-4492-93c7-305177271a71')"}

image-20230315142259349

5.案例二:查询状态为已付款的订单

1)需求

查询状态为已付款的订单

2)分析

  • 因为查询状态为已付款要查询指定值,所以应该使用值过滤器SingleColumnValueFilter

image-20230315142514218

需要传入四个参数

  • 列簇
  • 列名
  • 比较运算符
  • 比较器表达式
scan 'ORDER_INFO',{FORMATTER=>'toString',FILTER=>"SingleColumnValueFilter('c1','STATUS',=,'binary:已付款')"}

image-20230315142911806

注意:

  • 列簇名和列名大小写一定要写对
  • 如果列簇名和列名大小写写错并不能过滤数据,但是HBase不会报错,而是显示全部的数据,因为HBase是无模式的

6.案例三:组合多条件过滤1

1)需求

查询支付方式为1,且支付金额大于8000的订单

2)分析

  • 此处需要使用多个过滤器共同来实现查询,多个过滤器,可以使用AND(并且)或者OR(或者)来组合多个过滤器完成查询
  • 使用SingleColumnValueFilter实现对应列的查询
  1. 支付方式为1的过滤器
SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1')
  1. 支付金额大于8000的过滤器
SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:8000')
  1. 完整的命令
scan 'ORDER_INFO', {FORMATTER => 'toString',FILTER => "SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1') AND SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:8000')"}

image-20230320112103038

注意:

  • HBase shell中比较默认都是字符串比较,所以如果是比较数值类型的,会出现不准确的情况
  • 例如:在字符串比较中4000是比100000大的
  • 外层必须使用双引号,内层使用单引号

我们还可以加上限定列:

scan 'ORDER_INFO', {FORMATTER => 'toString',FILTER => "SingleColumnValueFilter('C1', 'PAYWAY', = , 'binary:1') AND SingleColumnValueFilter('C1', 'PAY_MONEY', > , 'binary:8000')",COLUMNS=>['C1:PAYWAY','C1:PAY_MONEY']}

image-20230320112316410

7. 案例四:组合多条件过滤2

1)需求

查询类别为“维修;手机;”或者“数码;女装;”,并且状态为“已付款”的订单,只显示类别和状态

2)分析

  • 此处需要使用多个过滤器组合使用,多个过滤器可以使用AND(并且)、OR(或者)来进行组合
  • 使用值过滤器中的SingleColumnValueFilter实现对应列值的查询

完整的命令

scan 'ORDER_INFO', {FORMATTER => 'toString',FILTER => "(SingleColumnValueFilter('C1', 'CATEGORY', = , 'binary:维修;手机;') OR SingleColumnValueFilter('C1', 'CATEGORY', = , 'binary:数码;女装;')) AND SingleColumnValueFilter('C1', 'STATUS', =, 'binary:已付款')",COLUMNS=>['C1:CATEGORY','C1:STATUS']}

image-20230320112444753

8.作业

选择操作时间在2020-04-25,12点8分到9分之间的已完成的订单,只显示操作时间和状态

scan 'ORDER_INFO', {FORMATTER => 'toString',FILTER => "SingleColumnValueFilter('C1', 'OPERATION_DATE', > , 'binary:2020-04-25 12:08:00') AND SingleColumnValueFilter('C1', 'OPERATION_DATE', = , 'binary:2020-04-25 12:09:00')",COLUMNS=>['C1:OPERATION_DATE','C1:STATUS']}

image-20230320100200686

九、INCR

incr(increament)命令可以实现某个单元格的值进行原子性计数累加,默认累加1

1. 需求

某新闻app应用为了统计每个新闻的每隔一段时间的访问次数,将新闻数据保存在HBase中,该表格的数据如下所示,要求原子性的增加新闻的访问次数

新闻ID访问次数时间段rowkey
00000000011200:00-01:000000000001_00:00-01:00
00000000022001:00-02:000000000002_01:00-02:00

2. incr操作

语法:

incr ‘表名’,‘rowkey’,‘列簇名:列名’,[累加值]

说明:

  • 如果某一列要实现计数功能,必须要使用incr来创建对应的列
  • 使用put创建的额列是不能实现累加的
  • 默认累加1

3.基本使用

image-20230320123358809

image-20230320123658394

image-20230320123822800

4.导入准备好的数据

image-20230320123846222

上传服务器

image-20230320123938823

导入HBase

image-20230320124048247

显示前5条数据

image-20230320124253280

5.获取计数器值的命令

不能使用get来获取计数器的值

image-20230320124502710

语法:

get_counter ‘表名’,‘rowkey’,‘列簇名:列名’

image-20230320124948914

image-20230320125058118

6.使用incr进行累加操作,修改计数器的值

image-20230320125410075

image-20230320125514176

十、Shell管理操作

1.status

查看服务器的状态

image-20230320125718373

2.whoami

显示当前用户

image-20230320125748533

3.list

显示当前的所有的表

image-20230320125820563

4.count

统计表的记录数

image-20230320125901029

5.describe

显示表的结构信息

image-20230320125940601

6.exists

判断某个表是否存在

image-20230320130103974

7.is_enabled、is_disabled

判断某个表是否被启用或者禁用

image-20230320130314663

8.alter

改变表和列簇的模式

  • 新增列簇

image-20230320130557415

  • 删除列簇

image-20230320130704439

image-20230320130926617

参考文章

HBASE官网文档

相关文章:

HBase高手之路4-Shell操作

文章目录HBase高手之路3—HBase的shell操作一、hbase的shell命令汇总二、需求三、表的操作1&#xff0e;进入shell命令行2&#xff0e;创建表3&#xff0e;查看表的定义4&#xff0e;列出所有的表5&#xff0e;删除表1)禁用表2)启用表3)删除表四、数据的操作1&#xff0e;添加数…...

聊聊SQL审计功能

什么是sql审计SQL审计是指对SQL语句的执行情况进行记录和追踪&#xff0c;包括SQL语句的执行时间、执行次数、执行结果等信息。通过SQL审计&#xff0c;可以对数据库的使用情况进行监控和管理&#xff0c;包括对SQL注入、非法访问、数据泄露等安全问题的检测和防范&#xff0c;…...

Markdown常用语法(字体颜色)

一些不错的帖子 写CSDN博客时&#xff0c;调节字体大小、颜色及其他样式的常用操作方法 设置字体颜色 使用<font>标记&#xff1a; 这是红色字体&#xff1a;<font colorred>我是红色的字体</font>显示效果如下&#xff1a; 这是红色字体&#xff1a;我是…...

I2C模块理解

I2C模块理解 文章目录I2C模块理解1.配置I2C2.信号3.数据传输3.1主机发送3.2主机接收3.3从机发送3.4从机接收4.中断传输5.Aardvark1.配置I2C I2C的特征 只需要两条公共总线&#xff08;线&#xff09;即可控制I2C网络上的任何设备无需像UART通信那样事先约定数据传输速率。因此…...

手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)

最近在学STM32&#xff0c;基本的学完了&#xff0c;想学几个模块来巩固一下知识&#xff0c;就想到了蓝牙模块。玩啥好难过有很多博客教怎么连的&#xff0c;但自己看起来还是有点糊涂。模块的原理和知识点我就不讲解了&#xff0c;这里我主要手把手记录一下我是如何对蓝牙模块…...

MyBatis高频面试题

目录 1、Mybatis中#和$的区别 2、Mybatis的编程步骤是什么样的 3...

Redis基础篇

redis的三大特点&#xff1a; 支持多数据类型&#xff0c;支持持久化&#xff0c;单线程 多路IO复用 对键操作的命令&#xff1a; keys * 查看当前库所有key exists key 判断key是否存在 del key 删除 unlink key 非阻塞删除&#xff0c;异步删除 expire key …...

unity的C#学习——静态常量和动态常量的定义与使用

定义常量 在C#中&#xff0c;常量是一种不可改变的量&#xff0c;一旦被定义&#xff0c;其值就不能被修改。C#中有两种类型的常量&#xff0c;静态常量和动态常量。 1、静态常量的定义 静态常量是在编译时就已经确定其值的常量&#xff0c;使用const关键字定义。由于在编译…...

栈----数据结构

栈&#x1f506;栈的概念&#x1f506;栈的结构&#x1f506;栈的实现&#x1f506;括号匹配问题&#x1f506;结语&#x1f506;栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为栈顶&am…...

【人人都能读标准】11. 原理篇总结:一个程序的完整执行过程

本文为《人人都能读标准》—— ECMAScript篇的第11篇。我在这个仓库中系统地介绍了标准的阅读规则以及使用方式&#xff0c;并深入剖析了标准对JavaScript核心原理的描述。 我们一路走了很远很远&#xff0c;终于到了本书原理篇的最后一站。 在原理篇中&#xff0c;我们先讲了…...

sheng的学习笔记-IO多路复用,NIO,BIO,AIO

基础概念IO分为几种&#xff1a;同步阻塞的BIO&#xff0c;同步非阻塞的NIO&#xff0c;异步非阻塞AIO&#xff0c;IO多路复用&#xff0c;信号驱动IO&#xff08;不常用&#xff09;对于一个network IO&#xff0c;它会涉及到两个系统对象&#xff0c;一个是调用这个IO的proce…...

【Python入门第三十五天】Python丨文件打开

在服务器上打开文件 假设我们有以下文件&#xff0c;位于与 Python 相同的文件夹中。 demofile.txt Hello! Welcome to demofile.txt This file is for testing purposes. Good Luck!如需打开文件&#xff0c;请使用内建的 open() 函数。 open() 函数返回文件对象&#xff…...

jsoup 框架的使用指南

概述 参考&#xff1a; 官方文档jsoup的使用JSoup教程jsoup 在 GitHub 的开源代码 概念简介 jsoup 是一款基于 Java 的 HTML 解析器&#xff0c;它提供了一套非常省力的 API&#xff0c;不但能直接解析某个 URL 地址、HTML 文本内容&#xff0c;而且还能通过类似于 DOM、CS…...

web前端开发和后端开发哪个难度大?

前言 因为涉及到的具体的应用的领域不同&#xff0c;所以说不能简单地说哪一个难&#xff0c;对于前端而言你会感觉到入门会非常的简单&#xff0c;这也是会给许多人一种错觉&#xff0c;前端很简单&#xff0c;但是只能说是在入门理解上是有利于新手的&#xff0c;前端在主要…...

认证与认可之间有什么区别和联系?

认证与认可之间有什么区别和联系&#xff1f; 当今社会&#xff0c;认证与认可已经深入企业的生活&#xff0c;那么认证与认可之间到底有什么区别和联系呢&#xff1f; 认证&#xff0c;是指由认证机构证明产品、服务、管理体系符合相关技术规范、相关技术规范的强制性要求或者…...

【Java|golang】1626. 无矛盾的最佳球队---最长子序列,不连续,二维数组排序

假设你是球队的经理。对于即将到来的锦标赛&#xff0c;你想组合一支总体得分最高的球队。球队的得分是球队中所有球员的分数 总和 。 然而&#xff0c;球队中的矛盾会限制球员的发挥&#xff0c;所以必须选出一支 没有矛盾 的球队。如果一名年龄较小球员的分数 严格大于 一名…...

C++ 八股文(简单面试题)

1.左值 可寻址变量&#xff0c;持久性&#xff1b; 2.右值 没有变量名&#xff0c;不可寻址&#xff0c;短暂性&#xff1b; 3.指针 指向的内存地址&#xff0c;指针变量存储的就是指向的对象的首地址 4.引用 为一个变量起别名&#xff0c;定义引用的时候一定要初始化&a…...

RK3588平台开发系列讲解(显示篇)DP显示调试方法

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、查看 connector 状态二、强制使能/禁⽤ DP三、DPCP 读写四、Type-C 接口 Debug五、查看 DP 寄存器六、查看 VOP 状态七、查看当前显示时钟八、调整 DRM log 等级沉淀、分享、成长,让自己和他人都能有所收获!😄…...

模拟请求发生跨域问题

参考&#xff1a;传送门 问题产生&#xff1a; Access to XMLHttpRequest at ‘http://test-cms.jinhuahuolong.com/api/pages/list’ from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resourc…...

Qt实践项目:仿Everything软件实现一个QtEverything

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...