【redis】set和zset常用命令

set 無序集合類型

sadd 和 smembers

SADD:將一個或者多個元素添加到set中。注意,重復的元素無法添加到set中。

語法:SADD key member [member]

把集合中的元素,叫做member,就像hash類型中,叫做field類似.

返回值表示本次操作,添加成功了幾個元素.

時間復雜度:O(1)

SMEMBERS:獲取一個set中的所有元素,注意,元素間的順序是無序的。

語法:SMEMBERS key

返回值:所有元素的列表。

時間復雜度:0(N)

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> type key
set
127.0.0.1:6379> sadd key2 1 1 2 3 4
(integer) 4
127.0.0.1:6379> smembers key
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> smembers key2
1) "1"
2) "2"
3) "3"
4) "4"

sismember 和 scard

SISMEMBER:判斷一個元素在不在set中。

語法:SISMEMBER key member

時間復雜度:0(1)

返回值:1表示元素在set中。0表示元素不在set中或者key不存在。

scard:獲取一個set的基數(cardinality),即set中的元素個數。

語法:SCARD key

127.0.0.1:6379> sismember key 1
(integer) 1
127.0.0.1:6379> sismember key 100
(integer) 0
127.0.0.1:6379> scard key
(integer) 4
127.0.0.1:6379> scard key2
(integer) 4

spop和srandmember

spop:使用spop刪除元素的時候其實是隨機刪除.

SPOP key [count]

返回值:取出的元素。

srandmember:隨機獲取集合中的元素

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> spop key
"3"
127.0.0.1:6379> spop key
"2"
127.0.0.1:6379> spop key
"4"
127.0.0.1:6379> spop key
"1"
-- 再次創建一個
127.0.0.1:6379> sadd key2 1 2 3 4
(integer) 4
127.0.0.1:6379> spop key2
"1"
127.0.0.1:6379> spop key2
"2"
127.0.0.1:6379> spop key2
"3"
127.0.0.1:6379> spop key2
"4"
-- 隨機獲取集合元素
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> srandmember key
"1"
127.0.0.1:6379> srandmember key
"4"
127.0.0.1:6379> srandmember key
"3"
-- 隨機獲取多個元素
127.0.0.1:6379> srandmember key 2
1) "3"
2) "2"

smove和srem

語法:SMOVE source destination member

smove含義:把member從source上刪除,再插入到destination中

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2 5 6 7 8
(integer) 4
127.0.0.1:6379> smove key key2 1
(integer) 1
127.0.0.1:6379> SMEMBERS key
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> SMEMBERS key2
1) "1"
2) "5"
3) "6"
4) "7"
5) "8"
-- 給key里再添加一個1,再次把這個1移動給key2
-- 針對上述的情況,smove不會視為出錯。
-- 也會按照刪除-插入進行執行
127.0.0.1:6379> sadd key 1
(integer) 1
127.0.0.1:6379> smove key key2 1
(integer) 1
127.0.0.1:6379> SMEMBERS key
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> SMEMBERS key2
1) "1"
2) "5"
3) "6"
4) "7"
5) "8"
-- 如果要移動的元素在source中不存在。
-- 此時就會返回0表示移動失敗了。
127.0.0.1:6379> SMOVE key key2 100
(integer) 0

srem:可以一次刪除一個member,也可以一次刪除多個membeer .

語法:返回值表示刪除成功的元素個數。

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> srem key 1
(integer) 1
127.0.0.1:6379> srem key 3 4
(integer) 2
127.0.0.1:6379> SMEMBERS key
1) "2"

集合間的操作

交集:sinter和sinterstore
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key  1 2 3 4
(integer) 4
127.0.0.1:6379> sadd key2  3 4 5 6
(integer) 4
127.0.0.1:6379> SINTER key key2
1) "3"
2) "4"
-- SINTERSTORE 把交集放到集合中
127.0.0.1:6379> SINTERSTORE key3 key key2
(integer) 2
127.0.0.1:6379> SMEMBERS key3
1) "3"
2) "4"
并集:sunion,sunionstore
127.0.0.1:6379> sunion key key2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> SUNIONSTORE key4 key key2
(integer) 6
127.0.0.1:6379> SMEMBERS key4
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
差集:sdiff,sdiffstore
127.0.0.1:6379> SDIFF key key2
1) "1"
2) "2"
127.0.0.1:6379> SDIFF key2 key
1) "5"
2) "6"
127.0.0.1:6379> SDIFFSTORE key5 key key2
(integer) 2
127.0.0.1:6379> SMEMBERS key5
1) "1"
2) "2"
127.0.0.1:6379> SDIFFSTORE key6 key2 key
(integer) 2
127.0.0.1:6379> SMEMBERS key6
1) "5"
2) "6"

