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

乡镇社区教育中心网站建设/企业管理软件排名

乡镇社区教育中心网站建设,企业管理软件排名,最新网站开发技术,做外贸需要用到什么网站最近的 AI 突破 DALLE和 Stable Diffusion有什么共同点? 它们都使用 CLIP 架构的组件。 因此,如果你想掌握这些模型是如何工作的,了解 CLIP 是先决条件。 此外,CLIP 已被用于在 Unsplash 上索引照片。 但是 CLIP 做了什么&…

最近的 AI 突破 DALLE和 Stable Diffusion有什么共同点?

它们都使用 CLIP 架构的组件。 因此,如果你想掌握这些模型是如何工作的,了解 CLIP 是先决条件。

此外,CLIP 已被用于在 Unsplash 上索引照片。

但是 CLIP 做了什么,为什么它是 AI 社区的里程碑?

让我们开始吧!
在这里插入图片描述

推荐:使用 NSDT场景设计器 快速搭建 3D场景

1、CLIP概述

CLIP 代表 Contrastive Language-Image Pretraining:

CLIP 是一个开源、多模态、零样本模型。 给定图像和文本描述,该模型可以预测与该图像最相关的文本描述,而无需针对特定任务进行优化。

让我们分解一下这个描述:

  • 开源:该模型由 OpenAI 创建并开源。 稍后我们将看到有关如何使用它的编程教程。
  • 多模态:多模态架构利用多个领域来学习特定任务。 CLIP 结合了自然语言处理和计算机视觉。
  • 零样本:零样本学习是一种在未见过的标签上进行泛化的方法,无需专门训练来对它们进行分类。 例如,所有 ImageNet 模型都经过训练以识别 1000 个特定类别。 CLIP 不受此限制的约束。
  • Contrastive Language:使用这种技术,CLIP 被训练为理解相似的表示应该靠近潜在空间,而不同的表示应该相距很远。 这将在稍后通过示例变得更加清楚。

下面是一些关于 CLIP 的有趣事实

  • CLIP 使用数量惊人的 4 亿图像文本对进行训练。 相比之下,ImageNet 数据集包含 120 万张图像。
  • 最终调优的 CLIP 模型在 256 个 V100 GPU 上训练了两周。 对于 AWS Sagemaker 上的按需培训,这至少要花费 20 万美元!
  • 该模型使用 32,768 张图像的小批量进行训练。

2、CLIP可以做什么

让我们直观地展示 CLIP 做了什么。 我们稍后将更详细地展示一个编码示例。

首先,我们从 Unsplash 中选择一张免费图片:

在这里插入图片描述

接下来,我们为 CLIP 提供以下提示(Prompt):

  • ‘a girl wearing a beanie’.
  • ‘a girl wearing a hat’.
  • ‘a boy wearing a beanie’.
  • ‘a girl riding a bike’.
  • ‘a dog’.

显然,第一个提示更好地描述了图像。

CLIP 通过分配归一化概率自动找到哪个文本提示最能描述图像。 我们得到:
在这里插入图片描述

该模型成功地找到了最合适的图像描述。

此外,CLIP 可以准确识别它以前从未见过的类和对象。

如果你有一个大的图像数据集并且你想将这些图像标记为特定的类/类别/描述,CLIP 会自动为你做这件事!

接下来,我们将展示 CLIP 是如何工作的。

3、CLIP架构

CLIP 是一种深度学习模型,它使用了来自其他成功架构的新颖想法,并引入了一些自己的想法。

让我们从第一部分开始,对比预训练:

3.1 对比预训练

图 1 显示了对比预训练过程的概览。
在这里插入图片描述

假设我们有一批 N 图像及其各自的描述配对,例如 <image1, text1>, <image2, text2>, <imageN, textN>。

对比预训练旨在联合训练生成图像嵌入 [I1, I2 … IN] 和文本嵌入[T1, T2 … TN] 的图像和文本编码器,其方式如下:

  • 正确的嵌入对<I1,T1>, <I2,T2>(其中 i=j)的余弦相似度被最大化。
  • 以对比方式,不相似对 <I1,T2>, <I1,T3>… <Ii,Tj>(其中 i≠j)的余弦相似性被最小化。

