Redis 03章——10大数据类型概述
一、which10
(1)一图
(2)提前声明
这里说的数据类型是value的数据类型,key的类型都是字符串
官网:Understand Redis data types | Docs
(3)分别是
1.3.1redis字符串(String)
- string是redis最基本的类型,一个key对应一个value
- string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象
- 一个redis中字符串value最多可以是512M
1.3.2redis列表(List)
- Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
- 它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
1.3.3redis哈希表(Hash)
- Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象
- Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)
1.3.4redis集合(Set)
- Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable
- Redis 中Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
- 集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)
1.3.5redis有序集合(ZSet)
- Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员
- 不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
- zset的成员是唯一的,但分数(score)却可以重复
- zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1
1.3.6redis地理空间(GEO)
- 添加地理位置的坐标
- 获取地理位置的坐标
- 计算两个位置之间的距离
- 根据用户给定的经纬度坐标来获取指定范围内的地理位置集合
1.3.7redis基数统计(HyperLogLog)
- HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的
- 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比
- 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素
1.3.8redis位图(bitmap)
- 图示:
- 由0和1状态表现的二进制位的bit数组
1.3.9redis位域(bitfield)
- 通过bitfield命令可以一次性操作多个比特位域(指的是连续的多个比特位),它会执行一系列操作并返回一个响应数组,这个数组中的元素对应参数列表中的相应操作的执行结果
- 说白了就是通过bitfield命令我们可以一次性对多个比特位域进行操作
1.3.10redis流(Stream)
- Redis Stream 是 Redis 5.0 版本新增加的数据结构
- Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃
- 简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息
- 而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失
二、去哪里获得redis常见数据类型操作命令
- 官网英文:https://redis.io/commands/
- 中文:http://www.redis.cn/commands.html
三、Redis键(key)
(1)常用
(2)案例
3.2.1keys *
- 作用:查看当前库所有的key
- 案例演示:
3.2.2exists key
- 作用:判断某个key是否存在(返回1代表true,返回0代表false)
- 案例演示:
3.2.3type key
- 作用:查看键(key)对应的值的数据类型
- 案例演示:
3.2.4del key
- 作用:删除指定的key数据
- 案例演示:
3.2.5unlink key
- 作用:非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在后续异步中操作
- 案例演示:
3.2.6ttl key
- 作用:查看还有多少秒过期,-1表示永不过期(默认),-2表示已过期
- 案例演示:
3.2.7expire key 秒钟
- 作用:为给定的key设置过期时间
- 案例演示:如上
3.2.8move key dbindex
- 作用:将当前数据库的key移动到给定的数据库DB当中
- 案例演示:
3.2.9select dbindex
- 作用:切换数据库【0-15】,默认在0号数据库
- 案例演示:
3.2.10dbsize
- 作用:查看当前数据库key的数量
- 案例演示:
3.2.11flushdb
- 作用:清空当前库
- 案例演示:
3.2.12flushall
- 作用:通杀全部库
- 案例演示:
四、数据类型命令及落地应用
(1)官网命令大全网址
- 英文:Commands | Docs
- 中文:http://www.redis.cn/commands.html
(2)备注
- 命令不区分大小写,而key是区分大小写的
- 永远的帮助命令,help @类型
- help @string
- help @list
- help @hash
- help @hyperloglog
- ......
(3)Redis字符串(String)
4.3.1常用
4.3.2单值单value
4.3.3案例
(1)最常用
- set key value
- get key,如上(一旦过期,get key的结果就是nil)
- 如何获得设置指定的 Key 过期的 Unix 时间,单位为秒
System.out.println(Long.toString(System.currentTimeMillis()/1000L));
- keepttl
- keepttl的作用:在对键执行特定操作时保留该键原有的过期时间设置
(2)同时设置/获取多个键值
- MSET key value [key value...]
- MGET key [key ...]
- mset/mget/msetnx
- 注意:msetnx要求所有给定的键在 Redis 中都不存在,才会执行设置操作。只要有一个键已经存在,(1)那么整个操作就会失败,(2)并且不会对任何键进行设置
(3)获取指定区间范围内的值
- getrange/setrange
- 案例演示:
(4)数值增减
- 一定要是数据才能进行加减
- 递增数字:INCR key
- 增加指定的整数:INCRBY key increment
- 递减数值:DECR key
- 减少指定的整数:DECRBY key decrement
(5)获取字符串长度和内容追加
- 获取字符串长度:strlen key
- 字符串内容追加:append key value
- 总结:
- NX:若键已存在则不做修改并返回操作失败(仅在键不存在时执行)
- XX:若键不存在则不创建新键并返回操作失败,可用于更新已存在键的值(仅在键已经存在时执行)
(6)分布式锁
- setnx key value
- setex(set with expire)键秒值/setnx(set if not exist)
(7)getset(先get再set)
- getset:将给定key的值设为value,并返回key的旧值(old value)
- 简单一句话:先get然后立即set
(8)应用场景
- 比如抖音无线点赞某个视频或者商品,点一下加一次
- 是否喜欢的文章
(4)Redis列表(List)
4.4.1常用
4.4.2单key多value
4.4.3简单说明
- 一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景
- left、right都可以插入添加
- 如果键不存在,创建新的链表
- 如果键已存在,新增内容
- 如果值全移除,对应的键也就消失了
4.4.4案例
(1)lpush/rpush/lrange 注:没有rrange
- 案例演示:
- lpush:可以这么理解,将1,2,3,4,5逐个添加到链表左端
- rpush:可以这么理解,将11,22,33,44,55逐个添加到链表右端
(2)lpop/rpop
- lpop:从左边开始弹
- rpop:从右边开始弹
(3)lindex,按照索引下标获得元素(从上到下)
(4)llen,获取List列表中元素的个数
(5)lrem key 数字N 给定值v1
- 解释:删除N个值等于v1的元素
- 案例演示:
(6)ltrim key 开始index 结束index
- 作用:截取指定范围的值后再赋值给key
- 案例演示:
(7)rpoplpush 源列表 目的列表
- 作用:移除列表的最后一个元素,并将该元素添加到另一个列表并返回
- 案例演示:
(8)lset key index value
- 作用:让指定数组集合的小标位置值替换成新值
- 案例演示:
(9)linsert key before/after 已有值 插入的新值
- 作用:
- 案例演示:
(10)应用场景
微信公众号订阅的消息
(5)Redis哈希(Hash)
4.5.1常用 
4.5.2KV模式不变,但V是一个键值对
4.5.3案例
(1)hset/hget/hmset/hmget/hgetall/hdel

