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

redis核心命令全局命令 + redis 常见的数据结构 + redis单线程模型

文章目录

  • 一. 核心命令
    • 1. set
    • 2. get
  • 二. 全局命令
    • 1. keys
    • 2. exists
    • 3. del
    • 4. expire
    • 5. ttl
    • 6. type
  • 三. redis 常见的数据结构及内部编码
  • 四. redis单线程模型

一. 核心命令

1. set

set key value
key 和 value 都是string类型的
在这里插入图片描述
对于key value, 不需要加上引号, 就是表示字符串类型, 加上也可以
redis中, 不区分大小写

2. get

get key
在这里插入图片描述
如果key不存在, 返回nil, 就是null的意思
在这里插入图片描述

二. 全局命令

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

1. keys

keys pattern
pattern就是通过一些特殊符号(通配符), 来描述key的模样, 匹配上的key就能被查询出来
在这里插入图片描述
keys的时间复杂度是O(N)
在生产环境上, 一般会禁止使用keys命令, 尤其是keys *

  1. 办公环境
  2. 开发环境 后端程序开发的环境, 硬件配置高
  3. 测试环境 测试工程师使用的
    4.线上环境/生产环境 外界用户可以访问到的

2. exists

在这里插入图片描述

判断key是否存在, 返回key存在的个数(针对多个key是有用的)
时间复杂度: O(1)
redis组织这些key就是按照哈希表的方式来组织的

redis自身的这些键值对, 是通过哈希表的方式来组织的, redis具体的某个值, 又可以是多种数据结构
在这里插入图片描述

3. del

删除指定的key, 可以一次删除一个或多个
在这里插入图片描述
返回删除key的个数(针对多个key是有用的)
时间复杂度: O(1)
在这里插入图片描述
如果redis作为缓存, redis中存的是热点数据, 全量数据是在mysql中存着, 那么redis使用del, 删除几个key, 一般来说问题不大, 相比之下, 如果是mysql数据, 哪怕误删了一个数据, 都可能是影响很大的
如果redis作为数据库, 此时误删数据影响就大了

4. expire

给指定的key设置过期时间, 单位是秒, key存活超出这个指定的值, 就会被自动删除
必须是针对已经存在的key设置过期时间

在这里插入图片描述
(pexpire key 毫秒)

返回0设置失败, 返回1设置成功
时间复杂度: O(1)
在这里插入图片描述

5. ttl

time to live 查看当前key的过期时间还剩多少
在这里插入图片描述
(pttl key )
返回值: 剩余过期时间。-1 表示没有关联过期时间,-2 表示 key 不存在
时间复杂度: O(1)
在这里插入图片描述

redis 的 key 的过期策略是怎么实现的?
redis的整体策略是: 定期删除惰性删除 相结合
惰性删除: 假设key已经过期, 但暂时还没有删除, 后面如果有一次访问, 正好用好这个key, 于是这个访问就会让redis服务器触发删除key的操作, 同时再返回一个nil
定期删除: 每次抽取一部分, 进行验证过期时间, 保证验证的过程足够快
(因为redis是单线程的程序, 如果扫描过期key消耗的时间太多了, 就可能导致正常处理请求命令就阻塞了)
上述过期策略, 任然可能有很多过期的key被残留, redis又提供了一系列的内存淘汰策略

6. type

返回key对应value的数据类型
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三. redis 常见的数据结构及内部编码

在这里插入图片描述
redis在底层实现这些数据结构的时候, 会在源码层面, 针对上述实现进行特定的优化(编码方式可能有变数), 达到节省时间/空间 的效果
同一个数据类型, 背后可能编码方式是不同的, 会根据具体场景优化
redis自动适应, 程序猿使用时是感觉不到的
在这里插入图片描述

  1. raw
    最基本的字符串, 底层就是一个byte数组在存放数据
  2. int
    当value是个整数的时候, 此时可能redis会直接使用int来存储数据
    redis通常也可以用来实现"计数"这样的功能
  3. embstr
    针对短字符串进行的特殊优化
  4. hashtable
    最基本的哈希表
  5. ziplist
    压缩列表, 在哈希表中元素比较少的时候, 并且value的值长度比较短, 可能会优化成ziplist

