redis--数据类型

字符串

字符串是所有编程语言中最常见的和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有的key的类型都是字符串。常用于保存 Session 信息场景,此数据类型比较常用

命令含义复杂度
set key value设置key-valueo(1)
get key获取key-valueo(1)
del  key删除key-valueo(1)
setnx setxx根据key是否存在设置key-valueo(1)
Incr decr计数o(1)
mget mset批量操作key-valueo(n)

添加key

set指令可以创建一个key并赋值,使用格式

SET key value [EX seconds] [PX milliseconds] [NX|XX]
时间复杂度: O(1)
将字符串值 value 关联到 key 。

如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。
当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。

从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等
同于执行 SETEX key seconds value 。
PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX
milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX
key value 。
XX : 只在键已经存在时, 才对键进行设置操作。
不论key是否存在,都设置
127.0.0.1:6379> set hexingchen huiji
OK
127.0.0.1:6379> get hexingchen
"huiji"
127.0.0.1:6379> TYPE key1  判断类型
none
127.0.0.1:6379> set ZX zx  大小写敏感
OK
127.0.0.1:6379> get ZX
"zx"
127.0.0.1:6379> get zx
(nil)
127.0.0.1:6379> set zx xz ex 3 设置自动过期时间3s
OK
127.0.0.1:6379> get zx
"xz"
key值不存在才设置,相当于add
127.0.0.1:6379> get hexingchen
"huiji"
127.0.0.1:6379> setnx hexingchen hao
(integer) 0
127.0.0.1:6379> get hexingchen
"huiji"
127.0.0.1:6379> setnx zzz zzz
(integer) 1
127.0.0.1:6379> set zzz
key存在,才设置,相当于update
127.0.0.1:6379> get zzz
"zzz"
127.0.0.1:6379> set zzz xxz xx
OK
127.0.0.1:6379> get zzz
"xxz"
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> set age 20 xx
(nil)
127.0.0.1:6379> get age
(nil)

获取key

127.0.0.1:6379> get zzz
"xxz"

删除key

127.0.0.1:6379> DEL hexingchen   删除一个key
(integer) 1
127.0.0.1:6379> DEL ZX zzz    删除多个key
(integer) 2

批量设置多个key

127.0.0.1:6379> mset zx xz xc cx
OK

批量获取多个key

127.0.0.1:6379> mget zx xc
1) "xz"
2) "cx"
127.0.0.1:6379> KEYS *
 1) "key-6"
 2) "key-9"
 3) "key-4"
 4) "key-7"
 5) "xc"
 6) "key-5"
 7) "key-2"
 8) "key-10"
 9) "eixtexit"
10) "zx"
11) "key-3"
12) "key-1"
13) "key-8"
127.0.0.1:6379> KEYS k*
 1) "key-6"
 2) "key-9"
 3) "key-4"
 4) "key-7"
 5) "key-5"
 6) "key-2"
 7) "key-10"
 8) "key-3"
 9) "key-1"
10) "key-8"

追加数据

127.0.0.1:6379> append zx lova
(integer) 6
127.0.0.1:6379> get zx
"xzlova"

设置新值并返回旧值

127.0.0.1:6379> get zx
"xzlova"
127.0.0.1:6379> getset zx as
"xzlova"
127.0.0.1:6379> get zx
"as"

返回字符串key对应的字节数

127.0.0.1:6379> get zx
"as"
127.0.0.1:6379> strlen zx
(integer) 2
127.0.0.1:6379> append zx llllll
(integer) 8
127.0.0.1:6379> get zx
"asllllll"
127.0.0.1:6379> strlen zx
(integer) 8

127.0.0.1:6379> set as 五聊
OK
127.0.0.1:6379> get as
"\xe4\xba\x94\xe8\x81\x8a"
127.0.0.1:6379> strlen as
(integer) 6
127.0.0.1:6379> 

判断key是否存在