让我们逐步看发生了什么:

  • 模型接收一批 N 个 对。
  • 文本编码器是一个标准的 Transformer 模型,具有 GPT2 风格的修改。 图像编码器可以是 ResNet 或视觉Transformer。
  • 对于批中的每个图像,图像编码器计算一个图像向量。 第一个图像对应于 I1 向量,第二个图像对应于 I2 ,依此类推。 每个向量的大小为 de,其中 de 是潜在维度的大小。 因此,这一步的输出是 一个 N X de 的矩阵。
  • 类似地,文本描述被压缩到文本嵌入[T1, T2 … TN] 中,产生一个 N X de 的矩阵。
  • 最后,我们将这些矩阵相乘并计算每个图像和文本描述之间的成对余弦相似度。 这会产生一个 N X N 矩阵,如上图所示。
  • 目标是最大化沿对角线的余弦相似度——这些是正确的 对。 以对比方式,非对角线元素的相似性应最小化(例如,I1 图像由 T1 而不是 T2、T2、T3 等描述)。

一些额外的评论:

  • 该模型使用对称交叉熵损失作为其优化目标。 这种类型的损失最小化了图像到文本的方向以及文本到图像的方向(请记住,我们的对比损失矩阵保持 <I1,T2> 和 <I2,T1> 余弦相似性)。
  • 对比预训练并不是全新的。 它在以前的模型中引入,在 CLIP中做了适应性调整。

3.2 零样本分类

我们现在已经预训练了图像和文本编码器,我们已准备好进行零样本分类。

  • 基线

首先,让我们提供一些背景信息。 Pre-Transformer时代如何实现few-shot分类?

很简单:

  • 下载一个高性能的预训练 CNN,例如 ResNet,并用它进行特征提取,得到图像特征。
  • 然后,将这些特征用作标准分类器(例如逻辑回归)的输入。 分类器以监督方式进行训练,其中图像标签用作目标变量(图 2)。
  • 如果你选择 K-shot 学习,你在分类阶段的训练集应该只包含每个类的 K 个实例。
    当 K<10 时,该任务称为少样本分类学习。 因此,对于 K=1,我们有一次性分类学习。 如果我们使用所有可用数据,这就是一个完全监督的模型(老式的方式)。

在这里插入图片描述

注意上面的关键字“监督”——分类器应该事先知道类标签。 使用与分类器配对的图像提取器也称为线性探针评估。

  • CLIP的竞争优势

CLIP如何进行零样本分类的过程如图3所示:

在这里插入图片描述

同样,这个过程很简单:

  • 首先,我们提供一组文本描述,例如 a photo of a dog 或 a cat eating an ice-cream(我们认为能最好描述一个或多个图像的文本)。 这些文本描述被编码到文本嵌入中。
  • 然后,我们对图像做同样的事情——图像被编码到图像嵌入中。
  • 最后,CLIP 计算图像和文本嵌入之间的成对余弦相似度。 选择具有最高相似度的文本提示作为预测。

当然,我们可以输入多张图像。 CLIP 巧妙地缓存了输入文本嵌入,因此不必为其余输入图像重新计算它们。

就是这样! 我们现在已经总结了 CLIP 如何端到端地工作。

4、数据的问题

CLIP 使用 30 个公共数据集进行预训练。 用大量数据拟合大型语言模型很重要。

然而,很难找到具有配对图像-文本描述的稳健数据集。 大多数公共数据集,例如 CIFAR,都是只有一个单词标签的图像——这些标签是目标类别。 但是创建 CLIP 是为了使用完整的文本描述。

为了克服这种差异,作者没有排除这些数据集。 相反,他们进行了一些特征工程:将单个单词标签(例如 bird或 car)转换为句子: a photo of a dog或 a photo of bird。 在 Oxford-IIIT Pets 数据集上,作者使用了提示:A photo of a {label}, a type of pet。

有关预训练技术的更多信息,请查看原始论文 。

5、CLIP 对 AI 的影响

在文章开头,我们声称 CLIP 是 AI 社区的一个里程碑。

