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

redis的缓存

redis的缓存

  • 一.缓存简介
    • 1.缓存
    • 2.redis作为数据库(MySQL)缓存的原因
  • 二.缓存更新策略
    • 1.定期生成
    • 2.实时生成
    • 3.内存淘汰策略
      • 1)FIFO(First In First Out) 先进先出
      • 2)LRU(Least Recently Used)淘汰最久未使用的
      • 3)LFU(Least Frequently Used)淘汰访问次数最少的
      • 4)Random随机淘汰
  • 三.缓存相关问题简介
    • 1.缓存预热
    • 2.缓存穿透
    • 3.缓存雪崩
    • 4.缓存击穿

一.缓存简介

1.缓存

缓存(Cache)是计算机系统中用于 加速数据访问 的核心技术,通过在 高速存储介质 中临时存储数据的副本,减少对慢速存储层(如磁盘、数据库、远程服务)的直接访问,从而提升系统整体性能。

Redis 缓存是一种基于内存的高性能键值存储系统,专为加速数据访问、降低后端负载而设计。它通过将高频访问的数据存储在内存中,实现 微秒级响应,同时支持复杂数据结构和持久化机制,使其成为现代分布式系统中 核心缓存层 的解决方案。

2.redis作为数据库(MySQL)缓存的原因

在一个网站中,我们经常会使用关系型数据库(比如MySQL)来存储数据。关系型数据库虽然功能强大,但是有⼀个很大的缺陷,就是性能不高(换而言之,进行一次查询操作消耗的系统资源较多).

关系型数据库性能不高的原因:

  1. 数据库把数据存储在硬盘上,硬盘的IO速度并不快。尤其是随机访问。
  2. 如果查询不能命中索引,就需要进行表的遍历,这就会大大增加硬盘IO次数。
  3. 关系型数据库对于SQL的执行会做⼀系列的解析,校验,优化工作。
  4. 如果是⼀些复杂查询,比如联合查询,需要进行笛卡尔积操作,效率更是降低很多。

因此,如果访问数据库的并发量比较高,对于数据库的压力是很大的,很容易就会使数据库服务器宕机。

宕机的原因如下:

服务器每次处理⼀个请求,都是需要消耗⼀定的硬件资源的。所谓的硬件资源包括不限于CPU,内存,硬盘,网络带宽…⼀个服务器的硬件资源本身是有限的。⼀个请求消耗⼀份资源,请求多了,自然把资源就耗尽了。后续的请求没有资源可用,自然就无法正确处理。更严重的还会导致服务器程序的代码出现崩溃。

解决数据库能够承担更大的并发量,可以通过两个核心思路:

  • 开源:引入更多的机器,部署更多的数据库实例,构成数据库集群。(主从复制,分库分表等…)
  • 节流:引入缓存,使用其他的方式保存经常访问的热点数据,从而降低直接访问数据库的请求数量

此时Redis就是⼀个用来作为数据库缓存的常见方案:

Redis访问速度比MySQL快很多。或者说处理同⼀个访问请求,Redis消耗的系统资源比MySQL少很多。因此Redis能支持的并发量更大。

  • Redis数据在内存中,访问内存比硬盘快很多。
  • Redis只是⽀持简单的key-value存储,不涉及复杂查询的那么多限制规则。

客户端访问业务服务器,发起查询请求

  • 业务服务器先查询Redis,看想要的数据是否在Redis中存在
  • 如果已经在Redis中存在了,就直接返回。此时不必访问MySQL了
  • 如果在Redis中不存在,再查询MySQL
    在这里插入图片描述

二.缓存更新策略

1.定期生成

每隔⼀定的周期(比如⼀天/⼀周/⼀个月),对于访问的数据频次进行统计。挑选出访问频次最高的前N%的数据。

以Java小摊为栗子:

如果我没要拿到offer的话,我去摆一个Java小摊,那我肯定就要会炒米饭,炒河粉,炒米饭,炒面……那么此时我们就可以通过一定周次来对于食材的用来频次来进行统计,毕竟来买的人大部分都是住在附近的人、学生或者是一些上班族,那么此时就可以通过食材的用量来知道使用频次最高的那些食材即可,这些食材也就会成为“热点食材”。

上述例子仅属于个人观点,而且我也不想去炒饭呀,倒也不是炒饭不好,而是我想去开发自己的玩意儿,感觉更有意思点,如果上述栗子有不切实际的地方,还希望大佬们指正。

优点:
上述过程,实际上实现起来比较简单,过程更可控(缓存中的存在的东西都是固定的),方便排查问题。

缺点:
实时性不够,如果出现一些突发性事件,有一些本来就不是热词的内容成为了热词,新的热词就可能后面的数据库带来较大的压力。

2.实时生成

先给缓存设定容量上限(可以通过Redis配置文件的 maxmemory 参数设定)接下来把用户每次查询分为以下两种情况:

  • 如果在Redis查到了,就直接返回。
  • 如果Redis中不存在,就从数据库查,把查到的结果同时也写⼊Redis。如果缓存已经满了(达到上限),就触发缓存淘汰策略,把⼀些"相对不那么热门"的数据淘汰掉。按照上述过程,持续⼀段时间之后Redis内部的数据自然就是"热门数据"了。

3.内存淘汰策略

1)FIFO(First In First Out) 先进先出

把缓存中存在时间最久的(也就是先来的数据)淘汰掉。

2)LRU(Least Recently Used)淘汰最久未使用的

记录每个key的最近访问时间。把最近访问时间最老的key淘汰掉.

3)LFU(Least Frequently Used)淘汰访问次数最少的

记录每个key最近⼀段时间的访问次数,把访问次数最少的淘汰掉.

4)Random随机淘汰

从所有的key中抽取幸运儿被随机淘汰掉。

理解上述几种淘汰策略(栗子纯属瞎编,无任何意思)

想象你是个皇帝,有后宫佳丽三千。虽然你是"真龙天子",但是经常宠幸的妃子也就那么寥寥数⼈(精⼒有限)后宫佳丽三千,相当于数据库中的全量数据。经常宠幸的妃子相当于热点数据,是放在缓存的。今年选秀的一批新的小主,其中有⼀个被你看上了。宠信新⼈,自然就需要有旧⼈被冷落。到底谁是要被冷落的⼈呢?

  • FIFO:皇后是最先受宠的。现在已经年老色衰了。皇后失宠。
  • LRU:统计最近宠幸时间。皇后(⼀周前),熹妃(昨天),安答应(两周前),华妃(一个月前)。华妃失宠.
  • LFU:统计最近一个月的宠幸次数,皇后(3次),熹妃(15次),安答应(1次),华妃(10次)。安答应失宠
  • Random:随机挑一个妃子失宠

此处的淘汰策略可以自己实现,也可以使用redis的配置文件实现,因为redis提供了内置的淘汰策略:

  • volatile-lru:当内存不足以容纳新写入数据时,从设置了过期时间的key中使用LRU(最近最少使用)算法进性淘汰。
  • allkeys-lru:当内存不足以容纳新写入数据时,从所有key中使用LRU(最近最少使用)算法进行淘汰
  • volatile-lfu:4.0版本新增,当内存不足以容纳新写⼊数据时,在过期的key中,使用LFU算法进行删除key。
  • allkeys-lfu:4.0版本新增,当内存不足以容纳新写入数据时,从所有key中使用LFU算法进行淘汰
  • volatile-random:当内存不足以容纳新写入数据时,从设置了过期时间的key中,随机淘汰数据.
  • allkeys-random:当内存不足以容纳新写入数据时,从所有key中随机淘汰数据
  • volatile-ttl:在设置了过期时间的key中,根据过期时间进行淘汰,越早过期的优先被淘汰。(相当于FIFO,只不过是局限于过期的key)
  • noeviction:默认策略,当内存不足以容纳新写入数据时,新写入操作会报错。

