redis 入門一

来源:https://www.cnblogs.com/l-y-h/archive/2020/04/07/12656614.html
-Advertisement-
Play Games

一、redis 簡介 1、什麼是 redis? redis 是一個開源免費的高性能的 key - value 資料庫。 支持數據持久化,即可以將記憶體的數據存儲在磁碟中,重啟服務後可以再次載入磁碟中的數據並使用。 支持多種類型,比如:String(字元串)、List(列表)、Set(集合)、zset( ...


一、redis 簡介

1、什麼是 redis?

  redis 是一個開源免費的高性能的 key - value 資料庫。
  支持數據持久化,即可以將記憶體的數據存儲在磁碟中,重啟服務後可以再次載入磁碟中的數據並使用。
  支持多種類型,比如:String(字元串)、List(列表)、Set(集合)、zset(有序集合)、Hash(散列) 等。
  支持數據備份,主從模式的數據備份(master - slave)。
  redis 所有操作都是原子性的,即要麼成功執行,要麼不執行。
官網:
  https://redis.io/

 

2、安裝 redis

(1)使用 docker 安裝、使用 redis

【參考地址:(Linux(CentOS7) 上安裝 docker)】
    https://www.cnblogs.com/l-y-h/p/12622730.html#_label0
    
【參考地址:(ocker 安裝 Redis)】
    https://www.cnblogs.com/l-y-h/p/12622730.html#_label6

 

(2)Centos7 編譯安裝 redis 5.0.8
  Step1:下載 redis 包。

【官網下載地址:】
    https://redis.io/download
    http://download.redis.io/releases/redis-5.0.8.tar.gz
    
【在 Linux 內部直接下載:】
    [root@localhost local]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz

  

  Step2:解壓、編譯。

【解壓:】
    [root@localhost local]# tar -zxvf redis-5.0.8.tar.gz 
    
【進入解壓後的目錄,並編譯(前提 系統內部已經安裝了 gccmake 等程式):】
    [root@localhost local]# cd redis-5.0.8/
    [root@localhost local]# make
    
【編譯完後:進入 src 目錄,可以看到 redis-server、redis-cli 等程式】
    [root@localhost redis-5.0.8]# cd src/

 

 

 

  Step3:開啟服務程式(redis-server),並使用內置客戶端( redis-cli) 進行交互。

【開啟服務程式(redis-server):】
    方式一: 
        ./redis-server       根據預設配置文件啟動 redis
    方式二:
        ./redis-server   ../redis.conf      根據指定的配置文件(可以自定義配置文件位置)啟動 redis

【開啟客戶端進行交互(redis-cli):】
    ./redis-cli

  通過 xShell 使用一個連接以前臺模式啟動一個 redis 服務。

 

 

 

  另開一個 xShell 連接,執行 redis-cli,在安裝包的 src 目錄下 執行 ./redis-cli。

 

 

 

   Step4:關閉服務

【在 redis-cli 中輸入指令】
    [root@localhost src]# ./redis-cli shutdown

 

 

 

3、redis 可視化工具下載

(1)官網下載(要收費的)
  地址:https://redisdesktop.com/pricing

 

 

 

(2)破解版下載(白嫖)
  鏈接:https://pan.baidu.com/s/1v3ZJEdzEGBIf5gYGsyhRBw
  提取碼:ubhz
或者
  http://www.downza.cn/soft/210734.html

 

 

 

 

 

 

 

 

 

二、redis 中 鍵(key) 相關命令

  命令不區分大小寫,但數據區分大小寫。

1、keys(用於查看 key 列表)

【格式:】
    keys pattern         用於查找 匹配 pattern 格式的 key

【舉例:】
    127.0.0.1:6379> keys *

 

 

 

2、del(用於刪除某個鍵)

【格式:】
    del key           當 key 存在時,刪除 key,返回 1。key 不存在時,忽略,返回 0。
    
【舉例:】
    127.0.0.1:6379> del a

 

 

 

3、exists(判斷某個鍵是否存在)

【格式:】
    exists key          用於判斷某個 key 是否存在,存在返回 1,不存在返回 0
    
【舉例:】
    127.0.0.1:6379> exists b

 

 

 

4、type(返回指定 key 存儲值的類型)

【格式:】
    type key          用於判斷某個 key 的類型

【舉例:】
    127.0.0.1:6379> type c

 

 

 

5、rename、renamenx(用於給 key 修改名字)

【rename 格式:】
    rename old_key_name new_key_name      用於修改 key 名。
註:
    若 old_key_name 不存在時,會返回一個錯誤。
    若 new_key_name 存在時,則覆蓋舊值,返回 OK。 

【renamenx 格式:】
    renamenx old_key_name new_key_name      用於修改 key 名
註:
    若 old_key_name 不存在時,會返回一個錯誤。
    若 new_key_name 存在時,則不會修改,返回 0。 

【舉例:】
    127.0.0.1:6379> rename a e
    127.0.0.1:6379> renamenx a e

 

 

 

 

 

 

6、randomkey(隨機返回當前庫的一個 key)

【格式:】
    randomkey          隨機返回當前庫中的 一個 key,若當前庫沒有數據,則返回 null。

【舉例:】
    127.0.0.1:6379> randomkey

 

 

 

三、redis 數據類型 -- String 以及常用命令

1、String(字元串)

  最基本的 類型,一個 key 對應 一個 value。
  是二進位安全的,可以存儲任何數據(比如圖片),存儲最大值為 512 MB。

2、set(給指定 key 設置一個 String 類型的 value,無視類型直接覆蓋)

【格式:】
    set key value              給 key 設置一個 value 值。
    
【舉例:】
     127.0.0.1:6379> set b world

 

 

 

3、get(獲取指定 key 的 value 值)

【格式:】
    get key          用於返回 key 的值,
註:
    若 key 不存在,則返回 null,
    若 key 存儲的不是 string 型數據,則返回一個錯誤
    
【舉例:】
    127.0.0.1:6379> get b

 

 

 

4、getrange(截取 key 存儲的 value 的指定位置的字元串)

【格式:】
    getrange key start end         截取字元串,包括 start、end(從 0 開始計數)。
    
【舉例:】
    127.0.0.1:6379> getrange a 0 -1
    127.0.0.1:6379> getrange a 3 7

 

 

 

5、getset(設置指定 key 的 value 值)

【格式:】
    getset key value      設置指定 key 的 value 值
註:
    當 key 不存在時,返回 null
    當 key 的 value 不是 string 型時,返回 一個錯誤(與 set 有區別)。

【舉例:】
    127.0.0.1:6379> getset a world

 

 

 

6、mget(一次獲取多個 key 的 value 值)

【格式:】
    mget key1 [key2]                  一次獲取多個 key 的值
註:
    若 key 的 value 不屬於 string,會返回 null。
    若 key 不存在,返回 null。

【舉例:】
    127.0.0.1:6379> mget a b  

 

 

 

7、mset、msetnx(一次設置多個 key - value 鍵值對)

【mset 格式:】
    mset key1 value1 [key2 value2]       一次設置多個 key - value 鍵值對
    
【msetnx 格式:】
    msetnx key1 value1 [key2 value2]       一次設置多個 key - value 鍵值對
註:
    key 不存在時才能成功設置。
    
【舉例:】
    127.0.0.1:6379> mset a hello b world
    127.0.0.1:6379> msetnx c java d python

 

 

 

8、setnx(當 key 不存在時,設置值)

【格式:】
    setnx key value       添加一個 從不存在的 key - value 鍵值對
註:
    若 key 存在,則不會設置 value 值,返回 0.
    若 key 不存在,則設置 value 值,返回 1.

 

 

 

9、append(給指定 key 的 value 追加字元串)

【格式:】
    append key value       給指定 key 追加字元串
註:
    若 key 不存在,則等同於 set key value.
    若 key 存在,則 向其 value 末尾 追加 字元串。

【舉例:】
    127.0.0.1:6379> append a world

 

 

 

10、incr、incrby、decr、decrby(增加、減少 數值類型的 value 值)

【格式:】
    incr key                給 key 的 value 加 1
    incrby key value        給 key 的 value 加 指定的 value 
    decr key                給 key 的 value 減 1
    decrby key value        給 key 的 value 減 指定的 value
註:
    value 的值必須是能轉為 數值 型的字元串才可以成功執行

【舉例:】
    127.0.0.1:6379> incr b
    127.0.0.1:6379> decr b
    127.0.0.1:6379> incrby b 20
    127.0.0.1:6379> decrby b 10

 

 

 

11、strlen(獲取指定 key 的 value 字元串的長度)

【格式:】
    strlen key         獲取 指定 key 的 value 存儲的 字元串的長度
    
【舉例:】
    127.0.0.1:6379> strlen a

 

 

 

四、redis 數據類型 -- Hash 以及常用命令

1、Hash(散列、哈希)

  是一個 string 類型 key(指哈希表名) 的 field - value 集合。適合用於存儲對象。
  可以存儲 2^32 -1 個 key - value 鍵值對。

2、hkeys(獲取指定哈希表 key 的 所有的欄位 field)

【格式:】
    hkeys key      用於獲取指定 key 的所有 field。
註:
    若 key 不存在,則提示一個空列表信息。

【舉例:】
    127.0.0.1:6379> hkeys test

 

 

 

3、hset(給 哈希表中的 欄位 賦值)

【格式:】
    hset key field value     給 key 這個哈希表的 field 欄位 賦值 為 value。
註:
    若 key 不存在,則會創建。
    若 field 重覆,則新值會覆蓋舊值。

【舉例:】
    127.0.0.1:6379> hset test a helloworld

 

 

 

4、hmset(同時設置 多個 field - value 到指定的 key 中)

【格式:】
    hmset key field1 value1 [field2 value2]      同時設置多個 field - value 對到 哈希表 key 中
註:
    若 field 重覆,則新值覆蓋舊值。

【舉例:】
    127.0.0.1:6379> hmset test a hello d world

 

 

 

5、hget、hmget、hgetall(獲取哈希表 key 的 field - value值)

【hget 格式:】
    hget key field         用於返回 指定哈希表 key 中指定 欄位 field 的 value 值
    
【hmget 格式:】
    hmget key field1 [field2]    用於一次返回一個或多個 field 的 value 值
    
【hgetall 格式:】
    hgetall key            返回指定 key 下所有 的 field -value
    
【舉例:】
    127.0.0.1:6379> hget test a
    127.0.0.1:6379> hmget test a b c e
    127.0.0.1:6379> hgetall test

 

 

 

6、hvals(獲取指定 key 下所有的 field 對應的 value)

【格式:】
    hvals key           返回指定 key 下所有的 field 對應的 value 值
    
【舉例:】  
    127.0.0.1:6379> hvals test

 

 

 

7、hlen(獲取指定 key 中 field 的數量)

【格式:】
    hlen key       獲取 指定 哈希表 key 中 field 的總數

【舉例:】
    127.0.0.1:6379> hlen test

 

 

 

8、hdel (刪除指定 key 中一個或多個 field)

【格式:】
    hdel key field1 [field2]     刪除指定哈希表 key 中 指定的 field 欄位
    
【舉例:】
    127.0.0.1:6379> hdel test a

 

 

 

9、hexists(判斷指定 key 中是否存在 field)

【格式:】
    hexists key field      判斷指定哈希表 key 中是否存在 field,不存在返回 0,存在返回 1。

【舉例:】
    127.0.0.1:6379> hexists test a

 

 

 

五、redis 數據類型 -- List 以及常用命令

1、List(列表)

  是字元串 的列表,按照插入順序排序,一個 key 對應 多個 value。
  可以存儲 2^32 - 1 個 value 元素。

2、lpush、lpushx(將一個或多個值插入列表的頭部)

【lpush 格式:】
    lpush key value1 [value2]          
註:
    將 value 插入 列表的頭部,若 key 不存在,則創建一個 key

【lpushx 格式:】
    lpush key value1 [value2]         
註:
    將 value 插入 列表的頭部,若 key 不存在,則添加失效,並返回一個 空列表信息。
            
【舉例:】
    127.0.0.1:6379> lpush test 1 2
    127.0.0.1:6379> lpushx test 3 4

 

 

 

3、rpush、rpushx(將一個或多個值插入列表的尾部)

【rpush 格式:】
    rpush key value1 [value2]          
註:
    將 value 插入 列表的頭部,若 key 不存在,則創建一個 key

【rpushx 格式:】
    rpush key value1 [value2]         
註:
    將 value 插入 列表的頭部,若 key 不存在,則添加失效,並返回一個 空列表信息。
            
【舉例:】
    127.0.0.1:6379> rpush test 1 2
    127.0.0.1:6379> rpushx test 3 4

 

 

 

4、lrange(返回指定範圍的 list 列表)

【格式:】
    lrange key start end
註:
    返回指定範圍 內的 list 列表,其中 -1 表示倒數第一個數,0 表示第一個數

【舉例:】
    127.0.0.1:6379> lrange test 0 -1
    127.0.0.1:6379> lrange test -3 3

 

 

 

5、llen(獲取列表的長度)

【格式:】
    llen key 
註:
    返回一個列表的長度,若 key 不存在,則返回 0 。

【舉例:】
    127.0.0.1:6379> llen test

 

 

 

6、lindex(用於獲取列表中指定下標的元素)

【格式:】
    lindex key index
註:
   返回 list 中指定下標 index 的元素,其中 -1 表示倒數第一個數,0 表示第一個數

【舉例:】
    127.0.0.1:6379> lindex test 0
    127.0.0.1:6379> lindex test -1

 

 

 

7、lpop(從列表頭部移除第一個元素)

【格式:】
    lpop key         從 key 頭部移除第一個元素,key不存在時返回 null
    
【舉例:】
    127.0.0.1:6379> lpop test

 

 

 

8、rpop(從列表的尾部移除最後一個元素)

【格式:】
    rpop key         從 key 尾部移除最後一個元素,key不存在時返回 null
    
【舉例:】
    127.0.0.1:6379> rpop test

 

 

 

9、lset(通過 列表的下標去設置 元素值)

【格式:】
    lset key index value
註:
    設置 list 中指定下標 index 的元素,其中 -1 表示倒數第一個數,0 表示第一個數

【舉例:】
    127.0.0.1:6379> lset test 0 hello

 

 

 

10、ltrim(截取列表中指定範圍的元素)

【格式:】
    ltrim key start end
註:
    截取列表中指定範圍的元素,不在範圍的元素會刪除。其中 -1 表示倒數第一個數,0 表示第一個數
    
【舉例:】
    127.0.0.1:6379> ltrim test 1 3

 

 

 

六、redis 數據類型 -- Set 以及常用命令

1、Set(集合)

  是字元串 的無序集合,元素不重覆且無序。
  一個 key 對應 多個 value。可以存儲 2^32 -1 個 value 元素。

2、sadd(添加一個或多個元素到集合中)

【格式:】
    sadd key value1 [value2]
註:
    添加一個或多個元素到集合key 中,重覆元素不會被添加。
            
【舉例:】
    127.0.0.1:6379> sadd test 1 2 3 1 2

 

 

 

3、smembers(用於返回集合的所有元素)

【格式:】
    smembers key
註:
    返回指定集合 key 的所有元素,若 key 不存在,返回 (empty list or set)
    
【舉例:】
    127.0.0.1:6379> smembers test

 

 

 

4、scard(用於返回當前集合中元素的個數)

【格式:】
    scard key
註:
    返回指定 key 的元素的個數。
    
【舉例:】
    127.0.0.1:6379> scard test

 

 

 

5、sismember(判斷集合中是否包含某元素)

【格式:】
    sismember key value
註:
    判斷集合 key 中是否存在 某元素 value
    
【舉例:】
    127.0.0.1:6379> sismember test 4

 

 

 

6、srem(移除一個或多個元素)

【格式:】
    srem key value1 [value2]
註:
    移除一個或多個元素,根據值來匹配。
    
【舉例:】
    127.0.0.1:6379> srem test 2 3 4

 

 

 

7、spop(隨機移除一個或多個元素)

【格式:】
    spop key [count]
註:
    count 表示 移除的元素個數,預設為 1,若 key 不存在,返回 null。
        
【舉例:】
    127.0.0.1:6379> spop test 6
    127.0.0.1:6379> spop test

 

 

 8、srandmember(隨機返回一個或多個元素)

【格式:】
    srandmember key [count]

【舉例:】
    127.0.0.1:6379> srandmember test 4

 

 

 

9、smove(將指定元素從一個集合移動到另一個集合)

【格式:】
    smove source destination member
註:
    將 member 元素 從 source 集合 移動到 destination 集合中。

【舉例:】
    127.0.0.1:6379> smove test test1 4

 

 

 

七、redis 數據類型 -- zSet 以及常用命令

1、zset(有序集合)

  是字元串 的有序集合,元素不重覆且有序,
  內部維護一個 double 類型的分數,根據該值對元素進行排序,double 值可以重覆。
  一個 key 對應 多個 value。可以存儲 2^32 - 1 個 value 元素。

2、zadd(添加一個或多個元素到集合中)

【格式:】
    zadd key score1 value1 [score2 value2]
註;
    score 為指定的整數或分數,用來排序。
    添加一個或多個元素到集合中,若已存在元素,則會覆蓋舊的 score。

【舉例:】
    127.0.0.1:6379> zadd test 2 hello 1 world 3 helloworld

 

 

3、zrange、zrevrange(返回指定範圍的集合元素)

【zrange 格式:】
    zrange key start end [withscores]
註:
    按照元素的 score 增序排列。
    withscores 表示顯示 元素的 score。
    其中 -1 表示倒數第一個數,0 表示第一個數。

【zrevrange 格式:】
    zrevrange key start end [withscores]
註:
    按照元素的 score 降序排列。

【舉例:】    
    127.0.0.1:6379> zrange test 0 -1
    127.0.0.1:6379> zrange test 0 -1 withscores

 

 

 

 

4、zcard、zcount(獲取集合中元素的個數)

【zcard 格式:】
    zcard key
註:
    獲取指定 key 的所有元素的個數

【zcount 格式:】
    zcount key min max
註:
    獲取指定 key 的 指定 分數範圍內的元素的個數。

【舉例:】
    127.0.0.1:6379> zcard test
    127.0.0.1:6379> zcount test 1.5 4.6

 

 

5、zscore(返回指定元素的 score 分數值)

【格式:】
    zscore key member
註:
    返回指定 member 在 指定 key 中的 score.
    
【舉例:】
    127.0.0.1:6379> zscore test hello

 

 

6、zrem(移除一個或多個元素)

【格式:】
    zrem key member1 [member2]
註:
    從集合中移除 一個 或 多個 member。
    
【舉例:】
    127.0.0.1:6379> zrem test world hello

 

 

7、zrank、zrevrank(獲取指定元素在集合中的排名)

【zrank 格式:】
    zrank key member
註:
    按照 score 升序排列,並返回 member 在此序列中的排名。
    其中,0 表示第一名,依次遞增。

【zrevrank 格式:】
    zrevrank key member
註:
    按照 score 降序排列,並返回 member 在此序列中的排名。

【舉例:】
    127.0.0.1:6379> zrank test java
    127.0.0.1:6379> zrevrank test java

 

 

8、zremrangebyrank、zremrangebyscore(按照指定的範圍移除元素)

【zremrangebyrank 格式:】
    zremrangebyrank key start end
註:
    按照 排名,移除 [start, end] 區間內的元素。

【zremrangebyscore 格式:】
    zremrangebyscore key min max
註:
    按照 分數值,移除 [min, max] 區間內的元素    
    
【舉例:】
    127.0.0.1:6379> zremrangebyrank test1 2 3
    127.0.0.1:6379> zremrangebyscore test2 2 100

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 補充 /etc/hostname :CenOS7主機名配置文件 /etc/sysconfig/network C6主機名配置文件 修改主機名 永久生效 臨時改一下 /etc/sysctl.conf Linux內核參數信息文件※※※※※ 調整Linux系統、優化需要配置這個文件 sysctl p 讓修 ...
  • 隨著互聯網+物聯網進程的加快,視頻監控應用領域變得越來越廣泛,其中海康威視 大華等品牌的攝像頭頻繁出現在視野中。由於去年也實現過智慧工地項目上的視頻監控方案,加上當今直播趨勢不減。現在總結一下: 緣由:是1對N 點對多的直播方式, 一般都是採用伺服器轉發,所以此處不考慮WebRTC這種端對端的方式, ...
  • pc開機時,在進入系統之前,要先進入的磁碟里安裝了grub開機引導的區域,如果是單系統一般不會有問題,但若是多系統像win+ubuntu或者ubuntu+ubuntu等,有時會出現grub引導程式損壞,或者其主引導所依賴的邏輯順序不是你想要的 這裡舉個極端一些的慄子:一開始在本地磁碟安裝了win+u ...
  • 一 資源管理 1.1 資源調度機制 對於Kubernetes資源,有兩個重要參數:CPU Request與Memory Request。 通常在定義Pod時並沒有定義這兩個參數,此時Kubernetes會認為該Pod所需的資源很少,並可以將其調度到任何可用的Node上。因此,當集群中的計算資源不很充 ...
  • 我們已經瞭解了 Nginx 的基本命令和架構原理,下麵該到最讓人頭疼也是最不容易理解的部分了,那就是 nginx.conf 這個配置文件,下麵從 Nginx 的指令開始,一步步來講解 Nginx 的配置。 Nginx 指令 先來看一個典型的 Nginx 配置文件示例。 從上面可以看到,這個配置文件中 ...
  • Redis配置集群教程,介紹Redis集群數據分片,節點通訊,然後準備環境,搭建集群,測試集群使用 ...
  • 部署伺服器環境的時候經常要安裝mysql,以下是常見的安裝方式 源碼安裝 rpm包安裝 yum源安裝 這篇主要介紹yum源安裝。 yum源下載 進入 https://dev.mysql.com/downloads/ 頁面,可以看到有很多的下載項,我們選擇 MySQL Yum Repository(對 ...
  • 依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置文件 #使用springboot,未 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...