浅谈Redis7基础命令

news2024/11/27 9:54:43

Redis基本命令

 

Ping命令 心跳命令

set & get命令

set key value

get key

select命令

切换数据库

dbsize命令

 

flushdb命令

清除当前数据库数据

flushell命令

清除所有数据库数据

退出命令

quit、exit

关闭redis

redis-cli shutdown

shutdown

查看进程及端口号

#查看redis进程

pa axu | grep redis

#查看所有端口使用情况

netstat -ntulp |grep redis

Key命令

Redis中存储的数据整体是一个Map,其key为String类型,value可以是String、Hash、List、Set等类型。

格式:keys pattern

功能:查询所有符合条件的pattern的key,pattern为正则表达式。

Keys查询速度非常快,但在一个大的数据库中使用它可能会阻塞当前服务器的服务。生产环境中一般不使用,使用scan命令代替。

keys * 查询所有

 

keys h* 查询以h开头

 

    

查询是否存在EXISTS

 

删除DEL

 

重命名RENAME

 

MOVE移动到另一个数据库

将h20移动到3号库

TYPE查看类型

格式:TYPE key

返回key所存储的值的类型

类型:none(key不存在)、String(字符串)、list(列表)、set(集合)、zset(有序表)、hash(哈希表)

  

EXPIRE 与EXEPIRE设置生存时间

格式:EXPIRE key seconds

EXPIRE秒

PEXPIRE毫秒

TTL 和PTTL命令

TTL查看key的剩余生存时间

Key不存在时,返回-2。

Key存在但没设置剩余生存时间时,返回-1。

TTL秒

PTTL毫秒

 

PERSIST命令

格式:PERSIST key

将key的生存时间转换为持久的

转换成功返回1;

若key不存在或key没有设置生存时间,则返回0;

RANDOMKEY命令

格式:RANDOMKEY

从当前数据库中随机删除一个key。

删除成功返回 key

库为null时返回 nil

SCAN命令

scan命令代替keys

     

Value命令-String

Redis存储数据的Value可以是一个String类型数据。String类型的Value是Redis中最基本,最常见的类型。

String类型的Value可以存放任意类型数据。

String类型的Value最大是512M。

set

格式:SET key value

EX:设置过期时间,秒

PX:设置过期时间,毫秒

NX:指定的key不存在才会设置成功。等价于SETNX。

XX:指定的key必须存在,相当于更新value值。

 

setex

setex n1 300 hello 等同于set n1 hello ex 300

setnx

setnx name hello 等同于 set name hello NX

getset

mset

mset key1 value1 key2 value2 key3 value3

msetnx

mget

Append追加

incr 自增 和 decr自减

strlen

getrange

格式:getrange key start end

-1表示最后一位

  

setrange

格式:setrange key offset value

Hash型value操作命令

Redis存储数据的Value可以是一个Hash类型。Hash类型也称为Hash表、字典等。

Hash表就是一个映射表Map,也是由键-值对构成,为了与整体的key进行区分,这里的键称为field,值称为value。

Redis的Hash表中的file-value对均为String类型。

Hash类型Value非常四盒存储对象数据。Key为对象名称,value为描述对象属性的Map,对对象属性的修改在Redis中就可以直接完成,其不像String型Value存储对象,那个对象是序列化过的,如序列化为JSON串,对对象属性值的修改需要先反序列化为对象后再修改,修改后再序列化为JSON串写入到Redis。

hset和hmset

格式:hset names name1 zhangsan name2 baoguo

hmset等价于hset

hsetnx

nx:指定的key不存在才会设置成功。等价于SETNX。

 

hget和hmget

hgetall 、 hkeys 、 hlen 、hvals

hdel

删除file

hexists

查看是否存在

hincrby

增加

hstrlen

查看field的长度

List型Value操作命令

Redis存储数据的 Value可以是一个 String列表类型数据,即该列表中的每个元素均为ting类型数据,列表中的数据会按照插入顺序进行排序,不过,该列表的底层实际是一个无头节点的双向链表,所以对列表表头与表尾的操作性能较高,但对中问元素的插入与删除的操作的性能相对较差。

lpush 和 rpush

lrange 和lindex

