redis数据类型之Hash,Bitmaps

华子目录

  • `Hash`
    • 结构图
    • 相关命令
      • `hexists key field`
      • `hmset key field1 value1 [field2 value2...]`
      • `hscan key cursor [MATCH pattern] [COUNT count]`
  • `Bitmaps`位图
    • 相关命令
      • `setbit`
        • 1. **命令描述**
        • 2. **语法**
        • 3. **参数限制**
        • 4. **内存分配与性能**
        • 5. **应用实例**
        • 6. **其他相关命令**
        • 7. **总结**
        • 例子
      • `getbit`
        • 1. 命令描述
        • 2. 语法
        • 3. 返回值说明
        • 4. 参数限制
        • 5. 内存分配与性能
        • 6. 应用实例
        • 7. 注意事项
        • 8. 关联命令
        • 9. 总结
        • 示例
      • `bitcount`
        • 1. 命令描述
        • 2. 语法
        • 3. 返回值说明
        • 4. 参数限制
        • 5. 内存分配与性能
        • 6. 应用实例
        • 7. 注意事项
        • 8. 关联命令
        • 9. 总结
        • 示例
      • `bitop`
        • 1. 语法
        • 2. 参数说明
        • 3. 返回值
        • 4. 注意事项
        • 5. 示例
        • 6. 性能考虑
        • 7. 总结

Hash

  • Redis hash 是一个 string 类型field 和 value 的映射表,hash 特别适合用于存储对象Redis 中每个 hash 可以存储 2^32^ - 1 键值对(40多亿)。
  • Hash类型一般用于存储用户信息用户主页访问量组合查询等。

结构图

在这里插入图片描述

相关命令

命令说明
hset key field1 value1 [field2 value2...]将哈希表 key 中的字段 field 的值设为 value
hget key field获取存储在哈希表指定字段
hgetall key获取在哈希表中指定 key所有字段和值
hexists key field查看哈希表 key 中,指定的字段是否存在,存在返回1,不存在返回0
hsetnx key field value只有在字段 field 不存在时,设置哈希表字段的值
hkeys key获取所有哈希表中的字段
hvals key获取哈希表中所有值
hlen key获取哈希表中字段的数量
hmget key field1 [field2...]获取所有给定字段的值
hmset key field1 value1 [field2 value2...]同时将多个 field-value (域-值)对设置到哈希表 key 中
hincrby key field increment为哈希表 key 中的指定字段的整数值加上增量 increment
hincrbyfloat key field increment为哈希表 key 中的指定字段的浮点数值加上增量 increment
hdel key field1 [field2...]删除一个或多个哈希表字段
hscan key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对

hexists key field

  • HEXISTS命令Redis数据库中用于检查哈希表(Hash)中指定字段(field)是否存在的命令。以下是关于HEXISTS命令的详细解释:
  1. 命令语法

    • HEXISTS key field
    • 其中,key 是哈希表的键名field 是哈希表中的字段名
  2. 返回值

    • 如果哈希表含有给定的字段,则返回整数 1
    • 如果哈希表不含有给定的字段,或者键不存在,则返回整数 0

hmset key field1 value1 [field2 value2...]

  • HMSETRedis 中的一个命令,用于在哈希表中设置多个字段和对应的值。这个命令在 Redis 2.6.0 版本及以后的版本中可用,但在 Redis 4.0.0 版本之后,它已经被 HSET 命令的多字段/多值语法所取代。尽管 HMSET 仍然存在于许多 Redis 环境中,但推荐使用 HSET 的新语法。

以下是 HMSET 的用法:

HMSET key field1 value1 field2 value2 ... fieldN valueN

这里是一个例子:

HMSET user:1000 username alice password secret123 email alice@example.com

在这个例子中,我们在哈希表 user:1000 中设置了三个字段:usernamepasswordemail,以及它们对应的值。

然而,从 Redis 4.0.0 开始,你可以使用 HSET 命令的扩展语法来达到相同的效果:

HSET key field1 value1 field2 value2 ... fieldN valueN

所以,上面的 HMSET 例子可以用 HSET 写成:

HSET user:1000 username alice password secret123 email alice@example.com