三.缓存相关问题简介

1.缓存预热

使用Redis作为MySQL的缓存的时候,当Redis刚刚启动,或者Redis大批key失效之后,此时由于Redis自身相当于是空着的,没啥缓存数据,那么MySQL就可能直接被访问到,从而造成较大的压力。因此就需要提前把热点数据准备好,直接写入到Redis中。使Redis可以尽快为MySQL撑起保护伞。

2.缓存穿透

访问的key在Redis和数据库中都不存在。此时这样的key不会被放到缓存上,后续如果仍然在访问该key,依然会访问到数据库。这就会导致数据库承担的请求太多,压力很大。这种情况称为缓存穿透。

产生的原因:
原因可能有几种:

  • 业务设计不合理。比如缺少必要的参数校验环节,导致非法的key也被进行查询了。
  • 开发/运维误操作。不小心把部分数据从数据库上误删了。
  • 黑客恶意攻击。

解决

  • 针对要查询的参数进行严格的合法性校验。比如要查询的key是用户的手机号,那么就需要校验当前key是否满足⼀个合法的手机号的格式。
  • 针对数据库上也不存在的key,也存储到Redis中,比如value就随便设成⼀个"".避免后续频繁访问数据库。
  • 使用布隆过滤器先判定key是否存在,再真正查询。

3.缓存雪崩

短时间内大量的key在缓存上失效,导致数据库压力骤增,甚至直接宕机。本来Redis是MySQL的一个护盾,帮MySQL抵挡了很多外部的压力。一旦护盾突然失效了,MySQL自身承担的压力骤增,就可能直接崩溃。

产生原因
大规模key失效,可能性主要有两种:

  • Redis宕机或者redis集群模式下大量节点宕机
  • Redis上的大量的key同时过期。为啥会出现大量的key同时过期?这种很可能是短时间内在Redis上缓存了大量的key,并且设定了相同的过期时间。

解决

  • 部署高可用的Redis集群,并且完善监控报警体系。
  • 不给key设置过期时间或者设置过期时间的时候添加随机时间因子。

4.缓存击穿

相当于缓存雪崩的特殊情况。针对热点key,突然过期了,导致大量的请求直接访问到数据库上,甚至引起数据库宕机。

解决

  • 基于统计的方式发现热点key,并设置永不过期。
  • 进行必要的服务降级。例如访问数据库的时候使用分布式锁,限制同时请求数据库的并发数。

相关文章:

redis的缓存