让我们看看为什么:

5.1 作为零样本分类器的卓越性能

CLIP 是一个零样本分类器,因此首先针对少样本学习模型测试 CLIP 是有意义的。

因此,作者针对由高质量预训练模型(例如 ResNet)之上的线性分类器组成的模型测试了 CLIP。

结果如图4所示:

在这里插入图片描述

CLIP 明显优于其他分类器。

此外,CLIP 能够与 16-shot 线性分类器 BiT-M 的性能相媲美。 换句话说,BiT-M 的分类器必须在每个类别至少 16 个示例的数据集上进行训练,以匹配 CLIP 的分数——而 CLIP 无需微调即可获得相同的分数。

有趣的是,作者将 CLIP 评估为线性探针:他们仅使用 CLIP 的图像编码器来获取图像特征并将它们输入线性分类器——就像其他模型一样。 即使采用这种设置,CLIP 的小样本学习能力也非常出色。

5.2 对分布变化无与伦比的稳健性

分布漂移是一件大事,特别是对于生产中的机器学习系统。

注意:你可能将分布漂移视为概念漂移,尽管从技术上讲它们并不相同。

分布漂移(Distribution Shift) 是一种现象,当训练模型的数据随时间发生变化时会发生这种现象。 因此,随着时间的推移,模型的效率会降低,预测也会变得不准确。

事实上,分布漂移并不是意料之外的事情——它会发生。 问题是,如何及早发现这种现象,需要采取哪些措施来“重新校准”你的模型? 这并不容易解决,取决于许多因素。

幸运的是,关于人工智能的新研究正致力于创建能够适应分布变化的模型。

这就是作者将 CLIP 的稳健性用于测试的原因。 结果如图 5 所示:

在这里插入图片描述

关于 CLIP,这里有两点非常重要:

  • CLIP 在 ImageNet 上实现了与 SOTA ResNet 模型相同的精度,尽管 CLIP 是零样本模型。
  • 除了原始的 ImageNet 之外,我们还有类似的数据集作为分布偏移基准。 似乎 ResNet 正在努力处理这些数据集。 然而,CLIP 可以很好地处理未知图像——事实上,该模型在 ImageNet 的所有变体中保持相同的精度水平!

5.3 计算效率

在 GPT-2 之前,计算效率被认为是理所当然的(某种程度上)。

如今,在一个模型需要数周时间才能用数百个 8000 美元的 GPU 进行训练的时代,计算效率问题得到了更严重的解决。

CLIP 是一种对计算更友好的架构。 这一成功的部分原因是因为 CLIP 使用视觉Transformer作为默认的图像编码器组件。 结果如图6所示:
在这里插入图片描述

显然,与其他模型相比,CLIP 能够更好地利用硬件资源。 这也意味着在使用 AWS Sagemaker 等云服务进行培训时可以节省额外的费用。 此外,图 6 显示,与其他模型相比,CLIP 在硬件操作和准确度得分方面提供了更好的可扩展性。

仍然存在数据效率的问题。 作者表明,在零样本设置中,CLIP 比类似模型的数据效率更高。 但是,它们没有解决 CLIP 在预训练阶段的数据效率问题。 然而,在这方面可能没什么可做的,因为 CLIP 使用两种类型的 Transformers——而 Transformers 本质上是数据密集型模型。

5.4 研究兴趣增加

CLIP 的成功激发了人们对文本到图像模型的兴趣,并推广了对比预训练方法。

除了 DALLE 和稳定扩散之外,我们还可以使用 CLIP 作为 GAN 中的鉴别器。

此外,CLIP 的发布激发了类似的基于 CLIP 的出版物,这些出版物扩展了模型的功能,例如 DenseCLIP 和 CoCoOp。

此外,Microsoft 还发布了 X-CLIP,这是 CLIP 的最小扩展,用于视频语言理解。

额外信息:一个名为 paint.wtf 的类似 Pictionary 的应用程序使用 CLIP 对你的图画进行排名。 试一试——超级有趣!

6、如何使用 CLIP——编码示例

接下来,我们将展示如何使用 HugginFaces 库来使用 CLIP。

