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

【Redis】String详细介绍及其应用场景

文章目录

  • String类型存储方式
  • set命令
  • get命令
  • mset命令
  • mget命令
  • setnx命令
  • setex和psetex命令
  • incr和decr命令系列
  • append命令
    • --raw选项让redis尝试将二进制数据翻译
  • getrange命令
  • setrange命令
  • strlen命令
  • 字符串类型命令小结
  • string内部的编码方式
  • string类型的典型应用场景
    • 1.Redis+MySQL组成的缓存存储架构
    • 2.计数功能
    • 3.共享会话
    • 4.短信验证码


String类型存储方式

Redis内部存储字符串完全是按照⼆进制流的形式保存的,不会做任何编码转换,存的是啥,取出来就是啥。不仅仅可以存储文本数据,还能存储整数,普通的文本字符串,JSON字符串,二进制数据(图片,视频,音频等),因为Redis单线程模型对于音视频来说,音视频的体量还是比较大的,由于希望操作比较快速,所以Redis限制了string类型最大的大小是512MB。

在这里插入图片描述

set命令

将string类型的value设置到key中。如果key之前存在,则覆盖,⽆论原来的数据类型是什么。之
前关于此key的TTL(生存时间)也全部失效。
用法:

SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
以下都是set命令的选项
EX : 设置单位为秒的过期时间。
PX : 设置单位为微秒的过期时间。
NX : 如果key不存在,则设置,如果key存在,则不设置(返回nil)
XX : 如果key不存在,则不设置,如果key存在,则更新value

案例:

set key value ex 10 nx
设置一个过期时间为10秒的key-value键值对,方式是nx方式。
相当于:
set key value 
expire key 10

get命令

获取key对应的value,如果key不存在,则返回nil。如果key对应的value的数据类型不是string,则会报错。(因为不同的容器有不同的命令)

因为对于get来说,只是支持,字符串的类型的value,如果value是其他类型,使用get就会报错。

mset命令

一次设定多个key和value,当然也可以设定一个。

mset key value [key value…]

存在这个命令是因为,像redis服务器发送一次set命令和发送多次set命令区别是非常大的,经过网络层,同时也要经过路由器发送到对方服务器,所以影响性能,具体请看上一篇文章。

但是建议使用mset的使用,key和value要适量。假如一次设10w个key和value,可能会使redis服务器卡顿死机。

时间复杂度:O(N):N是我当前给的key-value的数量,不是服务器中所有的key-value的数量。所以可以理解成O(1)。

mget命令

一次获取多个key对应的value。

mget key [key…]

时间复杂度:O(N):N是我当前给的key的数量,不是服务器中所有的key的数量。所以可以理解成O(1)

在这里插入图片描述

setnx命令

这个命令其实就是上面说的set命令添加了一个nx选项后的结果。
如果key-value不存在,则设置,如果存在,则不设置。

setex和psetex命令

就是上面所说的set命令加了ex选项和pset命令加了ex选项后的结果。
setex为key设置过期时间,单位是秒。
psetex为key设置过期时间,单位是毫秒。

在这里插入图片描述

incr和decr命令系列