在大多数情况下,你应该使用 HSET 的新语法,因为它更加通用和灵活。但是,如果你正在维护一个使用 HMSET 的旧系统,那么了解 HMSET 的用法仍然是有用的。

hscan key cursor [MATCH pattern] [COUNT count]

  • HSCANRedis 中用于迭代哈希表(Hash)键的命令。当哈希表非常大,无法一次性加载到客户端时,你可以使用 HSCAN 命令来逐步迭代哈希表中的数据。

以下是 HSCAN 命令的基本语法和参数说明:

HSCAN key cursor [MATCH pattern] [COUNT count]

参数说明:

  • key:哈希表的键名。
  • cursor:游标,初始值通常为 0,表示开始迭代。在后续的迭代中,你将使用上一次迭代返回的游标作为参数。
  • MATCH pattern(可选):一个可选的模式字符串,用于过滤返回的字段。只有匹配该模式的字段才会被返回。
  • COUNT count(可选):一个可选的数字,表示每次迭代返回的字段的最大数量。这个值只是一个提示,Redis 可能会返回更多或更少的字段。

HSCAN 命令会返回一个包含两个元素的数组:

  1. 新的游标值:用于下一次迭代。
  2. 一个包含字段-值对的数组。

当所有字段都被迭代后,新的游标值将是 0

以下是一个使用 HSCAN 命令的示例:

# 第一次迭代,游标为 0
127.0.0.1:6379> HSCAN myhash 0
1) "0"   # 新的游标值
2) 1) "field1"2) "value1"3) "field2"4) "value2"# 假设我们只对以 "field" 开头的字段感兴趣,并希望每次迭代返回 1 个字段
127.0.0.1:6379> HSCAN myhash 0 MATCH field* COUNT 1
1) "0"   # 注意:新的游标值可能是 0,也可能是其他值,取决于哈希表的结构和 COUNT 参数
2) 1) "field1"2) "value1"# 使用新的游标值继续迭代
127.0.0.1:6379> HSCAN myhash <new_cursor_value> MATCH field* COUNT 1
...

请注意,HSCAN 命令是非阻塞的,并且可以在迭代过程中修改哈希表。但是,在迭代过程中添加的新字段可能不会被立即返回,因为它们可能出现在当前游标的“后面”。同样,在迭代过程中删除的字段也可能仍然被返回,因为它们是在游标指向它们之前存在的。

Bitmaps位图

  • 现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如“abc”字符串是由3个字节组成, 但实际在计算机存储时将其用二进制表示, “abc”分别对应的ASCII码分别是97、 98、 99, 对应的二进制分别是011000010110001001100011,如下图:

  • 在这里插入图片描述

  • 合理地使用操作位能够有效地提高内存使用率和开发效率。

  • Redis 6 中提供了 Bitmaps 这个“数据类型”可以实现对位的操作:

    • Bitmaps本身不是一种数据类型,实际上它就是字符串(key-value),但是它可以对字符串的位进行操作。
    • Bitmaps单独提供了一套命令,所以在Redis中使用Bitmaps和使用字符串的方法不太相同。 可以把Bitmaps想象成一个以为单位的数组, 数组的每个单元只能存储01数组下标Bitmaps中叫做偏移量。
    • 在这里插入图片描述

相关命令

setbit

  • SETBITRedis 数据库中的一个命令,用于设置指定 key 所储存的字符串值中,指定偏移量上的(bit)。以下是对 SETBIT 命令的详细解释:
1. 命令描述
  • 功能:对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
  • 节省空间:由于 8 个 bit 可以组成一个 Byte,使用 bitmap 可以极大地节省存储空间。
2. 语法
SETBIT key offset value
  • key:要操作的字符串键。
  • offset:要设置的位的位置。位的位置从 0 开始计数。
  • value:要设置的值,只能是 0 或 1。
3. 参数限制
  • offset 的限制offset 参数必须大于或等于 0,小于 2^32(bit 映射被限制在 512 MB 之内)。
  • Redis 字符串大小限制:Redis 字符串的大小被限制在 512 兆(megabytes)以内,所以用户能够使用的最大偏移量为 2^29-1(536870911)。如果需要更大的空间,请使用多个 key。
