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

Redis的通用命令

在这里插入图片描述
⭐️前言⭐️

本文主要介绍Redis的通用命令

🍉欢迎点赞 👍 收藏留言评论

🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍉博客中涉及源码及博主日常练习代码均已上传GitHub


请添加图片描述

📍内容导读📍

  • 🍅通用命令
    • 🍅1.启动和停止服务器
    • 🍅2.get和set
    • 🍅3.全局命令
      • keys
      • exists
      • del
      • expire
      • ttl
      • type
      • 小结
    • 🍅4.key的过期策略【经典面试题】
    • 🍅5.定时器的实现原理

🍅通用命令

🍅1.启动和停止服务器

启动redis服务器

redis-server /etc/redis/redis.conf

停止redis服务器

先通过netstat或者ps查询redis服务器的pid

netstat -anp | grep redis
ps aux | grep redis

再根据pid进行kill即可

kill 进程id

连接Redis服务器

在输入Redis命令之前,需要先连接上Redis服务器

redis-cli

断开连接

ctrl+D

🍅2.get和set

Redis是按照键值对的方式来存储数据的,通过get和set这两个核心的命令来存储键值对和取值

set key value	 	 //key和value都是字符串

Redis中的命令不区分大小写,而且对于上述这里的key和value,不需要加上引号,就是表示字符串的类型。

get key      		 //根据key获取value

get命令直接输入key就能得到value,如果当前key不存在,会返回nil(nil和null/NULL是一个意思)

示例:

img

🍅3.全局命令

Redis支持很多种数据结构,整体上来说,Redis是键值对结构,key固定就是字符串,value实际上会有很多种类型(包括字符串、哈希表、列表、集合、有序集合等),操作不同的数据结构,就会有不同的命令;

全局命令,就是能够搭配任意一个数据结构来使用的命令。

keys

通过一些特殊符号(通配符)来描述key的模样,匹配上述模样的key就能被查询出来

语法:

keys pattern

返回所有满足样式(pattern)的key,支持如下统配样式。

  • h?llo匹配hello、hallo等?匹配任意一个字符
  • h*llo匹配hllo、heeeello等?匹配任意个任意字符
  • h[abe]llo匹配hallo、hbllo、hello等[abe]只能匹配到a、b、e,相当于给了固定选项
  • h[^e]llo匹配除hello以外的,[^e]排除e,只有e匹配不了,其他的都能匹配
  • h[a-c]llo匹配hallo、hbllo、hcllo[a-c]匹配a-c这个范围内的字符,包含两侧边界

示例:

img

注意事项:

keys命令的时间复杂度是O(N),所以在生产环境上,一般都会禁止使用keys命令,尤其是keys *(该命令会查询redis中的所有key)

生产环境上的key可能会非常多,而Redis是一个单线程的服务器,执行keys *的时间非常长,就会使redis服务器被阻塞了,无法给其他客户端提供服务。

Redis经常会用于做缓存,挡在MySQL前面,万一redis被一个keys *阻塞住了,此时其他的查询redis操作就超时了,此时这些请求就会直接查数据库。如果一大波请求直接过来,就会导致MySQL措手不及,很容易就挂了,这样整个系统基本就瘫痪了。

exists

判断key是否存在

语法:

exists key [此处key可以是一个或者多个,用空格隔开]

时间复杂度:O(1)

返回值:key存在的个数

示例:

img


exists key1 key2 和分开写exists key1;exists key2有什么区别呢?

redis是一个客户端-服务器结构的程序,客户端和服务器之间通过网络来进行通信,如果分开的话,会产生更多轮次的网络通信,效率更低。

提到网络通信,就得提一下封装和分用

封装:进行网络通信的时候,发送方发送一个数据,这个数据就要从应用层到物理层层层封装,每一层协议都要加上报头或者尾,类似于我们发一个快递,需要包装一下,要包装好几层

**分用:**接收方收到一个数据,这个数据就要从物理层到应用层层层分用,把每一层协议中的报头或者尾给拆掉,类似于我们收到快递,要拆快递,拆很多层

del

删除指定的key

语法:

del key [此处key可以是一个或者多个]

时间复杂度:O(1)

返回值:删除掉的key的个数