压缩: 压缩的本质, 是针对数据进行重新编码, 不同的数据有不同的特点, 结合这些特点进行精妙的设计, 重新编码后, 就能够缩小体积, 但付出的代价就是读写速度慢

  1. linkelist
    链表
  2. ziplist
    压缩列表, 在列表中元素比较少的时候, 可能会优化成ziplist
    (从redis3.2开始, 引入了新的quicklist, 代替上面两个)
  3. hashtable
    最基本的哈希表
  4. inset
    集合里都是整数
  5. skiplist
    跳表, 也是链表, 不同于普通的链表, 每个节点上有多个指针域, 巧妙地搭配这些指针域的指向, 就可以做到, 从跳表上查询元素的时间复杂度是O(logN)
  6. ziplist
    压缩列表, 在列表中元素比较少的时候, 可能会优化成ziplist

object encoding mylist
可以查看底层的编码方式

在这里插入图片描述

四. redis单线程模型

我们知道, 如果多个客户端, 同时对服务器发起请求, 可能会引起线程不安全问题
但是, redis服务器不会发生

redis服务器实际上是单线程模型, 保证了当前收到的多个请求是串行执行的
多个请求同时到达redis服务器, 也是要先在队列中排队, 等待redis服务器一个一个取出里面的命令再执行
微观上讲, redis服务器是串行/顺序执行这么多命令的

总结: redis只使用一个线程, 来处理所有的命令请求, 但不是说redis服务器进程内部真的只有一个线程, 其他也有线程, 多个线程是在处理网络IO

redis之所以能够使用单线程工作, 是因为redis的核心业务逻辑, 都是短平快的, 不太消耗cpu资源, 单线程可以处理
但单线程带来的弊端就是, 必须特别小心, 某个操作占用时间长, 阻塞其他命令执行

redis虽然是单线程模型, 为啥效率那么高, 速度那么快?

  1. redis访问内存, 数据库访问硬盘
  2. redis的核心业务, 比数据库的核心功能更简单(redis干的活少, 提供的功能相比mysql也是少了不少)
  3. 单线程模型, 避免了一些不必要的线程竞争开销
  4. 处理网络IO, 使用了epoll这样的IO多路复用机制

IO多路复用:
概念: 一个线程, 管理多个socket
针对TCP来说, 服务器每次要服务一个客户端, 都需要给客户端安排一个socket
一个服务器多个客户端, 同时就有多个socket
很多情况下, 每个客户端和服务器之间的通信没有那么频繁, 此时, 这么多socket大部分时间是静默的, 上面是没有数据需要传输的
所以, 同一时刻, 只有少数socket活跃, 所以引入IO多路复用, 一个线程处理多个socket

IO多路复用, 是操作系统给程序猿提供的机制, 提供了一套API, 内部的功能都是操作系统内核实现的
Linux上提供了IO多路复用, 主要有三套: select, poll, epoll
epoll 时间通知/回调机制

相关文章:

redis核心命令全局命令 + redis 常见的数据结构 + redis单线程模型

文章目录 一. 核心命令1. set2. get 二. 全局命令1. keys2. exists3. del4. expire5. ttl6. type 三. redis 常见的数据结构及内部编码四. redis单线程模型 一. 核心命令 1. set set key value key 和 value 都是string类型的 对于key value, 不需要加上引号, 就是表示字符串…...

Java后端请求想接收多个对象入参的数据方法

在Java后端开发中,如果我们希望接收多个对象作为HTTP请求的入参,可以使用Spring Boot框架来简化这一过程。Spring Boot提供了强大的RESTful API支持,能够方便地处理各种HTTP请求。 1.示例:使用Spring Boot接收包含多个对象的HTTP…...

傅里叶变换FT——DFT——FFT(三者之间的关系)

FT 周期函数 f(t) 的傅里叶变换实质上是将函数信号分解为不同频率、不同幅值的正、余弦信号,如下图所示。换言之,无数个不同频率,不同幅值的正、余弦信号来不断逼近周期函数 f(t) 。 分解出的这些信号的频率都是基频 ω0 的整数倍&#xff0…...

华为HarmonyOS 让应用快速拥有账号能力 -- 2 获取用户头像昵称

场景介绍 如应用需要完善用户头像昵称信息,可使用Account Kit提供的头像昵称授权能力,用户允许应用获取头像昵称后,可快速完成个人信息填写。以下只针对Account kit提供的头像昵称授权能力进行介绍,若要获取头像还可通过场景化控…...