4. 内存分配与性能
  • 当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞。例如,在 2010 年出产的 Macbook Pro 上,设置偏移量为 536870911(512MB 内存分配)将耗费约 300 毫秒。
5. 应用实例
  • 如果键 mykey 的初始值是字符串 “foobar”,使用 SETBIT mykey 2 1 命令后,键 mykey 的值将变为 “oba1r”(因为字符串的索引是从 0 开始的,所以第 2 个位置对应的是字符 ‘o’ 的第二个 bit)。
6. 其他相关命令
  • GETBIT:用于获取指定 key 的字符串值中,指定偏移量上的位的值(0 或 1)。
7. 总结

SETBIT 命令提供了一种在 Redis 中进行精确位操作的方式,可以在节省存储空间的同时,进行高效的位设置和清除操作。这在一些需要频繁进行位操作的场景中,如实时统计、状态标记等,具有非常重要的应用价值。

例子
  • 例如,把每个独立用户是否访问过网站存放在Bitmaps中, 将访问的用户记做1,没有访问的用户记做0,用户的id作为偏移量
  • 设置键的第offset个位的值(从0算起) , 假设现在有20个用户,userid=1,6,11,15,19的用户对网站进行了访问, 那么当前Bitmaps初始化结果如图:
  • 在这里插入图片描述
  • 下面示例是代表 2022-07-18 这天的独立访问用户的Bitmaps:
127.0.0.1:6379> setbit unique:users:20220718 1 1127.0.0.1:6379> setbit unique:users:20220718 6 1127.0.0.1:6379> setbit unique:users:20220718 11 1127.0.0.1:6379> setbit unique:users:20220718 15 1127.0.0.1:6379> setbit unique:users:20220718 19 1

注意:

  • 很多应用的用户id以一个指定数字(例如10000) 开头, 直接将用户idBitmaps的偏移量对应势必会造成一定的浪费, 通常的做法是每次做setbit操作时将用户id减去这个指定数字。
  • 在第一次初始化Bitmaps时, 假如偏移量非常大, 那么整个初始化过程执行会比较慢, 可能会造成Redis的阻塞。

getbit

  • GETBITRedis 数据库中的一个命令,用于获取指定 key 所储存的字符串值中,指定偏移量上的位(bit)的值。以下是关于 GETBIT 命令的详细解释:
1. 命令描述
  • 功能:对 key 所储存的字符串值获取指定偏移量上的位(bit)的值。
  • 返回值返回指定偏移量上的位的,该值只能是 0 或 1。
2. 语法
GETBIT key offset
  • key:要操作的字符串键。
  • offset:要获取的位的位置。位的位置从 0 开始计数。
3. 返回值说明
  • 如果 key 不存在,或者 offset 超出了字符串值的长度,GETBIT 命令将返回 0。
  • 否则,返回指定偏移量上的位的值,该值只能是 0 或 1。
4. 参数限制
  • offset 的限制offset 参数必须大于或等于 0,小于 2^32(因为 Redis 的字符串最大长度为 512 MB,所以位映射被限制在这个范围内)。
5. 内存分配与性能
  • 由于 GETBIT 只是简单地读取字符串中指定位置的位,所以其性能通常非常高,不需要额外的内存分配。
6. 应用实例
  • 假设有一个 key 名为 flags,其存储的字符串值为二进制表示 “10101”(对应十进制中的 21)。执行 GETBIT flags 1 将返回 0,因为从右往左数(即从低位到高位),第二个位是 0。
7. 注意事项
  • 当使用 GETBIT 时,需要注意 offset 是否在有效范围内,以避免获取到错误的值。
  • 如果想要设置或修改指定偏移量上的位的值,应该使用 SETBIT 命令。
8. 关联命令
  • SETBIT:用于设置指定 key 所储存的字符串值中,指定偏移量上的位的值。
9. 总结

GETBIT 是一个高效且灵活的 Redis 命令,它允许开发者在不牺牲太多存储空间的前提下,实现精细的位级操作。这种能力在需要记录大量二进制状态信息或进行实时统计等场景中特别有用。

示例

获取键的第offset位的值(从0开始算)。例如获取id=6的用户是否在2022-07-18这天访问过, 返回0说明没有访问过:

127.0.0.1:6379> getbit unique:users:20220718 6
127.0.0.1:6379> getbit unique:users:20220718 7

bitcount

  • BITCOUNTRedis 数据库中的一个命令,用于计算给定字符串中设置为 1 的位的数量。这个命令在处理位图(bitmap)或二进制数据时特别有用,因为它提供了一种快速计算二进制数据中特定位模式数量的方法。
1. 命令描述
  • 功能:计算指定 key 所储存的字符串值中,设置为 1 的位的数量。
  • 返回值:返回字符串中设置为 1 的位的数量。
2. 语法
BITCOUNT key [start] [end]
  • key:要操作的字符串键。
  • start(可选):计算的起始偏移量。
  • end(可选):计算的结束偏移量。

如果指定了 startend 参数,BITCOUNT 命令将只计算从 startend(包括 end)之间(包括边界)的位。如果省略了 startend,那么将计算整个字符串。

3. 返回值说明
  • 返回字符串中设置为 1 的位的数量。
4. 参数限制
  • start 和 end 的限制startend 必须是非负整数,且 end 必须大于或等于 start。它们指定了计算位的范围。
5. 内存分配与性能
  • BITCOUNT 命令的性能通常取决于字符串的长度和计算机硬件的性能。对于较长的字符串,该命令可能需要一些时间来计算。但是,由于 Redis 的内部优化,这个命令通常比使用其他编程语言或工具来手动计算要快得多。
6. 应用实例
  • 假设有一个 key 名为 user_visits,其存储的字符串值为二进制表示 “10101”(对应十进制中的 21)。执行 BITCOUNT user_visits 将返回 3,因为字符串中有 3 个位被设置为 1。
  • 如果想要计算从第 2 个位到第 4 个位之间(包括边界)设置为 1 的位的数量,可以执行 BITCOUNT user_visits 1 3。在这个例子中,由于只有第 2 个位被设置为 1,所以将返回 1。
7. 注意事项
  • 当使用 BITCOUNT 时,需要注意 startend 是否在有效范围内,以避免计算到错误的位。
  • 如果 key 不存在,BITCOUNT 将返回 0。
8. 关联命令
  • SETBIT:用于设置指定 key 所储存的字符串值中,指定偏移量上的位的值。
  • GETBIT:用于获取指定 key 所储存的字符串值中,指定偏移量上的位的值。
9. 总结

BITCOUNT 是一个强大的 Redis 命令,它允许开发者快速地计算二进制数据中特定位模式的数量。这种能力在多种场景中都非常有用,例如统计用户访问频率、记录在线用户状态等。

示例

用于统计字符串从start字节到end字节比特值为1的数量。例如,统计id在第1个字节到第3个字节之间的独立访问用户数, 对应的用户id11, 15, 19。

127.0.0.1:6379> bitcount unique:users:20220718 1 3

bitop

BITOPRedis中用于执行位操作的命令,它允许用户对一个或多个键(key)的值进行位运算,并将结果存储另一个键中。BITOP命令在处理位图(Bitmap)数据结构时特别有用,它提供了一种高效的方式来执行常见的位运算操作,如AND(与)、OR(或)、NOT(非)和XOR(异或)等。

以下是BITOP命令的详细介绍:

1. 语法
BITOP operation destkey key [key ...]
  • operation:要执行的位运算操作,可以是AND、OR、NOT或XOR。
  • destkey:存储运算结果的键名。
  • key:要进行位运算的键名,可以是一个或多个。
2. 参数说明
  • operation:指定要执行的位运算类型。
    • AND:对所有key的值执行位运算。
    • OR:对所有key的值执行位运算。
    • NOT仅对一个key的值执行位运算(注意,NOT操作时key只能有一个)。
    • XOR:对所有key的值执行位异或运算。
  • destkey:用于存储运算结果的键名。
  • key:要进行位运算的键名列表。对于NOT操作,只需要一个key对于其他操作,可以指定一个或多个key。
3. 返回值

BITOP命令返回保存到destkey的字符串的长度,这个长度与输入key中最长的字符串长度相等。

4. 注意事项
  • 当处理不同长度的字符串时,较短的字符串所缺少的部分会被视为0。
  • 空的key也被视为包含0的字符串序列。
  • NOT操作只能对一个key执行。