incr:针对key对应的value+1
1.key对应的value必须是整数,此时操作的返回值是+1后的值,类似(++i)
2.如果这个value是一个大于int的最大值,就会报错,说超范围了。
3.如果incr的这个key不存在,则默认把这个key设置进去,并且把value当做从0开始自增。(所以incr一个不存在的key后,返回key-1这个键值对。

incrby:针对key对应的value+n
1.这个incrby的所有情况都跟上面的incr一样,除了加的数不一样之外。
2.如果自增的是一个负数,则直接相当于decrby。要存在decrby这个命令,就是因为设计这些东西要符合使用者的直觉。要让用户使用的更加简单方便。

decr:针对key对应的value-1
decrby:针对key对应的value-n
这两个的注意事项跟上面的incr和incrby都几乎一样的。

incrbyfloat:针对key对应的value +/- 小数
将key对应的string表示的浮点数加上对应的值。如果对应的值是负数,则视为减去对应的值。如果key不存在,则视为key对应的value是0。如果key对应的不是string,或者不是⼀个浮点数,则报错。允许采用科学计数法表示浮点数

上述操作的时间复杂度O(1),因为这些操作都是根据key获取value,然后再对value进行操作,然后更新value。

由于redis处理命令时,是单线程模型(redis单独设置一个线程专门处理命令请求的),所以多个客户端对同一个key进行incr操作时,不会引起线程安全问题。

append命令

append key value
这个value是追加在key对应的value(string类型)后面的。
返回值的单位,是字节!!!

这个命令是在一个已经存在的key对应的value值(必须是string类型)后面追加一个字符串。如果key不存在,则效果等于set命令。

redis的字符串,不会对编码作任何处理(redis不认识字符,只认识字节)
在这里插入图片描述

在当前xhell中,默认采用的是utf8编码格式,一个汉字是3个字节。
所以返回的是6字节

时间复杂度O(1),追加的字符串较短,可视为O(1)

–raw选项让redis尝试将二进制数据翻译

在启动redis客户端时,在后面加上–raw选项后,会将key对应的value的二进制字节数据翻译。

redi-cli --raw
启动后,本来key对应的value是"你好",没翻译前是6个字节的数据,翻译后就是你好了。

还有两个小命令:
ctrl + s和ctrl + q。

在xhell的bash进程中,ctrl + s命令是“冻结当前画面”。看起来好像是卡死了一样。
其实不是,就是将当前画面冻结了,有这个功能是因为在linux中,可能会打印很多的日志,为了方便查看,就按ctrl + s冻结(在window中,ctrl+s一般是用来保存数据的)解冻也很简单:ctrl + q。

getrange命令

getrange key start end
返回值是一个字符串

在redis中,[star,end]这个区间是左闭右闭的。且start和end都可以使用负数表示。
-1就表示倒数第一个元素,-2表示倒数第二个。
在这里插入图片描述
但是如果使用的是汉字,用getrange就不太合适了,就可能会出现一些问题。
上述问题,在c++同样存在,因为在C++中字符串的基本单位是字节。(redis也是)

setrange命令

setrange key offset value
从offset偏移量开始,覆盖字符串。
返回值:替换后的总的string的长度。
在这里插入图片描述

如果是一个中文字符串,覆盖后可能会出问题。

如果key不存在,会把offset之前的位置都设置为0x00。
在这里插入图片描述

strlen命令

返回获取到的字符串的长度,单位是字节。
在这里插入图片描述

字符串类型命令小结

在这里插入图片描述

string内部的编码方式

内部编码
字符串类型的内部编码有3种:

  • int:8个字节的长整型。
  • embstr:小于等于39个字节的字符串。
  • raw:大于39个字节的字符串。
    Redis会根据当前值的类型和长度动态决定使⽤哪种内部编码实现。

查看当前key的编码方式:

object encoding key

不建议记39字节这样的数字,这些数字在不同的业务需求下,就会出现动态变化,记了也没用。
为啥很多大厂,往往是自己造轮子,而不是直接使用业界成熟的呢?
开源的组件,往往考虑的是通用性,但是大厂往往会遇到一些极端的业务场景
往往就需要根据当前的极端业务,针对上述的开源组件进行定制化。

redis存储小数,本质上还是当做字符串来存储。这就和整数相比差别很大了
整数直接使用int来存(准确来说是一个long long(C++)/long(ava)),比较方便进行算术运算的。小数则是使用字符串来存,意味着每次进行算术运算,都需要把字符串转成小数,进行运算,结果再转回字符串保存。

总结:小数的存储是存的字符串,计算的时候先把字符串类型转成小数,再算,算完再转回字符串保存,这样转来转去,自然就有开销了。

string类型的典型应用场景

1.Redis+MySQL组成的缓存存储架构

在这里插入图片描述

但是这里就有一个问题了:随着时间迁移,用户读取的数据越来越多,Redis存储的热点数据越来越多,此时redis不会被存满吗,毕竟只是一个内存级的数据库。
解决方案:
1)在把数据写给redis时,给key设置一个过期时间。
2)redis在内存不足时,提供了“淘汰策略”。

