Redis 03章——10大数据类型概述

news2025/3/12 19:07:36

一、which10

(1)一图

(2)提前声明

这里说的数据类型是value的数据类型,key的类型都是字符串

官网:Understand Redis data types | Docs

(3)分别是

1.3.1redis字符串(String)

  1. string是redis最基本类型,一个key对应一个value
  2. string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象
  3. 一个redis中字符串value最多可以是512M

1.3.2redis列表(List)

  1. Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  2. 它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

1.3.3redis哈希表(Hash)

  1. Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象
  2. Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)

1.3.4redis集合(Set)

  1. Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable
  2. Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
  3. 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)

1.3.5redis有序集合(ZSet)

  1. Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员
  2. 不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
  3. zset的成员是唯一的,但分数(score)却可以重复
  4. zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1

1.3.6redis地理空间(GEO)

  1. 添加地理位置的坐标
  2. 获取地理位置的坐标
  3. 计算两个位置之间的距离
  4. 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合

1.3.7redis基数统计(HyperLogLog)

  1. HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的
  2. 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比
  3. 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素

1.3.8redis位图(bitmap)

  1. 图示:
  2. 01状态表现的二进制位的bit数组

1.3.9redis位域(bitfield)

  1. 通过bitfield命令可以一次性操作多个比特位域(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果
  2. 说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作

1.3.10redis流(Stream)

  1. Redis Stream 是 Redis 5.0 版本新增加的数据结构
  2. Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃
  3. 简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息
  4. 而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失

二、去哪里获得redis常见数据类型操作命令

  1. 官网英文:https://redis.io/commands/
  2. 中文:http://www.redis.cn/commands.html

三、Redis键(key)

(1)常用

(2)案例

3.2.1keys *

  1. 作用:查看当前库所有的key
  2. 案例演示

3.2.2exists key

  1. 作用:判断某个key是否存在(返回1代表true,返回0代表false)
  2. 案例演示

3.2.3type key

  1. 作用查看键(key)对应的值的数据类型
  2. 案例演示:                                                                                                                                 

3.2.4del key

  1. 作用:删除指定的key数据
  2. 案例演示:                                                                                                                                 

3.2.5unlink key

  1. 作用非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作
  2. 案例演示:                                                                                                                                 

3.2.6ttl key

  1. 作用:查看还有多少秒过期,-1表示永不过期(默认),-2表示已过期
  2. 案例演示

3.2.7expire key 秒钟

  1. 作用:为给定的key设置过期时间
  2. 案例演示:如上

3.2.8move key dbindex

  1. 作用将当前数据库的key移动到给定的数据库DB当中
  2. 案例演示

3.2.9select dbindex

  1. 作用切换数据库【0-15】,默认在0号数据库
  2. 案例演示:                                                                                                                                 

3.2.10dbsize

  1. 作用查看当前数据库key的数量
  2. 案例演示

3.2.11flushdb

  1. 作用:清空当前库
  2. 案例演示

3.2.12flushall

  1. 作用:通杀全部库
  2. 案例演示

四、数据类型命令及落地应用

(1)官网命令大全网址

  1. 英文:Commands | Docs
  2. 中文:http://www.redis.cn/commands.html

(2)备注

  1. 命令不区分大小写,而key区分大小写的
  2. 永远的帮助命令,help @类型
    1. help @string
    2. help @list
    3. help @hash
    4. help @hyperloglog
    5. ......

(3)Redis字符串(String)

4.3.1常用

4.3.2单值单value

4.3.3案例

(1)最常用
  1. set key value
  2. get key,如上(一旦过期,get key的结果就是nil
  3. 如何获得设置指定的 Key 过期的 Unix 时间,单位为秒
    System.out.println(Long.toString(System.currentTimeMillis()/1000L));
  4. keepttl
  5. keepttl的作用:在对键执行特定操作时保留该键原有的过期时间设置
(2)同时设置/获取多个键值
  1. MSET key value [key value...]
  2. MGET key [key ...]
  3. mset/mget/msetnx
  4. 注意:msetnx要求所有给定的键在 Redis 中都不存在,才会执行设置操作。只要有一个键已经存在,(1)那么整个操作就会失败,(2)并且不会对任何键进行设置
(3)获取指定区间范围内的值
  1. getrange/setrange
  2. 案例演示
(4)数值增减
  1. 一定要是数据才能进行加减
  2. 递增数字:INCR key
  3. 增加指定的整数:INCRBY key increment
  4. 递减数值:DECR key
  5. 减少指定的整数:DECRBY key decrement
(5)获取字符串长度和内容追加
  1. 获取字符串长度:strlen key
  2. 字符串内容追加:append key value
  3. 总结
    1. NX:若键已存在不做修改返回操作失败(仅在键不存在时执行)
    2. XX:若键不存在不创建新键返回操作失败,可用于更新已存在键的值(仅在键已经存在时执行)
(6)分布式锁
  1. setnx key value
  2. setex(set with expire)键秒值/setnx(set if not exist)
(7)getset(先get再set)
  1. getset:将给定key的值设为value,并返回key的旧值(old value)
  2. 简单一句话:先get然后立即set
(8)应用场景
  1. 比如抖音无线点赞某个视频或者商品,点一下加一次
  2. 是否喜欢的文章

(4)Redis列表(List)

4.4.1常用

4.4.2单key多value

4.4.3简单说明

  1. 一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景
  2. left、right都可以插入添加
  3. 如果键不存在,创建新的链表
  4. 如果键已存在,新增内容
  5. 如果值全移除,对应的键也就消失了

4.4.4案例

(1)lpush/rpush/lrange 注:没有rrange
  1. 案例演示
  2. lpush:可以这么理解,将1,2,3,4,5逐个添加到链表左端
  3. rpush可以这么理解,将11,22,33,44,55逐个添加到链表右端
(2)lpop/rpop
  1. lpop:从左边开始弹
  2. rpop:从右边开始弹
(3)lindex,按照索引下标获得元素(从上到下)

(4)llen,获取List列表中元素的个数

(5)lrem key 数字N 给定值v1
  1. 解释:删除N个值等于v1的元素
  2. 案例演示
(6)ltrim key 开始index 结束index
  1. 作用:截取指定范围的值后再赋值给key
  2. 案例演示
(7)rpoplpush 源列表 目的列表
  1. 作用移除列表的最后一个元素,并将该元素添加到另一个列表并返回
  2. 案例演示
(8)lset key index value
  1. 作用让指定数组集合的小标位置值替换成新值
  2. 案例演示
(9)linsert key before/after 已有值 插入的新值
  1. 作用
  2. 案例演示
(10)应用场景

微信公众号订阅的消息

(5)Redis哈希(Hash)

4.5.1常用                                                                                                                           

4.5.2KV模式不变,但V是一个键值对

4.5.3案例

(1)hset/hget/hmset/hmget/hgetall/hdel
(2)hlen
  1. 作用:返回key中字段的数量
  2. 案例演示:                                                                                                                                 
(3)hexists
  1. 作用:检查key的某个字段是否存在
  2. 案例演示
(4)hkeys/hvals
  1. 作用
    1. HKEYS:获取哈希键所有字段
    2. HVALS:获取哈希键所有值
  2. 案例演示:
(5)hincrby/hincrbyfloat
(6)hsetnx
  1. 作用:仅当指定字段不存在时设值
  2. 案例演示
(7)应用场景

JD购物车早期,目前不再采用,当前中小厂可用

(6)Redis集合(Set)

4.6.1常用                                                                                                                           

4.6.2单值多value,且无重复

4.6.3案例

(1)SADD key member [member ...]
  1. 作用添加一个或多个成员,返回实际添加的成员数量
  2. 案例演示
(2)SMEMBERS key
  1. 作用:遍历集合中的所有元素
  2. 案例演示:                                                                                                                                 
(3)SISMEMBER key member
  1. 作用:判断元素是否在集合中
  2. 案例演示:                                                                                                                                 
(4)SREM key member [member ...]
  1. 作用移除一个或多个成员,返回实际移除的成员数量
  2. 案例演示
(5)scard
  1. 作用:获取集合里面元素的个数
  2. 案例演示:                                                                                                                                 
(6)SRANDMEMBER key [数字]
  1. 作用从集合中随机返回指定数量的成员,不指定数量则返回一个
  2. 案例演示:                                                                                                                                 
(7)SPOP key [数字]
  1. 作用从集合中随机弹出一个元素,出一个删一个
  2. 案例演示
(8)smove key1 key2 在key1里已存在的某个值
  1. 作用:将key1里已存在的某个值移动到key2
  2. 案例演示
(9)集合运算-集合的差集运算A-B
  1. 作用返回存在于集合 A 但不存在于集合 B 的所有成员
  2. 案例演示
(10)集合运算-集合的并集运算A∪B
  1. 作用返回集合 A 和集合 B 中所有不重复的成员
  2. 案例演示
(11)集合运算-集合的交集运算A∩B
  1. 作用返回同时存在于集合 A 和集合 B 中的成员
  2. 注意
  3. 案例演示
(12)应用场景
  1. 微信抽奖小程序
  2. 微信朋友圈点赞查看同赞朋友
  3. QQ内推可能认识的人 

(7)Redis有序集合Zset(sorted set)

4.7.1多说一句

在set基础上,每个val值前加一个score分数值。之前set是k1 v1 v2 v3,现在zset是 k1 score1 v1 score2 v2

4.7.2常用

4.7.3案例

(1)ZADD key score member [score member ...]
  1. 作用:添加元素
  2. 案例演示
(2)ZRANGE key start stop [WITHSCORES]
  1. 作用按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素
  2. 案例演示
(3)zrevrange key start stop [WITHSCORES]
  1. 作用反转集合,按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素
  2. 案例演示
(4)ZRANGEBYSCORE key min max 【WITHSCORES】【LIMIT offset count】
  1. 作用
    1. 获取指定分数范围的元素,可以在min和max前面加个(,表示不包含
    2. limit作用是返回限制,limit开始下标步,一共多少步
  2. 案例演示
(5)ZSCORE key member
  1. 作用获取元素的分数
  2. 案例演示
(6)ZCARD key
  1. 作用获取集合中元素的数量
  2. 案例演示:                                                                                                                                 
(7)zrem key member [member ...]
  1. 作用某个score对应的value值,作用是删除元素
  2. 案例演示
(8)ZINCRBY key increment member
  1. 作用:增加某个元素的分数
  2. 案例演示:                                                                                                                                 
(9)ZCOUNT key min max
  1. 作用获得指定分数内的元素个数
  2. 案例演示:                                                                                                                                 
(10)ZMPOP numkeys key [key ...] MIN|MAX [COUNT count]
  1. 作用从键名列表中的第一个非空排序集中弹出一个或多个元素,他们是成员分数对
  2. 案例演示
(11)zrank key member [withscore]
  1. 作用:获得下标值
  2. 案例演示:                                                                                                                                 
(12)zrevrank key member [withscore]
  1. 作用:逆序获得下标值
  2. 案例演示:                                                                                                                                 
(13)应用场景 

根据商品销售对商品进行排序显示

(8)Redis位图(bitmap)

4.8.1一句话

由0和1状态表现的二进制位的bit数组

4.8.2看需求

  1. 用户是否登陆过Y、N,比如软件的每日签到功能
  2. 电影、广告是否被点击播放过
  3. 钉钉打卡上下班,签到统计

4.8.3是什么

  1. 图示:
  2. 说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型
  3. 位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)
  4. Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

4.8.4能干嘛

用于状态统计,Y、N类似AtomicBoolean

4.8.5基本命令

(1)setbit key offset value
  1. 作用
  2. 注意
    1. setbit键 偏移位 只能0或者1
    2. Bitmap的偏移量是从0开始算的
  3. 案例演示:                                                                                                                                 
(2)getbit key offset
(3)strlen key
  1. 作用统计字节数占用多少
  2. 案例演示
(4)bitcount key [start end [byte|bit]]
  1. 作用:全部键里面含有1的有多少个
  2. 案例演示
(5)bitop operation(AND|OR|XOR|NOT) destkey key [key ...]
  1. 作用
  2. 案例演示
(6)setbit和getbit案例说明
(7)应用场景
  1. 一年365天,全年天天登录占用多少字节
  2. 按照年
    1. 按年去存储一个用户的签到情况,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 44 MB 就足够了
    2. 假如是亿级的系统,每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高
    3. 此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销

(9)Redis基数统计(HyperLogLog)

4.9.1看需求

  1. 统计某个网站的UV、统计某个文章的UV
  2. 什么是UV?Unique Visitor,独立访客,一般理解为客户端IP,需要去重考虑
  3. 用户搜索网站关键词的数量
  4. 统计用户每天搜索不同词条个数

4.9.2是什么

  1. 去重复统计功能的基数估计算法-就是HyperLogLog
  2. 基数:
    1. 是一种数据集,去重复后的真实个数
    2. 案例case                                                                                                                           
  3. 基数统计:用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算
  4. 一句话:去重脱水后的真实数据

4.9.3基本命令

(10)Redis地理空间(GEO)

4.10.1简介

  1. 移动互联网时代LBS应用越来越多,外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的
  2. 地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置
  3. 例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,y0)附近r公里范围内部的车辆

4.10.2原理

4.10.3Redis在3.2版本后增加了地理位置的处理

4.10.4命令

(1)GEOADD key longitude latitude member [longitude latitude member]
  1. 作用添加经纬度坐标
  2. 案例演示
  3. 中文乱码如何处理:                                                                                                                  
(2)GEOPOS key member [member]
  1. 作用:返回经纬度
  2. 案例演示
(3)GEODIST key member1 member2 [M|KM|FT|MI]
  1. 作用
  2. 案例演示:                                                                                                                                 
(4)GEORADIUS key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]
  1. 作用:以半径为中心,查找附近的xxx
  2. 案例演示