5. 示例

假设我们有以下三个key及其对应的值以二进制表示):

  • key1: 1010
  • key2: 1100
  • key3: 0011

执行以下BITOP命令:

  • BITOP AND result key1 key2:将key1key2进行位运算,结果存储在result中,result的值为1000(即十进制的8)。
  • BITOP OR result key1 key2 key3:将key1key2key3进行位运算,结果存储在result中,result的值为1111(即十进制的15)。
  • BITOP NOT result key1:对key1进行位运算,结果存储在result中,result的值为0101(即十进制的5)。
  • BITOP XOR result key1 key2:将key1key2进行位异或运算,结果存储在result中,result的值为0110(即十进制的6)。
6. 性能考虑

BITOP命令的时间复杂度是O(N),其中N是位图包含的二进制位数量。在处理长字符串时,该命令可能需要一些时间来完成计算。因此,在处理实时指标和统计时,涉及大输入时需要注意效率问题。可以使用bit-wise操作来避免阻塞主实例。

7. 总结

BITOPRedis中用于执行位操作的强大命令,它允许用户高效地处理位图数据结构,并执行常见的位运算操作。通过合理使用BITOP命令,可以优化数据存储和查询性能,实现更高效的数据处理和分析。

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

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

相关文章

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正

19 - grace数据处理 - 补充 - 地下水储量计算过程分解 - 冰后回弹(GIA)改正 0 引言1 gia数据处理过程0 引言 由水量平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算冰后回弹改正、第四部分计算地下…

ABAP MD04增强排除MRP元素

场景 MD04跑出来很多MRP元素&#xff0c;用户想手工控制某些MRP元素不参与运算 分析 增强点还蛮好找的&#xff0c;控制MRP元素是否参与运算用下面的se19三代增强点就可以&#xff0c;打个断点看下MD04进的哪个增强点就行 旧版本的用这个&#xff1a;MD_CHANGE_MRP_DATA 新…

NVIDIA Jetson 上编译opencv 4.9.0

直接上命令 cmake .. \ -DCMAKE_C_COMPILER/usr/bin/gcc-7 -DCMAKE_CXX_COMPILER/usr/bin/g-7 \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/usr/local \ -DOPENCV_ENABLE_NONFREE1 \ -DBUILD_opencv_python21 \ -DBUILD_opencv_python31 \ -DCUDA_TOOLKIT_ROOT_DIR…

C++STL容器系列(三)list的详细用法和底层实现

目录 一&#xff1a;介绍二&#xff1a;list的创建和方法创建list方法 三&#xff1a;list的具体用法3.1 push_back、pop_back、push_front、pop_front3.2 insert() 和 erase()3.3 splice 函数 四&#xff1a;list容器底层实现4.1 list 容器节点结构5.2 list容器迭代器的底层实…

【window 安装 service bus explorer】

安装ServiceBusExplorer 首先需要安装Chocolatey安装 service bus explorer 首先需要安装Chocolatey 参考&#xff1a; https://chocolatey.org/install#install-step2 以管理员身份运行powershell输入Get-ExecutionPolicy回车&#xff0c;若显示 Restricted输入Set-Executio…

小短片创作-理论知识(三)

1、抗锯齿 1.相机移动的时候出现锯齿 2.当1个像素在三角形边缘的时候&#xff0c;可能取值为白色&#xff0c;也可能取值为黑色&#xff0c;表现出来就是闪烁&#xff0c;或锯齿 3.如果我们通过超采样将1个像素变成4个像素进行计算&#xff0c;得到的结果就会更准确&#x…

电脑显示不出网络

你的电脑是否在开机后显示不出网络&#xff0c;或者有网络消失的现象&#xff1f;今天和大家分享我学到的一个办法&#xff0c;希望对大家有用。 分析出现这类现象的原因&#xff1a;可能是电脑网卡松动了&#xff0c;电脑中存在静电流。 解决办法&#xff1a;先将电脑关机&am…

深度学习(一)

深度学习&#xff08;一&#xff09; 一、实验目的 掌握前馈全连接神经网络&#xff0c;具体包括&#xff1a; (1) 前馈全连接神经网络的网络结构 (2) 前馈神全连接经网络的工作原理 (3) 前馈全连接神经网络的代码实现 二、实验内容 1. 导入常用工具包 2. 数据导入与数据…