git命令-基本使用

#git安装后-指定名称和邮箱: $ git config --global user.name "Your Name" $ git config --global user.email "emailexample.com" #查看远程分支: git branch -a #查看本地分支: git branch #切换分支: git checkout…...

学习笔记050——SpringBoot学习1

文章目录 Spring Boot1、Spring Boot 配置文件2、Spring Boot 整合视图层3、Spring Boot 整合持久层 Spring Boot Spring Boot 可以快速构建基于 Spring 的 Java 应用,可以快速整合各种框架,不需要开发者进行配置,Spring Boot 会实现自动装配…...

【前端开发】微信裁剪图片上传

Cropper.js&#xff1a; 一款基于 JavaScript 的开源图片裁剪神器&#xff0c;支持图片裁剪、缩放、旋转 HTML页面引用&#xff1a; css&#xff1a;<link rel"stylesheet" type"text/css" href"css/cropper.css" /> js&#xff1a;<sc…...

【Golang】WaitGroup 实现原理

文章目录 前言一、介绍二、实现原理三、使用方式四、总结 前言 在并发编程中&#xff0c;协调多个 goroutine 的执行顺序和同步是一个常见的需求。Golang 提供了 sync.WaitGroup 来简化这一过程。WaitGroup 允许主 goroutine 等待一组 goroutine 完成工作。本文将详细介绍 syn…...

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章

在人工智能领域&#xff0c;我们正见证着一场革命性的变革。传统的AI助手&#xff0c;如ChatGPT&#xff0c;需要明确的指令才能执行任务。但现在&#xff0c;清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent&#xff0c;它能够主动观察环境…...

框架模块说明 #05 权限管理_03

背景 权限设计可以分为两个主要方面&#xff1a;操作权限和数据权限。前两篇文章已经详细介绍了操作权限的设计与实现&#xff0c;以及如何将其与菜单关联起来的具体方法。本篇将聚焦于数据权限&#xff0c;为您深入讲解相关的设计与实现方式。 全局开关 Value("${syst…...

autogen-agentchat 0.4.0.dev8版本的安装

1. 安装命令 pip install autogen-agentchat0.4.0.dev8 autogen-ext[openai]0.4.0.dev82. 版本检查 import autogen_agentchat print(autogen_agentchat.__version__)0.4.0.dev8import autogen_ext print(autogen_ext.__version__)0.4.0.dev83. 第一个案例 使用 autogen-age…...

JavaScript实现tab栏切换

JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡&#xff08;Tab&#xff09;切换功能。它通过操作 HTML 元素的类名&#xff08;class&#xff09;来控制哪些选项卡&#xff08;Tab&#xff09;和对应的内容板块显示&#xff0c;哪些隐藏。基本思路是先…...

yarn install遇到问题处理

1、Yarn在尝试安装一个依赖项时遇到了问题。具体来说&#xff0c;这个错误指出期望提升&#xff08;hoist&#xff09;的包的manifest文件丢失了&#xff0c;这通常是因为缓存中的数据损坏或不一致所致。 解决方法&#xff1a;有以下两种 1、清除Yarn缓存&#xff1a;运行 yarn…...

量化交易系统开发-实时行情自动化交易-8.9.通达信平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于通达信平台介绍。 通达信…...

qt QAnimationDriver详解

1、概述 QAnimationDriver是Qt框架中提供的一个类&#xff0c;它主要用于自定义动画帧的时间控制和更新。通过继承和实现QAnimationDriver&#xff0c;开发者可以精确控制动画的时间步长和更新逻辑&#xff0c;从而实现丰富和灵活的动画效果。QAnimationDriver与QAbstractAnim…...

Nginx篇之实现nginx转发兼容HTTP和Websocket两种协议

Nginx实现同时兼容http协议和websocket协议 map $http_upgrade $eop_gateway {default "eop-gateway-http";websocket "eop-gateway-ws"; }# 控制 Connection header map $http_upgrade $connection_upgrade {default "keep-alive"; # HTTP …...

底部导航栏新增功能按键

场景需求&#xff1a; 在底部导航栏添加power案件&#xff0c;单击息屏&#xff0c;长按 关机 如下实现图 借此需求&#xff0c;需要掌握技能&#xff1a; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…...

Mac安装MINIO服务器实现本地上传和下载服务