(5)GEORADIUSBYMEMBER
  1. 作用
  2. 案例演示
(6)GEOHASH
  1. 作用:返回坐标的geohash表示
  2. 案例演示:                                                                                                                                 

(11)Redis流(Stream)

4.11.1是什么

  1. Redis消息队列的2种方案
    1. List实现消息队列,List实现方式其实就是点对点的模式
    2. Pub/Sub

  2. Redis5.0版本新增了一个更强大的数据结构---Stream
  3. 一句话:Stream流就是Redis版的MQ消息中间件+阻塞队列

4.11.2能干嘛

实现消息队列,它支持消息的持久化、支持自动生成全局唯一ID、支持ack确认消息的模式、支持消费组模式等,让消息队列更加的稳定和可靠

4.11.3底层结构和原理说明

4.11.4基本命令理论简介

  1. 队列相关指令:                                                                                                                          
  2. 消费组相关指令:                                                                                                                      
  3. 四个特殊符号

4.11.5基本命令代码实操

(1)队列相关指令
一、XADD
  1. 作用:添加消息到队列的末尾                                                                                                    
  2. 案例演示:                                                                                                                                 
二、XRANGE key start end [COUNT count]
  1. 作用:用于获取消息列表(可以指定范围),忽略删除的消息
  2. 案例演示:               