示例:

img


在MySQL中,删除类的操作比如drop database、drop table、delete from...都是非常危险的操作,一旦删除了之后,数据就没了;

而redis主要的应用场景,就是作为缓存,此时redis里存的只是热点数据,全量数据是在MySQL数据库中,此时如果把redis中的key删除了几个,一般来说,问题都不大;

但是当然如果把所有的数据或者一大半数据都删除了,这种影响会很大;本来redis是帮MySQL负重前行的,redis没数据了,大部分的请求就直接打给MySQL了,然后很容易把MySQL搞挂

相比之下,如果是MySQL这样的数据,哪怕误删了一个数据,都可能是影响很大的

如果是把redis作为数据库,此时误删数据的影响就很大了;

如果是把redis作为消息队列(mq),这种情况误删数据影响大不大,就需要具体问题具体分析了

expire

指定的key添加秒级的过期时间(Time To Live ;TTL)

这里的key必须是针对已经存在的key设置

key存活时间超出这个指定的值,就会被自动删除

语法:

expire key seconds
pexpire key 毫秒

时间复杂度:O(1)

返回值:1表示设置成功,0表示设置失败

示例见ttl


过期时间这个实现,有很多的业务场景:

1、在进行登录时,经常会用到手机验证码,该验证码5分钟内有效;

2、点外卖,有优惠券在指定时间内有效;

3、基于redis实现分布式锁,为了避免出现不能正确解锁的情况,通常都会在加锁的时候设置一下过期时间(所谓的使用redis作为分布式锁,就是给redis里写一个特殊的key value)

ttl

获取指定key的过期时间,秒级 Time To Live TTL

语法:

ttl key

pttl key毫秒级

时间复杂度:O(1)

返回值:查询当前key的剩余过期时间,-1表示没有关联过期时间,-2表示key不存在(时间到被自动删除了)

示例:

img

type

返回key对应value的数据类型

语法:

type key

时间复杂度:O(1)

返回值:none,string,list,set,zset,hash and stream.

示例:

img

小结

当前已经学习了redis中几个基本的全局命令:

keys:用来查看匹配规则的key

exists:用来判定指定key是否存在

del:删除指定的key

expire:给key设置过期时间

ttl:查询key的过期时间

type:查询key对应的value类型

🍅4.key的过期策略【经典面试题】

一个redis中可能同时存在很多很多的key,这些key中可能有很大一部分都有过期时间,此时redis服务器咋知道哪些key已经过期要被删除,哪些key还没过期呢?如果直接遍历所有的key,效率很低显然是行不通的。

Redis整体的策略是定期删除和惰性删除相结合:

定期删除:

每次抽取一部分,进行验证过期时间,需要保证这个抽取检查的过程足够快。

为什么这里对于定期删除的时间有明确的要求呢,这是因为redis是单线程的程序,主要的任务是处理每个命令,还有包括扫描过期的key等,如果扫描过期的key消耗的时间太多了,就可能导致正常处理请求的命令就被阻塞了(产生了类似于执行keys *这样的效果)

惰性删除:

假设key已经到过期时间了,但是暂时还没删它,key还存在,紧接着后面又一次访问,正好用到了这个key,这次访问就会让redis服务器触发删除key的操作,同时再返回一个nil

这个过程就类似于我们去超市买一瓶饮料的场景,我拿到了饮料,在正要付钱的时候看了一眼生产日期,发现过期了,于是老板就没卖这瓶饮料;因为超市里面商品很多,老板也不知道哪些商品已经过期了,而在客户付款的时候发现商品过期了,老板再进行物品删除,这个场景和惰性删除类似。

虽然有了上述两种策略结合,但是整体的效果一般,仍然可能会有很多过期的key被残留了,没有被及时删除掉,redis为了对上述进行补充,还提供了一系列的内存淘汰策略。

🍅5.定时器的实现原理

定时器就类似于一个闹钟,在某个时间到达之后,会执行指定的任务;

定时器的实现方式有以下两种(redis不是基于以下两种,但和第二种的实现有相像之处):

1、基于优先级队列/堆

正常的队列是先进先出,而优先级队列则是按照指定的优先级先出