lrange 元素 开始下标  结束下标  、结束下标:-1表示最后 格式:lrange key start stop

格式:lindex key index

lset 和 rpushx

格式:lset key index element

格式:rpush key element [element ...]

rpushx的x表示必须存在

linsert和lpop rpop

格式:linsert key BEFORE|AFTER pivot element

格式:lpop key [count]

 

rpoplpush

格式:rpoplpush source destination

 

Lrem

格式:lrem key count element

 

Ltrim

格式:ltrim key start stop

保留指定区域

 

lpush + rpop可以实现队列数据结构效应,先进先出。通过lpush从左侧插入数据,通过rpop右侧取出数据。或rpush+lpop

lpush + brpop可以实现阻塞式消息队列效果。

lpush+lpop可以实现栈数据结构,先进后出。或rpush+rpop

Set型value操作命令

set集合中的元素具有无序性与不可重复性。

应用场景:1、动态黑白名单 2、有限随机数 3、用户画像

sadd 和smembers

格式:sadd key member [member ...

格式:smembers key

 

sismember

格式:sismember key member

smove

格式:smove source destination member

srem

格式:srem key member [member ...]

 

srandmember

srandmember key [count]

随机获取

spop

sdiff差集

将相同的元素去掉

格式:sdiff key [key ...]

 

sdiffstore

格式:sdiffstore destination key [key ...]

将c和cat的差集结果存入result

sinter 和 sinterstore

sinter key [key ...]

sinterstore destination key [key ...]

Sunion 和 sunionstore

sunion key [key ...]

sunionstore destination key [key ...]

有限ZSet型Value操作命令

Redis存储数据的vaue可以是一个有序Set,这个有序set中的每个元素均 String类型。有序set与set的不同之处是,有序Set中的每一个元素都有一个分值 score, Redis会根据score的值对集合进行由小到大的排序。其与set集合要求相同,元素不能重复,但元素的score可以重复。由于该类型的所有命令均是字母z开头,所以该Set也称为Zset

zadd

格式:zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]

zrange和zrevrange

格式:zrange key start stop

格式:zrevrange key start stop

  

zrangebyscore

格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

 

zcount 和zcard

格式:zcount key min max

格式:zcard key

  

zscore和zrank

格式:zscore key member

格式:zrank key member

zincrby

格式:zincrby key increment member

Zrem和 zremrangebyrank

移除

格式:zrem key member [member ...]

格式:zremrangebyrank key start stop

格式:zremrangebyscore key min max

zrangebylex

zrangebylex适用于集合中所有成员具有相同分值的情况。

格式:zrangebylex key min max [LIMIT offset count]

benchmark测试工具

Redis自带一个benchmark测试工具,用来测试redis的性能,是一个压力测试工具。

redis-server redis.conf

redis-benchmark -h 127.0.0.1 -p 6369 -c 50 -n 10000 -a password

或 redis-benchmark -c 50 -n 10000 -a password

简单动态字符串SDS

Redis的Key和 Value,其基础数据类型都是字符串。例如,Hash型 Value的field与 value的类型、List型、Set型、ZSet型 Value的元素的类型等都是字符串。虽然Redi是使用标准C语言开发的,并没有直接使用C语言中传统的字符串表示,而是自定义了种字符串。这种字符串本身的结构比较简单,但功能却非常强大,称为简单动态字符串Simple Dynamic String,简称SDS。

SDS结构

       SDS不同于字符串。C字符串本身是一个双引号括起来的,以’\0’结尾的字符序列。

SDS是一个结构体,定义在Redis安装目录下的src/sds.h中。

Redis中的字符串并不都是SDS,也会是C字符串。C字符串只会出现在字符串“字面常量”中,并且该字符串不可能发生变更。

struct sdshdr{

  //字节数组,用于保存字符串

  char buf[];

  //buf[]中已使用字节数量,称为SDS

  int len;

  //buf[]中尚未使用的字节数量

  int free;

}

 

 

常用SDS操作函数

sdsnew() 使用指定的C字符串创建一个SDS

sdsempty() 创建一个不包含任何字符串数据的SDS

sdsdup() 创建一个SDS副本

sdsfree() 释放指定的DS

