Redis篇之五大数据类型
1、五大数据类型
4.1、String(字符串)
String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value
String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M
127.0.0.1:6379> set key1 redis # 设置值
OK
127.0.0.1:6379> get key1 # 获取值
"redis"
127.0.0.1:6379> APPEND key1 "hello" # 追加key1的字符串,如果当前的key不存在,则默认set该key
(integer) 10
127.0.0.1:6379> get key1
"redishello"
127.0.0.1:6379> STRLEN key1 # 获取当前key的字符串的长度
(integer) 10
127.0.0.1:6379> APPEND key1 ",redis is so intersting!"
(integer) 34
127.0.0.1:6379> STRLEN key1 # 获取当前key的字符长度
(integer) 34
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views # 加一
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> DECR views # 减一
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> type views # 获取该key的类型
string
127.0.0.1:6379> INCRBY views 5
(integer) 6
127.0.0.1:6379> get views
"6"
127.0.0.1:6379> INCRBY views 10 # 指定增加的步长
(integer) 16
127.0.0.1:6379> get views
"16
127.0.0.1:6379> DECRBY views 10 # 指定减少的步长
(integer) 6
127.0.0.1:6379> get views
"6"# 操作key的值
127.0.0.1:6379> FLUSHDB # 清空当前库
OK
127.0.0.1:6379> set key1 "hello liangtl" # 设置key1的值
OK
127.0.0.1:6379> get key1 # 获取key1的值
"hello liangtl"
127.0.0.1:6379> GETRANGE key1 0 3 # 截取key1的指定字符:0,1,2,3(左闭右开)
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1 # 截取key1的所有字符(java的substring)
"hello liangtl"
127.0.0.1:6379> set key2 abcdefg
OK
127.0.0.1:6379> get key2
"abcdefg"
127.0.0.1:6379> SETRANGE key2 1 cb # 替换指定位置开始的字符(java的replace)
(integer) 7
127.0.0.1:6379> get key2
"acbdefg"# SETEX(set with expire) 设置该键的过期时间
127.0.0.1:6379> SETEX key3 30 "hello"
OK
127.0.0.1:6379> ttl key3
(integer) 10
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> keys *
1) "key2"
2) "key1"# SETNX(set with not exist) 不存在时设置该键的值,否则设置失败
127.0.0.1:6379> setnx key4 "redis"
(integer) 1
127.0.0.1:6379> get key4
"redis"
127.0.0.1:6379> SETNX key4 "mongoDB"
(integer) 0
127.0.0.1:6379> get key4
"redis"
127.0.0.1:6379> # 批量添加key:mset、mset
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 # 同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379> MGET k1 k2 k3 # 同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> MSETNX k1 v2 k4 v4 # 原子性,只会全部成功或者全部失败,所以get时为空
(integer) 0
127.0.0.1:6379> get k4
(nil)# 对象
127.0.0.1:6379> set user:1 {name:zhangsan,age:3}
OK
127.0.0.1:6379> keys *
1) "k1"
2) "user:1"
3) "k2"
4) "k3"
127.0.0.1:6379> get user:1
"{name:zhangsan,age:3}"
# 这里的key是一个巧妙的设计:user:{id}:{filed},这种设计在redis上看是完全OK的!
127.0.0.1:6379> MSET user:1:name zhangsan user:1:age 2
OK
127.0.0.1:6379> KEYS *
1) "user:1:age"
2) "k1"
3) "user:1:name"
4) "k2"
5) "user:1"
6) "k3"
127.0.0.1:6379> get user:1:name
"zhangsan"# getset 先获取值在设置值
127.0.0.1:6379> getset db reids # 如果该键没有值,则返回null,并且设置为新的值
(nil)
127.0.0.1:6379> get db
"reids"
127.0.0.1:6379> getset db mongodb # 如果有值,返回原来的值,并且设置新的值
"reids"
127.0.0.1:6379> get db
"mongodb"
List(列表)
List介绍:Redis列表是简单字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头或则尾
它的底层是一个双向链表,对两端操作的性能很高,通过索引下标操作中间节点的性能很差
# 往列表的头部Left/尾部Right插入元素
127.0.0.1:6379> lpush list one # 往名为list的列表中加入一个value:one,如果list不存在,则为新建操作。lpush为从左边插入,所以输出为倒叙,Rpush同理。
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1 # 输出list中的所有元素
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> RPUSH list four # 从列表的尾部插入元素
(integer) 4
127.0.0.1:6379> lrange list 0 -1 # 输出
1) "three"
2) "two"
3) "one"
4) "four"# 往列表的头部Left/尾部Right移除元素
127.0.0.1:6379> LPOP list # 移除列表第一个元素
"three"
127.0.0.1:6379> RPOP list # 移除列表最后一个元素
"four"
127.0.0.1:6379> LRANGE list 0 -1 # 输出列表中的元素
1) "two"
2) "one"# 获取列表指定索引位置的值
127.0.0.1:6379> LINDEX list 0 # 获取索引位置为0的值
"two"
127.0.0.1:6379> LINDEX list 1 # 获取索引位置为1的值
"one"# 获取列表长度
127.0.0.1:6379> LLEN list
(integer) 2
127.0.0.1:6379> LPUSH list five
(integer) 3
127.0.0.1:6379> LLEN list
(integer) 3
127.0.0.1:6379> # 移除列表中的指定元素
127.0.0.1:6379> LRANGE list 0 -1
1) "seven"
2) "six"
3) "two"
4) "five"
5) "two"
6) "one"
127.0.0.1:6379> LREM list 1 five # 移除一个five元素
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "seven"
2) "six"
3) "two"
4) "two"
5) "one"
127.0.0.1:6379> LREM list 2 two # 移除两个two元素
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "seven"
2) "six"
3) "one"# 截取列表中的指定下标长度的元素
127.0.0.1:6379> LRANGE list 0 -1
1) "four"
2) "three"
3) "two"
4) "seven"
5) "six"
6) "one"
127.0.0.1:6379> LTRIM list 1 3 # 截取list中索引从[1,3)
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "seven"# 移除就列表中的一个元素并且将这个被移除的元素加入新的列表
127.0.0.1:6379> keys *
1) "list"
2) "list1"
127.0.0.1:6379> RPOPLPUSH list list2 #将list中的最后一个元素移除,并且将这个被移除的元素加入list2,如果list2不存在则新增list2
"seven"
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
127.0.0.1:6379> LRANGE list2 0 -1
1) "seven"# 更新列表中指定位置的value
127.0.0.1:6379> EXISTS list # 判断list是否存在,存在返回1不存在返回0
(integer) 1
127.0.0.1:6379> LSET list 0 three2 # 将list中的第一个元素设置为three2
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "three2"
2) "two"
127.0.0.1:6379> LSET list 3 haha # 如果下标不存在,则会报错
(error) ERR index out of range# 插入一个值到列表的某个value的前面或者后面
127.0.0.1:6379> LRANGE list 0 -1
1) "three2"
2) "two"
127.0.0.1:6379> LINSERT list before two one # 往list中第一个值为two的元素前面插入一个值为one的元素
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "three2"
2) "one"
3) "two"
Set(集合)
Set介绍:set对外提供的功能与list类似是一个列表的功能。特殊在于set可以自动排重。当需要保存一个list数据时,又不希望list里的元素重复时,则set是一个很好的选择;并且set提供了判断某个成员是否在set中的一个接口,这是list不能提供的。
Redis的set是String类型的无序集合,它的底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都为O(1)
127.0.0.1:6379> FLUSHDB # 清空当前数据库
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> SADD set1 one two three four # 新增一个set1,放入后面这四个值
(integer) 4
127.0.0.1:6379> SMEMBERS set1 # 获取set1中的所有元素
1) "four"
2) "three"
3) "one"
4) "two"
127.0.0.1:6379> SISMEMBER set1 one # 判断set1中是否存在one这个元素
(integer) 1
127.0.0.1:6379> SISMEMBER set1 five
(integer) 0
127.0.0.1:6379> SADD set1 one # 往set1中插入一个重复的值,不会报错,但是也不会插入,set是一个不重复的无序集合
(integer) 0
127.0.0.1:6379> SMEMBERS set1
1) "four"
2) "three"
3) "one"
4) "two"
127.0.0.1:6379> SREM set1 four # 删除set1中的four元素
(integer) 1
127.0.0.1:6379> SMEMBERS set1 five # 判断five元素是否是set1的成员
(integer) 1# 随机抽取或者删除set中的一个或多个元素
127.0.0.1:6379> SADD set2 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
127.0.0.1:6379> SRANDMEMBER set2 # 随机抽取set2中的一个元素
"3"
127.0.0.1:6379> SRANDMEMBER set2 2 # 随机抽取set2中的两个元素
1) "4"
2) "6"
127.0.0.1:6379> SPOP set2 # 随机删除set2中的一个元素
"3"
127.0.0.1:6379> SPOP set2 2 # 随机删除set2中的两个元素
1) "2"
2) "6"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "4"
3) "5"
4) "7"
5) "8"
6) "9"# 将一个set中的值移动至另一个set中
127.0.0.1:6379> SMEMBERS set1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "4"
3) "5"
4) "7"
5) "8"
6) "9"
127.0.0.1:6379> SMOVE set1 set2 three
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "two"
2) "one"
127.0.0.1:6379> SMEMBERS set2
1) "8"
2) "7"
3) "5"
4) "4"
5) "three"
6) "9"
7) "1"# 取两个或两个以上set集合的交集、并集、差集(此处以两个为例)
127.0.0.1:6379> SADD set3 a b c # 新增set3
(integer) 3
127.0.0.1:6379> SADD set4 c d e # 新增set4
(integer) 3
127.0.0.1:6379> SDIFF set3 set4 # 以set3为主,取set3和set4的差集
1) "a"
2) "b"
127.0.0.1:6379> SINTER set3 set4 # 取set3、set4的交集
1) "c"
127.0.0.1:6379> SUNION set3 set4 # 取set3、set4的并集
1) "c"
2) "b"
3) "d"
4) "e"
5) "a"
闲聊时间
多聊一嘴,其实这些命令都可以在英语单词中找到一些规律
把SDIFF、SINTER还有SUNION这三个单词首字母去掉,可以得到
DIFF:different,它代表不同的,用一句Redis官网的翻译来描述:返回的集合元素是第一个key的集合与后面所有key的集合的差集
INTER:intersection,翻译过来为交叉,同样的,意指数学关系中的交集
UNION:union,翻译为联合,与数学关系中的并集也是可以沾边的
Hash(哈希)
Hash介绍:hash是一个键值对集合
Redis hash是一个string类型的field和value的映射表,hash最适合用来存储对象。类似java里面的Map<String,Object>
127.0.0.1:6379> HSET hash1 age 23 name tl high 178 # 新建hash1,并且以键值对的形式存储后面的这些值
(integer) 3
127.0.0.1:6379> HLEN hash1 # 获取hash1的长度
(integer) 3
127.0.0.1:6379> HEXISTS hash1 name # 判断hash1是否存在键name
(integer) 1
127.0.0.1:6379> HEXISTS hash1 weight
(integer) 0
127.0.0.1:6379> HGETALL hash1 # 获取hash1中的所有键和值
1) "age"
2) "23"
3) "name"
4) "tl"
5) "high"
6) "178"
127.0.0.1:6379> HKEYS hash1 # 获取hash1中的所有键
1) "age"
2) "name"
3) "high"
127.0.0.1:6379> HVALS hash1 # 获取hash1中的所有值
1) "23"
2) "tl"
3) "178"
127.0.0.1:6379> HINCRBY hash1 age 2 # 将hash1中的age对应的value+2
(integer) 25
127.0.0.1:6379> HGET hash1 age # 获取hash1中age对应的值
"25"
127.0.0.1:6379> HINCRBY hash1 age -2 # 将hash1中的age对应的value-2
(integer) 23
127.0.0.1:6379> HGET hash1 age # 获取hash1中age对应的值
"23"
127.0.0.1:6379> HSETNX hash1 name haha # 如果键name不存在则新增,存在则返回0,不对原值做变动
(integer) 0
127.0.0.1:6379> HSETNX hash1 add jx
(integer) 1
127.0.0.1:6379> HGETALL hash1
1) "age"
2) "23"
3) "name"
4) "tl"
5) "high"
6) "178"
7) "add"
8) "jx"
Zset(有序集合)
Zset介绍:Zset是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分( score) ,这个评分( score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。
因为元素是有序的,所以你也可以很快的根据评分( score )或者次序( position )来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。
127.0.0.1:6379> ZADD zset 1 one 3 three 7 four 2 two 5 five # 新增zset1,并添加后面跟随的键值
(integer) 5
127.0.0.1:6379> ZREVRANGEBYSCORE zset -inf +inf
(empty array)
127.0.0.1:6379> ZRANGE zset 0 -1
1) "one"
2) "two"
3) "three"
4) "five"
5) "four"
127.0.0.1:6379> ZADD zset1 1 one 2 two 3 three 4 four # 新增zset1,并添加后面跟随的键值
(integer) 4
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
127.0.0.1:6379> ZADD zset1 5 five # 给zset新增值
(integer) 1
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
# -inf:负无穷 +inf:正无穷 score:每个元素value被赋予的一个权重值
127.0.0.1:6379> ZRANGEBYSCORE zset1 -inf +inf # 根据score从小到大排序输出
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
127.0.0.1:6379> ZRANGEBYSCORE zset1 0 2 # 从小到大输出权重在[0,2]之间的值
1) "one"
2) "two"
127.0.0.1:6379> ZREVRANGE zset1 1 3
1) "four"
2) "three"
3) "two"
127.0.0.1:6379> ZRANGEBYSCORE zset1 -inf +inf withscores1) "one"2) "1"3) "two"4) "2"5) "three"6) "3"7) "four"8) "4"9) "five"
10) "5"
127.0.0.1:6379> ZCOUNT zset 2 5 # 统计zset中权重值为2-5之间的个数
(integer) 3
127.0.0.1:6379> ZRANK zset five # 输出zset中five元素对应的排名(从0开始)
(integer) 3
相关文章:
Redis篇之五大数据类型
1、五大数据类型 4.1、String(字符串) String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象…...
Linux->文件系统磁盘文件管理
目录 1 磁盘结构 2 逻辑抽象管理磁盘 2.1 逻辑抽象 2.2 管理磁盘 2.3 补充知识 3 软硬连接 1 磁盘结构 本篇的学习需要建立在大家在脑海中有一副磁盘的结构才能进行下去,所以我会以图解的方式为大家简单讲解一下,注:博主对这一部分并不是…...
echarts tooltip文字太长换行
tooltip文字太长换行,设置了宽度也没有换行,加上一句: extraCssText: ‘max-width:300px; white-space:pre-wrap’, 没加之前是这样: 加上之后 extraCssText: ‘max-width:300px; white-space:pre-wrap’, tooltip: {trigger: &…...
Docker 部署Jira8.1.0
Jira与Confluence一样,都需要用到独立的数据库,对于数据库的安装我们不做介绍,主要介绍如何用Docker部署Jira以及对Jira进行破解的操作。 1、数据库准备 关于数据库官方文档说明:https://confluence.atlassian.com/adminjiraserv…...
枚举、模拟法(蓝桥杯卡片、数的分解为例)
枚举和模拟算法是计算机领域常用的两种基本算法。枚举算法是一种通过列举所有可能的情况来解决问题的方法。模拟算法则是通过模拟真实场景来解决问题。 枚举、模拟法 枚举算法是指将问题分解为一系列离散的情况,通过枚举所有可能的情况,逐一检查每种情…...
DC-DC升压变换器直流隔离高压输出稳压电源模块5v12v24v48v转50v110v150v220v250v300v350v500v
HRB 系列隔离宽电压输入高电压稳压输出 特点 效率高达 80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用 HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#…...
jQuery创建、添加、删除元素
一、创建元素 语法: $("<li></li>"); 动态的创建了一个 <li> 二、添加元素 1. 内部添加 1、element.append(内容) 把内容放入匹配元素内部最后面,类似原生 appendChild。 2、element.prepend(内容) 把内容放入匹…...
产品快讯丨神策数据 A/B 测试试验指标管理重磅升级
神策数据:为了更好地帮助企业管理试验指标,神策数据 A/B 测试完善了指标类型、配置方式、计算原理等,帮助分析师、运营同学等明确计算逻辑,并最大程度减少歧义以及与技术同学沟通的成本,以实现企业内部信息的有效统一。…...
游戏开发之Unity2021URP项目场景的构建
地面的修改和编辑:地面插件的使用 打开包管理器,在左边的包那里选择“Unity注册表”,在右边进行搜索“Polybrush”,之后选择右下角的安装 安装完之后要选择样本中的URP进行导入,因为我们的项目是URP渲染管线的&#x…...
数学分析:多元微积分1
卓里奇的数学分析的好处在于直接从多元函数来入手多元微积分,引出矩阵,十分自然。 紧集的概念,感觉直接用闭集去理解就行,(对于图形学来说)。 多元函数的极限,其实和单元函数并没有什么区别。 这…...
STC32G 三轮车负压电磁
文章目录前言整车效果控制思路循迹环岛处理障碍处理关键代码部分差比和以及当前速度计算角速度环速度环环岛处理障碍处理前言 年后就没怎么碰车了,到3月中旬换三轮了,可算有一点成效了,做个记录。 整车效果 三轮负压电磁慢速元素识别控制思…...
【编程小记】位运算 x -x 表示含义
位运算 x & -x 表示含义一、原码反码补码二、位运算 x & -x 表示含义三、最终结论一、原码反码补码 在计算机中,整数的数据的存储是按照补码的方式进行存储的 按照数据与0的大小,数据又被分为正数与负数 正数的原码反码补码相同。负数的原码&…...
信创PC利旧管理新模式,麒麟信安助力国家某部委实现高效云办公
2022年,国家某部委所有桌面终端均已完成信创PC替换,并将日常办公所需的办公Office套件、OA无纸化办公系统、即时通讯系统等全部迁移至信创PC,但在进行生产业务系统迁移时,该单位信创PC仍存在业务系统与不同芯片PC难适配、应用难兼…...
【玩转RT-Thread】RT-Thread内核宏定义详解(rtdef.h)
文章目录1.RT-Thread版本信息2.RT-Thrad基础数据类型定义3.RT-Thread基本数据类型的范围4.RT-Thread系统滴答时钟最大计数值5.RT-Thread IPC数据类型范围6.RT-Thread避免未使用变量警告7.编译器相关定义8.编译器相关定义9.RT-Thread错误码定义1.RT-Thread版本信息 /* RT-Threa…...
PDF转化器免费版有哪些?这几款办公达人们都在用
在现代办公中,文件的排版和格式是非常重要的,无论是发布通知或提交策划书、投档简历或是发表论文、宣传海报或是产品说明书等,我们经常使用PDF文件格式发送给他人。然而,很多人需要对PDF进行编辑修改,通常会先将其转换…...
2022MathorCup赛题B
以下所有文字均基于作者的实际经验,并不具有完全的合理性,请谨慎参考 目录 一、问题分析 (一)问题一 (二)问题二 二、预处理 (一)训练集预处理 (二)测…...
适合销售使用的CRM系统特点
销售人员抱怨CRM系统太复杂,这是一个很重要的问题。毕竟,如果系统太难使用,会导致CRM实用率和效率下降,最终影响公司的运作。在这篇文章中,我们来探讨当销售抱怨crm客户系统太复杂了,企业该如何解决。 缺少…...
项目中获取resource下文件路径的方法
String filepathrequest.getServletContext().getRealPath("/")"files\\"; 获取的当前文件在实际运行的tomcat地址目录 String path ClassUtils.getDefaultClassLoader().getResource("").getPath()"tmp/files/"; 获取的是当前文件…...
Air32F103CBT6|CCT6|KEIL-uVsion5|本地编译|STClink|(6)、Air32F103编译下载
目录 一、环境搭建 准备工作 安装支持包 二、新建工程 添加外设库支持 测试代码 三、下载烧录 一、环境搭建 准备工作 安装MDK5,具体方法请百度,安装后需要激活才能编译大文件 下载安装AIR32F103的SDK:luatos-soc-air32f103: Air32f…...
结构(c的数据类型)
我们知道数组是相同类型元素的集合,那么结构就是不同类型的元素的集合,这些不同元素叫结构中的成员。是因为这些集合都有一定的联系才会归为一类的。 形式:我们知道,平时学习的int,double都叫类型,而结构是…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