set類型的編碼

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> sadd key 1 2 3 4
(integer) 4
127.0.0.1:6379> OBJECT encoding key
"intset"
127.0.0.1:6379> sadd key hello
(integer) 1
127.0.0.1:6379> OBJECT encoding key
"hashtable"

zset 有序集合

zadd和zrange

zadd:往有序集合中,添加元素和分數。

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member…]

member和score稱為是一個"pair"。注意:添加的時候,既要添加元素,又要添加分數

有序集合:分數相同,再按照元素自身字符串的字典序來排列。分數不同,仍然按照分數來排。

XX:僅僅用于更新已經存在的元素,不會添加新元素。
NX:僅用于添加新元素,不會更新已經存在的元素。
CH:默認情況下,ZADD返回的是本次添加的元素個數,但指定這個選項之后,就會還包含本次更新的元素的個數。
INCR:此時命令類似ZINCRBY的效果,將元素的分數加上上指定的分數。此時只能指定一個元素和分數。

之前Hash,Set, List很多時候,添加一個元素,都是O(1)。此處,Zset則是logN。由于zset是有序結構,要求新增的元素,要放到合適的位置上(找位置)。

zrange查看有序集合中的元素詳情了。類似于Irange,可以指定一對下標構成的區間。

時間復雜度:O(log(N)+M),start-stop區間的元素個數。此處要根據下標找到邊界值。start對應的位置,接下來就需要遍歷了。

-- 添加集合
127.0.0.1:6379> zadd key 99 呂布 98 趙云 96 典韋 95 關羽
(integer) 4
127.0.0.1:6379> zrange key 0 -1
關羽
典韋
趙云
呂布
127.0.0.1:6379> zrange key 0 -1 withscores
關羽
95
典韋
96
趙云
98
呂布
99
127.0.0.1:6379> zadd key 97 趙云
0
127.0.0.1:6379> zrange key 0 -1 withscores
關羽
95
典韋
96
趙云
97
呂布
99
-- 如果修改的分數,影響到了之前的順序,就會自動的移動元素位置,保持原有的升序順序不變
127.0.0.1:6379> zadd key 10 呂布
0
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
關羽
95
典韋
96
趙云
97

nx和XX

-- nx 僅用于添加新元素,不會更新已經存在的元素。
127.0.0.1:6379> zadd key nx 94 張飛
1
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
94
關羽
95
典韋
96
趙云
97
127.0.0.1:6379> zadd key nx 92  張飛
0
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
94
關羽
95
典韋
96
趙云
97
-- XX: 僅僅用于更新已經存在的元素,不會添加新元素。
127.0.0.1:6379> zadd key XX 92 張飛
0
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
92
關羽
95
典韋
96
趙云
97
127.0.0.1:6379> zadd key XX 90 馬超
0
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
92
關羽
95
典韋
96
趙云
97
-- zadd在默認情況下,返回值就是新增成功的元素個數.
-- 指定這個選項之后,就會還包含本次更新的元素的個數。
127.0.0.1:6379> zadd key CH  90 張飛
1
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
90
關羽
95
典韋
96
趙云
97
-- INCR:此時命令類似ZINCRBY的效果,將元素的分數加上上指定的分數。此時只能指定一個元素和分數。
127.0.0.1:6379> zadd key incr 4 張飛
94
127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
94
關羽
95
典韋
96
趙云
97

zcard,zcount

zcard :獲取一個zset的基數(cardinality),即zset中的元素個數。

語法:ZCARD key