这里的优先级是可以自定义的,在redis过期key的场景中,就可以通过“过期时间越早,优先级越高”来进行优先级定义。

现在假定有很多key设置了过期时间,就可以把这些key加入到一个优先级队列中,指定优先级规则是过期时间早的先出队列,那么队首元素就是最早的要过期的key。

定时器中只要分配一个线程,让这个线程去检查队首元素,看是否过期即可,如果队首元素还没过期,后续元素一定没过期。(此时扫描线程不需要遍历所有key,就只盯住这一个队首元素即可)

另外在扫描线程检查队首元素过期时间的时候,也不能检查的太频繁,此时的做法就是可以根据当前时刻和队首元素的过期时间,设置一个等待,当时间差不多到了,系统再唤醒这个线程。(此时扫描线程也不需要高频扫描队首元素,把CPU的开销也节省下来了)

万一线程在休眠的时候,来了一个新的任务,这时候需要唤醒一下刚才的线程,重新检查一下队首元素,再根据时间差距重新调整阻塞时间即可。

2、基于时间轮实现的定时器

这种方式是把时间划分成很多小段(划分的粒度要看实际需求),每个小段上都挂着一个链表,链表的每个节点都代表一个要执行的任务。

假设需要添加一个key,这个key在300ms之后过期,就会放在第三个小段中;

img

此时这个指针,就会每隔固定的时间间隔(此处约定是100ms)走到下一个格子,每次走到一个格子,就会把这个格子上链表的任务尝试执行一下。

对于时间轮来说,每个格子是多少时间,一共多少个格子,都是需要根据实际场景,灵活调配的。

此处需要注意,Redis并没有采取上述的方案,但是要了解这两种方案,都是属于高效的定时器的实现方式,很多场景可能都会用到;

在Redis源码中,有一个比较核心的机制,叫做事件循环,其实现就和时间轮的实现比较相似


⭐️最后的话⭐️
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

请添加图片描述

相关文章:

Redis的通用命令

⭐️前言⭐️ 本文主要介绍Redis的通用命令 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉博客中涉及源码及博主日常练习代码均已上传GitHub 📍内容导…...

[Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建回归神经网络。这篇文章将介绍如何利用PyTorch构建神经网络实现分类预测,其是使用基础模块构建。前面我们的Python人工智能主要以TensorFlow和Keras为主,而现在最主流的深度学习框…...

SpringBoot使用 easy-captcha 实现验证码登录功能

文章目录 一、 环境准备1. 解决思路2. 接口文档3. redis下载 二、后端实现1. 引入依赖2. 添加配置3. 后端代码实现4. 前端代码实现 在前后端分离的项目中,登录功能是必不可少的。为了提高安全性,通常会加入验证码验证。 easy-captcha 是一个简单易用的验…...

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者:闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式(Simple Queue)工作队列模式(Work Queue)发布/订阅模式(Publish/Subscribe&#xff…...

Unity中的虚拟相机(Cinemachine)

Unity Cinemachine详解 什么是Cinemachine Cinemachine是Unity官方推出的智能相机系统,它提供了一套完整的工具来创建复杂的相机运动和行为,而无需编写大量代码。它能够大大简化相机管理,提高游戏开发效率。 Cinemachine的主要组件 1. Vi…...

响应式编程_04Spring 5 中的响应式编程技术栈_WebFlux 和 Spring Data Reactive

文章目录 概述响应式Web框架Spring WebFlux响应式数据访问Spring Data Reactive 概述 https://spring.io/reactive 2017 年,Spring 发布了新版本 Spring 5, Spring 5 引入了很多核心功能,这其中重要的就是全面拥抱了响应式编程的设计思想和实…...

网络设备的安全加固

设备的安全始终是信息网络安全的一个重要方面,攻击者往往通过控制网络中设备来破坏系统和信息,或扩大已有的破坏。网络设备包括主机(服务器、工作站、PC)和网络设施(交换机、路由器等)。 一般说来&#xff…...

OpenCV:特征检测总结

目录 一、什么是特征检测? 二、OpenCV 中的常见特征检测方法 1. Harris 角点检测 2. Shi-Tomasi 角点检测 3. Canny 边缘检测 4. SIFT(尺度不变特征变换) 5. ORB 三、特征检测的应用场景 1. 图像匹配 2. 运动检测 3. 自动驾驶 4.…...

Java高频面试之SE-17

hello啊,各位观众姥爷们!!!本牛马baby今天又来了!哈哈哈哈哈嗝🐶 Java缓冲区溢出,如何解决? 在 Java 中,缓冲区溢出 (Buffer Overflow) 虽然不是像 C/C 中那样直接可见…...

移动机器人规划控制入门与实践:基于navigation2 学习笔记(一)

课程实践: (1)手写A*代码并且调试,总结优缺点 (2)基于Gazebo仿真,完成给定机器人在给定地图中的导航调试 (3)使用Groot设计自己的导航行为树 掌握一门技术 规划控制概述 常见移动机器人...

每日一题洛谷P5721 【深基4.例6】数字直角三角形c++

#include<iostream> using namespace std; int main() {int n;cin >> n;int t 1;for (int i 0; i < n; i) {for (int j 0; j < n - i; j) {printf("%02d",t);t;}cout << endl;}return 0; }...

RTMP 和 WebRTC

WebRTC(Web Real-Time Communication)和 RTMP(Real-Time Messaging Protocol)是两种完全不同的流媒体协议,设计目标、协议栈、交互流程和应用场景均有显著差异。以下是两者的详细对比,涵盖协议字段、交互流程及核心设计思想。 一、协议栈与设计目标对比 特性RTMPWebRTC传…...

数据库技术基础

1 数据库系统概述 1.1 数据库的4个概念 &#xff08;1&#xff09;数据&#xff08;信息&#xff09; 数据&#xff1a;指已记录或可获取的事实&#xff0c;是数据库存储的最小单元。除文本、数字外&#xff0c;还有图形、图像、声音等。 数据由于能为用户利用才被记录和保…...

如何获取sql数据中时间的月份、年份(类型为date)

可用自带的函数month来实现 如&#xff1a; 创建表及插入数据&#xff1a; create table test (id int,begindate datetime) insert into test values (1,2015-01-01) insert into test values (2,2015-02-01) 执行sql语句,获取月份&#xff1a; select MONTH(begindate)…...

每日Attention学习18——Grouped Attention Gate

模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…...

分析用户请求K8S里ingress-nginx提供的ingress流量路径

前言 本文是个人的小小见解&#xff0c;欢迎大佬指出我文章的问题&#xff0c;一起讨论进步~ 我个人的疑问点 进入的流量是如何自动判断进入iptables的四表&#xff1f;k8s nodeport模式的原理&#xff1f; 一 本机环境介绍 节点名节点IPK8S版本CNI插件Master192.168.44.1…...

TensorFlow是个啥玩意?

TensorFlow是一个开源的机器学习框架&#xff0c;由Google开发。它可以帮助开发者构建和训练各种机器学习模型&#xff0c;包括神经网络和深度学习模型。TensorFlow的设计理念是使用数据流图来表示计算过程&#xff0c;其中节点表示数学运算&#xff0c;边表示数据流动。 Tens…...

初识C语言、C语言的学习方向总述与入门

目录 1. 什么是C语言&#xff1f; 2. 第一个C语言程序 3. 数据类型 4. 变量、常量 4.1 定义变量的方法 4.2 变量的命名 4.3 变量的分类 4.4 变量的作用域和生命周期 4.5 常量 5. 字符串转义字符注释 5.1 字符串 5.2 转义字符 6. 注释 7. 选择语句 8. 循环语句 …...

零基础学习书生.浦语大模型-入门岛

第一关&#xff1a;Linux基础知识 任务一&#xff1a;Cursor连接SSH运行代码 使用Remote - SSH插件即可 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno 注&#xff1a;46561&a…...

【R语言】获取数据

R语言自带2种数据存储格式&#xff1a;*.RData和*.rds。 这两者的区别是&#xff1a;前者既可以存储数据&#xff0c;也可以存储当前工作空间中的所有变量&#xff0c;属于非标准化存储&#xff1b;后者仅用于存储单个R对象&#xff0c;且存储时可以创建标准化档案&#xff0c…...

MongoDB学习笔记-解析jsonCommand内容

如果需要屏蔽其他项目对MongoDB的直接访问操作&#xff0c;统一由一个入口访问操作MongoDB&#xff0c;可以考虑直接传入jsonCommand语句解析执行。 相关依赖包 <!-- SpringBootDataMongodb依赖包 --> <dependency><groupId>org.springframework.boot</…...

国产编辑器EverEdit - 工具栏说明

1 工具栏 1.1 应用场景 当用户想显示/隐藏界面的标签栏、工具栏、状态栏、主菜单等界面元素时&#xff0c;可以通过EverEdit的菜单选项进行设置。 1.2 使用方法 选择菜单查看 -> 工具栏&#xff0c;在工具栏的子菜单中选择勾选或去掉勾选对应的选项。 标签栏&#xff1…...

linux 函数 sem_init () 信号量、sem_destroy()

&#xff08;1&#xff09; &#xff08;2&#xff09; 代码举例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …...

制造业设备状态监控与生产优化实战:基于SQL的序列分析与状态机建模

目录 1. 背景与挑战 2. 数据建模与采集 2.1 数据表设计 设备状态表(记录设备实时状态变更)...

密码学的数学基础1-素数和RSA加密

数学公式推导是密码学的基础, 故开一个新的课题 – 密码学的数学基础系列 素数 / 质数 质数又称素数。 一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则称为合数&#xff08;规定1既不是质数也不是合数&#xff0…...

C++ Primer 算术运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战

前一篇文章&#xff0c;Tensor 基本操作5 device 管理&#xff0c;使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…...

Vue 图片引用方式详解:静态资源与动态路径访问

目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展&#xff08;图片不显示&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…...

熟练掌握Http协议

目录 基本概念请求数据Get请求方式和Post请求方式 响应数据响应状态码 基本概念 Http协议全称超文本传输协议(HyperText Transfer Protocol)&#xff0c;是网络通信中应用层的协议&#xff0c;规定了浏览器和web服务器数据传输的格式和规则 Http应用层协议具有以下特点&#…...

爬虫学习笔记之Robots协议相关整理

定义 Robots协议也称作爬虫协议、机器人协议&#xff0c;全名为网络爬虫排除标准&#xff0c;用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件&#xff0c;一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…...

血压计OCR文字检测数据集VOC+YOLO格式2147张11类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2147 标注数量(xml文件个数)&#xff1a;2147 标注数量(txt文件个数)&#xff1a;2147 …...

正则表达式详细介绍

目录 正则表达式详细介绍什么是正则表达式&#xff1f;元字符转义字符字符类限定字符字符分枝字符分组懒惰匹配和贪婪匹配零宽断言 正则表达式详细介绍 什么是正则表达式&#xff1f; 正则表达式是一组由字母和符号组成的特殊文本&#xff0c;它可以用来从文本中找出满足你想…...

初识ArkTS语言

文章目录 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;保持了TS的基本风格&#xff0c;同时通过规范定义强化开发期静态检查和分析&#xff0c;提升程序执行稳定性和性能。 从…...

Go语言并发之美:构建高性能键值存储系统

摘要 本文介绍了基于Go语言实现的高性能并发键值存储系统。通过深入探讨Go语言在并发编程中的优势&#xff0c;文章详细阐述了系统的锁机制、分片优化、内存管理和持久化设计等关键环节。这些设计展示了如何在系统开发中进行有效的权衡&#xff0c;以确保最优性能。该系统不仅充…...

6. k8s二进制集群之各节点部署

获取kubernetes源码安装主节点&#xff08;分别执行以下各节点命令&#xff09;安装工作节点&#xff08;同步kebelet和kube-proxy到各工作节点&#xff09;总结 继续上一篇文章《k8s二进制集群之ETCD集群部署》下面介绍一下各节点的部署与配置。 获取kubernetes源码 https:/…...

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架

目录 前言 环境介绍 代码与动机 架构设计&#xff0c;优缺点 博客系列指引 前言 笔者前段时间花费了一周&#xff0c;整理了一下自从TM1637开始打算的&#xff0c;使用OLED来搭建一个通用的显示库的一个工程。笔者的OLED库已经开源到Github上了&#xff0c;地址在&#xf…...

spring基础总结

先修知识&#xff1a;依赖注入&#xff0c;反转控制&#xff0c;生命周期 IDEA快捷键 Ctrl Altm:提取方法&#xff0c;设置trycatch 通用快捷键&#xff1a; Ctrl F&#xff1a;在当前文件中查找文本。Ctrl R&#xff1a;在当前文件中替换文本。Ctrl Z&#xff1a;撤销…...

基础相对薄弱怎么考研

复习总体规划 明确目标 选择专业和院校&#xff1a;根据你的兴趣、职业规划和自身实力&#xff0c;选择适合自己的专业和院校。可以参考往年的分数线、报录比、复试难度等。了解考试科目&#xff1a;不同专业考试科目不同&#xff0c;一般包括&#xff1a; 公共课&#xff1a…...

代码随想录36 动态规划

leetcode 343.整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: n 1…...

p5r预告信生成器API

p5r预告信生成器API 本人将js生成的p5r预告信使用go语言进行了重写和部署&#xff0c;并开放了其api&#xff0c;可以直接通过get方法获取预告信的png。 快速开始 http://api.viogami.tech/p5cc/:text eg: http://api.viogami.tech/p5cc/persona5 感谢p5r风格字体的制作者和…...

React图标库: 使用React Icons实现定制化图标效果

React图标库: 使用React Icons实现定制化图标效果 图标库介绍 是一个专门为React应用设计的图标库&#xff0c;它包含了丰富的图标集合&#xff0c;覆盖了常用的图标类型&#xff0c;如FontAwesome、Material Design等。React Icons可以让开发者在React应用中轻松地添加、定制各…...

说说Redis的内存淘汰策略?

大家好&#xff0c;我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助&#xff1b; 说说Redis的内存淘汰策略? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 提供了多种内存淘汰策略&#xff0c;用于在内存达到限制时决定如何…...

【C语言】自定义类型讲解

文章目录 一、前言二、结构体2.1 概念2.2 定义2.2.1 通常情况下的定义2.2.2 匿名结构体 2.3 结构体的自引用和嵌套2.4 结构体变量的定义与初始化2.5 结构体的内存对齐2.6 结构体传参2.7 结构体实现位段 三、枚举3.1 概念3.2 定义3.3 枚举的优点3.3.1 提高代码的可读性3.3.2 防止…...

机器学习8-卷积和卷积核1

机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…...

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现&#xff1b; 三&#xff0e;三、编写应用程序&#xff1b; 此文主要是实现应用的主要编码工作。 1、 分层&#xff1b; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示&#xff1b;Helper主要是链接UI和数据库操作的中间层&#xff1b;DAL为对数据库的操…...

PHP 中 `foreach` 循环结合引用使用时可能出现的问题

问题背景 假设你有如下 PHP 代码&#xff1a; <?php $arr array(1, 2, 3, 4);// 使用引用遍历并修改数组元素 foreach ($arr as &$value) {$value $value * 2; } // 此时 $arr 变为 array(2, 4, 6, 8)// 再使用非引用方式遍历数组 foreach ($arr as $key > $val…...

go gin配置air

一、依赖下载 安装最新&#xff0c;且在你工作区下进行安装&#xff0c;我的是D:/GO是我的工作区&#xff0c;所有项目都在目录下的src&#xff0c; go install github.com/air-verse/airlatest 如果出现类似报错&#xff1a; 将图中第三行 github.com/air-verse/air 替换最…...

在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别

在 Spring Boot 项目中&#xff0c;bootstrap.yml 和 application.yml 是两个常用的配置文件&#xff0c;它们的作用和加载顺序有所不同。以下是它们的详细说明&#xff1a; 1. bootstrap.yml 作用&#xff1a; bootstrap.yml 是 Spring Cloud 项目中的配置文件&#xff0c;用于…...

Excel中Address函数的用法

Excel中Address函数的用法 1. 函数详细讲解1.1 函数解释1.2 使用格式1.3 参数定义1.4 要点 2. 实用演示示例2.1 函数需求2.2 公式编写2.3 计算过程 3. 注意事项4. 文档下载5. 其他文章6. 获取全部Excel练习素材快来试试吧&#x1f970; 函数练习素材&#x1f448;点击即可进行下…...

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...