首先,让我们从 Unsplash 中选择 3 张图片。 我们之前使用了第一个:

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

我们将使用以下库:

import transformers
import datasets
import numpy as np
import pandas as pd
import torch
from PIL import Image
import requestsfrom transformers import CLIPTokenizerFast, CLIPProcessor, CLIPModel

接下来,我们加载 CLIP 模型的权重、分词器和图像处理器:

device = "cuda" if torch.cuda.is_available() else "cpu"
model_id = "openai/clip-vit-base-patch32"# we initialize a tokenizer, image processor, and the model itself
tokenizer = CLIPTokenizerFast.from_pretrained(model_id)
processor = CLIPProcessor.from_pretrained(model_id)
model = CLIPModel.from_pretrained(model_id).to(device)

此外,我们在 Python 中加载上述 Unsplash 图像:

urls=['https://images.unsplash.com/photo-1662955676669-c5d141718bfd?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80','https://images.unsplash.com/photo-1552053831-71594a27632d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=662&q=80','https://images.unsplash.com/photo-1530281700549-e82e7bf110d6?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=688&q=80']images=[Image.open(requests.get(i, stream=True).raw)  for i in urls]

最后,我们为 CLIP 提供了一些文本提示。

目标是让 CLIP 将 3 张 Unsplash 图片分类为特定的文字描述。 请注意,其中一个具有误导性——让我们看看是否可以混淆模型:

text_prompts=["a girl wearing a beanie", "a boy wearing a beanie", "a dog", "a dog at the beach"]
inputs = inputs = processor(text=text_prompts, images=images, return_tensors="pt", padding=True)outputs = model(**inputs)
logits_per_image = outputs.logits_per_image 
probs = logits_per_image.softmax(dim=1) 
pd.DataFrame(probs.detach().numpy()*100, columns=text_prompts, index=list(['image1','image2', 'image3'])).style.background_gradient(axis=None,low=0, high=0.91).format(precision=2)

在这里插入图片描述

该模型成功地对所有 3 张图像进行了分类!

注意两点:

  • CLIP 可以理解多个实体及其在每个图像中的动作。
  • CLIP 为每个图像分配了最具体的描述。 例如,我们可以将第二张图片描述为“一只狗”和“海滩上的一只狗”。 然而,该模型正确地决定“狗”短语更好地描述了第二张图片,因为没有海滩。

随意尝试这个例子。 完整的例子在这里。将你的图像与文字描述结合使用,探索 CLIP 的工作原理。

7、CLIP局限性和未来的工作

虽然 CLIP 是一个革命性的模型,但仍有改进的空间。 作者指出了有可能取得进一步进展的领域。

  • 准确度得分:CLIP 是最先进的零样本分类器,直接挑战特定任务的训练模型。
  • CLIP 在 ImageNet 上与完全监督的 ResNet101 的准确性相匹配这一事实是惊人的。 然而,仍然有监督模型获得更高的分数。 作者强调,鉴于其惊人的可扩展性,CLIP 可能会获得更高的分数,但这需要大量的计算机资源。
  • 多义性:作者指出 CLIP 存在多义性。 有时,由于缺乏上下文,模型无法区分某些单词的含义。 请记住,我们之前提到过某些图像仅使用类标签进行标记,而不使用全文提示。 作者提供了一个示例:在 Oxford-IIIT Pet 数据集中,“拳击手”一词指的是一种犬种,但其他图像将“拳击手”视为运动员。 在这里,罪魁祸首是数据的质量,而不是模型本身。
  • 特定于任务的学习:虽然 CLIP 可以区分复杂的图像模式,但该模型在执行一些微不足道的任务时会失败。 例如,该模型难以处理手写数字识别任务(图 7)。 作者将这种类型的错误分类归因于训练数据集中缺少手写数字。

在这里插入图片描述

8、结束语

毫无疑问,CLIP 是 AI 社区的重要模型。

从本质上讲,CLIP 为彻底改变 AI 研究的新一代文本到图像模型铺平了道路。 当然,不要忘记这个模型是开源的。