(2)hlen
- 作用:返回key中字段的数量
- 案例演示:
(3)hexists
- 作用:检查key的某个字段是否存在
- 案例演示:
(4)hkeys/hvals
- 作用
- HKEYS:获取哈希键所有字段
- HVALS:获取哈希键所有值
- 案例演示:
(5)hincrby/hincrbyfloat

(6)hsetnx
- 作用:仅当指定字段不存在时设值
- 案例演示:
(7)应用场景
JD购物车早期,目前不再采用,当前中小厂可用
(6)Redis集合(Set)
4.6.1常用 
4.6.2单值多value,且无重复
4.6.3案例
(1)SADD key member [member ...]
- 作用:添加一个或多个成员,返回实际添加的成员数量
- 案例演示:
(2)SMEMBERS key
- 作用:遍历集合中的所有元素
- 案例演示:
(3)SISMEMBER key member
- 作用:判断元素是否在集合中
- 案例演示:
(4)SREM key member [member ...]
- 作用:移除一个或多个成员,返回实际移除的成员数量
- 案例演示:
(5)scard
- 作用:获取集合里面元素的个数
- 案例演示:
(6)SRANDMEMBER key [数字]
- 作用:从集合中随机返回指定数量的成员,不指定数量则返回一个
- 案例演示:
(7)SPOP key [数字]
- 作用:从集合中随机弹出一个元素,出一个删一个
- 案例演示:
(8)smove key1 key2 在key1里已存在的某个值
- 作用:将key1里已存在的某个值移动到key2
- 案例演示:
(9)集合运算-集合的差集运算A-B
- 作用:返回存在于集合 A 但不存在于集合 B 的所有成员
- 案例演示:
(10)集合运算-集合的并集运算A∪B
- 作用:返回集合 A 和集合 B 中所有不重复的成员
- 案例演示:
(11)集合运算-集合的交集运算A∩B
- 作用:返回同时存在于集合 A 和集合 B 中的成员
- 注意:
- 案例演示:
(12)应用场景
- 微信抽奖小程序
- 微信朋友圈点赞查看同赞朋友
- 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 ...]
- 作用:添加元素
- 案例演示:
(2)ZRANGE key start stop [WITHSCORES]
- 作用:按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素
- 案例演示:
(3)zrevrange key start stop [WITHSCORES]
- 作用:反转集合,按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素
- 案例演示:
(4)ZRANGEBYSCORE key min max 【WITHSCORES】【LIMIT offset count】
- 作用:
- 获取指定分数范围的元素,可以在min和max前面加个(,表示不包含
- limit作用是返回限制,limit开始下标步,一共多少步
- 案例演示:
(5)ZSCORE key member
- 作用:获取元素的分数
- 案例演示:
(6)ZCARD key
- 作用:获取集合中元素的数量
- 案例演示:
(7)zrem key member [member ...]
- 作用:某个score对应的value值,作用是删除元素
- 案例演示:
(8)ZINCRBY key increment member
- 作用:增加某个元素的分数
- 案例演示:
(9)ZCOUNT key min max
- 作用:获得指定分数内的元素个数
- 案例演示:
(10)ZMPOP numkeys key [key ...] MIN|MAX [COUNT count]
- 作用:从键名列表中的第一个非空排序集中弹出一个或多个元素,他们是成员分数对
- 案例演示:
(11)zrank key member [withscore]
- 作用:获得下标值
- 案例演示:
(12)zrevrank key member [withscore]
- 作用:逆序获得下标值
- 案例演示:
(13)应用场景
根据商品销售对商品进行排序显示
(8)Redis位图(bitmap)
4.8.1一句话
由0和1状态表现的二进制位的bit数组
4.8.2看需求
- 用户是否登陆过Y、N,比如软件的每日签到功能
- 电影、广告是否被点击播放过
- 钉钉打卡上下班,签到统计
4.8.3是什么
- 图示:
- 说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型
- 位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)
- Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)
4.8.4能干嘛
用于状态统计,Y、N类似AtomicBoolean
4.8.5基本命令
(1)setbit key offset value
- 作用:
- 注意:
- setbit键 偏移位 只能0或者1
- Bitmap的偏移量是从0开始算的
- 案例演示:
(2)getbit key offset
(3)strlen key
- 作用:统计字节数占用多少
- 案例演示:
(4)bitcount key [start end [byte|bit]]
- 作用:全部键里面含有1的有多少个
- 案例演示:
(5)bitop operation(AND|OR|XOR|NOT) destkey key [key ...]
- 作用:
- 案例演示:
(6)setbit和getbit案例说明
(7)应用场景
- 一年365天,全年天天登录占用多少字节
- 按照年
- 按年去存储一个用户的签到情况,365 天只需要 365 / 8 ≈ 46 Byte,1000W 用户量一年也只需要 44 MB 就足够了
- 假如是亿级的系统,每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024),10天的Bitmap的内存开销约为120MB,内存压力不算太高
- 此外,在实际使用时,最好对Bitmap设置过期时间,让Redis自动删除不再需要的签到记录以节省内存开销
(9)Redis基数统计(HyperLogLog)
4.9.1看需求
- 统计某个网站的UV、统计某个文章的UV
- 什么是UV?Unique Visitor,独立访客,一般理解为客户端IP,需要去重考虑
- 用户搜索网站关键词的数量
- 统计用户每天搜索不同词条个数
4.9.2是什么
- 去重复统计功能的基数估计算法-就是HyperLogLog
- 基数:
- 是一种数据集,去重复后的真实个数
- 案例case
- 基数统计:用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算
- 一句话:去重脱水后的真实数据
4.9.3基本命令

