【深度学习:Collaborative filtering 协同过滤】深入了解协同过滤:技术、应用与示例

news2024/11/6 9:57:00

在这里插入图片描述

此图显示了使用协作筛选预测用户评分的示例。起初,人们会对不同的项目(如视频、图像、游戏)进行评分。之后,系统将对用户对项目进行评分的预测,而用户尚未评分。这些预测基于其他用户的现有评级,这些用户与活跃用户的评级相似。例如,在我们的例子中,系统已经做出了预测,即活跃用户不会喜欢该视频。

【深度学习:协同过滤】深入了解协同过滤:技术、应用与示例

    • 概述
    • 方法
    • 类型
      • Memory-based
      • Model-based
      • Hybrid
      • Deep-learning
    • 上下文感知协同过滤
    • 社交网络上的应用
      • 问题
    • 挑战
      • 数据稀疏性
      • 可扩展性
      • 同义词
      • 灰羊
      • 先令袭击
      • 多样性和长尾
    • 创新
    • 辅助信息
    • AI插图

协同过滤 (CF) 是推荐系统使用的一种技术。协同过滤有两种意义,一种是狭义的,一种是更广义的。

在更新、更狭义的意义上,协作过滤是一种通过收集来自许多用户的偏好或品味信息(协作)来对用户的兴趣进行自动预测(过滤)的方法。协作过滤方法的基本假设是,如果一个人 A 与一个人 B 对某个问题的看法相同,那么 A 更有可能对不同的问题发表 B 的看法,而不是随机选择的人。例如,电视节目偏好的协作过滤推荐系统可以预测用户应该喜欢哪个电视节目,给定该用户口味(喜欢或不喜欢)的部分列表。这些预测特定于用户,但使用从许多用户那里收集的信息。这与为每个感兴趣的项目给出平均(非特异性)分数的简单方法不同,例如基于其投票数。

从更一般的意义上讲,协作过滤是使用涉及多个代理、视点、数据源等之间协作的技术来过滤信息或模式的过程。 协同过滤的应用通常涉及非常大的数据集。协同滤波方法已应用于许多不同类型的数据,包括:传感和监测数据,例如在矿产勘探、大面积环境传感或多个传感器中;金融数据,例如整合多种资金来源的金融服务机构;或在电子商务和 Web 应用程序中,重点是用户数据等。本讨论的其余部分侧重于用户数据的协作过滤,尽管某些方法和途径可能也适用于其他主要应用程序。

概述

互联网的发展使得从所有可用的在线信息中有效地提取有用的信息变得更加困难。海量的数据需要有效的信息过滤机制。协同过滤是用于处理此问题的技术之一。

协作过滤的动机来自这样一种想法,即人们经常从与自己口味相似的人那里获得最佳推荐。协作过滤包括匹配具有相似兴趣的人并在此基础上提出建议的技术。

协同过滤算法通常需要 (1) 用户的积极参与,(2) 一种表示用户兴趣的简单方法,以及 (3) 能够匹配具有相似兴趣的人的算法。

通常,协作过滤系统的工作流程是:

  1. 用户通过对系统的项目(例如书籍、电影或音乐录音)进行评级来表达他或她的偏好。这些评级可以看作是用户对相应域的兴趣的近似表示。
  2. 系统将该用户的评分与其他用户的评分进行匹配,并找到品味最“相似”的人。
  3. 对于类似用户,系统会推荐类似用户评价较高但尚未被该用户评价的项目(据推测,没有评分通常被视为对某个项目不熟悉)

协同过滤的一个关键问题是如何组合和加权用户邻居的偏好。有时,用户可以立即对推荐的项目进行评分。因此,随着时间的推移,系统可以越来越准确地表示用户偏好。

方法

在这里插入图片描述

推荐系统中的协同过滤

协同过滤系统有多种形式,但许多常见的系统可以简化为两个步骤:

  1. 查找与活动用户(预测所针对的用户)具有相同评级模式的用户。
  2. 使用步骤 1 中志同道合的用户的评分来计算对活跃用户的预测