最后但同样重要的是,还有很大的改进空间。 在整篇论文中,作者暗示 CLIP 的许多局限性是由于训练数据质量较低。


原文链接:OpenAI最有影响的模型 — BimAnt

相关文章:

OpenAI最重要的模型【CLIP】

最近的 AI 突破 DALLE和 Stable Diffusion有什么共同点&#xff1f; 它们都使用 CLIP 架构的组件。 因此&#xff0c;如果你想掌握这些模型是如何工作的&#xff0c;了解 CLIP 是先决条件。 此外&#xff0c;CLIP 已被用于在 Unsplash 上索引照片。 但是 CLIP 做了什么&…...

分享112个JS菜单导航,总有一款适合您

分享112个JS菜单导航&#xff0c;总有一款适合您 112个JS菜单导航下载链接&#xff1a;https://pan.baidu.com/s/1Dm73d2snbu15hZErJjTXxg?pwdfz1c 提取码&#xff1a;fz1c Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "h…...

MySQL 3:MySQL数据库基本操作 DQL

数据库管理系统的一个重要功能是数据查询。数据查询不应简单地返回数据库中存储的数据&#xff0c;还应根据需要对数据进行过滤&#xff0c;确定数据的显示格式。MySQL 提供了强大而灵活的语句来实现这些操作。MySQL数据库使用select语句查询数据。 select [all|distinct]<…...

sql语句的优化

sql优化 优化数据访问 查询性能低下最基本的原因是访问的数据太多&#xff0c;大部分性能低下的查询都可以通过减少访问的数据量来优化所以关于低效的查询&#xff0c;需要确认是否检索了大量不需要的数据&#xff0c;以及mysql服务器层是否在分析大量不需要的数据 因为有些查…...

Shell脚本之——自动安装JDK

目录 1.修改主机名 2.创建文件&#xff0c;单独存放Shell脚本 3.编写Shell脚本 4.Shell脚本命令简介 (1)文件头 (2)打印命令 (3)设置全局变量 (4)条件判断 (5)解压 (6)文件重命名 (7)在/etc/profile指定行插入 5.完整脚本内容 6.重启环境变量 7.判断java是否配置…...

大数据---Hadoop安装Hadoop简易版

编写自动安装Hadoop的shell脚本 完整流程: 大数据—Hadoop安装教程&#xff08;二&#xff09; 文章目录编写自动安装Hadoop的shell脚本上传压缩包编写shell脚本vim hadoopautoinstall.sh运行上传压缩包 在opt目录下创建连个目录install和soft 将压缩包上传到install目录下 …...

Spring框架中使用到的设计模式以及对应的类(方法)

模板方法--->postProcessBeanFactory&#xff0c;onFresh、initPropertySource装饰器模式--->BeanWrapper委托者模式--->BeanDefinitionParseDelegate策略模式--->ClassPathXmlApplicationContext、FileSystemApplicationContext、XMLBeanDefinitionReader、Proper…...

类和类的定义

6.2 类和类的定义 面向对象最重要的概念就是类&#xff08;Class&#xff09;和实例&#xff08;Instance&#xff09;&#xff0c;必须牢记类是抽象的模板&#xff0c;比如学生类&#xff0c;而实例是根据类创建出来的一个个具体的对象&#xff0c;每个对象都拥有相同的方法&…...

丝绸之路——NFT 系列来袭!

丝绸之路的经历讲述了汉朝时代的一个重要历史事件。该系列中的 NFT 带有中国这段黄金时代令人愉悦的视觉元素&#xff0c;使其成为值得收藏的物品。 NFT 系列介绍 敦煌女神像01&#xff08;左&#xff09;&#xff1b;汉代士兵&#xff08;中&#xff09;&#xff1b;敦煌女神像…...

配置CMAKE编译环境:VSCODE + MinGW

一. MinGW安装 MinGW(Minimalist GNU For Windows)是个精简的Windows平台C/C、ADA及Fortran编译器&#xff0c;相比Cygwin而言&#xff0c;体积要小很多&#xff0c;使用较为方便。 MinGW最大的特点就是编译出来的可执行文件能够独立在Windows上运行。 MinGW的组成&#xff…...