(10)Redis地理空间(GEO)
4.10.1简介
- 移动互联网时代LBS应用越来越多,外卖软件中附近的美食店铺、高德地图附近的核酸检查点等等,那这种附近各种形形色色的XXX地址位置选择是如何实现的
- 地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名取得他在地球的位置
- 例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查找距离我们(坐标x0,y0)附近r公里范围内部的车辆
4.10.2原理
4.10.3Redis在3.2版本后增加了地理位置的处理
4.10.4命令
(1)GEOADD key longitude latitude member [longitude latitude member]
- 作用:添加经纬度坐标
- 案例演示:
- 中文乱码如何处理:
(2)GEOPOS key member [member]
- 作用:返回经纬度
- 案例演示:
(3)GEODIST key member1 member2 [M|KM|FT|MI]
- 作用:
- 案例演示:
(4)GEORADIUS key longitude latitude radius M|KM|FT|MI [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]
- 作用:以半径为中心,查找附近的xxx
- 案例演示:
(5)GEORADIUSBYMEMBER
- 作用:
- 案例演示:
(6)GEOHASH
- 作用:返回坐标的geohash表示
- 案例演示:
(11)Redis流(Stream)
4.11.1是什么
- Redis消息队列的2种方案
- List实现消息队列,List实现方式其实就是点对点的模式
-
Pub/Sub
- List实现消息队列,List实现方式其实就是点对点的模式
- Redis5.0版本新增了一个更强大的数据结构---Stream
- 一句话:Stream流就是Redis版的MQ消息中间件+阻塞队列
4.11.2能干嘛
实现消息队列,它支持消息的持久化、支持自动生成全局唯一ID、支持ack确认消息的模式、支持消费组模式等,让消息队列更加的稳定和可靠
4.11.3底层结构和原理说明