伪代码演示用户业务数据访问过程:
在这里插入图片描述
通过增加缓存功能,在理想情况下,每个⽤⼾信息,⼀个⼩时期间只会有⼀次 MySQL 查询,极⼤地提升了查询效率,也降低了 MySQL 的访问数。

与 MySQL 等关系型数据库不同的是,Redis 没有表、字段这种命名空间,⽽且也没有对键名
有强制要求(除了不能使⽤⼀些特殊字符)。但设计合理的键名,有利于防⽌键冲突和项⽬的可维护性,⽐较推荐的⽅式是使⽤ “业务名:对象名:唯⼀标识:属性” 作为键名。
例如MySQL 的数据库名为 vs,⽤⼾表名为 user_info,那么对应的键可以使⽤
“vs:user_info:6379”、“vs:user_info:6379:name” 来表⽰。
如果当前 Redis 只会被⼀个业务使⽤,可以省略业务名 “vs:”。如果键名过程,则可以使⽤团队内部都认同的缩写替代,
例如"user:6379:friends:messages:5217" 可以被 “u:6379🇫🇷m:5217” 代替。
毕竟键名过⻓,还是会导致 Redis 的性能明显下降的。

2.计数功能

典型应用场景:统计视频播放次数。
在这里插入图片描述
比如:想在上面的Redis中统计播放量前100的视频有那些,用Redis搞就很麻烦。
相比之下,如果是用MySQL来操作就很方便。直接select 表名 order by 视频id limit 100即可。

什么是异步?
如果一秒钟同时来了10000个客户点击视频,redis就会处理这些命令,然后把统计次数(播放量)交给其他仓库(MySQL)这些仓库不是要立刻马上把数据写入数据库,而是能写多少是多少。如果是高峰期,那可能就写得慢一点,如果是平时,那就争取把之前的数据快点写入数据库。

在这里插入图片描述

3.共享会话

什么是共享会话呢?
举一个简单的例子:
上周我由于感冒严重,不得已去医院看病,这个医生看我的情况比较严重,给我做了些记录:开了三天的药量,做了一个喉镜检查,我的姓名,身份证号,开药的时间,喉镜检查的时间,检查结果,药的名字,各种详细信息都记载到电脑上。然后医生吩咐我,下周来复查,。我就遵照医嘱,按时服药。然而, 下周我来复查的时候,发现了一个问题:这次给我复查的医生,不是上次那个医生了!这个新的医生没有给我看过病,这时候他打开电脑,问我姓名和身份证号(输入用户信息),登录他们医院的系统,就看到了我一周前上个医生做的各种信息记录,这时候他就了解我的情况了,然后就能给我对症下药了。

上面的案例核心在于,我相当于客户端,医生 相当于服务器,服务器采用的就是负载均衡的策略,客户端两次访问服务器,可能不是同一台服务器处理。此时如果服务器之间各自保存自己的用户的数据,用户在两次访问服务器时,可能得到的数据是错误的。

在这里插入图片描述
为了解决这个问题,可以使⽤ Redis 将⽤⼾的 Session 信息进⾏集中管理,在这种模式下,只要保证 Redis 是⾼可⽤和可扩展性的,⽆论⽤⼾被均衡到哪台 Web 服务器上,都集中从Redis 中查询、更新 Session 信息。

在这里插入图片描述
总结:这个session信息,相当于病人的相关数据,用客户端服务器的话术来说,会话信息是客户端服务器在交互过程产生的专属于客户端的中间状态信息的数据。

4.短信验证码

下面是实现验证码过期时间为1分钟或者检测当前1分钟发送验证码是否超过5次的限制策略。
(主要还是怕用户频繁请求验证码对服务器压力过大)
第二个是随机生成一个验证码,在Redis中设置该验证码5分钟内有效。
第三个是验证用户输入的验证码是否正确。
在这里插入图片描述

相关文章:

【Redis】String详细介绍及其应用场景

文章目录 String类型存储方式set命令get命令mset命令mget命令setnx命令setex和psetex命令incr和decr命令系列append命令--raw选项让redis尝试将二进制数据翻译 getrange命令setrange命令strlen命令字符串类型命令小结string内部的编码方式string类型的典型应用场景1.RedisMySQL…...