六、mybatis与spring的整合

Spring整合Mybaits的步骤 引入依赖 在Spring整合Mybaits的时候需要引入一个中间依赖包mybatis-spring <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version> </dependency&g…...

JavaWeb--JDBC

JDBC1 JDBC概述1.1 JDBC概念1.2 JDBC本质1.3 JDBC好处2 JDBC快速入门2.1 编写代码步骤2.2 具体操作3 JDBC API详解3.1 DriverManager3.2 Connection3.2.1 获取执行对象3.2.2 事务管理3.3 Statement3.3.1 概述3.3.2 代码实现3.4 ResultSet3.4.1 概述3.4.2 代码实现3.5 案例3.6 P…...

大数据框架之Hadoop:入门(四)Hadoop运行模式

Hadoop运行模式包括&#xff1a;本地模式、伪分布式模式以及完全分布式模式。 Hadoop官方网站&#xff1a;http://hadoop.apache.org/ 4.1本地运行模式 4.1.1官方Grep案例 1.创建在hadoop文件夹下面创建一个input文件夹 [roothdp101 hadoop]# mkdir input2.将Hadoop的xml配…...

《爆肝整理》保姆级系列教程python接口自动化(十一)--发送post【data】(详解

简介  前面登录的是传 json 参数&#xff0c;由于其登录机制的改变没办法演示&#xff0c;然而在工作中有些登录不是传 json 的&#xff0c;如 jenkins 的登录&#xff0c;这里小编就以jenkins 登录为案例&#xff0c;传 data 参数&#xff0c;给各位童鞋详细演练一下。 一、…...

【微服务】Nacos注册中心

&#x1f6a9;本文已收录至专栏&#xff1a;微服务探索之旅 &#x1f44d;希望您能有所收获 &#x1f44d;Nacos和Eureka一样也可以充当服务的注册中心&#xff0c;让我们一起看看有何区别&#xff1f; 点击跳转&#x1f449;【微服务】Eureka注册中心 &#x1f44d;Nacos除了可…...

跟开发打了半个月后,我终于get报bug的正确姿势了

在测试人员提需求的时候&#xff0c;大家经常会看到&#xff0c;测试员和开发一言不合就上BUG。然后开发一下就炸了&#xff0c;屡试不爽&#xff0c;招招致命。 曾经看到有个段子这么写道&#xff1a; 不要对程序员说&#xff0c;你的代码有BUG。他的第一反应是&#xff1a;…...

js万能类型检测Object.prototype.toString.call——定制Object.prototype.toString.call的检测结果

javascript的类型检测 1、typeof typeof操作符可以检测js的基础数据类型&#xff0c;包括number、string、boolean、undefined。因为null在二进制存储的值与object相同&#xff0c;所以typeof检测null会返回object。此为特例 2、instanceof instanceof操作符可以检测某个对…...

激光slam学习笔记2--激光点云数据结构特点可视化查看

背景&#xff1a;不同厂商的激光点云结果存在一定差异&#xff0c;比如有些只有xyz&#xff0c;有些包含其他&#xff0c;如反光率、时间戳、ring等。如何快速判断是个值得学习的点 概要&#xff1a;对于rosbag类型的激光点云&#xff0c;介绍使用rviz快速查看点云结构特点 如…...

SpringBoot笔记【JavaEE】

SpringBoot概念、创建和运行 1.什么是SpringBoot&#xff1f;为什么学习SpringBoot&#xff1f; Spring Boot 就是 Spring 框架的脚⼿架&#xff0c;它就是为了快速开发 Spring 框架⽽诞⽣的。 2.Spring Boot优点 快速集成框架【提供启动添加依赖的功能】内容运行容器【无需…...

目标检测算法之voxelNet与pointpillars对比

算法对比 3D目标检测发展简史 点云目标检测目前发展历经VoxelNet、SECOND、PointPillars、PV-RCNN。 2017年苹果提出voxelnet&#xff0c;是最早的一篇将点云转成voxel体素进行3D目标检测的论文。 然后2018年重庆大学的一个研究生Yan Yan在自动驾驶公司主线科技实习的时候将vo…...

电脑里的连接速度双工模式是什么?怎么设置

双工模式包括全双工、半双工模式。1.半双工1、半双工数据传输允许数据在两个方向上传输&#xff0c;但是&#xff0c;在某一时刻&#xff0c;只允许数据在一个方向上传输&#xff0c;它实际上是一种切换方向的单工通信。所谓半双工就是指一个时间段内只有一个动作发生。早期的对…...

springboot整合单机缓存ehcache

区别于redis的分布式缓存&#xff0c;ehcache是纯java进程内的单机缓存&#xff0c;根据不同的场景可选择使用&#xff0c;以下内容主要为springboot整合ehcache以及注意事项添加pom引用<dependency><groupId>net.sf.ehcache</groupId><artifactId>ehc…...

在阿里干了2年的测试,总结出来的划水经验

测试新人 我的职业生涯开始和大多数测试人一样&#xff0c;开始接触都是纯功能界面测试。那时候在一家电商公司做测试&#xff0c;做了一段时间&#xff0c;熟悉产品的业务流程以及熟练测试工作流程规范之后&#xff0c;效率提高了&#xff0c;工作比较轻松&#xff0c;这样我…...

硬盘分类及挂载硬盘知识补充和介绍

一、硬盘介绍Linux硬盘分IDE硬盘和SCSI硬盘&#xff0c;目前基本上是SCSI硬盘1.对于IDE硬盘&#xff0c;驱动器标识符为"hdx~"&#xff0c;其中"hd"表明分区所在设备的类型&#xff0c;这里是指IDE硬盘了。"x"为盘号(a为基本盘&#xff0c;b为基…...

【MyBatis】自定义映射resultMap

8.1、resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致&#xff0c;则可以通过resultMap设置自定义映射 <!--resultMap&#xff1a;设置自定义映射属性&#xff1a;id&#xff1a;表示自定义映射的唯一标识type&#xff1a;查询的数据要映射的实体类的…...

mysql的锁和事务

mysql的锁 读写锁&#xff1a; 读锁是共享锁&#xff0c;多个用户在同一时刻可以读取同一资源&#xff0c;相互不受干扰写锁是排他锁&#xff0c;写锁会阻塞其他的写锁和读锁&#xff0c;这样可以确保在指定的时间内&#xff0c;只有一个用户可以写入 锁的颗粒度&#xff1a; …...

为什么B站中的弹幕可以不遮挡人物

上班逛B站时摸鱼时&#xff0c;看到了满屏的弹幕&#xff0c;而且还不挡脸&#xff0c;突然心血来潮来看看它是怎么实现的&#xff1f; 不难发现弹幕其实它就是有一个蒙版层div&#xff0c;遮挡在视频组件的上方&#xff0c;z-index层级设置的比较高&#xff08;这里是11&…...

数据结构 第八章 查找(静态查找表)

集合 1、集合中的数据元素除了属于同一集合外,没有任何的逻辑关系 2、在集合中,每个数据元素都有一个区别于其他元素的唯一标识(键值或者关键字值) 3、集合的运算&#xff1a; 1 查找某一元素是否存在(内部查找、外部查找) 2 将集合中的元素按照它的唯一标识进行排序4、集合的…...

【Python基础】数据类型(元组、列表)

文章目录二. 数据类型2.1 元组 tuple2.1.1 定义特性2.1.2 拼接拷贝2.1.3 元组拆包2.1.4 元组方法 count2.2 列表 list2.2.1 基础定义2.2.2 增删操作2.2.3 连接联合2.2.4 其他常规操作2.2.5 列表推导式2.2.6 生成器表达式2.x 小结&#xff1a;何时使用元组或列表二. 数据类型 Py…...

你了解互联网APP搜索和推荐的背后逻辑么?

1.搜索和推荐无处不在我们习惯了百度、Google、360搜索的便捷&#xff0c;输入你想要搜索的关键词&#xff0c;立马呈现给你一批对应的结果&#xff0c;供你筛选。我们也经常上淘宝、京东、拼多多购物&#xff0c;输入想买的商品&#xff0c;瞬间列出一页一页的商品清单供我们选…...