sdsclear() 清空指定SDS的字符串内容

sdslen() 获取指定SDS的已使用空间len值

sdsavail() 获取指定SDS的未使用空间free值

sdsMakeRoomFor() 使指定SDS的free空间增加指定的大小

sdsRemoveFreeSpace() 释放指定SDS的free空间

sdscat() 将指定的C字符串拼接到指定SDS字符串末尾

sdscatsds() 将指定的SDS字符串拼接到指定SDS字符串末尾

sdscpy() 将指定的C字符串拼接到指定SDS中并覆盖原字符串内容

sdsgrouzero() 扩展SDS字符串到指定长度。此扩展是使用空字符’\0’填空

sdsrange() 截取指定范围内的SDS字符串

sdstrim() 在指定SDS中删除所有指定C字符串中出现的所有字符

sdsemp() 对比两个给定的SDS字符串是否相同

sdstolow() 将指定SDS字符串中的所有字母变小写

sdstoupper() 将指定SDS字符串中的所有字母变大写

SDS的优势

C字符串使用Len+1长度的字符数组来表示实际长度为Len的字符串,字符数组最后以空字符\0结尾,表示字符串结束。这种结构简单,但不能满足 Redis对字符串功能性、安全性及高效性等的要求。

防止”字符串长度获取”性能瓶颈

对于C字符串,若要获取其长度,则必须要通过遍历整个字符串才可获取到的。对于超长字符串的遍历,会成为系统的性能瓶颈但,由于sDs结构体中直接就存放着字符串的长度数据,所以对于获取字符串长度需要消耗的系统性能,与字符串本身长度是无关的,不会成为 Redis的性能瓶颈。

保证二进制安全

C字符串中只能包含符合某种编码格式的字符,例如 ASCII UTF-8等,并且除了字符串末尾外,其它位置是不能包含空字符0的,否则该字符串就会被程序误解为提前结束。而在图片、音频、视频、压缩文件、 office文件等二进制数据中以空字符\o作为分隔符的情况是很常见的。故而在C字符串中是不能保存像图片、音频、视频、压缩文件、 office文件等进制数据的。

但SDS不是以空字符"0作为字符串结束标志的,其是通过len属性来判断字符串是否结束的。所以,对于程序处理SDS中的字符串数据,无需对数据做任何限制、过滤、假设只需读取即可。数据写入的是什么,读到的就是什么。

减少内存再分配次数

       SDS采用了空间预分配策略与空间预分配策略是指,每次SDS进行空间扩展时,程序不但为其分配所需的空间,还会为其分配额外的未使用空间,以减少内存再分配次数。而额外分配的未使用空间大小取决于空间扩展后SDS的len属性值。

如果len属性值小于1M,那么分配的未使用空间free的大小与len属性值相同

如果len属性值大于等于1M,那么分配的未使用空间free的大小固定是1M

SDS对于空间释放采用的是惰性空间释放策略。该策略是指,SDS字符串长度如果缩短,那么多出的未使用空间将暂时不释放,而是增加到free中。以使后期扩展SDS时减少内存再分配次数。

如果要释放SDs的未使用空间,则可通过 sdsRemovefreeSpace0函数来释放。

兼容C函数

       Redis中提供了很多的SDS的API,以便用户对Redis进行二次开发。为了能够兼容C函数,SDS的底层组buf[]中的字符串仍以字符串’\0’结尾。

zipList

       zipList,通常称为压缩列表,是一个经过特殊编码的用于存储字符串或整数的双向链表。

其底层数据结构由三部分构造:head、entries、与end。这三部分在内存上是连续存放的。

Head

zlbytes:占4个字节,用于存放ziplist列表整体数据结构所占的字节数,包括bytes本身的长度。

zltail:占4个字节,用于存放ziplist中最后一个 entry在整个数据结构中的偏移量(字节)。该数据的存在可以快速定位列表的尾 entry位置,以方便操作

zllen:占2字节,用于存放列表包含的 entry个数。由于其只有16位,所以 ziplist最多可以含有的 entry个数为215-1=6535个

entries

entries是真正的列表,由很多的列表元素 entry构成。由于不同的元素类型、数值的不同,从而导致每个 entry的长度不同。