127.0.0.1:6379> exists as
(integer) 1
127.0.0.1:6379> exists as zx  返回值为2,表示存在2个key,0表示不存在
(integer) 2
127.0.0.1:6379> set name hxc ex 10
OK
127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> set name hxc ex 10
OK
127.0.0.1:6379> exists name 过几秒再看
(integer) 1
127.0.0.1:6379> exists name
(integer) 0

 查看key的过期时间

ttl key #查看key的剩余生存时间,如果key过期后,会自动删除
-1 #返回值表示永不过期,默认创建的key是永不过期,重新对key赋值,也会从有剩余生命周期变成永不过期
-2 #返回值表示没有此key
num #key的剩余有效期

127.0.0.1:6379> ttl zx
(integer) -1
127.0.0.1:6379> set as as ex 20
OK
127.0.0.1:6379> ttl as
(integer) 16
127.0.0.1:6379> ttl as
(integer) 14
127.0.0.1:6379> ttl as
(integer) 9
127.0.0.1:6379> ttl as
(integer) 3
127.0.0.1:6379> ttl as
(integer) -2

重新设置key的过期时间

127.0.0.1:6379> expire zx 1000
(integer) 1
127.0.0.1:6379> ttl zx
(integer) 992

取消key的过期时间

127.0.0.1:6379> ttl zx
(integer) 871
127.0.0.1:6379> persist zx
(integer) 1
127.0.0.1:6379> ttl zx
(integer) -1

数据递增

利用INCR命令簇(INCR, DECR, INCRBY,DECRBY)来把字符串当作原子计数器使用。

127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> incr num
(integer) 11
127.0.0.1:6379> get num
"11"

数据递减

127.0.0.1:6379> get num
"11"
127.0.0.1:6379> decr num
(integer) 10
127.0.0.1:6379> get num
"10"

数值增加

将key对应的数字加decrement(可以是负数)。如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支持64位有符号的正型数字。

127.0.0.1:6379> get num
"10"
127.0.0.1:6379> incrby num -5
(integer) 5
127.0.0.1:6379> get num
"5"
127.0.0.1:6379> incrby num 10
(integer) 15
127.0.0.1:6379> get num 
"15"

数据减小

decrby 可以减小数值(也可以增加)

127.0.0.1:6379> get num 
"15"
127.0.0.1:6379> decrby num 8
(integer) 7
127.0.0.1:6379> get num
"7"
127.0.0.1:6379> decrby num -10
(integer) 17
127.0.0.1:6379> get num
"17"

列表list

列表是一个双向可读写的管道,其头部是左侧,尾部是右侧,一个列表最多可以包含2^32-
1(4294967295)个元素,下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,元素值可以重复,常用于存入日志等场景,此数据类型比较常用

列表特点

  • 有序
  • 可重复
  • 左右都可以操作

生成列表并插入数据

LPUSH和RPUSH都可以插入列表 

LPUSH key value [value …]
时间复杂度: O(1)

将一个或多个值 value 插入到列表 key 的表头


如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSmylist  a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。


如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。


RPUSH key value [value …]
时间复杂度: O(1)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。


如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、RPUSH mylist b 、 RPUSH mylist c 。


如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。

从左边添加数据,已添加的需向右移
127.0.0.1:6379> lpush name cold hot wide 根据顺序逐个写入name,最后的wide会在列表的最左侧
(integer) 3
127.0.0.1:6379> type name
list

从右边添加数据
127.0.0.1:6379> rpush bianchen c java python go
(integer) 4
127.0.0.1:6379> type bianchen
list

向列表追加数据

127.0.0.1:6379> lpush name cool
(integer) 4
从右边添加数据,已添加的向左移
127.0.0.1:6379> rpush bianchen javasprite
(integer) 5

获取列表长度

127.0.0.1:6379> llen bianchen
(integer) 5

获取列表指定位置数据

127.0.0.1:6379> rpush bianchen c java python go
(integer) 4
127.0.0.1:6379> lindex bianchen 0
"c"
127.0.0.1:6379> lindex bianchen 3
"go"
127.0.0.1:6379> lindex bianchen -1
"javasprite"
127.0.0.1:6379> lpush name cold hot wide cool
(integer) 3
127.0.0.1:6379> lrange name 0 -1 所有元素
1) "cool"
2) "wide"
3) "hot"
4) "cold"
127.0.0.1:6379> lrange name  0 3 所有元素
1) "cool"
2) "wide"
3) "hot"
4) "cold"
127.0.0.1:6379> lrange name  1 2
1) "wide"
2) "hot"