zcount:返回分數在min和max之間的元素個數,默認情況下,min[max都是包含的,可以通過(排除

ZCOUNT key min max

zcount的時間復雜度O(logN)。

min和max是可以寫成浮點數(zset分數本身就是浮點數)
在浮點數中,存在兩個特殊的數值:

  • inf:無窮大.
  • -inf:負無窮大.

zset中分數也是支持使用 inf和-inf作為max和min的

-- 有序集合中元素的個數
127.0.0.1:6379> zcard key
5
-- 集合分數區間中的元素的個數
127.0.0.1:6379> zcount key 95 97
3
127.0.0.1:6379> zcount key (95 97
2
127.0.0.1:6379> zcount key (95 (97
1
127.0.0.1:6379> zcount key -inf inf
5

zrevrange,zrangebyscore

ZREVRANGE:reverse ==> 逆序。按照分數降序進行遍歷并打印。
語法:ZREVRANGE key start stop [WITHSCORES]

此處的區間,兩個參數的順序是不需要變的

zrangebyscore:按照分數來找元素的.相當于和剛才的zcount類似

這個命令可能在6.2.0之后廢棄,并且功能合并到ZRANGE中。

時間復雜度:O(logN + M)

127.0.0.1:6379> ZREVRANGE key 0 -1 withscores
趙云
97
典韋
96
關羽
95
張飛
94
呂布
10
127.0.0.1:6379> ZRANGEBYSCORE key 95 97
關羽
典韋
趙云
127.0.0.1:6379> ZRANGEBYSCORE key 95 97 withscores
關羽
95
典韋
96
趙云
97

zpopmax

zpopmax : 刪除并返回分數最高的count個元素。

返回值就是被刪除的元素(包括member和score).

如果存在多個元素,分數相同,同時為最大值,zpopmax刪的時候,仍然只刪除其中一個元素。分數雖然是主要因素。如果分數相同會按照member字符串的字典序決定先后

O(log(N) * M):M : count要刪除的元素個數。N是有序集合的元素個數.

127.0.0.1:6379> zrange key 0 -1 withscores
呂布
10
張飛
94
關羽
95
典韋
96
趙云
97
127.0.0.1:6379> zpopmax key
趙云
97
127.0.0.1:6379> zpopmax key 2
典韋
96
關羽
95
-- 再次插入兩個有序集合元素
127.0.0.1:6379> zadd key 96 關羽  96 典韋
2
127.0.0.1:6379> zpopmax key
典韋
96

bzpopmax

bzpopmax:ZPOPMAX的阻塞版本。

語法:BZPOPMAX key [key …] timeout

阻塞也是在有序集合為空的時候觸發阻塞.阻塞到有其他客戶端插入元素

timeout表示超時時間,最多阻塞多久。單位是s,支持小數形式。寫作0.1就是100ms。

如果有序集合中已經有了元素了,直接就能返回不會阻塞了。

用法和blpop,brpop的用法一樣。都可以同時阻塞多個key。

-- 客戶端1
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu
(integer) 3
-- 客戶端2
-- 獲取如果有序集合中有元素就獲取,無元素就阻塞
127.0.0.1:6379> BZPOPMAX key 600
1) "key"
2) "wangwu"
3) "30"
127.0.0.1:6379> BZPOPMAX key 600
1) "key"
2) "lisi"
3) "20"
127.0.0.1:6379> BZPOPMAX key 600
1) "key"
2) "zhangsan"
3) "10"
127.0.0.1:6379> BZPOPMAX key 600
-- 客戶端1
127.0.0.1:6379> zadd key 40 zhaoliu 50 zhangqi 60 laoba
(integer) 3
-- 客戶端2
-- 客戶端1,增加元素后。BZPOPMAX獲取元素
127.0.0.1:6379> BZPOPMAX key 600
1) "key"
2) "laoba"
3) "60"
(115.58s)

zpopmin和bzpopmin

zpopmin : 刪除有序集合中,最小的元素。

時間復雜度O(logN*M)

此處的zpopmin和上面的zpopmax的邏輯是一致的(同一個函數實現的)
雖然redis的有序集合記錄了開頭的元素,但是刪除的時候使用的是通用的刪除函數。導致出現了重新查找的過程。

bzpopmin:阻塞版本的zpopmin

語法:BZPOPMIN key [key …] timeout

用法和BZPOPMAX一樣的。時間復雜度,也是O(logN)。