redis的缓存 一.缓存简介1.缓存2.redis作为数据库(MySQL)缓存的原因 二.缓存更新策略1.定期生成2.实时生成3.内存淘汰策略1)FIFO(First In First Out) 先进先出2)LRU(Least Recently Used)淘汰最久未使用的3)LFU(Least…...

字符串与相应函数(上)

字符串处理函数分类 求字符串长度:strlen长度不受限制的字符串函数:strcpy,strcat,strcmp长度受限制的字符串函数:strncpy,strncat,strncmp字符串查找:strstr,strtok错误信息报告:strerror字符操作,内存操作函数&…...

【微知】Mellanox网卡网线插入后驱动的几个日志?(Cable plugged;IPv6 ... link becomes ready)

概要 本文是一个简单的信息记录。记录的是当服务器网卡的光模块插入后内核的日志打印。通过这种日志打印,可以在定位分析问题的时候,知道进行过一次模块插拔。 日志 截图版: 文字版: [32704.121294] mlx5_core 0000:01:00.0…...

spring security oauth2.0的四种模式

OAuth 2.0 定义了 4 种授权模式(Grant Type),用于不同场景下的令牌获取。以下是每种模式的详细说明、适用场景和对比: 一、授权码模式(Authorization Code Grant) 适用场景 • Web 应用(有后端…...

MyBatis-Plus 核心功能

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、条件构造器1、核心 Wrapper 类型基础查询示例SQL 查询使用 QueryWrapper 实现查询 更新操作示例场景一:基础更新SQL 查询使用 QueryWrapper 实现更新…...

阿里云实时计算Flink版产品体验测评

阿里云实时计算Flink版产品体验测评 什么是阿里云实时计算Flink应用场景实时计算Flink&自建Flink集群性价比开发效率运维管理企业安全 场景落地 什么是阿里云实时计算Flink 实时计算Flink大家可能并不陌生,在实时数据处理上,可能会有所接触&#xf…...

少儿编程 scratch四级真题 2025年3月电子学会图形化编程等级考试Scratch四级真题解析(判断题)

2025年3月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 11、小圆点角色的程序如下左图所示,程序运行后的效果如下右图所示,自制积木中又调用了自己,这种算法叫做递归。 答案&a…...

【连载3】基础智能体的进展与挑战综述

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 2. 认知 人类认知是一种复杂的信息处理系统,它通过多个专门的神经回路协调运行…...

Schaefer 400图谱

图谱下载: https://github.com/ThomasYeoLab/CBIG/tree/master/stable_projects/brain_parcellation/Schaefer2018_LocalGlobal/Parcellations/MNI 图 (第一行)显示了 Yeo et al. (2011) 的 7 网络和 17 网络分包。图…...

通过uri获取文件路径手机适配

青铜版本 return contentResolver.query(this, arrayOf(MediaStore.MediaColumns.DATA), null, null).let {if (it?.moveToFirst() true) {val columnIndex it.getColumnIndex(MediaStore.MediaColumns.DATA)val path it.getString(columnIndex)it.close()return path}&quo…...

Ubuntu 22.04 完美安装 ABAQUS 教程:从零到上手,解决兼容问题

教程概述与安装准备 本教程详细介绍了在 Ubuntu 22.04 系统上安装 ABAQUS 2023 及 ifort 2021 的步骤,并实现用户子程序的链接。教程同样适用于 ABAQUS 2021(需相应调整文件名和路径)以及 Ubuntu 18.04 至 22.04 系统,尽管未在所有版本上测试。需要注意的是,Intel 的 One…...

雷池WAF防火墙如何构筑DDoS防护矩阵?——解读智能语义解析对抗新型流量攻击

本文深度解析雷池WAF防火墙在DDoS攻防中的技术突破,通过智能语义解析、动态基线建模、协同防护体系三大核心技术,实现从流量特征识别到攻击意图预判的进化。结合2023年金融行业混合攻击防御案例,揭示新一代WAF如何通过协议级漏洞预判与AI行为…...

Linux权限理解

1.shell命令以及运行原理 下面来介绍一个话题,关于指令的运行原理,这里先简单理解就可以。当我们登上Linux后: yxx这里称之为用户名,VM-8-2-centos是主机名,~是当前目录,$是命令行提示符。 其中我们把上面的…...

使用labelme进行实例分割标注

前言 最近在学习实例分割算法,参考b站视频课教程,使用labelme标注数据集,在csdn找到相关教程进行数据集格式转换,按照相关目标检测网络对数据集格式的训练要求划分数据集。 1.使用labelme标注图片 在网上随便找了几张蘑菇图片&am…...

策略模式实现 Bean 注入时怎么知道具体注入的是哪个 Bean?

Autowire Resource 的区别 1.来源不同:其中 Autowire 是 Spring2.5 定义的注解,而 Resource 是 Java 定义的注解 2.依赖查找的顺序不同: 依赖注入的功能,是通过先在 Spring IoC 容器中查找对象,再将对象注入引入到当…...

PromptUp 网站介绍:AI助力,轻松创作

1. 网站定位与核心功能 promptup.net 可能是一个面向 创作者、设计师、营销人员及艺术爱好者 的AI辅助创作平台,主打 零门槛、智能化的内容生成与优化。其核心功能可能包括: AI艺术创作:通过输入关键词、选择主题或拖放模板,快速生成风格多样的数字艺术作品(如插画、海报…...

软件架构评估利器:质量效用树全解析

质量效用树是软件架构评估中的一种重要工具,它有助于系统地分析和评估软件架构在满足各种质量属性方面的表现。以下是关于质量效用树的详细介绍: 一、定义与作用 质量效用树是一种以树形结构来表示软件质量属性及其相关效用的模型。它将软件的质量目标…...

XILINX DDR3专题---(1)IP核时钟框架介绍

1.什么是Reference Clock,这个时钟一定是200MHz吗? 2.为什么APP_DATA是128bit,怎么算出来的? 3.APP :MEM的比值一定是1:4吗? 4.NO BUFFER是什么意思? 5.什么情况下Reference Clock的时钟源可…...

ubuntu 2204 安装 vcs 2018

安装评估 系统 : Ubuntu 22.04.1 LTS 磁盘 : ubuntu 自身占用了 9.9G , 按照如下步骤 安装后 , 安装后的软件 占用 13.1G 仓库 : 由于安装 libpng12-0 , 添加了一个仓库 安装包 : 安装了多个包(lsb及其依赖包 libpng12-0)安装步骤 参考 ubuntu2018 安装 vcs2018 安装该…...

Python与去中心化存储:从理论到实战的全景指南【无标题】

Python与去中心化存储:从理论到实战的全景指南 随着区块链技术和Web3理念的兴起,去中心化存储逐渐成为构建新型互联网的核心模块之一。传统中心化存储的模式存在易被攻击、单点故障和高昂成本等问题,而去中心化存储通过分布式架构实现了更高的安全性、可靠性和数据透明度。…...

C++语言程序设计——01 C++程序基本结构

目录 编程语言一、C程序执行过程二、C基础框架三、输出语句cout换行 四、注释方法 编程语言 我们知道c是一门编程语言,它是在c语言的基础上发展而来,添加了类、对象、继承、多态等概念,我们可以称为它是一种面向对象编程的语言。 不过在学习…...

Unity UI中的Pixels Per Unit

Pixels Per Unit在图片导入到Unity的时候,将图片格式设置为Sprite的情况下会出现,其意思是精灵中的多少像素对应世界中的一个单位,默认是100 1. 对于在世界坐标中 在世界坐标中,一般对于Sprite的应用是Sprite Renderer组件 使…...

(十八)安卓开发中的后端接口调用详讲解

在安卓开发中,后端接口调用是连接移动应用与服务器的重要环节,用于实现数据的获取、提交和处理。本文将详细讲解安卓开发中后端接口调用的步骤,结合代码示例和具体的使用场景,帮助你全面理解这一过程。 什么是后端接口&#xff1f…...

使用freebsd-update 升级FreeBSD从FreeBSD 14.1-RELEASE-p5到FreeBSD 14.2-RELEASE

使用freebsd-update 升级FreeBSD从FreeBSD 14.1-RELEASE-p5到FreeBSD 14.2-RELEASE 先升级小版本 准备升级前,先把当前的小版本升级到顶,比如现在是FreeBSD 14.1-RELEASE-p5,先升级到最新的14.1版本,使用命令: # fr…...

基础排序算法(三傻排序)

1. 选择排序 原理:每次从未排序部分选出最小(或最大)元素,放到已排序部分的末尾。时间复杂度:O(n),效率低但实现简单,适合小规模数据。 //选择排序public static void selectSort(int[] arr){i…...

五分钟了解智能体

在2025年人工智能技术全面渗透社会的背景下,“智能体”(Agent)已成为推动第四次工业革命的核心概念之一。从自动驾驶汽车到医疗诊断系统,从智能家居中枢到金融量化交易平台,智能体正在重构人类与技术交互的方式。本文将…...

【机器学习】笔记| 通俗易懂讲解:生成模型和判别模型|01

博主简介:努力学习的22级计算机科学与技术本科生一枚🌸博主主页: Yaoyao2024往期回顾:【科研小白系列】这些基础linux命令,你都掌握了嘛?每日一言🌼: “脑袋想不明白的,就用脚想”—…...

Jieba分词的原理及应用(三)

前言 “结巴”中文分词:做最好的 Python 中文分词组件 上一篇文章讲了使用TF-IDF分类器范式进行企业级文本分类的案例。其中提到了中文场景不比英文场景,在喂给模型之前需要进行分词操作。 分词的手段有很多,其中最常用的手段还是Jieba库进行…...

神经网络背后的数学原理

神经网络背后的数学原理 数学建模神经网络数学原理 数学建模 标题民科味道满满。其实这篇小短文就是自我娱乐。 物理世界是物种多样,千姿百态。可以从不同的看待眼中的世界,包括音乐、绘画、舞蹈、雕塑等各种艺术形式。但这些主观的呈现虽然在各人眼中…...

常用图像滤波及色彩调节操作(Opencv)

1. 常用滤波/模糊操作 import cv2 import numpy as np import matplotlib.pyplot as plotimg cv2.imread("tmp.jpg") img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img_g cv2.GaussianBlur(img, (7,7), 0) img_mb cv2.medianBlur(img, ksize7) #中指滤波 img_bm …...

FFMPEG和opencv的编译

首先 sudo apt-get update -qq && sudo apt-get -y install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libmp3lame-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-de…...

用户登录不上linux服务器

一般出现这种问题,重新用root用户修改lsy用户的密码即可登录,但是当修改了还是登录不了的时候,去修改一个文件用root才能修改, 然后在最后添加上改用户的名字,例如 原本是只有user的,现在我加上了lsy了&a…...

【项目管理】第11章 项目成本管理-- 知识点整理

相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 ​ ​ (二)知识笔记​ 第11章 项目成本管理 ​ 1.管理基础…...

Python中的strip()

文章目录 基本语法:示例:1. 默认移除空白字符:2. 移除指定字符:3. 不修改原字符串: 相关方法:示例: 注意事项: 在 Python 中, strip() 是一个字符串方法,用于…...

设计模式 Day 9:命令模式(Command Pattern)完整讲解与实战应用

🔄 回顾 Day 8:策略模式 在 Day 8 中我们讲解了策略模式: 用于封装多个可切换的算法逻辑,让调用者在运行时选择合适的策略。它强调的是“行为选择”,是针对“算法或行为差异”而设计。通过 PaymentStrategy、路径规划…...

【正点原子】STM32MP257 同构多核架构下的 ADC 电压采集与处理应用开发实战

在嵌入式系统中,ADC模拟电压的读取是常见的需求。如何高效、并发、且可控地完成数据采集与处理?本篇文章通过双线程分别绑定在 Linux 系统的不同 CPU 核心上,采集 /sys/bus/iio 接口的 ADC 原始值与缩放系数 scale,并在另一个核上…...

区块链从专家到小白

文章目录 含义应用场景典型特征 含义 以非对称加密算法为基础。 每个**区块(Block)**包含: ​交易数据​(如转账记录、合约内容)。 ​时间戳​(记录生成时间)。 ​哈希值​(当前区…...

记录centos8安装宝塔过程(两个脚本)

1、切换系统源&#xff08;方便使用宝塔安装脚本下载&#xff09; bash <(curl -sSL https://linuxmirrors.cn/main.sh) 2、宝塔安装脚本在宝塔的官网 宝塔面板下载&#xff0c;免费全能的服务器运维软件 根据自己的系统选择相应的脚本 urlhttps://download.bt.cn/insta…...

DAY 42 leetcode 151--哈希表.反转字符串中的单词

题号151 给你一个字符串 s &#xff0c;请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 我的解法 暴力解法&#xff0c;先将String转为字…...

[VTK] 四元素实现旋转平移

VTK 实现旋转&#xff0c;有四元数的方案&#xff0c;也有 vtkTransform 的方案&#xff1b;主要示例代码如下&#xff1a; //构造旋转四元数vtkQuaterniond rotation;rotation.SetRotationAngleAndAxis(vtkMath::RadiansFromDegrees(90.0),0.0, 1.0, 0.0);//构造旋转点四元数v…...

AI大模型:(二)2.2 分词器Tokenizer

目录 1.分词技术的发展 2.分词器原理 2.1.基于词分词 2.2.基于字符分词 2.3.基于子词分词 3.手搓Byte-Pair Encoding (BPE)分词及训练 3.1.Byte-Pair Encoding (BPE)分词原理 3.2.手搓Byte-Pair Encoding (BPE)分词器 4.如何选择已有的分词器 1. 常见子词分词器及特点…...

codeforces A. Simple Palindrome

目录 题面 代码 题面 A. 简单回文串 每个测试用例时间限制&#xff1a;1 秒 每个测试用例内存限制&#xff1a;256 兆字节 纳雷克要在幼儿园陪一些两岁的孩子度过两个小时。他想教孩子们竞技编程&#xff0c;他们的第一堂课是关于回文串的。 纳雷克发现孩子们只认识英文字母…...

Linux 进程基础(一):冯诺依曼结构

文章目录 一、冯诺依曼体系结构是什么&#xff1f;&#x1f9e0;二、冯诺依曼体系为何成为计算机组成的最终选择&#xff1f;&#xff08;一&#xff09;三大核心优势奠定主流地位&#xff08;二&#xff09;对比其他架构的不可替代性 三、存储分级&#xff1a;速度与容量的平衡…...

向量存储(VectorStore)详解

一、向量存储的核心概念 向量存储&#xff08;VectorStore&#xff09;是一种用于存储和检索高维向量数据的数据库或存储解决方案&#xff0c;特别适用于处理经过嵌入模型转化后的数据。与传统关系数据库不同&#xff0c;VectorStore 执行的是相似性搜索&#xff0c;而非精确匹…...

HCIP(网络类型)

网络类型概述 网络类型主要基于数据链路层使用的协议不同&#xff0c;导致数据包封装方式不同&#xff0c;工作方式也有所区别。根据这些特点&#xff0c;网络可以被分类为以下几种类型&#xff1a; MA网络&#xff08;多点接入网络&#xff09;&#xff1a;允许同时接入多台…...

MTCNN 人脸识别

前言 此处介绍强大的 MTCNN 模块&#xff0c;给出demo&#xff0c;展示MTCNN 的 OOP&#xff0c; 以及ROS利用 C 节点&#xff0c;命令行调用脚本执行实际工作的思路。 MTCNN Script import argparse import cv2 from mtcnn import MTCNN import osclass MTCNNProcessor:def…...

一文解析DeepSeek R1模型

1. DeepSeek R1-Zero 在训练DeepSeek R1之前&#xff0c;深度求索团队尝试做了一个DeepSeek R1-Zero的模型&#xff0c;只进行强化学习而不需要监督微调&#xff0c;以此来强化模型自我推理的能力。 通过下图回顾下ChatGPT的做法&#xff1a;首先SFT&#xff0c;然后训练奖励…...

SpringMVC基础三(json)

乱码处理 编写一个表单&#xff1a; 编写EncodingController控制类 测试&#xff1a; 此乱码是在从前端传送到test方法时就已经乱了。 采用过滤器解决乱码 在web.xml中配置SpringMVC的乱码过滤器 <filter><filter-name>encoding</filter-name><filter…...

spring boot大文件与多文件下载

一、简单大文件下载&#xff1a; /*** 下载大文件* param path 路径* param fileName 文件名* return* throws IOException*/ public static ResponseEntity<InputStreamResource> downloadFile(String path, String fileName) throws IOException {Path filePath Path…...

事务隔离级别和MVCC

事务隔离级别 mysql是一个客户端/服务器架构的软件&#xff0c;对于同一个服务器来说&#xff0c;可以有多个客户端与之连接。每个客户端与服务器连接后就形成了一个会话。每个客户端都可以在自己的会话中向服务器发出请求语句&#xff0c;一个请求语句可能是某个事务的一部分…...