当前位置: 首页 > news >正文

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&#xff08;字符串&#xff09; String是Redis最基本的类型&#xff0c;你可以理解成与Memcached一模一样的类型&#xff0c;一个key对应一个value String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象…...

Linux->文件系统磁盘文件管理

目录 1 磁盘结构 2 逻辑抽象管理磁盘 2.1 逻辑抽象 2.2 管理磁盘 2.3 补充知识 3 软硬连接 1 磁盘结构 本篇的学习需要建立在大家在脑海中有一副磁盘的结构才能进行下去&#xff0c;所以我会以图解的方式为大家简单讲解一下&#xff0c;注&#xff1a;博主对这一部分并不是…...

echarts tooltip文字太长换行

tooltip文字太长换行&#xff0c;设置了宽度也没有换行&#xff0c;加上一句&#xff1a; extraCssText: ‘max-width:300px; white-space:pre-wrap’, 没加之前是这样&#xff1a; 加上之后 extraCssText: ‘max-width:300px; white-space:pre-wrap’, tooltip: {trigger: &…...

Docker 部署Jira8.1.0

Jira与Confluence一样&#xff0c;都需要用到独立的数据库&#xff0c;对于数据库的安装我们不做介绍&#xff0c;主要介绍如何用Docker部署Jira以及对Jira进行破解的操作。 1、数据库准备 关于数据库官方文档说明&#xff1a;https://confluence.atlassian.com/adminjiraserv…...

枚举、模拟法(蓝桥杯卡片、数的分解为例)

枚举和模拟算法是计算机领域常用的两种基本算法。枚举算法是一种通过列举所有可能的情况来解决问题的方法。模拟算法则是通过模拟真实场景来解决问题。 枚举、模拟法 枚举算法是指将问题分解为一系列离散的情况&#xff0c;通过枚举所有可能的情况&#xff0c;逐一检查每种情…...

DC-DC升压变换器直流隔离高压输出稳压电源模块5v12v24v48v转50v110v150v220v250v300v350v500v

HRB 系列隔离宽电压输入高电压稳压输出 特点 效率高达 80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上应用 HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#…...

jQuery创建、添加、删除元素

一、创建元素 语法&#xff1a; $("<li></li>"); 动态的创建了一个 <li> 二、添加元素 1. 内部添加 1、element.append(内容) 把内容放入匹配元素内部最后面&#xff0c;类似原生 appendChild。 2、element.prepend(内容) 把内容放入匹…...

产品快讯丨神策数据 A/B 测试试验指标管理重磅升级

神策数据&#xff1a;为了更好地帮助企业管理试验指标&#xff0c;神策数据 A/B 测试完善了指标类型、配置方式、计算原理等&#xff0c;帮助分析师、运营同学等明确计算逻辑&#xff0c;并最大程度减少歧义以及与技术同学沟通的成本&#xff0c;以实现企业内部信息的有效统一。…...

游戏开发之Unity2021URP项目场景的构建

地面的修改和编辑&#xff1a;地面插件的使用 打开包管理器&#xff0c;在左边的包那里选择“Unity注册表”&#xff0c;在右边进行搜索“Polybrush”&#xff0c;之后选择右下角的安装 安装完之后要选择样本中的URP进行导入&#xff0c;因为我们的项目是URP渲染管线的&#x…...

数学分析:多元微积分1

卓里奇的数学分析的好处在于直接从多元函数来入手多元微积分&#xff0c;引出矩阵&#xff0c;十分自然。 紧集的概念&#xff0c;感觉直接用闭集去理解就行&#xff0c;&#xff08;对于图形学来说&#xff09;。 多元函数的极限&#xff0c;其实和单元函数并没有什么区别。 这…...

STC32G 三轮车负压电磁

文章目录前言整车效果控制思路循迹环岛处理障碍处理关键代码部分差比和以及当前速度计算角速度环速度环环岛处理障碍处理前言 年后就没怎么碰车了&#xff0c;到3月中旬换三轮了&#xff0c;可算有一点成效了&#xff0c;做个记录。 整车效果 三轮负压电磁慢速元素识别控制思…...

【编程小记】位运算 x -x 表示含义

位运算 x & -x 表示含义一、原码反码补码二、位运算 x & -x 表示含义三、最终结论一、原码反码补码 在计算机中&#xff0c;整数的数据的存储是按照补码的方式进行存储的 按照数据与0的大小&#xff0c;数据又被分为正数与负数 正数的原码反码补码相同。负数的原码&…...

信创PC利旧管理新模式,麒麟信安助力国家某部委实现高效云办公

2022年&#xff0c;国家某部委所有桌面终端均已完成信创PC替换&#xff0c;并将日常办公所需的办公Office套件、OA无纸化办公系统、即时通讯系统等全部迁移至信创PC&#xff0c;但在进行生产业务系统迁移时&#xff0c;该单位信创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转化器免费版有哪些?这几款办公达人们都在用

在现代办公中&#xff0c;文件的排版和格式是非常重要的&#xff0c;无论是发布通知或提交策划书、投档简历或是发表论文、宣传海报或是产品说明书等&#xff0c;我们经常使用PDF文件格式发送给他人。然而&#xff0c;很多人需要对PDF进行编辑修改&#xff0c;通常会先将其转换…...

2022MathorCup赛题B

以下所有文字均基于作者的实际经验&#xff0c;并不具有完全的合理性&#xff0c;请谨慎参考 目录 一、问题分析 &#xff08;一&#xff09;问题一 &#xff08;二&#xff09;问题二 二、预处理 &#xff08;一&#xff09;训练集预处理 &#xff08;二&#xff09;测…...

适合销售使用的CRM系统特点

销售人员抱怨CRM系统太复杂&#xff0c;这是一个很重要的问题。毕竟&#xff0c;如果系统太难使用&#xff0c;会导致CRM实用率和效率下降&#xff0c;最终影响公司的运作。在这篇文章中&#xff0c;我们来探讨当销售抱怨crm客户系统太复杂了&#xff0c;企业该如何解决。 缺少…...

项目中获取resource下文件路径的方法

String filepathrequest.getServletContext().getRealPath("/")"files\\"; 获取的当前文件在实际运行的tomcat地址目录 String path ClassUtils.getDefaultClassLoader().getResource("").getPath()"tmp/files/"; 获取的是当前文件…...

Air32F103CBT6|CCT6|KEIL-uVsion5|本地编译|STClink|(6)、Air32F103编译下载

目录 一、环境搭建 准备工作 安装支持包 二、新建工程 添加外设库支持 测试代码 三、下载烧录 一、环境搭建 准备工作 安装MDK5&#xff0c;具体方法请百度&#xff0c;安装后需要激活才能编译大文件 下载安装AIR32F103的SDK&#xff1a;luatos-soc-air32f103: Air32f…...

结构(c的数据类型)

我们知道数组是相同类型元素的集合&#xff0c;那么结构就是不同类型的元素的集合&#xff0c;这些不同元素叫结构中的成员。是因为这些集合都有一定的联系才会归为一类的。 形式&#xff1a;我们知道&#xff0c;平时学习的int&#xff0c;double都叫类型&#xff0c;而结构是…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

FFmpeg avformat_open_input函数分析

函数内部的总体流程如下&#xff1a; avformat_open_input 精简后的代码如下&#xff1a; int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...