每个enty由三部分构成

prevlength:该部分用于记录上一个 entry的长度,以实现逆序遍历默认长度为1字节,只要上一个 entry的长度<254字节, prevlength就占1字节,否则其会自动扩展为3字节长度。encoding:该部分用于标志后面的data的具体类型。如果data为整数类型, encoding固定长度为1字节。如果data为字符串类型,则 encoding长度可能会是1字节、2字节或5字节。data字符串不同的长度,对应着不同的 encoding长度。

data:真正存储的数据。数据类型只能是整数类型或字符串类型。不同的数据占用的字节长度不同。

end

end只包含一部分,称为zlend,占1字节,值固定为255,即二进制位全为1,表示zipList列表的结束。

listPack

对于Ziplist,实现复杂,为了逆序遍历,每个 entry中包含前一个 entry的长度,这样会导致在 ziplist中间修改或者插入enty时需要进行级联更新。在高并发的写操作场景下会极度降低 Redis的性能。为了实现更紧凑、更快的解析,更简单的实现,重写实现了 ziplist,并命名为 listpack

在 Redis7.0中,已经将 ziplist全部替換为了 listpack,但为了兼容性,在配置中也保留ziplist的相关属性。

 

listPack也是一个经过特殊编码的用于存储字符串或整数的双向链表。其底层数据结构部分构成:head、 entries与end,且这三部分在内存上也是连续存放的tpack与 Ziplist的重大区别在head与每个 entry的结构上,表示列表结束的end与 ziplist的end是相同的,占一个字节

head

head由两部分构成:

totalbytes:占4个字节,用于存放 list Pack列表整体数据结构所占的字节数,包括totalbytes本身的长度

elemNum:占2字节,用于存放列表包含的entry个数。其意义与 ziplist中len的相同与 Ziplist的head相比,没有了记录最后一个 entry偏移量的 entail

entries

entries也是 list Pack中真正的列表,由很多的列表元素 entry构成。由于不同的元素类型、数值的不同,从而导致每个entry的长度不同。但与ziplist的entry结构相比, listPack的enty结构发生了较大变化。其中最大的变化就是没有了记录前一个enty长度的 prevlength,而增加了记录当前

entry长度的 element-totak-len。而这个改变仍然可以实现逆序遍历,但却避免了由于在列表中间修改或插入enty时引发的级联更新

每个enty仍由三部分构成

encoding:该部分用于标志后面的data的具体类型。如果data为整数类型, encoding长度可能会是1、2、3、4、5或9字节。不同的字节长度,其标识位不同。如果dat为字符串类型,则 encoding长度可能会是1、2或5字节。data字符串不同的长度,对应着不同的 encoding长度

data:真正存储的数据。数据类型只能是整数类型或字符串类型。不同的数据占用的字节长度不同

element-tota-len:该部分用于记录当前 entry的长度,用于实现逆序遍历。由于其特殊的记录方式,使其本身占有的字节数据可能会是1、2或5字

skipList

skiplist,跳跃列表,简称跳表,是一种随机化的数据结构,基于并联的链表,宏现简单,査找效率较高。简单来说跳表也是链表的一种,只不过它在链表的基础上增加了跳跃功能也正是这个跳跃功能,使得在査找元素时,能够提供较高的效率。

quickList

quicklist,快速列表, quicklist本身是一个双向无循环链表,它的每一个节点都是一个ilit从Reds3.2版本开始,对于Lt的底层实现,使用 quicklist替代了pLit和iketziplist与 lin kedlist都存在有明显不足,而 quicklist则对它们进行了改进:吸取了 ziplist和 linkedlist的优点,避开了它们的不足quicklist本质上是 ziplist和 linkedlist的混合体。其将 linkedlist按段切分,每一段使用ziplist来紧凑存储若干真正的数据元素,多个 ziplist之间使用双向指针串接起来。当然对于每个 ziplist中最多可存放多大容量的数据元素,在配置文件中通过 list-max- ziplist-size属性可以指定。

BitMap操作命令

Bitmap是 Redis2.2.0版本中引入的一种新的数据类型。该数据类型本质上就是一个仅包含0和1的二进制字符串。而其所有相关命令都是对这个字符串二进制位的操作。用于描述该字符串的属性有三个:key、 offset、 bitvalue。