0.MINIO学习文档 Minio客户端mc使用 | Elibaron学习笔记 1.Mac安装MINIO 中文官方网址&#xff1a;MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容 (1) brew 安装 brew install minio/stable/minio &#xff08;2&#xff09;安装完成&#xff0c;执行brew i…...

SpringMVC:参数传递之日期类型参数传递

环境准备和参数传递请见&#xff1a;SpringMVC参数传递环境准备 日期类型比较特殊&#xff0c;因为对于日期的格式有N多中输入方式&#xff0c;比如: 2088-08-182088/08/1808/18/2088… 针对这么多日期格式&#xff0c;SpringMVC该如何接收&#xff0c;它能很好的处理日期类…...

【C语言基础】斐波那契数列

相信你是最棒哒&#xff01;&#xff01;&#xff01; 文章目录 题目描述 正确代码&#xff1a; 总结 题目描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1&#xff0c;接下来每个数都等于前面2个数之和。 给出一个正整数k&#xff0c;要求菲波那契数列中第k个数…...

Ubuntu无法连接Linux

检查网络连接 确保你的机器能够正常连接互联网。你可以尝试 ping 一下 GitHub 或其他网站&#xff0c;确认是否有网络问题&#xff1a; ping github.com如果无法 ping 通 GitHub&#xff0c;检查一下你的网络连接。 检查 GitHub 状态 有时候 GitHub 本身可能会出现服务故障。你…...

T5模型、GPT和BERT

目录 T5模型、GPT和BERT 一、T5模型 二、GPT模型 三、BERT模型(词嵌入模型,一个单词4096维度) 四、区别与联系 T5模型、GPT和BERT T5模型、GPT模型和BERT模型都是基于Transformer架构的预训练语言模型,但它们在设计目标、架构和应用上存在一些区别和联系: 1. **模型架…...

51c自动驾驶~合集39

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707676 #DiffusionDrive 大幅超越所有SOTA&#xff01;地平线DiffusionDrive&#xff1a;生成式方案或将重塑端到端格局&#xff1f; 近年来&#xff0c;由于感知模型的性能持续进步&#xff0c;端到端自动驾驶受到了来…...

ThinkPHP场景动态验证

一、缘由 今天在用thinkphp8写东西的时候发现&#xff0c;写验证器规则和场景优点费时间&#xff0c;就算用tinkphp的命令行生成也是生成一个空壳。内容还是要自己填写感觉麻烦。 就突发奇想能不能自动生成验证器&#xff0c;也不能是说自动生成验证器&#xff0c;生成验证其的…...

3D基因组工具(HiC可视化)trackc--bioinfomatics tools 35

01 3D genome data analysis guides 茶树三维基因组-文献精读19 https://trackc.readthedocs.io/en/latest/install.html #官网 https://github.com/seqyuan/trackc #官网https://trackc.readthedocs.io/en/latest/analysis_guide/index.html #HiC可视化案例 …...

Maven进阶

前言 我们这一节讲一下Maven 1. 分模块开发的意义 同一个程序我们按功能划分为不同的模块 同一个模块导成jar之类的&#xff0c;这样就可以共享数据了 2. 分模块开发与设计 我们以原来的ssm整合的模块来考虑 我们来把domain这个模块搞消失&#xff0c;重新制造一个模块 我们…...

【k8s】kubelet 的相关证书

在 Kubernetes 集群中&#xff0c;kubelet 使用的证书通常存放在节点上的特定目录。这些证书用于 kubelet 与 API 服务器之间的安全通信。具体的位置可能会根据你的 Kubernetes 安装方式和配置有所不同&#xff0c;下图是我自己环境【通过 kubeadm 安装的集群】中的kubelet的证…...

我们来学mysql -- 事务并发之脏写(原理篇)

事务并发之脏写 题记脏写防止脏写题记 在《事务之概念》提到事务对应现实世界的状态转换,这个过程要满足4个特性这世界,真理只在大炮射程之类,通往和平的道路,非“常人”可以驾驭一个人生活按部就班,人多起来,难免鸡飞狗跳同理现实世界的状态转换映射到数据库,满足4个特…...

AI×5G 市场前瞻及应用现状