127.0.0.1:6379> rpush bianchen c java python go
(integer) 4
127.0.0.1:6379> lrange bianchen 0 -1
1) "c"
2) "java"
3) "python"
4) "go"
5) "javasprite"
127.0.0.1:6379> lrange bianchen 1 2
1) "java"
2) "python"
127.0.0.1:6379> lrange bianchen 2 2
1) "python"
127.0.0.1:6379> 

修改列表指定索引值

127.0.0.1:6379> lrange bianchen 0 -1
1) "c"
2) "java"
3) "python"
4) "go"
5) "javasprite"
127.0.0.1:6379> lset bianchen 4 php
OK
127.0.0.1:6379> lrange bianchen 0 -1
1) "c"
2) "java"
3) "python"
4) "go"
5) "php"

移除列表数据

127.0.0.1:6379> lrange bianchen 0 -1
1) "c"
2) "java"
3) "python"
4) "go"
5) "php"
127.0.0.1:6379> lpop bianchen  弹出左边第一个元素,即删除最后一个
"c"
127.0.0.1:6379> lrange bianchen 0 -1
1) "java"
2) "python"
3) "go"
4) "php"
127.0.0.1:6379> rpop bianchen   弹出右边第一个元素,即删除第一个
"php"
127.0.0.1:6379> lrange bianchen 0 -1
1) "java"
2) "python"
3) "go"

LTRIM 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
127.0.0.1:6379> llen bianchen
(integer) 3
127.0.0.1:6379> lrange bianchen 0 -1
1) "java"
2) "python"
3) "go"
127.0.0.1:6379> ltrim bianchen 0 1
OK
127.0.0.1:6379> llen bianchen
(integer) 2
127.0.0.1:6379> lrange bianchen 0 -1
1) "java"
2) "python"

删除list
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> exist name
(error) ERR unknown command `exist`, with args beginning with: `name`, 
127.0.0.1:6379> exists name
(integer) 0

集合 set

Set 是 String 类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据,可以在两个不同的集合中对数据进行对比并取值,常用于取值判断,统计,交集等场景,例如: 实现共同的朋友

集合特点

  • 无序
  • 无重复
  • 集合间操作

生成集合key

127.0.0.1:6379> sadd game  timi
(integer) 1
127.0.0.1:6379> sadd music qq kugou
(integer) 2
127.0.0.1:6379> type game
set 
127.0.0.1:6379> type music
set

追加数值

追加时,只能追加不存在的数据,不能追加已经存在的数值
127.0.0.1:6379> sadd supper taobao jingdong 
(integer) 2
127.0.0.1:6379> sadd supper taobao 已存在的value,无法再次添加
(integer) 0
127.0.0.1:6379> sadd supper dewu
(integer) 1

查看集合的所有数据

127.0.0.1:6379> smembers supper
1) "dewu"
2) "jingdong"
3) "taobao"
127.0.0.1:6379> smembers game
1) "timi"

删除集合中的元素

127.0.0.1:6379> smembers supper
1) "dewu"
2) "jingdong"
3) "taobao"
127.0.0.1:6379> srem supper jingdong
(integer) 1
127.0.0.1:6379> smembers supper
1) "dewu"
2) "taobao"

获取集合的交集

交集:已属于A且属于B的元素称为A与B的交(集)

127.0.0.1:6379> smembers supper
1) "dewu"
2) "taobao"
127.0.0.1:6379> sadd goods taobao jingdong
(integer) 2
127.0.0.1:6379> sinter goods supper
1) "taobao"
127.0.0.1:6379> 

获取集合的并集

并集:已属于A或属于B的元素为称为A与B的并(集)

127.0.0.1:6379> sunion goods supper
1) "dewu"
2) "jingdong"
3) "taobao"