127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu
3
127.0.0.1:6379> zrange key 0 -1 withscores
zhangsan
10
lisi
20
wangwu
30
127.0.0.1:6379> zpopmin key
zhangsan
10
127.0.0.1:6379> zpopmin key 2
lisi
20
wangwu
30
-- 客戶端1
-- 沒有元素進行阻塞等待
127.0.0.1:6379> BZPOPMIN key 600
-- 客戶端2
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu
(integer) 3
-- 客戶端1
-- 集合中有元素就立刻取出
-- 有元素后,獲取元素不會阻塞等待
127.0.0.1:6379> BZPOPMIN key 600
1) "key"
2) "zhangsan"
3) "10"
(89.55s)
127.0.0.1:6379> BZPOPMIN key 600
1) "key"
2) "lisi"
3) "20"
127.0.0.1:6379> BZPOPMIN key 600
1) "key"
2) "wangwu"
3) "30"

zrank,zrevrank,zscore

zrank:返回指定元素的排名,升序。

語法:ZRANK key member

時間復雜度O(logN)

zrank得到的下標,是從前往后算的(升序)

zrevrank:也是獲取到member的下標。但是是反著算的。rev => reverse

語法:ZREVRANK key member

時間復雜度O(logN)

zscore:返回指定元素的分數。

語法:ZSCORE key member

時間復雜度:0(1)

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu 40 zhaoliu
(integer) 4
127.0.0.1:6379> zrank key lisi
(integer) 1
127.0.0.1:6379> zrank key wangwu
(integer) 2
127.0.0.1:6379> zrank key aaa
(nil)
127.0.0.1:6379> zrevrank key lisi
(integer) 2
127.0.0.1:6379> zrevrank key wangwu
(integer) 1
127.0.0.1:6379> zrevrank key zhaoliu
(integer) 0
127.0.0.1:6379> zscore key zhangsan
"10"
127.0.0.1:6379> zscore key lisi
"20"

zrem,zremrangebyrank,zremrangebyscore

zrem:刪除指定的元素。

語法:ZREM key member [member …]

O(logN * M):參數中member的個數。N是整個有序集合中元素個數。

zremrangebyrank:按照排序,升序刪除指定范圍(下標)的元素,左閉右閉。

語法:ZREMRANGEBYRANK key start stop

時間復雜度:O(logN + M) ,N整個有序集合的元素個數。M是start-stop區間中元素個數。此處查找位置,只需要進行一次(不需要重復進行)

zremrangebyscore:按照分數刪除指定范圍的元素,左閉右閉。

語法:ZREMRANGEBYSCORE key min max

時間復雜度:O(log(N)+M)

返回值:本次操作刪除的元素個數。

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu 40 zhaoliu
(integer) 4
127.0.0.1:6379> ZRANGE key 0 -1 withscores
1) "zhangsan"
2) "10"
3) "lisi"
4) "20"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "40"
127.0.0.1:6379> zrem key zhangsan
(integer) 1
127.0.0.1:6379> zrem key lisi wangwu
(integer) 2
-- ZREMRANGEBYRANK
127.0.0.1:6379> flushall
OK
127.0.0.1:6379>  zadd key 10 zhangsan 20 lisi 30 wangwu 40 zhaoliu
(integer) 4
127.0.0.1:6379> ZREMRANGEBYRANK key 1 2
(integer) 2
127.0.0.1:6379> zrange key 0 -1
1) "zhangsan"
2) "zhaoliu"
-- ZREMRANGEBYSCORE
127.0.0.1:6379> flushall
OK
127.0.0.1:6379>  zadd key 10 zhangsan 20 lisi 30 wangwu 40 zhaoliu
(integer) 4
127.0.0.1:6379> ZREMRANGEBYSCORE key 20 30
(integer) 2
127.0.0.1:6379> zrange key 0 -1
1) "zhangsan"
2) "zhaoliu"

zincrby

zincrby:為指定的元素的關聯分數添加指定的分數值。

語法:ZINCRBY key increment member

不光會修改分數內容。也能同時移動元素位置.保持整個有序集合仍然是升序的。

127.0.0.1:6379> flushall
OK
127.0.0.1:6379>  zadd key 10 zhangsan 20 lisi 30 wangwu 40 zhaoliu
(integer) 4
127.0.0.1:6379> ZINCRBY key 15 zhangsan
"25"
127.0.0.1:6379> zrange key 0 -1 withscores
1) "lisi"
2) "20"
3) "zhangsan"
4) "25"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "40"
127.0.0.1:6379> ZINCRBY key -15 zhangsan
"10"
127.0.0.1:6379> zrange key 0 -1 withscores
1) "zhangsan"
2) "10"
3) "lisi"
4) "20"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "40"
127.0.0.1:6379> ZINCRBY key 0.5 zhangsan
"10.5"
127.0.0.1:6379> zrange key 0 -1 withscores
1) "zhangsan"
2) "10.5"
3) "lisi"
4) "20"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "40"