key: Bitmap是 Redis的 key-value中的一种vaue的数据类型,所以该vaue一定有其对应的key。

offset:每个BitMap数据都是一个字符串,字符串中的每个字符都有其对应的索引,该索引从0开始计数。该索引就称为每个字符在该 Bitmap中的偏移量 offset。这个 offset的值的范围是[0,232-1],即该 offset的最大值为4G1,即4294967295,42亿多。

bitvalue:每个 Bitmap数据中都是一个仅包含0和1的二进制字符串,每个 offset位上的字符就称为该位的值 bitvalue。 bitvalue的值非0即1

setbit 和getbit

格式:setbit key offset value

格式:getbit key offset

bitcount

格式:bitcount key [start end [BYTE|BIT]]

bitpos

格式:bitpos key bit [start [end [BYTE|BIT]]]

 

bitop

格式:bitop operation destkey key [key ...]

and 并运算 dest 并运算的结果存储在dest里面

HyperLogLog操作命令

超级日志记录该数据类型可以简单理解为ー个set集合,集合元素为字符串。但实际Hyperloglog是一种基数计数概率算法,通过该算法可以利用极小的内存完成独立总数的统计。其所有相关命令都是对这个“set集合”的操作Hyperloglog算法是由法国人 Philippe Flajolet博士研究出来的, Redis的作者 Antirez为了纪念 Philippe Flajolet博士对组合数学和基数计算算法分析的研究,在设计 Hyperloglog命令的时候使用了Philippe Flajole姓名的英文首字母PF作为前缀。

HyperLogLog应用场景

       HyperLogLog可对数据量超级庞大的日志数据做到不精确的去重计数统计。误差是0.81%。UV数据适合使用HyperLogLog进行记录。

pfadd

格式:pfadd key [element [element ...]]

pfcount

格式:pfcount key [key ...]

 

pfmerge

格式:pfmerge destkey sourcekey [sourcekey ...]

将city、database集合合并到sum

Geospatial操作命令

Geospatial,地理空间。

Redis在3.2版本中引入了Geospatial这种新的数据类型。该类型本质上仍是一种集合只不过集合元素比较特殊,是一种由三部分构成的数据结构,这种数据结构称为空间元素

经度: longitude。有效经度为[-180,180]。正的表示东经,负的表示西经。

伟度: latitude。有效纬度为185.05112878,85.05112878]。正的表示北纬,负的表示南位置名称:为该经纬度所标注的位置所命名的名称,也称为该 Geospatial集合的空间元素名称。通过该类型可以设置、查询某地理位置的经纬度,査询某范围内的空间元素,计算两空间元素间的距离等。

应用场景:QQ动态中的“附件”功能,钉钉定位签到等,微信“发现”功能

geoadd