获取集合的差集

差集:已属于A而不属于B的元素称为A与B的差(集)

127.0.0.1:6379> sdiff goods supper
1) "jingdong"
127.0.0.1:6379> sdiff supper goods
1) "dewu"
127.0.0.1:6379> smembers goods
1) "jingdong"
2) "taobao"
127.0.0.1:6379> smembers supper
1) "dewu"
2) "taobao"

sorted set(有序集合)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double(双精度浮点型)类型的分数,redis正是通过该分数来为集合中的成员进行从小到大的排序,有序集合的成员是唯一的,但分数(score)却可以重复,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1), 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员),经常用于排行榜的场景

有序集合特点

  • 有序
  • 无重复元素
  • 每个元素是由score和value组成
  • score 可以重复
  • value 不可以重复

 生成有序集合

127.0.0.1:6379> zadd watch 1 flower
(integer) 1
127.0.0.1:6379> zadd watch 2 dance
(integer) 1
127.0.0.1:6379> zadd watch 4 juice
(integer) 1
127.0.0.1:6379> type watch
zset

 有序集合实现排行榜

127.0.0.1:6379> zadd sore 145 math 101 english 130 chinese
(integer) 3
127.0.0.1:6379> zrange sore 0 -1 正序排序后显示集合内所有的key,score从小到大显示
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6379> zrevrange sore 0 -1 倒序排序后显示集合内所有的key,score从大到小显示
1) "math"
2) "chinese"
3) "english"
127.0.0.1:6379> zrange sore 0 -1 withscores 正序显示指定集合内所有key和得分情况
1) "english"
2) "101"
3) "chinese"
4) "130"
5) "math"
6) "145"
127.0.0.1:6379> zrevrange sore 0 -1 withscores  倒序显示指定集合内所有key和得分情况
1) "math"
2) "145"
3) "chinese"
4) "130"
5) "english"
6) "101"

 返回某个数值的索引(排名)

127.0.0.1:6379> zrank sore english
(integer) 0
127.0.0.1:6379> zrank sore math
(integer) 2

获取集合的个数

127.0.0.1:6379> zcard sore
(integer) 3

 基于索引返回数值

127.0.0.1:6379> zrange sore  0 2
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6379> zrange sore  0 7  超出范围不报错
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6379> zrange sore  0 -1
1) "english"
2) "chinese"
3) "math"

获取分数

127.0.0.1:6379> zscore sore english
"101"

删除元素

127.0.0.1:6379> zrange sore 0 -1
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6379> zrem sore chinese 
(integer) 1
127.0.0.1:6379> zrange sore 0 -1
1) "english"
2) "math"

哈希 hash

晨晨namehxc
age22
job会计
cityqinghai

hash 即字典, 是一个string类型的字段(field)和值(value)的映射表,Redis 中每个 hash 可以存储 2^32 -1键值对,类似于字典,存放了多个k/v 对,hash特别适合用于存储对象场景

命令复杂度
hget hset hdelo(1)
hexistso(1)
hincrbyo(1)
hgetall hvals hkeyso(1)
hmget hmseto(1)

生成 hash key

HSET hash field value
时间复杂度: O(1)
将哈希表 hash 中域 field 的值设置为 value 。


如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。

127.0.0.1:6379> hset chenchen  name hxc age 22
(integer) 2
127.0.0.1:6379> type chenchen
hash

查看所有字段的值
127.0.0.1:6379> hgetall chenchen
1) "name"
2) "hxc"
3) "age"
4) "22"

增加字段
127.0.0.1:6379> hset chenchen job huaiji
(integer) 1
127.0.0.1:6379> hgetall chenchen
1) "name"
2) "hxc"
3) "age"
4) "22"
5) "job"
6) "huaiji"

 获取hash key的对应字段的值

127.0.0.1:6379> hget chenchen name
"hxc"

127.0.0.1:6379> hmget chenchen name age 获取多个值
1) "hxc"
2) "22"

删除一个hash key 的对应字段