4.11.4基本命令理论简介
- 队列相关指令:
- 消费组相关指令:
- 四个特殊符号:
4.11.5基本命令代码实操
(1)队列相关指令
一、XADD
- 作用:添加消息到队列的末尾
- 案例演示:
二、XRANGE key start end [COUNT count]
- 作用:用于获取消息列表(可以指定范围),忽略删除的消息
- 案例演示:
三、XREVRANGE key end start [COUNT count]
- 作用:与xrange的区别在于,获取消息列表元素的方向是相反的,end在前,start在后
- 案例演示:
四、XDEL
- 作用:删除指定消息 ID 对应的消息
- 案例演示:
五、XLEN
- 作用:包含的消息数量
- 案例演示:
六、XTRIM
- 作用:用于对Stream的长度进行截取,如超长会进行截取
- 案例演示:
七、XREAD
- 作用:用于获取消息(阻塞/非阻塞),只会返回大于指定ID的消息
- 非阻塞:
- 阻塞:
- 非阻塞:
- 案例演示(非阻塞):
- 案例演示(阻塞):
- 图示:
(2)消费组相关指令
一、XGROUP CREATE key group id|$
- 作用:用于创建消费者组
- 案例演示:
二、XREADGROUP GROUP group [COUNT count] [BLOCK milliseconds] STREAMS key id
- 作用:">",表示从第一条尚未被消费的消息开始读取
- 注意:不同消费组的消费者可以消费同一条消息
- 案例演示:
- 消费者组的目的?
三、重点问题
四、XPENDING
- 作用1:查询每个消费组内所有消费组所有消费者【已读取,但尚未确认】的消息
- 作用2:
- 案例演示:
五、XACK
- 作用:向消息队列确认消息处理已完成
- 案例演示:
(3)XINFO 用于打印Stream\Consumer\Group的详细信息


