Redis基本命令详解
1. 基本命令
命令不区分大小写,而key是区分大小写的
# select 数据库间的切换 数据库共计16个
127.0.0.1:6379> select 1# dbsize 返回当前数据库的 key 的数量
127.0.0.1:6379[1]> dbsize# keys * 查看数据库所有的key
127.0.0.1:6379[1]> keys *# flushdb 清除当前数据库
127.0.0.1:6379[1]> flushdb# flushall 清除全部数据库的内容
127.0.0.1:6379[1]> flushall# exists key 判断某个 key 是否存在
127.0.0.1:6379[1]> exists name# type key 查看你的 key 是什么类型
127.0.0.1:6379[1]> type name# del key 删除指定的 key 数据 阻塞删除 数据比较大的时候会产生等待 不要删除大的key,等待时间长,阻止了其他资源的操作
127.0.0.1:6379[1]> del name# unlink key 根据 value 选择非阻塞删除 异步删除一个或多个键
# UNLINK 命令的主要特点是它是非阻塞的,unlink命令仅仅是删除键值对,并不会立即将数据从磁盘上删除 它会在后台异步地删除键值对,而不会阻塞服务器的正常操作
# UNLINK 命令非常适合于删除大量键值对或者删除耗时较长的键值对
# UNLINK 命令不接受模式匹配参数,只能指定具体的键名
127.0.0.1:6379[1]> unlink name# expire key 过期时间 为给定的 key 设置过期时间
127.0.0.1:6379[1]> expire name 10# ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
127.0.0.1:6379[1]> ttl name# move name 数据库编号 移除当前的key到其他数据库
127.0.0.1:6379[1]> move name 1# clear 清屏
127.0.0.1:6379[1]> clear# auth 密码 客户端登陆进行密码认证
127.0.0.1:6379[1]> auth 123456# quit 服务器关闭连接
127.0.0.1:6379[1]> quit# shutdown 正常关闭,数据保存 redis服务关闭
127.0.0.1:6379[1]> shutdown# config set key value 修改配置文件 例如设置密码
127.0.0.1:6379[1]> config set requirepass 123456# config get key 获取配置文件key的值
127.0.0.1:6379[1]> config get requirepass#help @类型
help @string
help @list
help @hash
help @hyperloglog
2.String字符串类型
String 是 Redis 最基本的类型,一个 key对应一个 value
String 类型是二进制安全的。意味着 Redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象
String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M
数据结构
String 的数据结构为简单动态字符串(Simple Dynamic String,缩写 SDS)。是可以修改的字符串,内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配
如图中所示,内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度len。当字符串长度小于 1M 时,扩容都是加倍现有的空间,如果超过 1M,扩容时一次只会多扩 1M 的空间。需要注意的是字符串最大长度为 512M。
# set <key> <value> 添加键值对
# EX second 设置键的过期时间为 second 秒 SET key value EX second 效果等同于 SETEX key second value
# PX millisecond :设置键的过期时间为 millisecond 毫秒。 SET key value PX millisecond 效果等同于 PSETEX key millisecond value
# NX :只在键不存在时,才对键进行设置操作。 SET key value NX 效果等同于 SETNX key value
# XX :只在键已经存在时,才对键进行设置操作
# get: 返回旧的值 同时设置新的值
# exat: 以秒为单位的unix时间戳作为过期时间
# pxat: 以豪秒为单位的unix时间戳作为过期时间
# keepttl :保留设置前指定健的生存时间 修改值的同时保留生存时间,不覆盖
127.0.0.1:6379> set name ljy ex 10
127.0.0.1:6379> set name ljy px 100
127.0.0.1:6379> set name ljy nx
127.0.0.1:6379> set name ljy xx# get <key> 查询对应键值
127.0.0.1:6379> get name# append <key> <value> 将给定的<value> 追加到原值的末尾
127.0.0.1:6379> append name 18# strlen <key> 获得值的长度
127.0.0.1:6379> strlen name# setnx <key> <value> 只有在 key 不存在时 设置 key 的值
127.0.0.1:6379> setnx name lhx# incr <key> 只能对数字值操作 将 key 中储存的数字值增 1 如果为空,新增值为 1
127.0.0.1:6379> incr age 1# decr <key> 只能对数字值操作 将 key 中储存的数字值减 1 如果为空,新增值为-1
127.0.0.1:6379> dccr age 1# incrby <key> <步长> 将 key 中储存的数字值增。自定义步长
127.0.0.1:6379> incrby age 10# decrby <key> <步长> 将 key 中储存的数字值减。自定义步长
127.0.0.1:6379> decrby age 10# mset <key1> <value1> <key2> <value2> ... 同时设置一个或多个 key-value 对
127.0.0.1:6379> mset uname ljy age 20# mget <key1> <key2> <key3> ..... 同时获取一个或多个 value
127.0.0.1:6379> mget uname age# msetnx <key1> <value1> <key2> <value2> ... 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
# 原子性,有一个失败则都失败
127.0.0.1:6379> msetnx title boy age 20 num 100# getrange <key> <起始位置> <结束位置> 获得值的范围
127.0.0.1:6379> getrange name 0 2# setrange <key> <起始位置> <value> 用 <value> 覆写<key>所储存的字符串值,从<起始位置>开始(索引从 0 开始)
# 替换指定位置开始的字符串!参数有几个替换几个
127.0.0.1:6379> setrange name 2 boy # setex <key> <过期时间> <value> 设置键值的同时,设置过期时间,单位秒
# psetex key milliseconds value 设置key 并设置过期时间 单位豪秒
127.0.0.1:6379> setex key1 10 ljy
127.0.0.1:6379> psetex key1 1000 ljy# getset <key> <value> 先get到值然后再set他的值 以新换旧,设置了新值同时获得旧值 设置新值并返回之前的旧值
127.0.0.1:6379> getset key1 name
3. List列表
主要特点:单键多值
一个双端链表的结构,容量是2的32次方减1个元素大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
列表底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
# lpush <key><value1><value2><value3> .... 从左边插入一个或多个值
127.0.0.1:6379> lpush name lili leilei hanhan# rpush <key><value1><value2><value3> .... 从右边插入一个或多个值
127.0.0.1:6379> rpush name ljy lhx# lpop <key> 从左边吐出一个值 值在键在,值光键亡
127.0.0.1:6379> lpop name# rpop <key> 从右边吐出一个值 值在键在,值光键亡
127.0.0.1:6379> rpop name# lrange <key> <start> <stop> 按照索引下标获得元素(从左到右) 0 左边第一个,-1 右边第一个,(0-1 表示获取所有)
127.0.0.1:6379> lrange name 0 -1 # rpoplpush <key1> <key2> 从<key1>列表右边吐出一个值,插到<key2>列表左边
127.0.0.1:6379> rpoplpush name name2# lindex <key> <index> 按照索引下标获得元素(从左到右)
127.0.0.1:6379> lindex name 2# llen <key> 获得列表长度
127.0.0.1:6379> llen name# lrem <key> <n> <value> 从左边删除 n 个 等于value(从左到右)
127.0.0.1:6379> lrem name 1 lili# ltrim <key> <start> <stop> 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
# 下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推
127.0.0.1:6379> ltrim name 1 -1# linsert <key> before <value> <newvalue> 在<value>的前面插入<newvalue>插入值
# linsert <key> after <value> <newvalue> 在<value>的后面插入<newvalue>插入值
127.0.0.1:6379> linsert name before lili other
127.0.0.1:6379> linsert name after lili new# lset <key> <index> <value> 将列表 key 下标为 index 的值替换成 value
127.0.0.1:6379> lset name 1 ppp
4.Set集合
Redis set 对外提供的功能与 list 类似 是一个列表的功能,特殊之处在于 set 是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。
单值多value且无重复
# sadd <key> <value1> <value2> 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
127.0.0.1:6379> sadd name ljy lhx lzf# smembers <key> 取出该集合的所有值
127.0.0.1:6379> smembers name# sismember <key> <value> 判断集合<key>是否为含有该<value>值,有 1,没有 0
127.0.0.1:6379> sismember name ljy# scard <key> 返回该集合的元素个数
127.0.0.1:6379> scard name# srem <key> <value1> <value2> .... 删除集合中的某个元素
127.0.0.1:6379> srem name ljy # spop <key> [数字] 随机从该集合中吐出N个值 该值从集合中删除
127.0.0.1:6379> spop name 2# srandmember <key> <n> 随机从该集合中取出 n 个值。不会从集合中删除
127.0.0.1:6379> srandmember name 1# smove <source> <destination> value 把集合中一个值从一个集合移动到另一个集合
127.0.0.1:6379> smove name name2 ljy# sinter <key1> <key2> 返回两个集合的交集元素 两个集合中都共有的元素
127.0.0.1:6379> sinter name name2 ljy# sunion <key1> <key2> 返回两个集合的并集元素
127.0.0.1:6379> sunion name name2# sdiff <key1> <key2> 返回两个集合的差集元素(key1中有,key2中没有) 以第一个key为主 属于key1但是不属于key2的元素构成的集合
127.0.0.1:6379> sdiff name name2# sintercard numkeys key ...[limit] 返回结果的基数 由所有给定集合的交集产生的集合的基数
127.0.0.1:6379> sintercard 2 k1 k2
5. Hash
Redis hash 是一个键值对集合,值也是field 和 value
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象
# hset <key> <field> <value> 给<key>集合中的 <field> 键赋值 <value>
127.0.0.1:6379> hset info name ljy# hget <key1> <field> 从<key1>集合<field>取出 value
127.0.0.1:6379> hget info name# hmset <key1> <field1> <value1> <field2> <value2>... 批量设置 hash 的值
127.0.0.1:6379> hmset info age 10 level 10# hmget <key1> <field1> <field1> <field1> ... 批量获取 hash 的值
127.0.0.1:6379> hmget info name age level# hgetall <key1> 获取全部的数据,
127.0.0.1:6379> hgetall info# hdel <key1> field1 删除hash指定key字段!对应的value值也就消失了!
127.0.0.1:6379> hdel info level# hlen <key1> 返回哈希表 key 中字段的数量
127.0.0.1:6379> hlen info# hexists <key1> <field> 查看哈希表 key 中,给定域 field 是否存在。
127.0.0.1:6379> hexists info name# hkeys <key> 列出该 hash 集合的所有 field
127.0.0.1:6379> hkeys info# hvals <key>列出该 hash 集合的所有 value
127.0.0.1:6379> hvals info# hincrby <key> <field> <increment> 为哈希表 key 中的域 field 的值加上增量 1 -1
# hincrbyfloat <key> <field> <increment> 为哈希表 key 中的域 field 的值加上增量小数
127.0.0.1:6379> hincrby info age 1# hsetnx <key> <field> <value> 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域field 不存在 存在报错
127.0.0.1:6379> hsetnx info name 555
6. 有序集合 Zset
Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表
# zadd <key> <score1> <value1> <score2> <value2>… 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
127.0.0.1:6379> zadd info 200 name 300 age# zrange <key> <start> <stop> [WITHSCORES] 返回有序集 key 中,下标在 <start> <stop> 之间的元素 带 WITHSCORES,可以让分数一起和值返回到结果集
127.0.0.1:6379> zrange info 0 -1 # zrevrange salary 0 -1 # 从大到进行排序!
127.0.0.1:6379> zrevrange info 0 -1 # zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列
127.0.0.1:6379> zrangebyscore info 100 200
127.0.0.1:6379> zrangebyscore info (100 200 #大于100 不包含100
# 显示全部 从小到大
127.0.0.1:6379> zrangebyscore info -inf +inf # zrevrangebyscore key max min [withscores] [limit offset count] 同上,改为从大到小排列
127.0.0.1:6379> zrevrangebyscore info 900 100# zcard <key> # 获取有序集合中的个数
127.0.0.1:6379> zcard info# zincrby <key> <increment> <value> 为元素的 score 加上增量
127.0.0.1:6379> zincrby info 200 age# zrem <key> <value> 删除该集合下,指定值的元素
127.0.0.1:6379> zrem info age# zcount <key> <min> <max> 统计该集合,分数区间内的元素个数 大于等于100且小于200
127.0.0.1:6379> zcount info 100 200# zrank <key> <value> 返回该值在集合中的排名,从 0 开始 顺序
# zrevrank <key> <value> 返回该值在集合中的排名 倒序
127.0.0.1:6379> zrank info name
127.0.0.1:6379> zrevrank info name# zscore <key> <value> 返回对应元素的score
127.0.0.1:6379> zscore info name# ZMPOP numkeys key [key ...] <MIN | MAX> [COUNT count]从键名列表中的第一个非空排序集中弹出一个或多个元素,它们是成员分数对
#当使用MIN修饰符时,弹出的元素是第一个非空排序集中得分最低的元素。MAX修改器会弹出得分最高的元素,numkeys 表示 key 的数量。
127.0.0.1:6379> zmpop 1 set1 min
7.Bitmap
位存储 由0和1状态表现的二进制位的bit数组
位图的本质是数组 底层数据结构是String
Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32=4294967296)
使用场景:用户签到、打卡等
# setbit <key> <offset> <value> 设置 Bitmaps 中某个偏移量的值(0 或 1) offset:偏移量从 0 开始127.0.0.1:6379> setbit sign 0 1
(integer) 0127.0.0.1:6379> setbit sign 1 0
(integer) 0127.0.0.1:6379> setbit sign 2 0
(integer) 0127.0.0.1:6379> setbit sign 3 1
(integer) 0127.0.0.1:6379> setbit sign 4 1
(integer) 0127.0.0.1:6379> setbit sign 5 0
(integer) 0127.0.0.1:6379> setbit sign 6 0
(integer) 0# getbit <key> <offset> 获取 Bitmaps 中某个偏移量的值 从 0 开始算
127.0.0.1:6379> getbit sign 3
(integer) 1
127.0.0.1:6379> getbit sign 6
(integer) 0 # strlen 不是字符串长度而是占据几个字节 超过8位后自己按照8位一组一byte再扩容 统计字节数占用多少
127.0.0.1:6379> strlen sign# bitcount <key> [start end] ] 统计字符串从 start 字节到 end 字节比特值为 1 的数量
127.0.0.1:6379> bitcount sign 6# bitop and(or/not/xor) <destkey> [key…]
# bitop 是一个复合操作, 它可以做多个 Bitmaps 的 and(交集) 、 or(并集) 、 not(非) 、 xor(异或) 操作并将结果保存在 destkey 中
8.HyperLogLog
Redis在2.8.9版本添加了HyperLogLog 结构。
HyperLogLog 是 Redis 提供的一种用于基数统计的数据结构,它可以用来估算集合中不重复元素的数量。HyperLogLog 的优点是内存消耗固定且很小(标准情况下为 12KB),与集合中元素的数量无关,适合处理大规模数据集。HyperLogLog 提供的结果是一个近似值,标准误差为 0.81%。
使用场景包括但不限于:
- 统计独立访客数(UV)。
- 统计应用的日活跃用户数(DAU)或月活跃用户数(MAU)。
- 统计用户搜索不同词条的数量。
- 统计注册 IP 数量。
HyperLogLog 只能提供不精确的去重计数方案,且不能返回集合中的元素本身。因此,它适用于对精度要求不是非常高的场景,而在需要精确计数时,可能需要考虑其他数据结构或方法
# pfadd <key> <element> [element ...] 添加指定元素到 HyperLogLog 中
127.0.0.1:6379> pfadd name redis# pfcount<key> [key ...] 计算 HLL 的近似基数,可以计算多个 HLL,比如用 HLL 存储每天的 UV,计算一周的 UV 可以使用 7 天的 UV 合并计算即可
127.0.0.1:6379> pfcount name# pfmerge <destkey> <sourcekey> [sourcekey ...] 将一个或多个 HLL 合并后的结果存储在另一个 HLL 中,比如每月活跃用户可以使用每天的活跃用户来合并计算可得
127.0.0.1:6379> pfmerge name name2
9.Geospatial
Redis 的 Geospatial 功能是 Redis 3.2 版本引入的一种用于处理地理空间数据的数据类型。它允许用户存储地理位置信息,并执行一些地理相关的操作,如计算两个地点之间的距离、查找给定半径内的所有地点等。
Redis Geospatial 使用的是有序集合(sorted sets)来存储地理位置信息,并通过 Geohash 编码来实现地理位置的索引和查询
# geoadd <key> <longitude> <latitude> <member> [longitude latitude member...] 添加地理位置(经度,纬度,名称)
# 规则:两级无法直接添加,我们一般会下载城市数据,直接通过java程序一次性导入!
# 有效的经度从-180度到180度。
# 有效的纬度从-85.05112878度到85.05112878度。
# 当坐标位置超出上述指定范围时,该命令将会返回一个错误。
# redis-cli --raw 解决乱码
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
127.0.0.1:6379> geoadd china:city 114.05 22.52 shenzhen 116.38 39.90 beijing# geopos <key> <member> [member...] 获得指定地区的坐标值
127.0.0.1:6379> geopos china:city beijing# geodist <key> <member1> <member2> [m|km|ft|mi ] 获取两个位置之间的直线距离
# 单位:
# m 表示单位为米[默认值]。
# km 表示单位为千米。
# mi 表示单位为英里。
# ft 表示单位为英尺。
# 如果用户没有显式地指定单位参数, 那么GEODIST 默认使用米作为单位
127.0.0.1:6379> geodist china:city beijing shanghai km# georadius <key> <longitude> <latitude> radius m|km|ft|mi 以给定的经纬度为中心,找出某一半径内的元素
# WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回
# WITHCOORD: 将位置元素的经度和维度也一并返回。
# WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大
# COUNT 限定返回的记录数
# ASC: 查找结果根据距离从近到远排序
# DESC: 查找结果根据从远到近排序
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km# georadiusbymember 根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合
# georadiusbymember与georadius用法类似,只不过把参数经纬度改成了存在key里的member成员而已
127.0.0.1:6379> georadiusbymember china:city chengdu 300 km# geohash 返回一个或多个位置对象的 geohash 值,该命令将返回11个字符的Geohash字符串!
# 将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么则距离越近!
127.0.0.1:6379> geohash china:city beijing chongqi
1) "wx4fbxxfke0"
2) "wm5xzrybty0"
相关文章:

Redis基本命令详解
1. 基本命令 命令不区分大小写,而key是区分大小写的 # select 数据库间的切换 数据库共计16个 127.0.0.1:6379> select 1# dbsize 返回当前数据库的 key 的数量 127.0.0.1:6379[1]> dbsize# keys * 查看数据库所有的key 127.0.0.1:6379[1]> keys *# fl…...

Java之线程篇四
目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-(volatile) volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…...

计算机毕业设计之:基于微信小程序的校园流浪猫收养系统
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

SpringBoot:关于Redis的配置失效(版本问题)
我们使用redis时发现yaml配置中的redis相关配置不生效,后面发现将配置修改甚至删除所有相关redis的配置,springboot依然能使用redis里面默认的db0并且不报错。上网查阅了一些文章,也都没有解决今天分享下,我的处理方法, SpringBo…...

halcon 快速定义字典
定义一个名为params的字典 Params : dict{} 等价于用 create_dict (Params ) 为字典添加键值对,在halcon中箭只能是字符串,值可以是任何类型的obj或者tuple Params.remove_outer_edges : true Params.max_gap : 150 等价于用 set_dict_object (true,…...

Sublime text3怎么关闭提示更新
问题 sublime text 3有新版本后,会不停地在每次启动后弹窗提示更新版本 第一步 软件安装之前,切记是软件安装之前!!!需要在hosts中添加以下内容(屏蔽官网联网检测):hosts的位置一般在C:\Windows\System32\drivers\etc…...

生成式语言模型技术栈
生成式语言模型的最新技术栈正在快速发展,尤其是随着大规模预训练模型(LLMs)和生成式AI的应用不断扩展。以下是当今最前沿的生成式语言模型技术栈,涵盖从模型开发到优化、推理和部署的各个环节。 1. 基础模型开发 基础模型开发包…...

进程分析工具Process Explorer使用
进程分析工具Process Explorer使用 Process Explorer让使用者能了解看不到的在后台执行的处理程序,能显示目前已经载入哪些模块,分别是正在被哪些程序使用着,还可显示这些程序所调用的DLL进程,以及他们所打开的句柄。Process Expl…...

vue 中如何实现鼠标拖动出发滚动条的跟随移动?
使用场景 在做弹窗、表单或 tab 切换需求的时候,有时候因为内容过长会导致出现滚动条,但是只能拖动滚动条时会导致操作不便,我们会希望实现通过拖动内容区实现滚动条的滑动。这样操作就会简单多了。 实现思路 如果要实现鼠标辅助触发滚动条…...

【Java EE】文件IO
Author:MTingle major:人工智能 --------------------------------------- Build your hopes like a tower! 目录 一、文件是什么? 二、针对文件系统操作的API 1.文件路径,文件名,文件是否存在 2. 创建文件 3.删除文件&#…...

使用 React、Material-UI、Spring、MySQL、MyBatis 以及高德 API 模拟实时位置信息
要使用 React、Material-UI、Spring、MySQL、MyBatis 以及高德 API 模拟实时位置信息,你可以按以下步骤来实现: 目录 1. 前端 (React Material-UI) 2. 后端 (Spring Boot MyBatis MySQL) 3. 模拟实时位置数据 4. 前后端联调 1. 前端 (React Mat…...

UniApp一句话经验: px -> rpx动态转换和动态元素区域的获取
px->rpx转换 在多终端条件下,什么devicePixelRatio,upx2px都是不靠谱的,最直接的是这样: const { screenWidth } uni.getSystemInfoSync()const pixelUnit screenWidth / 750 // rpx->px比例基数 动态元素区域获取 多终…...

Python基于flask框架的智能停车场车位系统 数据可视化分析系统fyfc81
目录 技术栈和环境说明解决的思路具体实现截图系统设计python语言django框架介绍flask框架介绍性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示技术路线操作可行性详细视频演示源码获取 技术栈和环境说明 结合用户的使用需求&…...

海外服务器哪个速度最快且性能稳定
海外服务器的速度与性能稳定性受多种因素影响,包括地理位置、网络架构、基础设施质量以及用户网络路径等。在众多选择中,几个特定地区的服务器因其卓越表现而备受推崇。 首先,美国硅谷(加利福尼亚州)与纽约的服务器以其技术领先、网络连接稳定…...

C/C++通过CLion2024进行Linux远程开发保姆级教学
目前来说,对Linux远程开发支持相对比较好的也就是Clion和VSCode了,这两个其实对于C和C语言开发都很友好,大可不必过于纠结使用那个,至于VS和QtCreator,前者太过重量级了,后者更是不用说,主要用于…...

工程师 - 如何安装Windows 终端
Windows 终端是一款适用于 Windows 的现代命令行应用程序,支持多个终端会话,包括 Command Prompt、PowerShell 和 Windows Subsystem for Linux (WSL)。它具有标签式界面、可定制的设置(如主题和按键绑定)、改进的文本渲染以及对 …...

UniApp 从Vue2升级为Vue3需要注意哪些方面
Vue官方已经发布了Vue3,Vue2不再维护,也在建议大家都迁移到Vue3,所以Vue2终会被淘汰。 那么UniApp 从Vue2升级为Vue3需要注意哪些方面: 1、main.js 下面请看创建应用实例Vue2与Vue3的不同: Vue2的写法:…...

前端面试CSS常见题目
1. CSS 选择器的优先级 (Specificity) 面试官通常会问你如何计算 CSS 选择器的优先级,这对于避免样式冲突、提高代码可维护性很重要。 优先级计算规则: !important 优先级最高。内联样式(例如:<div style"color: red;&…...

408算法题leetcode--第10天
643. 子数组最大平均数 I 643. 子数组最大平均数 I思路:滑动窗口时间:O(n);空间:O(1) class Solution { public:double findMaxAverage(vector<int>& nums, int k) {double ret 0, temp 0;size_t size nums.size()…...

13年计算机考研408-数据结构
解析: 这个降序链表不影响时间复杂度,因为是链表,所以你想要升序就使用头插法,你想要降序就使用尾插法。 然后我们来分析一下最坏的情况是什么样的。 因为m和n都是两个有序的升序序列。 如果刚好m的最大值小于n的最小值࿰…...

跨平台开发新视角:利用Android WebView实现Web内容的原生体验
在移动应用开发领域,跨平台解决方案一直是一个热门话题。开发者们不断寻求能够同时在iOS和Android平台上提供一致用户体验的方法。而Android的WebView组件,作为一个强大的工具,允许开发者在Android应用中嵌入Web内容,为用户提供接…...

Stable Diffusion 使用详解(11)--- 场景ICON制作
目录 背景 controlNet 整体描述 Canny Lineart Depth 实际使用 AI绘制需求 绘制过程 PS打底 场景模型选择 设置提示词及绘制参数 controlnet 设置 canny 边缘 depth 深度 lineart 线稿 效果 背景 这段时间不知道为啥小伙伴似乎喜欢制作很符合自己场景的ICON。…...

【Linux系统编程】第二十弹---进程优先级 命令行参数 环境变量
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、进程优先级 2.1、什么是优先级 2.2、优先级的描述 2.3、优先级与权限的关系 2.4、为什么要有优先级 2.5、Linux优先级的…...

无人机之4G模块的主要功能和优势
一、增强图传 在无人机飞行过程中,传统的图传方式可能会受到信号遮挡或干扰的影响,导致图像传输不稳定甚至中断。而4G模块通过结合4G网络技术,能够在原有图传技术的基础上提供增强的图传功能。当传统图传信号不佳时,无人机可以自动…...

深度学习-03 Pytorch
损失函数是用来衡量模型预测结果与真实值之间的差异,并用来优化模型的指标。在机器学习和神经网络中,常用的损失函数包括均方误差(Mean Squared Error,MSE)、交叉熵(Cross-Entropy)等。 反向传播…...

GRU(门控循环单元)的原理与代码实现
1.GRU的原理 1.1重置门和更新门 1.2候选隐藏状态 1.3隐状态 2. GRU的代码实现 #导包 import torch from torch import nn import dltools#加载数据 batch_size, num_steps 32, 35 train_iter, vocab dltools.load_data_time_machine(batch_size, num_steps)#封装函数&…...

【医疗大数据】医疗保健领域的大数据管理:采用挑战和影响
选自期刊**《International Journal of Information Management》**(IF:21.0) 医疗保健领域的大数据管理:采用挑战和影响 1、研究背景 本研究的目标是调查阻止医疗机构实施成功大数据系统的组织障碍,识别和评估这些障碍,并为管理…...

gevent + flask 接口会卡住
在使用 gevent 和 Flask 处理 CPU 密集型任务时,确实可能会遇到性能瓶颈。这是因为 gevent 主要优化的是 I/O 密集型任务,而不是 CPU 密集型任务。以下是一些可能的原因和解决方案: 原因 Gevent 的协程模型: gevent 使用 greenle…...

SpringCloud Alibaba五大组件之——Sentinel
SpringCloud Alibaba五大组件之——Sentinel(文末附有完整项目GitHub链接) 前言一、什么是Sentinel二、Sentinel控制台1.下载jar包2.自己打包3.启动控制台4.浏览器访问 三、项目中引入Sentinel1.在api-service模块的pom文件引入依赖:2.applic…...

brpc之io事件分发器
结构 #mermaid-svg-v4SjrdGXadMO4udP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v4SjrdGXadMO4udP .error-icon{fill:#552222;}#mermaid-svg-v4SjrdGXadMO4udP .error-text{fill:#552222;stroke:#552222;}#merm…...