三、XREVRANGE key end start [COUNT count]
  1. 作用:与xrange的区别在于,获取消息列表元素的方向是相反的,end在前,start在后
  2. 案例演示
四、XDEL
  1. 作用:删除指定消息 ID 对应的消息
  2. 案例演示
五、XLEN
  1. 作用:包含的消息数量
  2. 案例演示
六、XTRIM
  1. 作用:用于对Stream的长度进行截取,如超长会进行截取
  2. 案例演示
七、XREAD
  1. 作用:用于获取消息(阻塞/非阻塞),只会返回大于指定ID的消息
    1. 非阻塞
    2. 阻塞:
  2. 案例演示(非阻塞)
  3. 案例演示(阻塞)
  4. 图示
(2)消费组相关指令
一、XGROUP CREATE key group id|$
  1. 作用:用于创建消费者组
  2. 案例演示:                                                                                                                                 
二、XREADGROUP GROUP group [COUNT count] [BLOCK milliseconds] STREAMS key id
  1. 作用">",表示从第一条尚未被消费的消息开始读取
  2. 注意不同消费组的消费者可以消费同一条消息
  3. 案例演示
  4. 消费者组的目的
三、重点问题

四、XPENDING
  1. 作用1查询每个消费组内所有消费组所有消费者【已读取,但尚未确认】的消息
  2. 作用2
  3. 案例演示