集合間的操作

交集:zinterstore

zinterstore:求有序集合的交集,結果放到第三張表中

語法:ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight] [weight …]] [AGGREGATE <SUM |MIN | MAX>]

numkeys:整數,描述了后續有幾個key參與交集運算

WEIGHTS:權重

AGGREGATE:要把結果存儲到哪個key,對應的zset中。

時間復雜度:O(NK)+O(Mlog(M))N是輸入的有序集合中,最小的有序集合的元素個數;K是輸入了幾個有序集合;M是最終結果的有序集合的元素個數.

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi  30 wangwu
(integer) 3
127.0.0.1:6379> zadd key2 15 zhangsan 25 lisi 35 zhaoliu
(integer) 3
127.0.0.1:6379> ZINTERSTORE key3 2 key key2
(integer) 2
127.0.0.1:6379> ZRANGE key3 0 -1 withscores
1) "zhangsan"
2) "25"
3) "lisi"
4) "45"
-- WEIGHTS 權重交集
127.0.0.1:6379> ZINTERSTORE key4 2 key key2 weights 2 3
(integer) 2
127.0.0.1:6379> zrange key4 0 -1 withscores
1) "zhangsan"
2) "65"
3) "lisi"
4) "115"
-- AGGREGATE:最大數交集
127.0.0.1:6379> ZINTERSTORE key5 2 key key2 AGGREGATE max
(integer) 2
127.0.0.1:6379> zrange key5 0 -1 withscores
1) "zhangsan"
2) "15"
3) "lisi"
4) "25"
-- AGGREGATE:最小數交集
127.0.0.1:6379> ZINTERSTORE key6 2 key key2 AGGREGATE min
(integer) 2
127.0.0.1:6379> zrange key6 0 -1 withscores
1) "zhangsan"
2) "10"
3) "lisi"
4) "20"
并集:zunionstore

zunionstore:求有序結合的并集

語法:ZUNIONSTORE destination numkeys key [key …] [WEIGHTS weight] [weight …]] [AGGREGATE <SUM | MIN | MAX>]

zunionstore用法和zinterstore基本一致.

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu
(integer) 3
127.0.0.1:6379> zadd key2 15 zhangsan 25 lisi 35 zhaoliu
(integer) 3
127.0.0.1:6379> ZUNIONSTORE key3 2 key key2 
(integer) 4
127.0.0.1:6379> zrange key3 0 -1 withscores
1) "zhangsan"
2) "25"
3) "wangwu"
4) "30"
5) "zhaoliu"
6) "35"
7) "lisi"
8) "45"
-- 根據權重求交集
127.0.0.1:6379> ZUNIONSTORE key4 2 key key2 weights 0.5 0.5
(integer) 4
127.0.0.1:6379> zrange key4 0 -1 withscores
1) "zhangsan"
2) "12.5"
3) "wangwu"
4) "15"
5) "zhaoliu"
6) "17.5"
7) "lisi"
8) "22.5"
-- 
127.0.0.1:6379> ZUNIONSTORE key5 2 key key2 aggregate min
(integer) 4
127.0.0.1:6379> zrange key5 0 -1 withscores
1) "zhangsan"
2) "10"
3) "lisi"
4) "20"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "35"
127.0.0.1:6379> ZUNIONSTORE key6 2 key key2 aggregate max
(integer) 4
127.0.0.1:6379> zrange key6 0 -1 withscores
1) "zhangsan"
2) "15"
3) "lisi"
4) "25"
5) "wangwu"
6) "30"
7) "zhaoliu"
8) "35"

數據類型

如果有序集合中的元素個數較少,或者單個元素體積較小。使用ziplist來存儲。

如果當前元素個數比較多,或者單個元素體積非常大。使用skiplist來存儲了。

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> zadd key 10 zhangsan 20 lisi 30 wangwu
(integer) 3
127.0.0.1:6379> object encoding key
"ziplist"
127.0.0.1:6379> zadd key 40 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
(integer) 1
127.0.0.1:6379> object encoding key
"skiplist"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20995.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20995.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20995.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡原理——http/https ---http(1)