4.11.6使用建议
Stream还是不能100%等于Kafka、RabbitMQ来使用的,生产案例少,慎用
(12)Redis位域(bitfield)
4.12.1了解即可
4.12.2是什么
- 如图:
- 中文文档:
4.12.3能干嘛
- 用途:
- 位域修改
- 溢出控制
- 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)总结
相关文章:
Redis 03章——10大数据类型概述
一、which10 (1)一图 (2)提前声明 这里说的数据类型是value的数据类型,key的类型都是字符串 官网:Understand Redis data types | Docs (3)分别是 1.3.1redis字符串࿰…...
芯麦GC6208:革新摄像机与医疗设备的智能音频解决方案
引言 在现代科技的推动下,音频设备和图像处理在各个领域的应用日益广泛。芯麦科技的GC6208是一款创新的音频处理芯片,具有高性能和多功能性,适用于摄像机、医疗设备等多种产品。本文将探讨GC6208在这些领域中的应用及其带来的优势。 1. 在摄…...
代码随想录算法营Day39 | 416. 分割等和子集
416. 分割等和子集 这题换句话说就是是否能找出一个子集,使这个子集的总和等于数组总和的一半,数组里每个元素只能选一次。我们确立一个dp数组,长度为数组总和的half1,内容为False。索引表示和,索引里的内容表示该数是…...
【前端】自己从头实现一个gpt聊天页面
预览 最小化功能点 主界面:侧边栏会话历史、聊天窗口发送和断开。侧边栏:展示会话列表,每个会话包含多条聊天记录, 通过localstorage本地储存和恢复,会话需要重命名和删除。聊天框:区分一下发送者和回答者…...
浅说树形dp
文章目录 前言树形dp的转移方式树形dp的使用的场景小结 初步感知——简单的树形dp例题1例题2 深入分析——树形dp的经典模型最大独立集最小点覆盖最小支配集树上直径 前言 因为树的形式非常适合递归,他所带来的访问顺序也是非常符合拓扑排序的,故而在处…...
Matlab 多项式曲线拟合(三维)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于高维空间曲线的拟合,参数化是一种非常好的方式,可以让我们很容易得到我们想要的目标曲线。 假设给定一组数据点 ( u i , x i ) 、 ( u i ...
大语言模型推理中的显存优化 有哪些
大语言模型推理中的显存优化 有哪些 目录 大语言模型推理中的显存优化 有哪些显存优化背景Offloading/Checkpoint原理举例显存优化背景 在大语言模型推理时,显存是显著瓶颈。以开源的BLOOM 176B模型为例,在8张A100计算卡上,通常对话设置下仅能进行批量为10左右的推理。为缓…...
机器学习:k均值
所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com),欢迎查看。 在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&…...
【图像加密解密】空间混沌序列的图像加密解密算法复现(含相关性检验)【Matlab完整源码 2期】
1、说明 本文给出详细完整代码、完整的实验报告和PPT。 环境:MATLAB2019a 复现文献:[1]孙福艳,吕宗旺.Digital image encryption with chaotic map lattices[J].Chinese Physics B,2011,20(04):136-142. 2、部分报告内容 3 部分源码与运行步骤 3.1 部…...
Unity学习part3
此为b站视频【【Unity教程】零基础带你从小白到超神】 https://www.bilibili.com/video/BV1gQ4y1e7SS/?p55&share_sourcecopy_web&vd_source6e7a3cbb802eb986578ad26fae1eeaab的笔记 1、反向动力学 打开ik处理 public class PlayerMoveController : MonoBehaviour {…...
【2025最新版】软件测试面试题总结(150道题含答案解析)
接口测试面试题 1:你平常做接口测试的过程中发现过哪些 bug? 2:平常你是怎么测试接口的? 3:平常用什么工具测接口? 4: webService 接口是如何测试的? 5:没有接口文档,如何做接口测试? 6&…...
双轴伺服电机驱动控制器AGV、AMR专用双伺服电机驱动控制器解决方案
工业机器人数控机床XY机械手双轴机器人堆垛机专用双轴伺服电机驱动控制器48V 14ARMS带有STO功能,隔离高压CAN/RS485/USB通讯支持编码器和霍尔输入 双伺服电机驱动控制器TMCM2611功能介绍 集成2个伺服电机的控制和驱动于一体供电电压48V,驱动电流14A RM…...
知识图谱数据库 Neo4j in Docker笔记
下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…...
Kubernetes实战教程:基于Vue前端与Java后端的应用部署
在云原生时代,Kubernetes 已成为管理容器化应用的核心平台。本文不仅详细介绍了 Kubernetes 的背景、架构和核心特性,还将通过一个具体的案例——基于 Vue 前端和 Java 后端的应用部署,带你一步步了解如何在 Kubernetes 集群中构建和运行一个…...
完全数和质数算法详解
完全数是指一个正整数,它等于其所有真约数(即除了自身以外的所有正因数)之和。例如,6 是一个完全数,因为它的真约数是 1、2 和 3,且 1 2 3 6。 1 计算约数和 1.1 遍历 遍历其所有可能的约数并计算它们…...
PHP本地商家卡券管理系统
本地商家卡券管理系统 —— 引领智慧消费新时代 本地商家卡券管理系统,是基于ThinkPHPUni-appuView尖端技术匠心打造的一款微信小程序,它彻底颠覆了传统优惠方式,开创了多商家联合发行优惠卡、折扣券的全新模式,发卡类型灵活多变…...
使用动态规划解决 0/1 背包问题
1. 背景 背包问题是计算机科学和优化领域中的经典问题之一,它被广泛应用于资源分配、任务调度等问题。在最简单的形式下,0/1背包问题描述的是: 你有一个背包,能够容纳一定的重量,而你有若干个物品,每个物品都有一个重量和价值,问你应该如何选择物品,使得在不超过背包…...
探索Java中的集合类_特性与使用场景
1. 引言 1.1 Java集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作一组对象的类和接口的统称。它提供了多种数据结构来满足不同的需求,如列表、集合、映射等。JCF的核心接口包括Collection、List、Set、Queue和Map,以及它们的各种实现…...
动态DNS神器nip.io使用指南:快速实现域名与IP的动态映射--告别配置本地hosts
动态DNS神器nip.io使用指南:快速实现域名与IP的动态映射--告别配置本地hosts 一、项目简介二、快速入门三、进阶配置四、典型应用场景 本文基于开源项目 v1.2.1版本撰写,适用于开发测试、CI/CD等场景 一、项目简介 nip.io 是由Exentrique Solutions开发…...
Obsidian及Zotero常用的插件
Obsidian插件 Minimal Theme Settings(Life,zotero)【必需】 界面样式设置所需插件 Style Settings(Life,zotero)【必需】界面样式设置所需插件 Recent Files(Life,zotero…...
自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)
自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口) 一、final关键字1、认识final关键字2、final修饰变量的注意3、常量 二、单例类(设计模式)1、设计模式的概念2、单例设计模式3、单例类有很多形式4、懒汉式单例类5、小…...
数据结构与算法之排序算法-归并排序
排序算法是数据结构与算法中最基本的算法之一,其作用就是将一些可以比较大小的数据进行有规律的排序,而想要实现这种排序就拥有很多种方法~ 那么我将通过几篇文章,将排序算法中各种算法细化的,详尽的为大家呈现出来: …...
Springboot整合ES
添加依赖 在 pom.xml 中添加以下依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>配置 Elasticsearch 在 application.proper…...
文件夹上传到github分支最后github上面还是没有文件和文件夹
环境: github 问题描述: 文件夹上传到github分支最后github上面还是没有文件和文件夹, 和这样一样 解决方案: 从 git ls-tree -r HEAD 的输出中可以看到,metahuman-stream 文件夹显示为如下内容: 160000 commi…...
生成式聊天机器人 -- 基于Transformer实现的SeqToSeq模型 -- 上
生成式聊天机器人 -- 基于Transformer实现的SeqToSeq模型 -- 上 引言数据预处理下载并处理数据数据加载 Transformer模型嵌入层&位置编码层多头注意力机制EncoderLayerDecoderLayerPoint-wise Feed Forward NetworkTransformer 引言 在此之前,我们已经了解了如…...
【Java 面试 八股文】Spring Cloud 篇
Spring Cloud 篇 1. Spring Cloud 5大组件有哪些?2. 服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?3. 我看你之前也用过nacos,你能说下nacos与eureka的区别?4. 你们项目负载均衡如何实现的?…...
CAS单点登录(第7版)10.多因素身份验证
如有疑问,请看视频:CAS单点登录(第7版) 多因素身份验证 概述 多因素身份验证 (MFA) 多因素身份验证(Multifactor Authentication MFA)是一种安全机制,要求用户提供两种…...
【16】思科AireOS:创建使用 LWA 认证的 WLAN
1. 概述 LWA(Local Web Authentication)是一种基于 Web 认证的方式,允许无线客户端在连接 WLAN 后,使用 Web 认证页面进行身份验证。该方法适用于访客网络或需要身份认证的场景。 本指南详细介绍如何在 Cisco AireOS 无线控制器(WLC)上配置 LWA 认证的 WLAN,并确保认证…...
webassembly009 transformers.js 网页端侧推理 whisper-web
whisper-web https://github.com/xenova/whisper-web 页面结构 AudioManager: 该组件负责音频的录制和处理。它会使用 Web API 来访问麦克风,录制音频数据,并将其传递给 transcriber 进行转录。它通过 transcriber 管理转录状态,音频数据将…...
vscode使用常见问题处理合集
目录 一、使用vite创建的vue3项目,script和style首行代码不会缩进,且格式化属性字段等会换行问题 首行缩进情况如下: 属性、参数格式化换行情况如下: 解决方式: 一、使用vite创建的vue3项目,script和style首行代码不…...
EasyExcel提取excel文档
目录 一、前言二、提取excel文档2.1、所有sheet----获取得到headerList和总行数2.2、所有sheet----获取合并单元格信息2.3、读取某个sheet的每行数据一、前言 EasyExcel 是阿里巴巴开源的一个高性能 Excel 读写库,相比于 Apache POI 和 JXL,它有明显的优势,特别是在处理大数…...
DeepSeek v3 技术报告阅读笔记
注 本文参考 DeepSeek-v3 / v2 / v1 Technical Report 及相关参考模型论文本文不包括基础的知识点讲解,为笔记/大纲性质而非教程,建议阅读技术报告原文交流可发送至邮箱 henryhua0721foxmail.com 架构核心 核心: MLA 高效推理DeepSeekMOE 更…...
Python爬虫-猫眼电影的影院数据
前言 本文是该专栏的第46篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以猫眼电影为例子,获取猫眼的影院相关数据。 废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) …...
每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块
本文重点 前面我们学习了VGG,从现在开始我们将学习谷歌公司推出的GoogLeNet。当年ImageNet竞赛的第二名是VGG,而第一名就是GoogLeNet,它的模型设计拥有很多的技巧,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构 GoogLeNet的网络结构 如图所示就是Go…...
export default与export区别
1.定义: export default:用于导出模块中的默认成员。一个模块中只能有一个export default,通常用于导出模块的主要功能或对象。导入时可以使用任意名称,因为它没有具体的名称 export:用于导出模块中的多个成…...
当Ollama遇上划词翻译:我的Windows本地AI服务搭建日记
🚀 实现Windows本地大模型翻译服务 - 基于OllamaFlask的划词翻译实践 🛠️ 步骤概要1️⃣ python 环境准备2️⃣ Ollama 安装3️⃣ 一个 Flask 服务4️⃣ Windows 服务化封装5️⃣ 测试本地接口6️⃣ 配置划词翻译自定义翻译源7️⃣ 效果展示8️⃣ debug…...
5G与物联网的协同发展:打造智能城市的未来
引言 随着科技的不断进步,智能城市的概念已经不再是科幻小说中的幻想,它正在逐步走进我们的生活。而这背后的两大驱动力无疑是 5G和 物联网(IoT)。5G网络以其高速率、低延迟、大容量的优势,与物联网的强大连接能力相结…...
并发编程---synchronized关键字,以及synchronized同步锁
文章目录 Synchronized 的使用synchronized 在普通方法上的使用(对象锁)synchronized 在静态方法上的使用(类锁)synchronized 在代码块上的使用 JVM 中锁的优化锁的类型自旋锁与自适应自旋锁自旋锁(Spin Lockÿ…...
Vue学习笔记5(Vue3)
Vue3学习笔记 一、create-vue搭建vue3项目 create-vue是vue官方新的脚手架工具,底层切换到了vite 步骤: 查看环境条件 node -v版本需要在16.0及以上创建一个vue应用 npm init vuelatest 这一指令会安装并执行create-vue 二、项目目录和关键文件 in…...
VoIP之音视频会议中的混音技术
在VoIP音视频会议中,需要将多路参会方音频流混合成一路音频流再发送给各参会方,以达到参会方可以听到每个与会人声音的目的,这种技术叫混音。 一、混音基础原理 在实际生活中,我们所处的生活和工作环境就是一个自然的混音场&…...
Baklib一站式云平台:全场景赋能企业知识资产激活
内容概要 在数字化浪潮推动下,企业知识资产的高效管理与价值释放成为核心议题。Baklib作为一站式云平台,以全场景赋能为核心定位,通过构建知识中台架构,为企业提供从资源整合到应用落地的闭环解决方案。该平台不仅支持文本、图像…...
基于nuScenes数据集和DeepSeek模型的端到端自动驾驶解决方案
结合DeepSeek模型进行知识蒸馏,以提高模型性能。这需要将nuScenes中的多模态数据(如摄像头图像、雷达点云、车辆状态等)整合到模型中,同时使用DeepSeek的生成能力进行蒸馏。 接下来,我需要考虑用户可能的背景。用户可能…...
《AI大模型开发笔记》deepseek提示词技巧
为什么你的 AI 助手总是答非所问? 「写篇产品分析」 → 收到一堆不知所云的文字 「做个竞品对比」 → 得到几页没有重点的废话 揭秘:不是 AI 不够聪明,而是你的指令太“高冷”! 一、新手进阶: 5 大法则,让…...
学习笔记-人脸识别相关编程基础
通过编程实现人脸识别功能,需要掌握一定的技术基础,包括编程语言、图像处理、机器学习以及相关的库和框架: 1. 编程语言 Python:Python 是实现人脸识别最常用的语言之一,因为它有大量的库和框架支持,如 Op…...
Java发展史
JavaEE的由来 语言的诞生 Java的前身是Oak语言,其目的是搞嵌入式开发开发智能面包机 叮~~~🍞🍞🍞 产品以失败告终 巅峰 网景公司需要网景浏览器打开网页,Oak->Java,进行前端开发(相关技…...
SAP-ABAP:SAP中REPORT程序和online程序的区别对比
在SAP中,REPORT程序和Online程序(通常指Dialog程序)是两种常见的ABAP程序类型,它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比: 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…...
【第2章:神经网络基础与实现——2.1 前馈神经网络的结构与工作原理】
老铁们好!今天我们要来一场长达两万字的超详细技术探险,我会像拆解乐高积木一样把前馈神经网络(Feedforward Neural Network)的每个零件摆在台面上,用最接地气的方式让你彻底搞懂这个深度学习基石的工作原理。准备好了吗?我们开始吧! 第一章:神经网络的 “乐高积木” 1…...
Pythong 解决Pycharm 运行太慢
Pythong 解决Pycharm 运行太慢 官方给Pycharm自身占用的最大内存设低估了限制,我的Pycharm刚开始默认是256mb。 首先找到自己的Pycharm安装目录 根据合适自己的改 保存,重启Pycharm...
P6792 [SNOI2020] 区间和 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 个操作分两种: chmax ( l , r , v ) \operatorname{chmax}(l,r,v) chmax(l,r,v):对每个 i ∈ [ l , r ] i \in [l,r] i∈[l,…...
基于ArduPilot开发无人机飞控自动驾驶仪
目录 1、项目参数 2、硬件设计解析 2.1、主控与协处理器架构 2.2、高精度传感器集成 2.3、数据存储与恢复 2.4、电源管理与保护 2.5、通信与接口 本项目基于开源飞行控制固件 ArduPilot 开发,设计并实现了一款高度集成的 自动驾驶仪,可广泛应用于…...