格式:geoadd key [NX|XX] [CH] longitude latitude member [longitude latitud

 

geodist

格式:geodist key member1 member2 [M|KM|FT英尺|MI英里]

默认值为M米

geopos

格式:geopos key member [member ...]

 

geohash

格式:geohash key member [member ...]

geohash是一种地址编码方法。把二维的空间维度数据编码成一个字符串。该值主要用于底层应用功或调试,实际中的用处不大。

georadius

格式:georadius key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count

查看范围内

发布订阅操作命令

subscribe

格式:subscribe channel [channel ...]

功能: Redis客户端通过一个 subscribe命令可以同时订阅任意数量的频道。在输出了订阅了主题后,命令处于阻塞状态,等待相关频道的消息。

psubscribe

格式:psubscribe pattern [pattern ...]

功能:订阅一个或多个符合给定模式的频道。说明:这里的模式只能使用通配符*。例如,诜*可以匹配所有以ⅱ开头的频道,像 it news、it blog、 it tweets等;news.*可以匹配所有以news开头的频道,像news. global. today

 

 

publish

格式:publish channel message

 

 

unsubscribe

取消订阅

格式:unsubscribe [channel [channel ...]]

punsubscribe

格式:punsubscribe [pattern [pattern ...]]

功能:退订一个或多个符合给定模式的频道

这里的模式只能使用通配符*。如果没有频道被指定,其效果与 SUBSCRIBE命令相同,客户端将退讧所有订阅的频道

 

pubsub

PUBSUB是一个查看订阅与发布系统状态的内省命令集,它由数个不同格式的子命令组成,下面分别介绍这些子命令的用法。

pubsub channels

格式:pubsub channels [pattern]

列出当前所有的活跃频道。活跃频道指的是那些至少有一个订阅者的频道。说明: pattern参数是可选的。如果不给出 pattern参数,将会列出订阅/发布系统中的所有活跃频道。如果给出 pattern参数,那么只列出和给定模式 pattern相匹配的那些活跃频道。 pattern中只能使用通配符*。

 

pubsub numsub

格式:pubsub numsub [channel [channel ...]]

返回给定频道的订阅者数量

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

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

相关文章

VirtualBox ping和xshell切换

使用virtualbox有一个奇怪的现象&#xff0c;每次连接xshell的时候ping百度&#xff0c;ping不通&#xff0c;能ping通的时候又连接不了xsell。 两种模式来回切换每次都要查要修改的东西&#xff0c;太麻烦了&#xff0c;就在这记录一下。 连接xshell 选中想要链接xshell的虚…

python3 安装 bz2包

python3 安装 bz2包 错误解决方法1、pip 安装2、重装python3&#xff08;网上推荐&#xff0c;但没尝试&#xff09;3、补全缺少文件&#xff08;博主采用&#xff09; 错误 ModuleNotFoundError: No module named _bz2 解决方法 1、pip 安装 尝试 pip3 install bz2 发现并…

一篇文章搞定《Android中的ANR》

------《ANR》 什么是ANR举个例子帮你认识ANRANR的产生原因ANR的监控手段方法一: 监控trace文件夹方法二&#xff1a;利用我们主线程的Looper方法三&#xff1a;监控SIGQUIT信号 ANR日志Traces.txtTraces文件分析几个分析案例&#xff1a;一、好定位的问题&#xff08;简单案例…

使用FastGithub解决国内访问GitHub失败的问题

问题提出 在ArduinoIDE安装开发板开发包、库时经常由于这些包和库的索引指向的是github下面的开源项目&#xff0c;所以安装失败的可能性极高。开启了FastGithub后&#xff0c;更新成功率和速度都快了很多&#xff01; 问题解决 使用FastGithub开源工具&#xff08;支持Win,Ma…

在北京,36岁的软件测试人的心路历程及学习经验,太现实了

前言 涛哥&#xff08;我认识的一位朋友&#xff0c;也是我的前辈&#xff09;出身普通&#xff0c;仅仅是一个普通二本学校毕业&#xff0c;大学也是混日子混过去的&#xff0c;年轻时没有好好学习&#xff0c;被美女、游戏吸引到迷了自我&#xff0c;他对那年毕业的记忆清晰…

jpa使用

jpa&#xff1a; java persistence api jpa只要一对多 在一对多的关系中&#xff0c;一般将 JoinColumn 放在 多端&#xff0c;, 如果不需要两边都映射对应的实体&#xff0c;&#xff0c;可以在一端设置JoinColumn ,并在多端指定一个外键属性来映射这个关系

农业病虫虚拟仿真教学平台使实验资源共享

动物直肠检查是一项常见的内窥镜检查手术&#xff0c;往往会因为实验设备、实验动物、时间、经费等方面的因素影响&#xff0c;使一些应该开设的手术教学开展较少或者无法进行&#xff0c;造成学生或从业人士对专业知识掌握以及动手实践能力的不足 因此对于新手的培训必须经过大…

MISC:HTTP 流量分析技术.

MISC&#xff1a;HTTP 流量分析技术. Misc即杂项&#xff0c;是信息隐藏又称信息伪装&#xff0c;就是通过减少载体的某种冗余&#xff0c;如空间冗余、数据冗余等&#xff0c;来隐藏敏感信息&#xff0c;达到某种特殊的目的。 信息隐藏打破了传统密码学的思维范畴&#xff0c…

短期光伏发电量短期预测(Python代码,主要模型LSTM)

1.数据集&#xff08;68779条数据&#xff09; 开始时间 DATE_TIMEPLANT_IDSOURCE_KEYDC_POWERAC_POWERDAILY_YIELDTOTAL_YIELD15-05-2020 00:0041350011BY6WEcLGh8j5v7000625955915-05-2020 00:0041350011IF53ai7Xc0U56Y000618364515-05-2020 00:0041350013PZuoBAID5Wc2HD00…

你真的会写接口自动化测试脚本?0-1精通自动化测试实战,暴涨18K...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 开头&#xff0c;…

【Linux进阶命令 01】grep(文本的全局搜索与打印)

文章目录 一、grep命令&#xff08;全局搜索与打印&#xff09;1.1 语法1.2 主要参数1.3 测试准备1.4 grep命令使用示例1.5 应用示例 一、grep命令&#xff08;全局搜索与打印&#xff09; grep &#xff08;缩写来自Globally search a Regular Expression and Print&#xff0…

一文解决eBpf在Android上的集成和调试

eBPF&#xff08;Extended Berkeley Packet Filter &#xff09;是一种新兴的linux内核功能扩展技术&#xff0c;可以无需修改内核代码&#xff0c;在保证安全的前提下&#xff0c;灵活的动态加载程序&#xff0c;实现对内核功能的扩展。 Android平台上也引入了对eBpf技术的支…

NC 人力薪酬管理薪资发放流程粗略整理

NC 人力薪酬管理薪资发放流程: 1、【公共薪资项目-集团/组织】节点新增公共新增项目 2、【薪资期间-集团/组织】节点设置薪资期间 3、根据公司实际情况,如果需要,则在【薪资标准设置-集团/组织】、【薪资规则-集团/组织】两个节点设置薪资标准和薪资规则 4、在【税率表-集…

【类和对象(下)】

文章目录 &#x1f355;前言一、&#x1f355;再谈构造函数1.1构造函数体赋值1.2初始化列表1.3explicit关键字 二、&#x1f355;static成员三、&#x1f355;友元四、&#x1f355;内部类五、&#x1f355;匿名对象六、&#x1f355;拷贝对象时编译器的一些优化七、&#x1f3…

香港Web3,已走至黎明前夜 能否抓住机遇,是外界始终关注的话题?

香港对Web3的全面开放&#xff0c;既是挑战&#xff0c;又是一个不容错过的发展机遇。香港相关行业是否有足够的基础和能力抓住金融大变局的历史性契机&#xff0c;面向未来&#xff0c;完善金融生态&#xff0c;提升香港金融中心的国际竞争力&#xff0c;是外界始终关注的话题…

mongodb geohash

地理位置索引支持是MongoDB的一大亮点&#xff0c;这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道&#xff0c;通常的数据库索引结构是B Tree&#xff0c;如何将地理位置转化为可建立BTree的形式&#xff0c;下文将为你描述。 首先假设我们将需要索引的…

Apache Doris简单易用、高性能和统一的分析数据库

Doris 介绍 https://github.com/apache/doris Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;…

认识BACnet协议

一、什么是BACnet&#xff1f; BACnet&#xff0c;Building Automation and Control networks的简称&#xff0c;即楼宇自动化与控制网络。是用于智能建筑的通信协议。 一般楼宇自控设备从功能上讲分为两部分&#xff1a;一部分专门处理设备的控制功能&#xff1b;另一部分专…

设计模式之【代理模式】,有事找我“经纪人”

文章目录 一、什么是代理模式1、代理模式三大角色2、代理、桥接、装饰器、适配器 4 种设计模式的区别3、代理模式使用场景4、代理模式优缺点 二、静态代理1、静态代理的一般写法2、火车站售票案例3、静态代理优缺点 三、动态代理1、静态代理和动态代理的本质区别2、JDK动态代理…

ArcSWAT报错:Error Number :-2147467259; 对 COM 组件的调用返回了错误 HRESULT E_FAIL

文章目录 1 报错内容2 报错解决3 并行处理的设置补充说明 1 报错内容 通常为连续两段报错&#xff1a; Error Number :-2147467259 Error Message :对 COM 组件的调用返回了错误 HRESULT E_FAIL 。 Module name : mSWFlow Function name : createStream Procedure ( error li…