五、XACK 
  1. 作用向消息队列确认消息处理已完成
  2. 案例演示
(3)XINFO 用于打印Stream\Consumer\Group的详细信息

4.11.6使用建议

Stream还是不能100%等于Kafka、RabbitMQ来使用的,生产案例少,慎用

(12)Redis位域(bitfield)

4.12.1了解即可

4.12.2是什么

  1. 如图
  2. 中文文档

4.12.3能干嘛

  1. 用途
  2. 位域修改
  3. 溢出控制
  4. Ascii码表:https://ascii.org.cn

4.12.4一句话

将一个redis字符串看作是一个由二进制位组成的数组并能对变长位宽和任意没有字节对齐的指定整型位域进行寻址和修改

4.12.5命令基本语法

4.12.6案例

(1)BITFIELD key [GET type offset]
(2)BITFIELD key set type offstet value
(3)BITFIELD key [INCRBY type offset increment]
(4)溢出控制 OVERFLOW [WRAP|SAT|FAIL]

(13)总结

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

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

相关文章

bps是什么意思

本文来自DeepSeek "bps" 是 "bits per second" 的缩写,表示每秒传输的比特数,用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps:比特每秒 Kbps:千比特每秒(1 Kbps 1,000 bps&am…

撕碎QT面具(1):Tab Widget转到某个Tab页

笔者未系统学过C语法,仅有Java基础,具体写法仿照于大模型以及其它博客。自我感觉,如果会一门对象语言,没必要先刻意学C,因为自己具有对象语言的基础,等需要用什么再学也不迟。毕竟不是专门学C去搞算法。 1…

项目版本号生成

需求 项目想要生成一个更新版本号,格式为v2.0.20250101。 其中v2.0为版本号,更新时进行配置;20250101为更新日期,版本更新时自动生成。 实现思路 创建一个配置文件version.properties,在其中配置版本号&#xff1b…

善筹网设计与实现(代码+数据库+LW)

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自…

使用 MindSpore 训练 DeepSeek-V3 模型

MindeSpore 已经适配 DeepSeek-V3 的训练推理啦,下面是使用 MindSpore 对DeepSeek-V3做训练的过程。 一、环境确认 这里呢我使用的是 8张 910B2 的显卡: 其中 MindSpore Transformers 的环境依赖如下: PythonMindSporeCANN固件与驱动3.1…

DeepSeek R1完全本地部署实战教程01-课程大纲

一、课程体系 二、学习目标: 了解基础知识掌握安装部署学会搭建可视化界面能力水平进阶三、课程特点: 案例驱动工程实战完整体系四、课程大纲 1.DeepSeek R1 项目运行演示 【视频课程】 (1)可视化交互 (2)联网搜索 (3)本地知识库 2.环境安装部署 【视频课程】 (1)软…

redis cluster测试

集群节点信息这时候停掉一个master 172.30.60.31 从集群信息集中我们可以看到172.30.60.31的slave是172.30.60.41,查看41的日志,发现他成为了新的master 这时候我们在将172.30.60.41也杀死,会发现集群异常了 尝试把172.30.60.31启动&#xff…

数据恢复-01-机械硬盘的物理与逻辑结构

磁盘存储原理 磁盘存储数据的原理: 磁盘存储数据的原理是利用磁性材料在磁场作用下的磁化性质,通过在磁盘表面上划分成许多小区域,根据不同的磁化方向来表示0和1的二进制数据,通过读写磁头在磁盘上的移动,可以实现数据…

网络工程师 (35)以太网通道

一、概念与原理 以太网通道,也称为以太端口捆绑、端口聚集或以太链路聚集,是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作,共同承担数据传输任务,从而提高了网络的传输能力和可靠性。 二…

USB2.03.0摄像头区分UVC相机在linux中的常用命令

这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准,但根据行业常见规范分析如下: USB接口颜色与版本对照表: 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…

【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃

最近deepseek R1模型大火,正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来,大型语言模型(LLM)在推理能力上取得了显著进展,但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…

从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用

文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合,使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3(knife4j) 1.6.1 整…

学习数据结构(9)栈和队列上

1.栈的概念 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(先进先出)的原则 栈的插入操作叫做进栈/压栈/入栈&#xff…

【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器

1. 简介 1.1 HTTP HTTP(Hyper Text Transfer Protocol),全称超文本传输协议,用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档…

滚动弹幕案例

滚动弹幕案例 一、需求 1.页面上漂浮字体大小不一、颜色不一&#xff0c;从左向右滚动的弹幕&#xff1b; 2.底部中间有一个发送功能&#xff0c;可以发送新的弹幕&#xff1b; 3.底部的发送部分可以向下收起和弹出。 二、html <div class"container"><…

腿足机器人之五- 粒子滤波

腿足机器人之五粒子滤波 直方图滤波粒子滤波 上一篇博客使用的是高斯分布结合贝叶斯准则来估计机器人状态&#xff0c;本篇是基于直方图和粒子滤波器这两种无参滤波器估计机器人状态。 直方图方法将状态空间分解成有限多个区域&#xff0c;并用直方图表示后验概率。直方图为每个…

AI 编程工具—Cursor 进阶篇 数据分析

AI 编程工具—Cursor 进阶篇 数据分析 上一节课我们使用Cursor 生成了北京房产的销售数据,这一节我们使用Cursor对这些数据进行分析,也是我们尝试使用Cursor 去帮我们做数据分析,从而进一步发挥Cursor的能力,来帮助我们完成更多的事情 案例一 房产销售数据分析 @北京202…

搭建Deepseek推理服务

概述&#xff1a; 本文介绍用Open webui ollama搭建一套Deepseek推理服务&#xff0c;可以在web页面上直接进行对话。作为体验搭建的是Deepseek 7b参数版本 首先选择一个云厂商创建一台ubuntu系统的虚拟机&#xff0c;带公网IP&#xff0c;通过shell登录虚拟机完成以下操作&…

STM32的HAL库开发---ADC

一、ADC简介 1、ADC&#xff0c;全称&#xff1a;Analog-to-Digital Converter&#xff0c;指模拟/数字转换器 把一些传感器的物理量转换成电压&#xff0c;使用ADC采集电压&#xff0c;然后转换成数字量&#xff0c;经过单片机处理&#xff0c;进行控制和显示。 2、常见的AD…

6.编写正排索引切分字符串|倒排索引原理|引入jieba到项目(C++)

编写正排索引 继续编写incde.hpp #pragma once#include <iostream> #include <string> #include <vector> #include <fstream> #include <unordered_map> #include "util.hpp"namespace ns_index{struct DocInfo{std::string title;…