本文为《5GAI时代&#xff1a;生活方式和市场的裂变》一书读后总结及研究。 本书的上架建议是“经营”&#xff0c;内容也更偏向于市场分析。书出版于2021年&#xff0c;现在是2024年&#xff0c;可以收集整理一些例子&#xff0c;看看书里的前瞻性5GAI应用预测&#xff0c;到…...

LLM:模拟o1的思维链实现

本文项目地址&#xff1a;https://github.com/stay-leave/enhance_llm/tree/main/like-o1 运行的流程&#xff1a; 1.输入用户消息&#xff0c;query 2.组装消息列表&#xff0c;包括系统提示词&#xff08;关键&#xff09;&#xff0c;用户消息&#xff0c;助手消息&#xff…...

vue3+vite 批量引入组件动态使用

import { ref, reactive, toRaw, markRaw, defineAsyncComponent, onMounted } from vue import type { Component } from vue// vue3vite 批量引入组件动态使用 const modules import.meta.glob<Component>(./details/*.vue) // 明确指定导入的模块类型为Component con…...

PyQt 中的无限循环后台任务

在 PyQt 中实现一个后台无限循环任务&#xff0c;需要确保不会阻塞主线程&#xff0c;否则会导致 GUI 无响应。常用的方法是利用 线程&#xff08;QThread&#xff09; 或 任务&#xff08;QRunnable 和 QThreadPool&#xff09; 来运行后台任务。以下是一些实现方式和关键点&a…...

【python使用kazoo连ZooKeeper基础使用】

from kazoo.client import KazooClient, KazooState from kazoo.exceptions import NoNodeError,NodeExistsError,NotEmptyError import json# 创建 KazooClient 实例&#xff0c;连接到 ZooKeeper 服务器 zk KazooClient(hosts127.0.0.1:2181) zk.start()# 定义节点路径 path…...

【MySQL】内置函数

MySQL中的内置函数 一、日期函数1.1 current_date函数1.2 current_time函数1.3 current_timestamp函数1.4 date_add函数1.5 date_sub函数1.6 datediff函数1.7 now函数综合使用1综合使用2 二、字符串函数2.1 charset函数2.2 concat函数2.3 length函数2.4 replace函数2.5 substri…...

机器学习面试八股总结

下面是本人在面试中整理的资料和文字&#xff0c;主要针对机器学习面试八股做浅显的总结&#xff0c;大部分来源于ChatGPT&#xff0c;中间有借鉴一些博主的优质文章&#xff0c;已经在各文中指出原文。有任何问题&#xff0c;欢迎随时不吝指正。 文章系列图像使用动漫 《星游…...

【Android Debug Bridge】adb常用指令(更新中)

adb常用指令 ADB&#xff08;Android Debug Bridge&#xff09;是一个强大的命令行工具&#xff0c;用于与连接的Android设备进行通信。 1&#xff1a;安装软件包&#xff0c;假设app安装包为apk adb install [apk]2&#xff1a;查看当前连接PC的安卓设备编号 adb devices3…...

贵州大学oj平台软工24-11-27第5次小测

题目&#xff1a;阶乘和函数 题目描述 设计一个计算阶乘和的函数&#xff0c;用于求1!2!...n!并返回结果。 其中n是函数的参数。 程序的开始部分及main函数已经写好如下&#xff1a; #include <stdio.h> double factSum(int n); int main(){ int n; scanf("…...

【GPT】代谢概念解读

以下是对代谢中分解代谢和合成代谢两个概念的深入解读&#xff0c;用简单易懂的方式展开说明&#xff1a; 1. 分解代谢&#xff08;Catabolism&#xff09; 什么是分解代谢&#xff1f; 分解代谢是身体把大分子“拆开”的过程。就像把一个三明治分解成面包片、肉片和菜叶&#…...

Flutter如何适配RTL

阿拉伯语和希伯来语等是使用的从右到左书写的文字系统。世界上估计有4.22亿人以阿拉伯语做为母语。使用从右至左的人口可以说是更多了。所以对于出海项目来说&#xff0c;是不能忽视的一部分。 RTL可以说是本地化适配中比较麻烦的一项&#xff0c;并没有多语言适配来的简单。RT…...

Java中的“接口“详解

1.接口的概念 在Java中接口可以看成是:多个类的公共规范,是一种引用数据类型 2.语法规则 接口的定义格式与类的定义格式相同,将"class"关键字换成"interface"关键字,就定义了一个接口. //接口的关键字"interface"定义了一个名称为"USB&…...