127.0.0.1:6379> hdel chenchen age
(integer) 1
127.0.0.1:6379> hget chenchen age
(nil)
127.0.0.1:6379> hgetall chenchen
1) "name"
2) "hxc"
3) "job"
4) "huaiji"

批量设置hash key的多个field和value

127.0.0.1:6379> hmset chenchen age 22 city qinghai
OK
127.0.0.1:6379> hgetall chenchen
1) "name"
2) "hxc"
3) "job"
4) "huaiji"
5) "age"
6) "22"
7) "city"
8) "qinghai"

获取hash中指定字段的值

127.0.0.1:6379> hmget chenchen  name age
1) "hxc"
2) "22"

获取hash中的所有字段名field

127.0.0.1:6379> hkeys chenchen
1) "name"
2) "job"
3) "age"
4) "city"

获取指定hash key 的所有field及value

127.0.0.1:6379> hvals chenchen
1) "hxc"
2) "huaiji"
3) "22"
4) "qinghai"

获取指定hash key 的所有field及value

127.0.0.1:6379> hgetall chenchen
1) "name"
2) "hxc"
3) "job"
4) "huaiji"
5) "age"
6) "22"
7) "city"
8) "qinghai"

 删除 hash

127.0.0.1:6379> del chenchen
(integer) 1
127.0.0.1:6379> exists chenchen
(integer) 0
127.0.0.1:6379> hgetall chenchen
(empty array)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 vLLM 搭建 DeepSeek-V2 Chat 服务

直奔主题。 安装vLLM 官方实现的代码还没有 merge 到 vLLM 主分支,所以直接 git clone DeepSeek 的分支。 git clone https://github.com/zwd003/vllm.git cd vllm pip install -e .源码安装大概耗时 10 分钟。 OpenAI 接口规范启动 官方 Github 放的是单条推理…

不闭合三维TSP:成长优化算法GO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代码

一、旅行商问题 旅行商问题(Traveling salesman problem, TSP)是一个经典的组合优化问题,它可以描述为一个商品推销员去若干城市推销商品,要求遍历所有城市后回到出发地,目的是选择一个最短的路线。当城市数目较少时&…

Java-MySql:JDBC

目录 JDBC概述 JDBC搭建 1、导入mysql开发商提供的jar包 2、注册驱动 3、与数据库连接 注解: Statement: 代码 运行 PreparedStatement: 代码 运行 PreparedStatement和Statement Statement 增 代码 运行 删 代码 运…

前端 CSS 经典:filter 滤镜

前言:什么叫滤镜呢,就是把元素里的像素点通过一套算法转换成新的像素点,这就叫滤镜。而算法有 drop-shadow、blur、contrast、grayscale、hue-rotate 等。我们可以通过这些算法实现一些常见的 css 样式。 1. drop-shadow 图片阴影 可以用来…

民国漫画杂志《时代漫画》第5期.PDF

时代漫画05.PDF: https://url03.ctfile.com/f/1779803-1246745815-7953cf?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps:资源来源网络!

dify:开源 LLMOps平台。

单纯笔记: 一、关于 Dify dify/README_CN.md at main langgenius/dify GitHub Dify 是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以…

单表复杂查询的场景分析二:涉及数据分组与分区/多重函数计算/SQL变种

SQL演练,带详细分析,笔记和备忘。行文不易,感谢支持! 本文是单表下的复杂场景问题分析,具体看下面的每个需求。 接上文,本文为连载的第二篇。 目录 数据表及说明 需求8:找出指定月份每个人的…

C++—结构体

结构体(struct),是一种用户自定义复合数据类型,可以包含不同类型的不同成员。 结构体的声明定义和使用的基本语法: // 声明结构体struct 结构体类型 { 成员1类型 成员1名称; ...成员N类型 成员N名称; };除声明…

Python导入Shapefile到PostGIS的常见问题和解决方案

