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

一、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)总结

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

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

相关文章

基于矩阵分解-协同过滤推荐算法的视频播放平台【源码+部署+论文】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

FPGA的星辰大海

编者按 时下风头正盛的DeepSeek,正值喜好宏大叙事的米国大统领二次上岗就业,OpenAI、软银、甲骨文等宣布投资高达5000亿美元“星际之门”之际,对比尤为强烈。 某种程度上,,是低成本创新理念的直接落地。 包括来自开源社区的诸多赞誉是,并非体现技术有多“超越”,而是…

「AI学习笔记」机器学习与深度学习的区别:从技术到产品的深度解析(四)...

随着人工智能(AI)的快速发展,机器学习(ML)和深度学习(DL)已经成为我们日常生活中不可忽视的技术力量。无论是推荐系统、语音助手,还是自动驾驶汽车,它们背后都离不开ML和…

MATLAB图像处理:图像分割方法

图像分割将图像划分为具有特定意义的子区域,是目标检测、医学影像分析、自动驾驶等领域的核心预处理步骤。本文讲解阈值分割、边缘检测、区域生长、聚类分割、基于图的方法等经典与前沿技术,提供MATLAB代码实现。 目录 1. 图像分割基础 2. 经典分割方…

动手实现一个PDF阅读器

1、简介 使用 pdf.js 库加载和显示 PDF 文件。 实现了翻页、缩放功能。 提供了基本的错误处理。 功能特点&#xff1a; 支持选择本地 PDF 文件。 可以逐页查看 PDF 内容。 支持放大缩小功能。 界面简洁&#xff0c;易于使用。 2、使用方法 <!DOCTYPE html> <html la…

利用亚马逊AI代码助手生成、构建和编译一个游戏应用(下)

在上篇文章中中&#xff0c;我们介绍了如何通过亚马逊AI代码生成助手 - Amazon Q Developer代理的代码生成、构建和测试功能&#xff0c;让开发者可以更高效地交付高质量代码项目&#xff0c;同时减少代码中bug错误&#xff0c;提升整体开发体验。在本篇中&#xff0c;我们将通…

unity学习42:动画状态机:混合动画状态 blend tree

目录 1 动画状态机 1.1 新建动画状态 2 混合动画状态 blend Tree 2.1 new blend Tree 2.2 blend tree state 和普通的 state的属性不同 2.3 双击blend tree 进入下一层 blend tree内部 2.3.1 blend tree 内部 2.3.2 blend type 2.3.3 参数类型默认是float&#xff0…

ipfs安装及其访问webui

在区块链应用场景里&#xff0c;常常需要借助专门的存储系统来保存各类文件。IPFS&#xff08;星际文件系统&#xff0c;InterPlanetary File System&#xff09;便是一种适用于区块链网络的分布式存储解决方案&#xff0c;它能够让用户便捷高效地存储和管理文件。 下面&#…

全方位探索DeepSeek

目录 前言1. DeepSeek的基础功能与应用场景2. 使用DeepSeek的多种方式2.1 通过Web界面快速体验2.2 调用API实现自动化处理2.3 集成到本地开发环境2.4 结合第三方工具扩展功能 3. 高效使用DeepSeek的进阶技巧3.1 参数调优与性能优化3.2 数据处理与结果分析 4. 实际案例分析与应用…

【STM32】外部时钟|红外反射光电开关

1.外部时钟 单片机如何对外部触发进行计数&#xff1f;先看一下内部时钟&#xff0c;内部时钟是接在APB1和APB2时钟线上的&#xff0c;APB1,APB2来自stm32单片机内部的脉冲信号&#xff0c;也叫内部时钟。我们用来定时。同样我们可以把外部的信号接入单片机&#xff0c;来对其…

核货宝外贸订货系统:批发贸易企业出海的强劲东风

在全球贸易一体化的汹涌浪潮中&#xff0c;批发贸易企业正积极探寻海外市场的广阔天地&#xff0c;试图开辟新的增长版图。然而&#xff0c;出海之路绝非坦途&#xff0c;众多难题如暗礁般潜藏在前行的航道上。从复杂繁琐的跨境交易流程、变幻莫测的国际市场需求&#xff0c;到…

4090单卡挑战DeepSeek r1 671b:尝试量化后的心得的分享

引言&#xff1a; 最近&#xff0c;DeepSeek-R1在完全开源的背景下&#xff0c;与OpenAI的O1推理模型展开了激烈竞争&#xff0c;引发了广泛关注。为了让更多本地用户能够运行DeepSeek&#xff0c;我们成功将R1 671B参数模型从720GB压缩至131GB&#xff0c;减少了80%&#xff…

uni-app 学习(一)

一、环境搭建和运行 &#xff08;一&#xff09;创建项目 直接进行创建 &#xff08;二&#xff09;项目结构理解 pages 是页面 静态资源 打包文件&#xff0c;看我们想输出成什么格式 app.vue 页面的入口文件 main.js 是项目的入口文件 存放对打包文件的配置 pages 存放整…

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney&#xff08;艺术感最强&#xff09; ▸ DALLE 3&#xff08;与ChatGPT深度联动&#xff09; ▸ Leonardo.ai&#xff08;精细化参数控制&#xff09; 核心策略 提示词架构&#xff1a; [主体描述][环境氛围][镜头语言][风格参数…

Python基于Flask的豆瓣电影数据分析可视化系统(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

Dify+Ollama+DeepSeek部署本地大模型+知识库搭建

前言 上一篇文章《OllamaDeepSeek部署本地大模型》我们已经知道如何在本地搭建自己的大模型了&#xff0c;不过想要让大模型能够根据我们个人或者企业的数据情况做出精准的回答&#xff0c;我们还需要将自己的数据投喂给大模型才可以。本篇文章我们将会使用一个开源项目dify集…

DeepSeek官方推荐的AI集成系统

DeepSeek模型虽然强大先进&#xff0c;但是模型相当于大脑&#xff0c;再聪明的大脑如果没有输入输出以及执行工具也白搭&#xff0c;所以需要有配套工具才能让模型发挥最大的作用。下面是一个典型AI Agent架构图&#xff0c;包含核心组件与数据流转关系&#xff1a; #mermaid-…

rk3568 linux lockdep死锁定位

1&#xff0c;场景 2&#xff0c;配置config,进入kernel目录&#xff0c;make menuconfig 选择kernel hacking进入下面界面 debug hungup lockdeps里面是与系统卡死相关的配置内核编译选择宏&#xff0c;下面的选择自己可以选择。 配置完之后对比查看相关的配置宏定义&#x…

简要分析LeetCode树经典题目(Java)

目录 开场白 实战环节 准备工作 遍历问题 LeetCode144. 二叉树的前序遍历 方法一 方法二 LeetCode94. 二叉树的中序遍历 LeetCode145. 二叉树的后序遍历 方法一 方法二 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 LeetCode107. 二叉树的…

PHP代驾系统小程序

&#x1f697; 代驾系统 —— 安全、便捷、智能的出行新选择 &#x1f527; 一款基于先进ThinkPHPUniapp技术架构&#xff0c;匠心独运的代驾软件横空出世&#xff0c;微信小程序端率先登场&#xff0c;为您的出行之旅增添前所未有的便捷与安全。它不仅是您贴心的出行助手&…