Windows 10电脑无声问题的全面解决方案

Windows 10操作系统以其强大的功能和用户友好的界面赢得了广大用户的青睐&#xff0c;但在使用过程中&#xff0c;有时会遇到电脑突然没有声音的问题。这一问题可能由多种原因引起&#xff0c;包括音频驱动程序问题、音频设置错误、系统更新冲突等。本文将详细介绍Windows 10无…...

ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想

目录 主要是包含搜推广系统的基本模块简单介绍&#xff0c;另有一些流程、设计思想的分析。 搜索引擎 基本模块检索流程 查询分析查询纠错 广告引擎 基于标签倒排索引召回基于向量ANN检索召回打分机制&#xff1a;非精确打分精准深度学习模型打分索引精简&#xff1a;必要的…...

IPv6 NA RTR/SOL/OVR标志位,单播多播选择,ndppd代理和kernel配置

NA消息用单播还是多播的判断理由 单播回复&#xff08;Unicast&#xff09;&#xff1a; 如果客户端发送 RS 消息时&#xff0c;使用的是一个全局地址或链路本地地址作为源地址&#xff0c;则 RA 消息会单播回复到客户端的源地址。这种方式减少了网络中的广播流量&#xff0c;…...

LearnOpenGL 学习(入门--三角形,着色器,纹理)

你好&#xff0c;三角形 下面&#xff0c;你会看到一个图形渲染管线的每个阶段的抽象展示。要注意蓝色部分代表的是我们可以注入自定义的着色器的部分。 图形渲染管线的第一个部分是顶点着色器(Vertex Shader)&#xff0c;它把一个单独的顶点作为输入。顶点着色器主要的目的是…...

前端开发入门指南Day12:ES6进阶:面向对象的编程(Class类、继承、模块化)

今天&#xff0c;让我们探索ES6中面向对象编程的革新。想象一下&#xff0c;如果传统的JavaScript是一个手工作坊&#xff0c;那么ES6的类和模块化就是一个现代化工厂&#xff0c;让代码的组织和复用变得更加规范和高效。 一、为什么需要Class类的革新 &#x1f3af; 在ES6之…...

深入探索进程间通信:System V IPC的机制与应用

目录 1、System V概述 2.共享内存&#xff08;shm&#xff09; 2.1 shmget — 创建共享内存 2.1.2 ftok&#xff08;为shmmat创建key值&#xff09; 2.1.3 为什么一块共享内存的标志信息需要用户来传递 2.2 shmat — 进程挂接共享内存 2.3 shmdt — 断开共享内存连接 2.4…...

跨 CA 签发多个证书的 Nginx mTLS 配置

研究过用同一个 CA 签发的服务端和客户端证书的 Nginx mTLS 配置&#xff0c;本文要试验一番服务端和客户端证书由不同 CA 机构签发的情形。这是常有事&#xff0c;比如与客户间采用 mTLS 加密方式&#xff0c;需要文件交付可能是 客户端证书由甲方生成&#xff0c;发送客户端…...

CentOS7 虚拟机 双网卡绑定

一、网卡绑定模式 模式类型特点mode0round-robin&#xff08;平衡轮询策略&#xff09;基于per packet方式&#xff0c;轮询往每条链路发送报文。提供负载均衡和容错的能力&#xff0c;当有链路出问题&#xff0c;会把流量切换到正常的链路上。交换机端需要配置聚合口。mode1a…...

设计模式——方法链or流式接口

方法链或流式接口是一种编程模式或设计模式。核心思想是通过返回对象自身的应用&#xff0c;使得可以在一个表达式中连续调用多个方法。 c中实现这种模式 1.基本语法规则 &#xff08;1&#xff09;每个可链接的方法都返回对象自身的引用&#xff08;通常是*this&#xff09…...

BioDeepAV:一个多模态基准数据集,包含超过1600个深度伪造视频,用于评估深度伪造检测器在面对未知生成器时的性能。

2024-11-29, 由罗马尼亚布加勒斯特大学创建BioDeepAV数据集&#xff0c;它专门设计来评估最先进的深度伪造检测器在面对未见过的深度伪造生成器时的泛化能力&#xff0c;这对于提高检测器的鲁棒性和适应性具有重要意义。 数据集地址&#xff1a;biodeep 一、研究背景&#xff1…...