导入Shapefile到PostGIS的常见问题和解决方案 先决条件: 已经拥有含有GDAL的python环境(如果大家需要,我可以后面出一片文章 问题一:QGIS连接到PostGIS数据库失败 错误描述: Connection to server at &quo…

BCD编码(8421)介绍

概念 BCD (Binary-Coded Decimal) 是一种二进制的数字编码形式,其特点每个十进制数位用4个二进制位来表示。 在网络IO中,你传输一个数字类型最少需要一字节,传输两个数字类型最少需要两字节,但是当你使用BCD编码后传输&#xff…

Oracle Graph 入门 - RDF 知识图谱

Oracle Graph 入门 - RDF 知识图谱 0. 引言1. 查看 RDF Semantic Graph 安装情况2. 创建一个语义网络4. 创建一个模型5. 加载 RDF 文件6. 配置 W3C 标准的 SPARQL 端点 0. 引言 Oracle Graph 的中文资料太少了,只能自己参考英文资料整理一篇吧。 Oracle 数据库包括…

云下到云上,丽迅物流如何实现数据库降本50% | OceanBase案例

在2024年3月20日的首场OceanBase数据库城市行活动中,专注于物流及供应链解决方案的丽迅物流的架构师阳磊,围绕“OB Cloud在丽迅物流的实践”这一主题,进行了精彩的演讲。本文为此次演讲的内容回顾。 在丽迅物流(Lesoon Logistics…

论文精读-SRFormer Permuted Self-Attention for Single Image Super-Resolution

论文精读-SRFormer: Permuted Self-Attention for Single Image Super-Resolution SRFormer:用于单图像超分辨率的排列自注意 Params:853K,MACs:236G 优点: 1、参考SwinIR的RSTB提出了新的网络块结构PAB(排列自注意力…

盘点28个免费域名申请大全

盘点28个免费域名申请大全 免费域名推荐学习使用,免费就意味着没任何保障。 名称稳定时间支持解析模式后缀格式说明地址EU.org28 年NS.eu.org/. 国家简写.eu.org需要审核,稳定性高,限制少,国内访问有问题,可 CFeu.orgp…

反射获取或修改对象属性的值

利用反射既可以获取也可以写入,首先咱们先写几个获取的例子。 一:利用反射修改各数据(利用resultField.set修改) 首先定义实体类 public class Dog {private String dogUser;private int age;把DogUser的"hahaha"改为"geggegegege" Dog dog = new Do…

10个最佳Android数据恢复工具,用于恢复已删除的文件

由于我们现在在智能手机上存储了许多重要文件,因此了解数据恢复工具变得很重要。您永远不会知道何时需要使用适用于Android的数据恢复工具。 由于不乏Windows数据恢复工具,因此从崩溃的计算机中恢复文件很容易。但是,当涉及到从Android恢复数…

adb卸载系统垃圾应用

//获取包名 输入如下代码,然后在打开和关闭要获取包名的app就会打印出该app的包名 adb shell am monitor //卸载系统应用 -k会保留用户数据,不包含-k则不会保留用户数据 adb shell pm uninstall -k --user 0 包名 (包名一般为:c…

机械臂与Realsense D435 相机的手眼标定ROS包

本教程主要介绍机械臂与 Realsense D435 相机手眼标定的配置及方法。 系统:Ubuntu 20.0.4 ◼ ROS:Noetic ◼ OpenCV 库:OpenCV 4.2.0 ◼ Realsense D435:librealsense sdk(2.50.0)、realsense-ros 功能包&…

【map、set】C++用红黑树来封装map、set容器

🎉博主首页: 有趣的中国人 🎉专栏首页: C进阶 🎉其它专栏: C初阶 | Linux | 初阶数据结构 小伙伴们大家好,本片文章将会讲解map和set之用红黑树来封装map、set容器的相关内容。 如果看到最后您…

资料防拷贝该如何实现?数据防拷贝的方法有哪些

数据安全和隐私保护成为企业和个人关注的重点。电脑中存储的资料往往包含了重要的商业机密、个人隐私或其他敏感信息。 因此,如何有效防止他人非法拷贝电脑资料,成为了一个亟待解决的问题。 本文将探讨数据防拷贝的方法,以帮助企业和个人保护…