T04BF &#x1f44b;專欄: 算法|JAVA|MySQL|C語言 &#x1faf5; 今天你敲代碼了嗎 網絡原理 HTTP/HTTPS HTTP,全稱為"超文本傳輸協議" HTTP 誕?與1991年. ?前已經發展為最主流使?的?種應?層協議. 實際上,HTTP最新已經發展到 3.0 但是當前行業中主要使用的HT…

概念解析 | 為什么SAR中的天線間隔需要是四分之一波長?

注1:本文系“概念解析”系列之一,致力于簡潔清晰地解釋、辨析復雜而專業的概念。本次辨析的概念是:為什么SAR中的天線間隔需要是四分之一波長 概念解析 | 為什么SAR中的天線間隔需要是四分之一波長? 在這篇文章中,我們將深入探討**合成孔徑雷達(SAR)**系統中,為什么天…

明日周刊-第12期

以前小時候最期待六一兒童節了&#xff0c;父母總會給你滿足一個愿望&#xff0c;也許是一件禮物也許是一次陪伴。然而這個世界上其實還有很多兒童過不上兒童節&#xff0c;比如某些地區的小孩子&#xff0c;他們更擔心的是能不能見到明天的太陽。 文章目錄 一周熱點航天探索火…

LeetCode-77. 組合【回溯】

LeetCode-77. 組合【回溯】 題目描述&#xff1a;解題思路一&#xff1a;回溯背誦版解題思路三&#xff1a;0 題目描述&#xff1a; 給定兩個整數 n 和 k&#xff0c;返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 示例 1&#xff1a; 輸入&a…

Python怎么使用 SQLAlchemy 和model 查詢數據呢?

SQLAlchemy是一個流行的Python SQL工具包和對象關系映射器&#xff08;ORM&#xff09;。 假設正在使用 SQLAlchemy 并有一個模型 MyModel&#xff0c;使用這個模型以及 query 方法來查詢數據庫。 這里有一個基本的例子&#xff0c;說明如何使用 SQLAlchemy 的 query 方法和 wi…

算法-對列表元素劃分成兩個和值最大且相等的子列表

現有私募基金發行一支特殊基金產品&#xff0c;該基金認購人數上限不超過 30 人&#xff0c; 募集總金額不超過 3000W&#xff0c;每個投資人認購金額不定。該基金只能將募集到的錢用于投資兩支股票&#xff0c;且要求兩支股票投資金額必須相同&#xff0c;且每位投資人的錢只能…

0X JavaSE-- 集合框架【Collection(List、Set、Queue)、Map】

每一個集合類底層采用的數據結構不同&#xff0c;例如ArrayList集合底層采用了數組&#xff0c;LinkedList集合底層采用了雙向鏈表&#xff0c;HashMap集合底層采用了哈希表&#xff0c;TreeMap集合底層采用了紅黑樹。**集合中存儲的是引用。**即。集合中存放的是對象的地址&am…

springboot報錯:Failed to start bean ‘documentationPluginsBootstrapper‘

項目場景&#xff1a; springboot項目啟動時報錯 問題描述 具體報錯信息&#xff1a; 可能原因分析&#xff1a; 1、SpringFox的版本與Spring Boot的版本不兼容。解決這個問題&#xff0c;你可能需要檢查你正在使用的SpringFox和Spring Boot的版本&#xff0c;確保它們是兼容…

一千題,No.0037(組個最小數)

給定數字 0-9 各若干個。你可以以任意順序排列這些數字&#xff0c;但必須全部使用。目標是使得最后得到的數盡可能小&#xff08;注意 0 不能做首位&#xff09;。例如&#xff1a;給定兩個 0&#xff0c;兩個 1&#xff0c;三個 5&#xff0c;一個 8&#xff0c;我們得到的最…

[AIGC] 使用Flink SQL統計用戶年齡和興趣愛好

Apache Flink是一個具有強大計算能力、高吞吐量、低延遲的分布式計算框架&#xff0c;它支持批計算和流計算。Flink SQL是Flink ecosystem的一部分&#xff0c;是一種對結構化數據進行批和流處理的聲明式語言。本文以一個簡單的實例講解如何使用Flink SQL來統計用戶年齡和興趣愛…