C++负载均衡远程调用学习之消息路分发机制

目录 1.LARV0.5-TCP_server链接管理的功能实现及测试 2.LARV0.6 3.LARV0.6 4.LARV0.6 5.LARV0.6-tcp_server集成 6.LARV0.6-tcp_server集成消息路由分发机制总结 7.LARV0.6回顾 1.LARV0.5-TCP_server链接管理的功能实现及测试 ### 16.2 完成Lars Reactor V0.12开发 ###…...

实现了一个基于寄存器操作STM32F103C8t6的工程, 并实现对PA1,PA2接LED正极的点灯操作

#include "stm32f10x.h"// 基于寄存器开发的项目了 int main(){RCC->APB2ENR 0x00000004; // 开启时钟GPIOA->CRL 0x00003330; // 配置引脚 // 0011 0011 0000GPIOA->ODR 0x0000000E; // 1110while(1){} }...

Python字典(dict)详解:从创建到操作全掌握

前言 字典是可变容器,可存储任意类型对象 字典以键(key)-值(value)对的形式进行映射,键值对用冒号分割,对之间用逗号分割 d {key1 : value1, key2 : value2, key3 : value3 } 字典的数据是无序的 字典的键只能用不可变类型,且…...

UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器

目录 一、UDP 数据包与 TCP 数据包的区别: 连接方面: 传输方面: 面向对象: 双工模式: 二、UDP 网络编程套接字;基于 UDP 协议的回显服务器: 1. UDP 数据报套接字核心类 DatagramSocket &…...

Python 应用异常追踪实战:如何集成 Sentry 进行高效错误监控

Python 应用异常追踪实战:如何集成 Sentry 进行高效错误监控 引言 在现代应用开发中,异常处理和错误监控至关重要。一个小的运行时错误可能会导致整个系统崩溃,而难以发现的逻辑漏洞可能长期影响用户体验。为了提升代码的稳定性,我们需要一个高效的异常监控机制,以便能够…...

【数据结构】--- 双向链表的增删查改

前言: 经过了几个月的漫长岁月,回头时年迈的小编发现,数据结构的内容还没有写博客,于是小编赶紧停下手头的活动,补上博客以洗清身上的罪孽 目录 前言: 概念: 双链表的初始化 双链表的判空 双链表…...

【C语言练习】014. 使用数组作为函数参数

014. 使用数组作为函数参数 014. 使用数组作为函数参数示例1:使用数组作为函数参数并修改数组元素函数定义输出结果 示例2:使用数组作为函数参数并计算数组的平均值函数定义输出结果 示例3:使用二维数组作为函数参数函数定义输出结果 示例4&a…...

本地服务器备份网站数据,本地服务器备份网站的操作步骤