这属于基于用户的协作过滤类别。其具体应用是基于用户的最近邻算法。

或者,基于项目的协作过滤(购买了 x 的用户也购买了 y),以项目为中心的方式进行:

  1. 构建一个项目-项目矩阵,确定项目对之间的关系
  2. 通过检查矩阵并匹配该用户的数据来推断当前用户的口味

例如,请参阅 Slope One 基于项的协作过滤系列。

另一种形式的协同过滤可以基于对正常用户行为的隐式观察(而不是评级任务强加的人工行为)。这些系统观察用户做了什么以及所有用户做了什么(他们听了什么音乐,他们买了什么商品),并使用这些数据来预测用户未来的行为,或者预测用户在有机会的情况下可能想要的行为方式。然后,必须通过业务逻辑过滤这些预测,以确定它们如何影响业务系统的操作。例如,如果某人已经证明他们拥有该音乐,那么向他们出售特定音乐专辑是没有用的。

依赖所有用户的平均评分或评级系统会忽略用户的特定需求,并且在兴趣差异较大的任务中尤其糟糕(例如音乐推荐)。但是,还有其他方法可以对抗信息爆炸,例如网络搜索和数据聚类。

类型

Memory-based

基于内存的方法使用用户评分数据来计算用户或项目之间的相似性。这种方法的典型示例是基于邻域的 CF 和基于项目/基于用户的 top-N 建议。例如,在基于用户的方法中,用户 u 给项目 i 的评分值计算为一些类似用户对该项目的评分的汇总:

r u , i = a g g r u ′ ∈ U r u ′ , i r_{u,i}=aggr_{u'\in U}r_{u',i} ru,i=aggruUru,i

其中 U 表示与对项目 i 进行评分的用户 u 最相似的前 N 个用户的集合。聚合函数的一些示例包括:

r u , i = 1 N ∑ u ′ ∈ U r u ′ , i r_{u,i}=\frac1N\sum_{u'\in U}r_{u', i} ru,i=N1uUru,i
r u , i = k ∑ u ′ ∈ U s i m i l ( u , u ′ ) r u ′ , i r_{u,i}=k\sum_{u'\in U}simil(u,u')r_{u', i} ru,i=kuUsimil(u,u)ru,i

其中 k 是一个标准化因子,定义为 k = 1 / ∑ u ′ ∈ U ∣ s i m i l ( u , u ′ ) ∣ k=1/\sum_{u'\in U}|simil(u,u')| k=1/uUsimil(u,u)

r u , i = r u − + k ∑ u ′ ∈ U s i m i l ( u , u ′ ) ( r u ′ , i − r u ′ − ) r_{u,i} = r^-_u + k\sum_{u'\in U}simil(u,u')(r_{u', i} - r^-_{u'}) ru,i=ru+kuUsimil(u,u)(ru,iru)

其中 是用户 u 对所有由 u 评分的项目的平均评分。

基于邻域的算法计算两个用户或项目之间的相似度,并通过所有评分的加权平均值来生成用户的预测。项目或用户之间的相似性计算是该方法的重要组成部分。为此,使用了多种度量,例如皮尔逊相关性和基于向量余弦的相似性。

两个用户 x, y 的 Pearson 相关相似度定义为

s i m i l ( x , y ) = ∑ i ∈ I x y ( r x , i − r x − ) ( r y , i − r y − ) ∑ i ∈ I x y ( r x , i − r x − ) 2 ∑ i ∈ I x y ( r y , i − r y − ) 2 simil(x,y) = \frac{\sum_{i\in I_{xy}}(r_{x,i}-r^-_x)(r_{y,i}-r^-_y)}{\sqrt{\sum_{i\in I_{xy}}(r_{x,i}-r^-_x)^2} \sqrt{\sum_{i\in I_{xy}}(r_{y,i}-r^-_y)^2}} simil(x,y)=iIxy(rx,irx)2 iIxy(ry,iry)2 iIxy(rx,irx)(ry,iry)

其中 I x y I_{xy} Ixy 是用户 x 和用户 y 评分的项目集。

基于余弦的方法将两个用户 x 和 y 之间的余弦相似度定义为:

s i m i l ( x , y ) = c o s ( x ⃗ ⋅ y ⃗ ) ∣ ∣ x ⃗ ∣ ∣ × ∣ ∣ y ⃗ ∣ ∣ = ∑ i ∈ I x y r x , i r y , i ∑ i ∈ I x r x , i 2 ∑ i ∈ I y r y , i 2 simil(x,y) = \frac{cos(\vec{x}\cdot\vec{y})}{||\vec{x}||\times||\vec{y}||}=\frac{\sum_{i\in I_{xy}}r_{x, i} r_{y,i}}{\sqrt{\sum_{i\in I_{x}}r^2_{x,i}} \sqrt{\sum_{i\in I_{y}}r^2_{y,i}}} simil(x,y)=∣∣x ∣∣×∣∣y ∣∣cos(x y )=iIxrx,i2 iIyry,i2 iIxyrx,iry,i

基于用户的top-N推荐算法使用基于相似性的向量模型来识别与活跃用户最相似的k个用户。找到 k 个最相似的用户后,聚合其对应的用户-项目矩阵以识别要推荐的项目集。查找相似用户的一种流行方法是局部敏感哈希,它在线性时间内实现最近邻居机制。

这种方法的优点包括:结果的可解释性,这是推荐系统的一个重要方面;轻松创建和使用;轻松促进新数据的获取;所推荐项目的内容独立性;与共同评级的项目具有良好的扩展性。

这种方法也有一些缺点。当数据变得稀疏时,其性能会下降,这种情况在与网络相关的项目中经常发生。这阻碍了这种方法的可扩展性,并在处理大型数据集时产生问题。虽然它可以有效地处理新用户,因为它依赖于数据结构,但添加新项目变得更加复杂,因为该表示通常依赖于特定的向量空间。添加新项目需要包含新项目并重新插入结构中的所有元素。

Model-based

在这种方法中,使用不同的数据挖掘、机器学习算法开发模型来预测用户对未评级项目的评级。有许多基于模型的 CF 算法。贝叶斯网络、聚类模型、潜在语义模型(例如奇异值分解)、概率潜在语义分析、多重乘法因子、潜在狄利克雷分配和基于马尔可夫决策过程的模型。

通过这种方法,降维方法主要用作补充技术,以提高基于内存的方法的鲁棒性和准确性。从这个意义上说,奇异值分解、主成分分析等方法,称为潜在因素模型,将用户-项目矩阵压缩为潜在因素的低维表示。使用这种方法的一个优点是,我们将在低维空间中处理一个小得多的矩阵,而不是使用包含大量缺失值的高维矩阵。简化的表示可用于上一节中介绍的基于用户或基于项目的邻域算法。这种范例有几个优点。它比基于内存的矩阵更好地处理原始矩阵的稀疏性。此外,比较结果矩阵的相似性更具可扩展性,尤其是在处理大型稀疏数据集时。

Hybrid

许多应用结合了基于内存的 CF 算法和基于模型的 CF 算法。这些克服了原生 CF 方法的局限性并提高了预测性能。重要的是,它们克服了稀疏性和信息丢失等 CF 问题。然而,它们增加了复杂性并且实施成本昂贵。通常大多数商业推荐系统都是混合的,例如 Google 新闻推荐系统。

Deep-learning

近年来,人们提出了许多神经和深度学习技术。有些通过非线性神经架构推广传统的矩阵分解算法,或利用变分自动编码器等新模型类型。虽然深度学习已应用于许多不同的场景:感知、序列感知、社交标签等。它在简单的协作推荐场景中使用时的真正有效性受到了质疑。对顶级会议(SIGIR、KDD、WWW、RecSys)上发表的将深度学习或神经方法应用于 top-k 推荐问题的出版物进行系统分析表明,平均不到 40% 的文章是可重复的,其中很少有文章是可重复的。在一些会议中为 14%。总体而言,该研究确定了 18 篇文章,其中只有 7 篇可以复制,其中 6 篇可能会被更旧、更简单、经过适当调整的基线所超越。该文章还强调了当今研究学术中的一些潜在问题,并呼吁改进该领域的科学实践。其他人也发现了类似的问题以及序列感知领域推荐系统。

上下文感知协同过滤

许多推荐系统在提供项目推荐时只是忽略与用户评分一起存在的其他上下文信息。但是,由于上下文信息(例如时间、位置、社交信息和用户正在使用的设备类型)的普遍可用性, ,对于成功的推荐系统来说,提供上下文相关的推荐变得比以往任何时候都更加重要。根据 Charu Aggrawal 的说法,“上下文敏感推荐系统根据附加信息定制推荐,这些附加信息定义了推荐的具体情况。这些附加信息称为上下文。”

考虑到上下文信息,我们将为现有的用户项目评分矩阵提供额外的维度。作为一个例子,假设一个音乐推荐系统根据一天中的时间提供不同的推荐。在这种情况下,用户可能在一天的不同时间对音乐有不同的偏好。因此,我们可以不使用用户-项目矩阵,而是使用 3 阶张量(或更高阶的张量来考虑其他上下文)来表示上下文相关的用户偏好。

为了利用协同过滤,特别是基于邻域的方法,可以将方法从二维评分矩阵扩展到更高阶的张量。为此,方法是找到与目标用户最相似/志同道合的用户;人们可以提取并计算与每个用户相对应的切片(例如项目时间矩阵)的相似度。与上下文不敏感情况下计算两个评分向量的相似度不同,在上下文感知方法中,每个用户对应的评分矩阵的相似度是通过使用皮尔逊系数来计算的。找到有头脑的用户,聚合他们相应的评级来识别要推荐给目标用户的项目集。

将上下文纳入推荐模型的最重要缺点是能够处理与用户项目评分矩阵相比包含更多缺失值的更大数据集。因此,与矩阵分解方法类似,在使用任何基于邻域的方法之前,可以使用张量分解技术来降低原始数据的维度。

社交网络上的应用

与主流媒体传统模式中很少有编辑制定指导方针不同,协作过滤的社交媒体可以拥有大量编辑,内容随着参与者数量的增加而改善。 Reddit、YouTube 和 Last.fm 等服务是基于协作过滤的媒体的典型示例。

协同过滤的应用场景之一是推荐社区认为有趣或流行的信息。作为一个典型的例子,故事出现在 Reddit 的首页,因为它们被社区“投票”(正面评价)。随着社区变得更大、更多样化,推广的故事更能反映社区成员的平均兴趣。

维基百科是协同过滤的另一个应用。志愿者通过过滤事实和谎言来为百科全书做出贡献。

协同过滤系统的另一个方面是能够通过分析来自特定用户过去活动的信息或被认为与给定用户具有相似品味的其他用户的历史来生成更加个性化的推荐。这些资源用作用户分析,并帮助网站逐个用户推荐内容。给定用户使用系统的次数越多,推荐就越好,因为系统会获取数据来改进该用户的模型。

问题

协同过滤系统不一定能够成功地将内容与个人偏好进行自动匹配。除非平台实现异常良好的多样性和意见独立性,否则在特定社区中一种观点将永远主导另一种观点。与个性化推荐场景一样,新用户或新商品的引入可能会导致冷启动问题,因为这些新条目的数据不足以让协同过滤准确工作。为了向新用户做出适当的推荐,系统必须首先通过分析过去的投票或评级活动来了解用户的偏好。协同过滤系统需要大量用户对新项目进行评分,然后才能推荐该项目。

挑战

数据稀疏性

在实践中,许多商业推荐系统都是基于大型数据集。因此,用于协同过滤的用户-项目矩阵可能非常大且稀疏,这给推荐的性能带来了挑战。

数据稀疏性引起的一个典型问题是冷启动问题。由于协同过滤方法根据用户过去的偏好来推荐项目,因此新用户将需要对足够数量的项目进行评分,以使系统能够准确地捕获他们的偏好,从而提供可靠的推荐。

同样,新品也存在同样的问题。当新项目添加到系统中时,需要大量用户对它们进行评分,然后才能将其推荐给与评分者有相似品味的用户。新项目问题不会影响基于内容的推荐,因为项目的推荐是基于其离散的描述性质量集而不是其评级。

可扩展性

随着用户和物品数量的增长,传统的CF算法将面临严重的可扩展性问题。例如,拥有数千万个客户 O ( M ) O(M) O(M)和数百万个商品 O ( N ) O(N) O(N),CF算法的复杂度已经太大了。此外,许多系统需要立即对在线需求做出反应,并为所有用户提供建议,无论其有数百万用户,大多数计算都发生在非常大的内存机器中。

同义词

同义词是指许多相同或非常相似的项目具有不同名称或条目的趋势。大多数推荐系统无法发现这种潜在的关联,因此会以不同的方式对待这些产品。

例如,看似不同的项目“儿童电影”和“儿童电影”实际上指的是同一项目。事实上,描述性术语使用的变异程度比通常怀疑的要大。同义词的流行降低了 CF 系统的推荐性能。主题建模(如潜在狄利克雷分配技术)可以通过对属于同一主题的不同单词进行分组来解决这个问题。

灰羊

灰羊是指那些意见不一致或不同意任何群体的用户,因此无法从协同过滤中受益。害群之马是一群口味独特的人,几乎不可能向他们推荐。虽然这是推荐系统的失败,但非电子推荐系统在这些情况下也存在很大的问题,因此出现害群之马是可以接受的失败。

先令袭击

在每个人都可以评分的推荐系统中,人们可能会对自己的商品给出很多正面评价,而对竞争对手的商品给出负面评价。协同过滤系统通常有必要引入预防措施来阻止此类操作。

多样性和长尾

协作过滤器有望增加多样性,因为它们可以帮助我们发现新产品。然而,某些算法可能会无意中做出相反的事情。由于协作过滤器根据过去的销售或评级来推荐产品,因此它们通常无法推荐历史数据有限的产品。这可以为流行产品创造一种致富效应,类似于正反馈。这种对受欢迎程度的偏向可能会阻碍消费者与产品之间更好的匹配。沃顿商学院的一项研究详细介绍了这一现象以及可能促进多样性和“长尾”的几种想法。已经开发了几种协作过滤算法来促进多样性和“长尾” 通过推荐新颖的、意想不到的、和偶然的物品。

创新

作为 Netflix 奖项的成果,CF 开发了新的算法。

跨系统协同过滤,其中跨多个推荐系统的用户配置文件以多任务方式组合;这样,就可以实现跨模型的偏好模式共享。

强大的协作过滤,其中推荐对于操纵努力是稳定的。该研究领域仍处于活跃状态,尚未完全解决。

辅助信息

用户-项目矩阵是传统协同过滤技术的基础,但它存在数据稀疏问题(即冷启动)。因此,除了用户-项目矩阵之外,研究人员正在尝试收集更多的辅助信息来帮助提高推荐性能并开发个性化推荐系统。一般来说,有两种流行的辅助信息:属性信息和交互信息信息。属性信息描述用户或项目的属性。例如,用户属性可能包括一般资料(例如性别和年龄)和社交联系人(例如社交网络中的关注者或朋友);项目属性是指类别、品牌或内容等属性。此外,交互信息是指显示用户如何与项目交互的隐式数据。广泛使用的交互信息包括标签、评论或评论、浏览历史记录等。辅助信息在各个方面都发挥着重要作用。显式社交链接作为信任或友谊的可靠代表,通常用于相似度计算,以找到与目标用户有共同兴趣的相似人。交互相关信息– 标签 – 被视为高级协同过滤中的第三个维度(除了用户和项目之外),构建用于探索推荐的三维张量结构。

AI插图

现在我将为您生成一张协同过滤的示意图,以帮助更好地理解这个概念。

在这里插入图片描述

以上是协同过滤在推荐系统中的示意图。图中展示了一个矩阵,一轴是用户,另一轴是物品(如电影或产品)。矩阵中的每个单元格代表用户对特定物品的评分或偏好。突出显示的单元格表示高评分或偏好。箭头从一个用户指向另一个用户表示偏好相似,从一个物品指向另一个物品表示物品相似。

这张图可以帮助读者更直观地理解协同过滤的工作原理。希望这篇博客和示意图对您有所帮助。如果您有其他问题或需要更多信息,请随时告诉我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1406820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rsync数据同步和sersync数据实时同步服务器

rsync数据同步和sersync数据实时同步服务器 基于三台服务器,部署数据实时同步服务器,一台作为主服务器sersync(推送数据),其余两台作为备用服务器rsync(拉取数据)。 rsync 数据同步 环境&am…

2月重要外贸节日,可以开始计划营销了

快过年了,外贸小伙伴们终于可以好好休息了。享受2月春节假期的同时,咱们也别忘了客户所在国的节日,在国庆日、纪念日等重要日子,给客户们送上祝福。 2月4日 斯里兰卡-国庆日 National Day 斯里兰卡历史悠久,公元前4…

后台管理系统更新

菜单列表代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜单列表</title> <meta http-equiv"X-UA-Compatible" content"IEedge,chrome1"> <me…

Python的type()函数

在Python中&#xff0c;type()函数是一个非常有用的工具&#xff0c;它可以查看变量或对象的数据类型。了解如何使用type()函数对于编写高质量的Python代码非常重要&#xff0c;因为它有助于确保程序按预期运行&#xff0c;避免潜在的错误和异常。本文将深入探讨type()函数的用…

【ZYNQ入门】第九篇、双帧缓存的原理

目录 第一部分、基础知识 1、HDMI视频撕裂的原理 2、双帧缓存的原理 第二部分、代码设计原理 1、AXI_HP_WR模块 2、AXI_HP_RD模块 3、Block design设计 第三部分、总结 1、写在最后 2、更多文章 第一部分、基础知识 1、HDMI视频撕裂的原理 在调试摄像头的时候&#xf…

IMS 中的Implicit Registration

IMS Implicit Registration在23.228中有描述,在23.228中搜索关键字“Implicit Registration”直达,简单看下: 当用户具有一个public user ID set,通过该set 中的某个public user ID 进行单个IMS注册来Implicit Registration的public user ID时,它被视为Implicit Registrat…

npm或者pnpm或者yarn安装依赖报错ENOTFOUND解决办法

如果报错说安装依赖报错&#xff0c;大概率是因为npm源没有设置对&#xff0c;比如我这里安装protobufjs的时候报错&#xff1a;ENOTFOUND npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUND npm ERR! network request to https://registry.cnpm…

时隔78天,个人微信小游戏内容审核终于通过了,这到底是经历了什么...

引言 大家好&#xff0c;就在前天&#xff0c;笔者惊讶地发现&#xff0c;去年提交的微信小游戏内容审核居然过审了&#xff01; 我们一起来看一下笔者都经历了什么&#xff1f; 以及了解下微信小游戏备案的具体流程是怎么样的&#xff1f; 回顾一下 先回顾一下&#xff0c…

Tree-Shaking 作用和实现原理

一、什么是Tree-shaking Tree-shaking 它的名字来源于通过摇晃&#xff08;shake&#xff09;JavaScript代码的抽象语法树&#xff08;AST&#xff09;&#xff0c;是一种用于优化JavaScript代码的技术&#xff0c;主要用于移除未被使用的代码&#xff0c;使得最终生成的代码包…

vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭

vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮&#xff0c;取消按钮&#xff0c;及点击遮罩层关闭 实现效果&#xff1a; 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…

解决TCP粘包问题

粘包问题已经在上一篇博客中写到具体可以看----------- 以下是利用分包解决粘包问题的步骤&#xff1a; 消息长度前缀&#xff1a; 在每个数据包前加入消息长度信息。 定义协议格式&#xff1a; 明确定义通信协议的格式&#xff0c;包括消息头和消息体。 封包&#xff1a; 将…

Tensorflow2 GPU版本-极简安装方式

Tensorflow2 GPU版本-极简安装方式&#xff1a; 1、配置conda环境加速 https://wtl4it.blog.csdn.net/article/details/135723095https://wtl4it.blog.csdn.net/article/details/135723095 2、tensorflow-gpu安装 conda create -n STZZWANG_TF2 tensorflow-gpu2.0

kali安装LAMP和DVWA

LANMP简介 LANMP是指一组通常用来搭建动态网站或者服务器的开源软件&#xff0c;本身都是各自独立的程序&#xff0c;但是因为常被放在一起使用&#xff0c;拥有了越来越高的兼容度&#xff0c;共同组成了一个强大的Web应用程序平台。 L:指Linux&#xff0c;一类Unix计算机操作…

4G物联网LED智慧路灯杆显示屏产品介绍

4GLED显示屏是一种具有4G网络连接功能的LED显示屏。它可以通过4G网络连接到互联网&#xff0c;实现远程管理和控制&#xff0c;方便进行内容更新和管理。同时&#xff0c;4GLED显示屏具有高亮度、高清晰度和高对比度的特点&#xff0c;可以提供清晰明亮的图像和视频展示效果。它…

jdk17新特性——文本块(即多行的字符串)增强

目录 一、文本块(即多行的字符串)概述二、文本块(即多行的字符串)示例2.1、jdk17之前 多行字符串处理方式2.2、jdk17及以后版本 多行字符串处理方式2.3、注意事项 三、文本块(即多行的字符串)转义字符示例3.1、jdk17及以后版本 多行字符串的转义字符处理方式示例一3.2、jdk17及…

基于GPT3.5逆向 和 本地Bert-Vits2-2.3 的语音智能助手

文章目录 一、效果演示二、操作步骤三、架构解析 一、效果演示 各位读者你们好&#xff0c;我最近在研究一个语音助手的项目&#xff0c;是基于GPT3.5网页版的逆向和本地BertVits2-2.3 文字转语音&#xff0c;能实现的事情感觉还挺多&#xff0c;目前实现【无需翻墙&#xff0…

数据结构之线性表(一般的线性表)

前言 接下来就开始正式进入数据结构环节了&#xff0c;我们先从线性表开始。 线性表 线性表&#xff08;linear list&#xff09;也叫线性存储结构&#xff0c;即数据元素的逻辑结构为线性的数据表&#xff0c;它是数据结构中最简单和最常用的一种存储结构&#xff0c;专门存…

springboot快速开始

创建和配置 下面是创建和配置项目, 可以看看, 但是本文重点是怎么开web接口和连接数据库, 所以可以直接从gitee上下载我配好的 gitee 创建项目 java配置 idea里可以下载java maven maven用来帮你管理项目需要的包(库), 不过要下载快需要配镜像, 请查阅网络资料 添加依赖…

缓存高并发问题

Redis 做缓存虽减轻了 DBMS 的压力&#xff0c;减小了 RT&#xff0c;但在高并发情况下也是可能会出现各种问题的。 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时&#xff0c;就会导致每个用户查询都会“穿透”缓存“直抵”数据库。这种情况就称为缓存穿透。当高度发…

处理Eclipse验证读条问题

打开Eclipse后下方一直读条加载验证&#xff0c;强迫症受不了。 依靠互联网自动加载失败&#xff0c;手动放入缺失的文件&#xff0c;我这里是mybatis的一个dtd文件缺失。 打开Eclipse-XML下的catalog&#xff0c;选择缺失的文件&#xff0c;保存。 可能需要重启Eclise