C# 面向對象編程(一)——類 第三篇

總目錄 C# 語法總目錄 系列鏈接 C# 面向對象編程(一) 類 第一篇 C# 面向對象編程(一) 類 第二篇 C# 面向對象編程(一) 類 第三篇 C# 面向對象編程 一 ——類 第三篇 簡介面向對象編程類 第三篇9. 重載運算符10. 分部方法** nameof方法 **** GetType 方法和 typeof方…

【Intro】Heterogeneous Graph Attention Network(HAN)

論文鏈接&#xff1a;https://arxiv.org/pdf/1903.07293 Abstract 異構性和豐富的語義信息給面向異構圖的圖形神經網絡設計帶來了巨大的挑戰。 -> 一種基于分層注意的異構圖神經網絡&#xff0c;包括節點級注意和語義級注意。具體來說&#xff0c;節點級關注旨在學習節點…

GPT4o還沒用上?落后一個月!

文章目錄 一.Share官方網站&#xff1a;以一半的價格享受官網服務1.1 網址1.2 一些介紹和教學實戰&#xff1a;1.3 主界面&#xff08;支持4o)&#xff1a;1.4 GPTS&#xff08;上千個工具箱任你選擇&#xff09;&#xff1a;1.5 快速的文件數據分析&#xff08;以數學建模為例…

一次“yarn Couldn‘t find package“問題的排查

本文記錄一次使用yarn install 時報錯 Couldn’t find package xxxx 問題的排查。 問題描述 問題來自于筆者對一個前端項目進行debug時的yarn install 報錯信息&#xff0c;在一個可以明確代碼沒有問題的項目中&#xff0c;因為切換環境&#xff0c;重新執行yarn install,發現…

qt qcomboBox實現自動檢索功能 通過輸入匹配字符進行篩選

本人做了一個自定義控件SeepedSearch 用于快速檢索匹配的字符的下拉框 方便查找目標 直接上源碼 1. SpeedSerach.h #pragma once #include class QComboBox; class QCompleter; class SpeedSearch : public QWidget { Q_OBJECT public: explicit SpeedSearch(QWidget *paren…

web前端三大主流框架指的是什么

web前端三大主流框架是什么&#xff1f;前端開發師的崗位職責有哪些&#xff1f;這邊整理了相關內容供大家參考了解&#xff0c;請各位小伙伴隨小編一起查閱下面的內容。 web前端三大主流框架 web前端三大主流框架是Angular、React、Vue。 1.Angular Angular原名angularJS誕生…

如何用python做一個貪吃蛇程序?——潯川AI社(VIP)

1 游戲說明: 死亡條件:碰壁、吃自己! 狀態:只有吃了食物才會隨機生成其中一種狀態,分別是:穩如老狗、幸運光滑、衰神附體之一 狀態:穩如老狗:相對于上一次速度不變! 狀態:幸運光滑:相對于上一次速度變慢! 狀態:衰神附體:相對于上一次速度變快! 總體速率對比…

UnityAPI學習之Transform組件基本使用

目錄 Transform組件 訪問與獲取 Transform的位置和旋轉信息 Transform局部坐標和旋轉信息的獲取 Transform的縮放與正方向 縮放&#xff08;Scale&#xff09; 正方向 Transform相關的查找方法 銷毀游戲物體 Transform組件 訪問與獲取 現在創建一個容器放置GrisGO物…

操作系統的分類

Linux類系統的組成 Linux操作系統Linux內核Linux應用 Linux內核是什么&#xff1f; Linux系統內核是構成Linux操作系統核心的部分&#xff0c;它是操作系統中最基礎和關鍵的組件&#xff0c;直接與硬件交互并管理計算機系統的底層資源。以下是Linux內核主要特性和功能的概覽…

一起學習大模型 - langchain里的 PromptTemplate詳細介紹

系列文章目錄 一起學習大模型 - 大模型的交互工具prompt簡介與運用 一起學習大模型 - langchain里的PromptTemplate詳細介紹 一起學習大模型 - langchain里PromptTemplate錯誤排查總結 文章目錄 系列文章目錄前言一、 安裝 LangChain二、 基本用法1. 導入庫并定義模板2. 填充…