本地服务器备份网站数据的完整操作指南 一、明确备份需求与目标 核心备份对象 网站文件: 上传的媒体文件(图片、视频、PDF等) 配置文件(如.htaccess、wp-config.php) 附加内容(根据需求选择&#xff…...

机器学习Day15 LightGBM算法

浅谈LightGBM算法:我们之前讲的集成学习算法分为三要素吧,就是形式,损失函数,优化方法,但是LightGBM算法并没有固定的形式,它主要是针对具体算法给出一些优化,它更像是前向分步算法一样,像一个框…...

算法查找目录

1. 基础数据结构 数组与链表 动态数组 实现与自动扩容机制均摊分析ArrayList/Vector实现 单向链表 基本操作(插入、删除、查找)链表反转环检测(Floyd判圈算法) 双向链表 插入删除操作优化双向遍历优势边界情况处理 循环链表 约瑟夫环问题单向循环链表双向循环链表 跳表 基本原…...

【HarmonyOS】作业三 UI

目录 一. 单选题(共10题,10分) 1. (单选题, 1分)关于Tabs组件页签的位置设置,下面描述错误的是 2. (单选题, 1分)下面哪个组件不能包含子组件? 3. (单选题, 1分)ArkTS语言的实现计数器功能的组件名称是以下哪个? 4. (单选题…...

2025五一杯数学建模B题:矿山数据处理问题,详细问题分析,思路模型

一、尊重原创:详细内容文末名片获取 二、数据文件解读 (一)数据文件 1:矿山监测一维数值样例数据.csv 想象一下,这就像是一本简单的记录册,里面记录着一组一维数值序列,每个数据点如同册子里的…...

ES6-Set-Map对象小记

Set 对象 添加元素 set.add(value)常用方法 方法描述has()判断 Set 对象中特定元素是否存在delete()从 Set 对象中删除指定元素clear()清空 Set 对象 遍历方法 很容易想到使用set.forEach(callBackFn, thisArg)方法来进行遍历,其中callBackFn回调的形式如下&am…...

WGCLOUD使用 - 如何监控RabbitMQ运行参数

WGCLOUD是一款开源免费的运维监控软件,开箱即用,实用轻量,高效简单。 RabbitMQ指标数据的采集工作是由server-backup来做的,所以我们需要部署server-backup,它是一个server的辅助工具,作用相当于agent Rabb…...

FreeSWITCH 发送 sip message 的 lua 程序

-- chat.lualocal from argv[1] local to argv[2] local body argv[3] local profile "internal" -- 改成自己的 sip_profileif not body thenstream:write("-ERR miss ie")return endlocal api freeswitch.API() local domain api:executeString(&q…...

安全学习基础入门5集

前言: 来源于b站小迪安全v2023第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_哔哩哔哩_bilibili 环境准备: 通过网盘分享的文件:netcat-1.11 链接: https://pan.baidu.com/s/1zgyYvPf…...

Python结合QT进行开发

Python结合Qt进行开发指南 1. Qt for Python简介 Qt for Python(PySide/PyQt)是Python的官方Qt绑定,允许使用Python语言开发跨平台的GUI应用程序。PySide是Qt官方支持的Python绑定,而PyQt是Riverbank Computing提供的商业/开源版本。 主要特点: 跨平台支持(Windows/macOS…...

Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界

Python与深度学习:自动驾驶中的物体检测,如何让汽车“看懂”世界 一、引言:自动驾驶的“眼睛”——物体检测 在自动驾驶技术的浪潮中,如何让汽车像人类一样“看懂”周围的环境,成为了最为关键的一环。汽车需要感知道路上的行人、障碍物、交通标志、其他车辆等信息,做出实…...

深度学习-神经网络参数优化的约束与迭代策略

文章目录 前言一、正则化惩罚1、权重正则化(Weight Regularization)2、结构正则化(Structural Regularization)3、其他正则化方法 二、梯度下降1、基本原理(1)梯度下降的计算(2) 算法…...

PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比

PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比 摘要 :本文深入对比 PyTorch 与 TensorFlow 两大深度学习框架,从核心架构、优缺点、适用场景等多维度剖析,结合实例讲解,帮助开发者清晰理解两者特性&#x…...

Meta公司于2025年4月29日正式推出了全新Meta AI应用程序的首个版本

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

【数据结构】- 栈

前言: 经过了几个月的漫长岁月,回头时年迈的小编发现,数据结构的内容还没有写博客,于是小编赶紧停下手头的活动,补上博客以洗清身上的罪孽 目录 前言: 栈的应用 括号匹配 逆波兰表达式 数制转换 栈的实…...

MATLAB R2024a安装教程

安装步骤: 软件大小:约12.08G 安装环境:Win10~Win11或更高 下载好安装包,可以在网上找个安装包,比如我用国内镜像matlab地址github.com/futureflsl/matlab-chinese-mirror,这样下载稍微快点 1.开始安装…...

【Linux网络】I/O多路转接技术 - poll

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

24.Linux中RTC的驱动实验_csdn

这个在裸机开发也有,如果有过裸机开发经验的同学就比较入手了! 1、Linux 内核 RTC 驱动简介 2、STM32MP1 内部 RTC 驱动分析 像这里的读取时间,是在之前的代码里面已经写好了有关时间计数的代码,直接引用两个寄存器就行。 3、…...

C++负载均衡远程调用学习之TCP连接封装与TCPCLIENT封装

目录 1.LARSV0.3回顾 2.解决粘包问题的message结构体定义 3.LARSV0.4链接对象的方法和属性的定义 4.LARSv0.4 TCP_conn链接的初始化 5.LARV0.4-tcp_conn处理读事件方法do_read 6.LARV0.4-tcp_conn模块回顾 7.LARV0.4-tcp_send_message主动发包实现 8.LARV0.4-tcp_conn处…...

Python TensorFlow库【深度学习框架】全面讲解与案例

一、TensorFlow 基础知识 1. 核心概念 张量 (Tensor): 多维数组,是 TensorFlow 的基本数据单位(标量、向量、矩阵等)。计算图 (Graph): 早期版本中的静态图机制(TF2.x 默认启用动态图)。会话 (Session): 在 TF1.x 中…...

日志之ClickHouse部署及替换ELK中的Elasticsearch

文章目录 1 ELK替换1.1 Elasticsearch vs ClickHouse1.2 环境部署1.2.1 zookeeper 集群部署1.2.2 Kafka 集群部署1.2.3 FileBeat 部署1.2.4 clickhouse 部署1.2.4.1 准备步骤1.2.4.2 添加官方存储库1.2.4.3 部署&启动&连接1.2.4.5 基本配置服务1.2.4.6 测试创建数据库和…...

Git 基本操作(一)

目录 git add git commit git log git status git diff git 版本回退 git reset git add git add 指令为添加工作区中的文件到暂存区中。 git add file_name; //将工作区名称为file_name的文件添加进暂存区 git add .; //将工作区中的所有文件添加进暂存区 git comm…...

加密解密记录

一、RSA 加密解密 密钥对生成 1.前端加密解密 (1).vue页面引入 npm install jsencrypt(2)工具 jsencrypt.js import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密钥对生成 http://web.chacuo.net/netrsakeypairconst p…...

Playwright MCP 入门实战:自动化测试与 Copilot 集成指南

什么是 MCP? MCP(Model Context Protocol) 是一种为大语言模型(LLM)设计的协议,MCP充当 LLM 与实际应用之间的桥梁或“翻译器”,将自然语言转化为结构化指令,使得模型可以更精确、高…...

存算一体架构下的新型AI加速范式:从Samsung HBM-PIM看近内存计算趋势

引言:突破"内存墙"的物理革命 冯诺依曼架构的"存储-计算分离"设计正面临根本性挑战——在GPT-4等万亿参数模型中,数据搬运能耗已达计算本身的200倍。存算一体(Processing-In-Memory, PIM)技术通过‌在存储介…...

为 Unity 项目添加自定义 USB HID 设备支持 (适用于 PC 和 Android/VR)-任何手柄、无人机手柄、摇杆、方向盘

这是一份关于如何在 Unity 中为特定 USB HID 设备(如 Phoenix SM600 手柄)添加支持,并确保其在打包成 APK 安装到独立 VR 设备后仍能正常工作的教程。 目标: 使 Unity 能够识别并处理特定 USB HID(Human Interface Device&#x…...

恒流源电路

常见的是上面这几种, 运放恒流电路一般搭配三极管使用 比赛用的模块可以用这种,会准一点...

python2反编译部分

文章目录 1、所需环境2、确认打包工具(没成功)3、 解包.exe文件(以PyInstaller为例) - useful【***总的来说这一步对我有用】4、定位关键文件 - useful5、 修复.pyc文件头(关键步骤!)- maybe-ig…...

Selenium3自动化测试,Python3测试开发教程视频测试用例设计

Selenium3自动化测试,Python3测试开发教程视频测试用例设计25套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试&#xff0c…...

PyTorch 2.0编译器技术深度解析:如何自动生成高性能CUDA代码

引言:编译革命的范式转移 PyTorch 2.0的torch.compile不仅是简单的即时编译器(JIT),更标志着深度学习框架从‌解释执行‌到‌编译优化‌的范式跃迁。本文通过逆向工程编译过程,揭示PyTorch如何将动态图转换为高性能CU…...

ctfshow web入门 web44

信息收集 依旧是把所有输出丢弃,这一次多了flag的过滤,没啥好说的,用*或者?代替就可以了 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/;|cat|flag/i", $c)){system($c." >/dev/null 2>&1");} }else{h…...

三生原理的离散生成逻辑如何与复分析结合?

AI辅助创作: 三生原理离散生成逻辑与复分析结合路径分析 一、‌生成规则与解析延拓的协同‌ ‌参数化联动机制向复数域延伸‌ 三生原理的离散素数生成公式(如p=3(2n+1)+2(2n+m+1))通过引入复数参数 n,m∈C,可扩展为复平面上的解析函数,从而建立与黎曼ζ函数的关联通道。…...

数据升降级:医疗数据的“时空穿梭“系统工程(分析与架构篇)

一、核心挑战与量化分析 1. 版本演化困境的深度解析 (1) 格式断层的结构化危机 数据转换黑洞:某医疗信息平台(2021-2023)统计显示: 数据类型CDA R1→R2转换失败率R2→FHIR转换失败率关键失败点诊断记录28.4%19.7%ICD编码版本冲突(18.7%)用药记录15.2%12.3%剂量单位标准化…...

简单句练习--语法基础

文章目录 谓语和非谓语及物与不及物动词及物不及物主语必须由名词性质的成分充当谓语和非谓语 与中文不同,英语中的动词分为谓语形式和非谓语形式。 以“do”为例, 可以充当谓语的形式有:do,does,did, 以及其他各种时态,如:have done,is doing等。不可独立充当谓语的有…...

基于若依RuoYi-Vue3-FastAPI 的 Docker 部署记录

最近在参与导师项目开发过程中,我选择基于若依 FastAPI Vue3 模板作为系统框架,通过 Docker 实现前后端、数据库和缓存环境的容器化部署。 RuoYi-Vue3-FastAPI的github地址:https://github.com/insistence/RuoYi-Vue3-FastAPI 🛠…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的电商直播流量转化路径研究

摘要:在电商直播单场GMV突破2.28亿元的流量狂欢背后,传统直播模式正面临"流量过载而转化低效"的困境。本文提出以开源AI智能名片链动21模式S2B2C商城小程序重构流量转化路径,通过智能内容引擎、动态激励体系、供应链协同三大技术模…...

【Linux系统】Linux进程信号(产生,保存信号)

1. 信号快速认识 1-1 基本结论 如何识别信号?识别信号是内置的,进程识别信号,是内核程序员写的内置特性。信号产生之后,是知道怎么处理的,同理,如果信号没有产生,也是知道怎么处理信号的。所以…...

llamafactory-cli webui启动报错TypeError: argument of type ‘bool‘ is not iterable

一、问题 在阿里云NoteBook上启动llamafactory-cli webui报错TypeError: argument of type ‘bool’ is not iterable This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run gradio deploy from the terminal in the working directory t…...

工 厂 模 式

冷知识,当我们需要使用平底锅时,我们并不需要知道平底锅是怎么造的,坏了只需要再买就好了。至于造平底锅,全部交给我们的生产工厂就好。 蕴含这种创建对象思路的设计方法,我们称为“工厂模式”。 核心思想 工厂模式&…...

synchronized与Lock深度对比

Java并发编程:synchronized与Lock深度对比 基本概念 1.1 synchronized synchronized是Java内置的关键字,属于JVM层面的锁机制。它通过对象监视器(Monitor)实现同步,具有自动获取和释放锁的特性。 // 同步方法 public synchronized void sy…...

LeetCode —— 94. 二叉树的中序遍历

94. 二叉树的中序遍历 题目:94. 二叉树的中序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) :…...

【无标题】四色拓扑收缩模型中环形套嵌结构的颜色保真确定方法

#### **1. 环形嵌套结构的局部保真机制** - **零点虚边与环形嵌套**:在顶点 \( v \) 处引入环形嵌套结构(如环面 \( T^2 \)),通过虚边连接形成闭合路径。该结构作为“颜色记忆单元”,存储相邻区域的色彩信息&#xff0…...