大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO

文章目录 RRHFPRO将RLHF嫁接到PRO 参考资料 RRHF RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》&#xff0c;是较早提出的不需要使用PPO来对齐人类偏好的方法。 设…

nginx安装部署问题

记一次nginx启动报错问题处理 问题1 内网部署nginx&#xff0c;开始执行make&#xff0c;执行不了&#xff0c;后面装了依赖的环境 yum install gcc-c 和 yum install -y pcre pcre-devel 问题2&#xff0c;启动nginx报错 解决nginx: [emerg] unknown directive “stream“ in…

Keil5 ~STM32报错Solutions#1

一、error: #268: declaration may not appear after executable statement in block

Thingsboard规则链:Customer Details节点详解

在物联网&#xff08;IoT&#xff09;平台Thingsboard的规则引擎体系中&#xff0c;Customer Details节点是一个功能强大的组件&#xff0c;它专为处理与客户&#xff08;Customer&#xff09;实体相关的综合信息而设计。这个节点不仅能够读取客户的基本属性&#xff0c;还能提…

【NumPy】全面解析subtract函数:高效数组减法指南

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

GPT-4o:人工智能新纪元的开端

引言 近年来&#xff0c;人工智能领域的发展日新月异&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;各种生成预训练模型不断推陈出新。自OpenAI发布GPT-3以来&#xff0c;生成预训练模型在文本生成、语言理解等任务中展现了强大的能力。近期&a…

网工内推 | 国企信息安全工程师,CISP认证优先

01 浙江省公众信息产业有限公司 &#x1f537;招聘岗位&#xff1a;安全运营工程师 &#x1f537;职责描述&#xff1a; 1. 负责公司内部安全运营平台及其子系统的安全事件管理、事件发现分析、应急响应和系统维护等&#xff1b; 2. 负责风险和漏洞管理&#xff0c;包括漏洞预…

一行命令将已克隆的本地Git仓库推送到内网服务器

一、需求背景 我们公司用gitea搭建了一个git服务器&#xff0c;其中支持win7的最高版本是v1.20.6。 我们公司的电脑在任何时候都不能连接外网&#xff0c;但是希望将一些开源的仓库移植到内网的服务器来。一是有相关代码使用的需求&#xff0c;二是可以建设一个内网能够查阅的…

2019美亚

1.何源是一名 25 岁的客服人员&#xff0c;在一间电讯公司工作。某日&#xff0c;何源在用 iPhone 手机在政府建筑物 中偷拍车牌期间被警员截停&#xff0c;盘问期间警员检查手机相册发现多张车牌图片&#xff0c;何源情绪紧张&#xff0c;趁 警员不被&#xff0c;抢过手机丢入…

模型实战(22)之 C++ - tensorRT部署yolov8-cls 目标分类

C++ - tensorRT部署yolov8-cls 目标分类 在检测应用场景中如果有同等类别不同形态的目标,单纯的目标检测可能达不到实用或者想要的精度,这就需要衔接一步分类python环境下如何直接调用推理模型转换并导出:pt -> onnx ->.engineC++ tensorrt 部署分类模型1.Python环境下…

OrangePi Kunpeng Pro 开发板测评 | AI 边缘计算 大模型部署

0 前言 此次很幸运能够参与 OrangePi Kunpeng Pro 开发板的测评&#xff0c;感谢 CSDN 给予这次机会。 香橙派联合华为发布了基于昇腾的 OrangePi Kunpeng Pro 开发板&#xff0c;具备 8TOPS 的 AI 算力&#xff0c;能覆盖生态开发板者的主流应用场景&#xff0c;具备完善的配…

ai写作助手有哪些,5款强大的ai写作工具为你所用

在科技日新月异的时代&#xff0c;人工智能已经悄然走进我们的生活&#xff0c;为我们带来了诸多便利。其中&#xff0c;AI写作助手作为一种创新的工具&#xff0c;正在改变着我们的写作方式。它们不仅能够提供创意灵感&#xff0c;还能帮助我们提高写作效率&#xff0c;让文字…