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

论文笔记-NeurIPS2017-DropoutNet

论文笔记-NeurIPS2017-DropoutNet: Addressing Cold Start in Recommender Systems

  • DropoutNet:解决推荐系统中的冷启动问题
  • 摘要
  • 1.引言
  • 2.前言
  • 3.方法
    • 3.1模型架构
    • 3.2冷启动训练
    • 3.3推荐
  • 4.实验
    • 4.1实验设置
    • 4.2在CiteULike上的实验结果
      • 4.2.1 Dropout率的影响
      • 4.2.2 实验结果
    • 4.3在RecSys上的实验结果
  • 5.总结

DropoutNet:解决推荐系统中的冷启动问题

论文: DropoutNet: Addressing Cold Start in Recommender Systems
代码: DropoutNet

摘要

大多数潜在模型主要集中在用户-物品交互的建模上,关于冷启动问题的研究相对较少。因此,本文提出了一种名为 DropoutNet 的基于神经网络的潜在模型,以解决推荐系统中的冷启动问题。与现有方法不同的是,DropoutNet 没有引入额外的基于内容的目标项,而是专注于优化,表明神经网络模型可以通过 dropout 明确训练以应对冷启动问题。

1.引言

冷启动等同于缺失数据问题,即缺失偏好信息。因此,DropoutNet 并不添加额外的目标项来建模内容,而是修改学习过程,明确地使模型适应缺失的输入。该方法的关键思想是,通过对输入小批量应用dropout,训练DNN以对缺失输入进行泛化。

通过选择适当的dropout比例,DropoutNet 在热启动时的性能与最先进的模型相当,而在冷启动时则显著优于其性能。DropoutNet 比大多数结合内容信息的方法简单,并且使用单一的目标函数,联合优化所有组件以最大化推荐准确性。该方法的另一个优点是,它可以在任何现有的潜在模型之上应用,以提供或增强其冷启动能力。

2.前言

定义如下:

  1. 用户集合: U = { u 1 , u 2 , … , u N } U = \{ u_1, u_2, \ldots, u_N \} U={u1,u2,,uN}

  2. 物品集合: V = { v 1 , v 2 , … , v M } V = \{ v_1, v_2, \ldots, v_M \} V={v1,v2,,vM}

  3. 偏好矩阵: R R R

  4. 用户 u u u 对物品 v v v 的偏好: R u v ​ R_{uv}​ Ruv

  5. 对物品 v v v 表达偏好的用户集合: U ( v ) = { u ∈ U ∣ R u v ≠ 0 } U(v) = \{ u \in U \mid R_{uv} \neq 0 \} U(v)={uURuv=0}

  6. 对用户 u u u 表达偏好的物品集合: V ( u ) = { v ∈ V ∣ R u v ≠ 0 } V(u) = \{ v \in V \mid R_{uv} \neq 0 \} V(u)={vVRuv=0}

  7. 冷启动条件: V ( u ) = ∅ V(u) = \emptyset V(u)= U ( v ) = ∅ U(v) = \emptyset U(v)=

  8. 用户的内容特征: Φ U ​ \Phi^U​ ΦU

  9. 物品的内容特征: Φ V ​ \Phi^V​ ΦV

  10. 用户 u u u 的内容特征向量: Φ u U ​ \Phi_u^U​ ΦuU

  11. 物品 v v v 的内容特征向量: Φ v V ​ \Phi_v^V​ ΦvV

  12. 当内容缺失时,特征向量设置为 Φ u U ​ = 0 \Phi_u^U​=0 ΦuU=0 Φ v V = 0 ​ \Phi_v^V=0​ ΦvV=0​

3.方法

DropoutNet 使用潜在表示作为偏好输入。潜在模型通常用低秩矩阵 U U U V V V 的乘积来近似偏好矩阵积来近似偏好矩阵: KaTeX parse error: Undefined control sequence: \* at position 19: …uv} \approx U_u\̲*̲V_v^T,其中 U u ​ U_u​ Uu V v ​ V_v​ Vv 分别是用户 u u u 和物品 v v v 的潜在表示。 U U U V V V 都是密集且低维的,秩为 D ≤ min ⁡ ( N , M ) D \leq \min(N, M) Dmin(N,M)。考虑到潜在方法在各种协同过滤数据集上的强大表现,可以合理假设潜在表示准确地总结了用户和物品的偏好信息。此外,低输入维度显著降低了深度神经网络(DNN)的模型复杂性,因为第一个隐藏层的激活大小与输入大小成正比。鉴于这些优势,将每个用户 u u u 和物品 v v v 的输入设定为 [ U u , Φ u U ] [U_u, \Phi_u^U] [Uu,ΦuU] [ V v , Φ v V ] [V_v, \Phi_v^V] [Vv,ΦvV]

3.1模型架构

模型架构如图1所示,对于每个用户,两个形式的输入通过相应的DNN进行处理,连接之后传递给微调网络 f U ​ f_U​ fU​,然后输出潜在表示 U ^ u ​ \hat{U}_u​ U^u。对于每个物品,得到潜在表示 V ^ v ​ \hat{V}_v​ V^v。在训练过程中,所有组件通过反向传播共同优化。一旦模型训练完成就将其固定,并进行前向传播以映射 U → U ^ U \to \hat{U} UU^ V → V ^ V \to \hat{V} VV^。所有检索操作都使用 U ^ \hat{U} U^ V ^ \hat{V} V^ 进行,相关性评分则按之前的方式估算为 s ^ u v = U ^ u V ^ v T ​ \hat{s}_{uv} = \hat{U}_u \hat{V}^T_v​ s^uv=U^uV^vT
在这里插入图片描述

3.2冷启动训练

借鉴去噪自编码器的思想,本文的目标是学习一个模型,即使在输入的部分缺失时仍能产生准确的表示。为此,提出了一个目标,即在输入通过模型后重现相关性评分:
在这里插入图片描述
目标O是最小化输入潜在模型和DNN产生的评分之间的差异。当所有的输入可用时,也就是热推荐时,通过将内容权重设置为0来使模型专注于偏好输入。这意味着模型不再考虑内容的影响,只依赖于用户的偏好来生成相关性评分。在这种情况下,模型学习到一个恒等函数,即对于给定的偏好输入,输出的评分与输入完全相同。这是一个理想的状态,因为它意味着模型在这种情况下可以准确地反映用户的偏好。

在冷启动情况下, U u ​ U_u​ Uu V v ​ V_v​ Vv(或两者)可能缺失,因此主要思路是通过应用输入丢弃(dropout)进行训练。使用随机的小批量优化,随机抽取用户-物品对来计算梯度并更新模型。在每个小批量中,随机选择一部分用户和物品,并将它们的偏好输入设置为 0,然后将小批量传递给模型。对于“丢弃”的对,模型必须在没有看到偏好输入的情况下重构相关性评分:
在这里插入图片描述
使用丢弃(dropout)进行训练具有双重效果:丢弃的对促使模型仅使用内容信息,而没有丢弃的对则鼓励模型忽略内容,简单地重现偏好输入。这两者的结合可以达到一种平衡。使用丢弃的另一个优点是,它最初是作为一种正则化模型的方法开发的。在这里也有类似的效果,即使对于更深和更复杂的模型,通常也不需要额外的正则化。

类似于去噪自编码器,DropoutNet 模型被训练来从噪声版本中重建输入。噪声以丢弃的形式出现,完全去除一部分输入维度。然而,DropoutNet 的目标不是重建实际的未损坏输入,而是最小化原始空间和重建空间中点之间的成对距离。考虑相关性评分 S = { U u V v T ∣ u ∈ U , v ∈ V } S = \{ U_u V^T_v | u \in U, v \in V \} S={UuVvTuU,vV} S ^ = { U ^ u V ^ v T ∣ u ∈ U , v ∈ V } \hat{S} = \{ \hat{U}_u \hat{V}^T_v | u \in U, v \in V \} S^={U^uV^vTuU,vV} 作为一维空间中的点集,DropoutNet 目标是保留由模型生成的 S ^ \hat{S} S^ 中点的相对排序与原始集 S S S 的相对排序。DropoutNet 专注于重建距离,提供了更大的灵活性,使模型能够学习全新的潜在空间,而不是将其绑定到另一个模型学习的表示上。这个目标类似于许多流行的降维模型,它们将数据投影到低维空间中,同时保留点之间的相对距离。

3.3推荐

训练完成后,固定模型并进行前向传播,以推断新的潜在表示。为了在观察到冷启动用户 u u u 的首个偏好时更新潜在表示 U ^ u ​​ \hat{U}_u​​ U^u​​,需要推断输入偏好向量 U u ​ U_u​ Uu。由于许多主流潜在模型使用复杂的非凸目标,使用新偏好更新潜在表示是一项非平凡的任务,需要迭代优化。为避免这一问题,本文使用一个简单的技巧,将每个用户表示为其交互过的物品的加权和,直到输入潜在模型被重新训练。形式上,给定生成了新交互集 V ( u ) V(u) V(u) 的冷启动用户 u u u,用该用户在 V ( u ) V(u) V(u) 中物品的平均潜在表示来近似 U u ​ U_u​ Uu
在这里插入图片描述
使用这一近似,通过用户 DNN 进行前向传播,可以获得更新的表示: U ^ u = f U ( mean v ∈ V ( u ) V v , Φ u U ) \hat{U}_u = f_U\left(\text{mean}_{v \in V(u)} V_v, \Phi_u^U\right) U^u=fU(meanvV(u)Vv,ΦuU)。这一过程可以在收集新数据的近实时情况下持续进行,直到输入潜在模型被重新训练。冷启动物品的处理方式类似,使用用户表示的平均值。通过这种近似获得的表示的分布可能会偏离输入潜在模型生成的分布。使用类似于冷启动的丢弃方法显式地为此进行训练。在学习过程中,每个小批量中随机选择的用户和物品的偏好输入被替换为方程 (4)。在丢弃和这一转换之间交替,并控制每种转换的相对频率(即丢弃比例)。算法 1 概述了完整的学习过程。
在这里插入图片描述

4.实验

4.1实验设置

数据集:CiteULike 和 ACM RecSys 2017

基线:WMF、CTR、DeepMusic 和 CDL

4.2在CiteULike上的实验结果

4.2.1 Dropout率的影响

图 2 显示了 dropout 率在 0 到 1 之间的热启动和冷启动 recall@100 的准确性。
在这里插入图片描述

结论:

热启动的准确性几乎保持不变,下降幅度不到 1%,直到 dropout 达到 0.7 时迅速下降。另一方面,冷启动的准确性随着 dropout 的增加而稳步上升。此外,在没有 dropout 的情况下,冷启动性能较差,即使是 0.1 的 dropout 也能使其提高超过 60%。这表明在某些 dropout 值的范围内,可以在冷启动准确性上获得显著提升,而不会对热启动造成损失。

4.2.2 实验结果

本文使用 WMF 和 CDL 作为输入偏好模型,偏好输入 dropout 率均为 0.5,热启动和冷启动的 recall@100 结果如表 1 所示。
在这里插入图片描述

结论:

  1. 大多数基线在热启动上产生了相似的结果,因为几乎所有模型都使用 WMF 目标来建模 R。其中一个例外是 DeepMusic,这归因于 DeepMusic 中项目潜在表示仅为内容的函数,因此缺乏偏好信息。

  2. DN-WMF 和 DN-CDL 的表现与最佳基线相当,表明将偏好信息作为输入添加到模型中显著改善了性能。相比之下,像 DeepMusic 这样的仅基于内容的模型效果较差。

  3. Dropout=0.5 不会影响热启动性能,我们的模型仍然能够恢复输入潜在模型的准确性。冷启动结果则更加多样化,最佳冷启动基线如预期为 DeepMusic。

4.3在RecSys上的实验结果

在这里插入图片描述

结论:

  1. 所有基线的表现相近,除了 DeepMusic,这表明仅基于内容的模型在热启动上不太可能表现良好。

  2. 用户和项目冷启动的结果显示 DN-WMF 的表现明显优于 DeepMusic,对于大多数截断,提升超过 50%。进一步表明,即使最终目标是冷启动,将偏好信息作为输入纳入模型是非常重要的。

5.总结

提出了 DropoutNet,一种用于推荐系统冷启动的深度神经网络模型。DropoutNet 在训练过程中应用输入 dropout,以适应缺失的偏好信息。缺失数据的优化迫使模型利用偏好和内容信息,而不明确依赖两者同时存在。这使得模型在热启动和冷启动场景中都具有出色的泛化能力。此外,与通常具有复杂多项目标函数的现有方法不同,DropoutNet 的目标函数只有一个单一项,易于实现和优化。DropoutNet 可以有效地应用于任何现有的潜在模型之上,提供冷启动能力,并充分发挥深度架构在内容建模中的优势。从实证上看,DropoutNet 在两个公共基准上展示了最先进的结果。

相关文章:

论文笔记-NeurIPS2017-DropoutNet

论文笔记-NeurIPS2017-DropoutNet: Addressing Cold Start in Recommender Systems DropoutNet:解决推荐系统中的冷启动问题摘要1.引言2.前言3.方法3.1模型架构3.2冷启动训练3.3推荐 4.实验4.1实验设置4.2在CiteULike上的实验结果4.2.1 Dropout率的影响4.2.2 实验结…...

【后端开发面试题】每日 3 题(四)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html 📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家~ ❤️如果有收获的话&#x…...

使用AoT让.NetFramework4.7.2程序调用.Net8编写的库

1、创建.Net8的库&#xff0c;双击解决方案中的项目&#xff0c;修改如下&#xff0c;启用AoT&#xff1a; <Project Sdk"Microsoft.NET.Sdk"><PropertyGroup><OutputType>Library</OutputType><PublishAot>true</PublishAot>&…...

c++中的静态多态和动态多态简介

在 C 中&#xff0c;多态性&#xff08;Polymorphism&#xff09; 分为 静态多态&#xff08;Static Polymorphism&#xff09; 和 动态多态&#xff08;Dynamic Polymorphism&#xff09;&#xff0c;二者通过不同的机制实现代码的灵活性。以下是详细对比和核心要点&#xff1…...

FastExcel与Reactor响应式编程深度集成技术解析

一、技术融合背景与核心价值 在2025年企业级应用开发中&#xff0c;大规模异步Excel处理与响应式系统架构的结合已成为技术刚需。FastExcel与Reactor的整合方案&#xff0c;通过以下技术协同实现突破性性能&#xff1a; 内存效率革命&#xff1a;FastExcel的流式字节操作与Re…...

【MySQL篇】数据类型

目录 前言&#xff1a; 1&#xff0c;数据类型的分类 ​编辑 2 &#xff0c;数值类型 2.1 tinyint类型 2.2 bit类型 2.3 小数类型 2.3.1 float类型 2.3.2 decimal类型 3&#xff0c;字符串类型 3.1 char 3.2 varchar 3.3 char与varchar的比较 3.4日期和时间类型 3.5 …...

haclon固定相机位标定

什么是标定&#xff1f; 工业应用中相机拍到一个mark点的坐标为C1&#xff08;Cx,Cy&#xff09;&#xff0c;C1点对应的龙门架/机械手等执行端对应的坐标是多少&#xff1f; 标定就是解决这个问题&#xff0c;如相机拍到一个点坐标C1&#xff08;Cx,Cy&#xff09;&#xff0c…...

Token相关设计

文章目录 1. 双Token 机制概述1.1 访问令牌&#xff08;Access Token&#xff09;1.2 刷新令牌&#xff08;Refresh Token&#xff09; 2. 双Token 认证流程3. Spring Boot 具体实现3.1 生成 Token&#xff08;使用 JWT&#xff09;3.2 解析 Token3.3 登录接口&#xff08;返回…...

vue3:四嵌套路由的实现

一、前言 1、嵌套路由的含义 嵌套路由的核心思想是&#xff1a;在某个路由的组件内部&#xff0c;可以定义子路由&#xff0c;这些子路由会渲染在父路由组件的特定位置&#xff08;通常是 <router-view> 标签所在的位置&#xff09;。通过嵌套路由&#xff0c;你可以实…...

在 Element Plus 的 <el-select> 组件中,如果需要将 <el-option> 的默认值设置为 null。 用于枚举传值

文章目录 引言轻松实现 `<el-option>` 的默认值为 `null`I 实现方式监听清空事件 【推荐】使用 v-model 绑定 null添加一个值为 null 的选项处理 null 值的显示引言 背景:接口签名规则要求空串参与,空对象不参与签名计算 // 空字符串“” 参与签名组串,null不参与签…...

List(3)

前言 上一节我们讲解了list主要接口的模拟实现&#xff0c;本节也是list的最后一节&#xff0c;我们会对list的模拟实现进行收尾&#xff0c;并且讲解list中的迭代器失效的情况&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习 list的迭代器失效 之前在讲解vec…...

算法-二叉树篇23-二叉搜索树中的插入操作

二叉搜索树中的插入操作 力扣题目链接 题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同…...

React底层常见的设计模式

在React中&#xff0c;常见的设计模式为开发者提供了结构化和可重用的解决方案&#xff0c;有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析&#xff0c;并附上示例代码和注释&#xff1a; 1. 容器组件与展示组件模式&#xff08;Container/P…...

【PHP脚本语言详解】为什么直接访问PHP文件会显示空白?从错误示例到正确执行!

前言 作为一名开发者&#xff0c;你是否曾经遇到过这样的问题&#xff1a;写了一个PHP脚本&#xff0c;放到服务器根目录后&#xff0c;直接通过file:///路径访问却显示空白页面&#xff1f;而换成http://localhost却能正常显示&#xff1f;这篇文章将带你深入理解PHP脚本语言…...

小程序性能优化-预加载

在微信小程序中&#xff0c;数据预加载是提升用户体验的重要优化手段。以下是处理数据预加载的完整方案&#xff1a; 一、预加载的适用场景 跳转页面前的数据准备 如从列表页进入详情页前&#xff0c;提前加载详情数据首屏加载后的空闲时间 在首页加载完成后&#xff0c;预加载…...

Docker 数据卷管理及优化

Docker 数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过了容器的文件系统&#xff0c;直接将数据存储在宿主机上。通过数据卷&#xff0c;可以实现数据的持久化、共享以及独立于容器生命周期的管理。 1.1 为什么要用数据卷 Docker 分层文件系统的特点 性能差&#xff…...

MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享

一、背景 在文档搜索场景中&#xff0c;高效精准的搜索功能至关重要&#xff0c;能提升检索效率&#xff0c;为用户提供精准、快速的信息获取体验&#xff0c;提高工作效率。在文档管理系统里&#xff0c;全文搜索是非常重要的功能之一。随着文档数量增长&#xff0c;如何快速…...

C#内置委托(Action)(Func)

概述 在 C# 中&#xff0c;委托是一种类型&#xff0c;它表示对具有特定参数列表和返回类型的方法的引用。C# 提供了一些内置委托&#xff0c;使得开发者可以更方便地使用委托功能&#xff0c;无需手动定义委托类型。本文将详细介绍 Action 和 Func 这两个常用的内置委托。 A…...

OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用非局部均值去噪算法&#xff08;Non-local Means Denoising algorithm&#xff09;执行图像去噪&#xff0c;该算法来源于 http://www.ipol.…...

Kafka生产者相关

windows中kafka集群部署示例-CSDN博客 先启动集群或者单机也OK 引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.0</version></dependency>关于主题创建 理论…...

【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C

前置信息 宿主机信息 [root@localhost ~]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR…...

如何流畅访问github

1.传输数据原理 本地计算机通过本地网接入运营骨干网&#xff0c;经过DNS域名解析&#xff0c;将输入的字符解析为要连接的真实IP地址&#xff0c;服务器返还一个数据包(github)给计算机 2.原因 DNS域名污染-DNS解析出现问题&#xff0c;导致访问一个不存在的服务器 3.解决…...

vue3:三项目增加404页面

一、路由添加 1、官网地址 带参数的动态路由匹配 | Vue Routerhttps://router.vuejs.org/zh/guide/essentials/dynamic-matching.html 2、复制核心语句 { path: /:pathMatch(.*)*, name: NotFound, component: NotFound } 3、粘贴到路由index.js中 4、建立页面 在view文件夹…...

纯c#字体处理库(FontParser) -- 轻量、极速、跨平台、具有字体子集化功能

关于字体库与 FontParser 的开发历程   字体库是用于处理和渲染字体的软件工具&#xff0c;其功能通常涵盖字体文件的加载、解析、字形渲染和文本布局等核心模块。在众多字体库中&#xff0c;FreeType 是被广泛应用且极具影响力的开源项目&#xff0c;已成为事实上的行业标准…...

云和恩墨亮相PolarDB开发者大会,与阿里云深化数据库服务合作

2025年2月26日&#xff0c;备受瞩目的阿里云PolarDB开发者大会于北京嘉瑞文化中心盛大举行&#xff0c;众多行业精英齐聚一堂&#xff0c;共襄技术盛会。云和恩墨作为阿里云重要的生态合作伙伴受邀参会。云和恩墨联合创始人兼技术研究院总经理杨廷琨与阿里云智能数据库产品事业…...

【通俗讲解电子电路】——从零开始理解生活中的电路(二)

电路分析&#xff1a;看懂简单的“电路图” ——从“路线图”到“工具箱”&#xff0c;掌握电路的底层逻辑 1. 欧姆定律&#xff1a;电的“交通规则” 公式解析&#xff1a;V I R 电压&#xff08;V&#xff09;&#xff1a;推动电流的动力&#xff08;如电池电压&#xff…...

Spring DIIoC

一.IoC 1.简介 什么是IoC&#xff1f;IoC&#xff0c;全称 Inversion of Control&#xff0c;控制反转。IoC是Spring的核心思想&#xff0c;Spring是⼀个“控制反转”的容器。 如果我们需要一个对象&#xff0c;正常来说我们是通过new一个对象&#xff0c;这个时候我们依赖的…...

基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...

C++22——哈希

目录 1.unordered_map的文档介绍 2.unordered_set的文档介绍 3.底层结构 3.1哈希的概念 3.2哈希冲突 3.3哈希函数 3.4哈希冲突解决 3.4.1闭散列 3.4.2开散列 1.unordered_map的文档介绍 unordered_map在线文档说明 unordered_map是存储<key&#xff0c;value>键值…...

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成

使用Spring Boot与达梦数据库(DM)进行多数据源配置及MyBatis Plus集成 在现代企业级应用开发中&#xff0c;处理多个数据源是一个常见的需求。本文将详细介绍如何使用Spring Boot结合达梦数据库&#xff08;DM&#xff09;&#xff0c;并通过MyBatis Plus来简化数据库操作&…...

Servlet简介

Servlet是sun公司提供的一门用于开发动态web资源的技术。 Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a; 编写一个Java类&#xff0c;实现servlet接口。 …...

智能合约安全 | 合约无效化攻击

目录&#xff1a; 智能合约安全 合约无效化攻击 合约自毁函数 selfdestruct 攻击实现 漏洞防御 总结 智能合约安全 合约无效化攻击 合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个…...

20250226-代码笔记05-class CVRP_Decoder

文章目录 前言一、class CVRP_Decoder(nn.Module):__init__(self, **model_params)函数功能函数代码 二、class CVRP_Decoder(nn.Module):set_kv(self, encoded_nodes)函数功能函数代码 三、class CVRP_Decoder(nn.Module):set_q1(self, encoded_q1)函数功能函数代码 四、class…...

【开源免费】基于SpringBoot+Vue.JS网络海鲜市场系统(JAVA毕业设计)

本文项目编号 T 222 &#xff0c;文末自助获取源码 \color{red}{T222&#xff0c;文末自助获取源码} T222&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

【LeetCode: SQL专题 : SQL132 每个题目和每份试卷被作答的人数和次数 + 合并查询】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

【软考-架构】1.2、指令系统-存储系统-cache

GitHub地址&#xff1a;https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 指令系统 计算机指令执行过程&#xff1a;取指令一一分析指令一一执行指令三个步骤&#xff0c;首先将程序计数器PC中的指令地址取出&#xff0c;送入地址总线&#xff0c;CPU依据…...

Uniapp开发微信小程序插件的一些心得

一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...

C++-第十八章:线程相关内容

目录 第一节&#xff1a;thread的主要内容 1-1.创建子线程 1-2.回收子线程 1-3.获得子线程的id 1-4.获得当前线程id 1-5.子线程传引用 1-6.线程的先创建后使用 第二节&#xff1a;mutex的主要内容 2-1.mutex的作用 2-2.智能锁 第三节&#xff1a;condition_variable的主要内…...

纯函数(Pure Function)概念

纯函数&#xff08;Pure Function&#xff09;概念 纯函数是函数式编程中的核心概念&#xff0c;满足以下两个条件&#xff1a; 确定性&#xff1a;相同的输入 永远得到相同的输出&#xff0c;不依赖外部状态或随机性。 无副作用&#xff1a;不会修改外部变量、参数、I/O设备或…...

【网络安全】敏感字段扫描工具(可用于漏洞挖掘、代码审计)

原创文章,禁止转载。 读者可对脚本进行二次创作,以适配个人需求。 文章目录 ScanSensitiveInfo.py效果图ScanSensitiveInfo.py 该脚本用于扫描敏感字段、代码中可能引入的第三方JS链接/服务以及可能涉及信息泄露的请求方法。 1、脚本采用单线程处理,避免多线程导致的混行问…...

介绍下pdf打印工具类 JasperPrint

JasperPrint 工具类深度解析 JasperPrint 是 JasperReports 框架中实现 PDF 打印的核心载体类&#xff0c;其本质是 填充数据后的可打印报表对象&#xff0c;承担着从模板编译、数据填充到格式输出的全流程控制。以下从 7 个维度展开深度解析&#xff1a; 一、核心定位与生命周…...

Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函数调用流程图、Python代码示例

文章目录 Function Calling介绍**核心原理**1. **动态扩展模型能力**2. **JSON结构化交互** **实现步骤**&#xff08;以支持Function Calling的模型为例&#xff09;1. **定义可用函数**2. **模型匹配与生成**3. **开发者执行函数**4. **结果反馈给模型** **DeepSeek R1的当前…...

分享一套适合做课设的SpringBoot商城系统

开学季到了&#xff0c;不少同学都进入了学习的状态中去了&#xff0c;趁着今天有空来分享一套商城系统&#xff0c;这套代码实现了商城的前后台&#xff0c;整体界面和代码非常简洁&#xff0c;熟悉项目之后可以根据需求进行二次开发&#xff0c;也适合用来做毕设、课设&#…...

C语言自定义类型:联合和枚举

在C语言中&#xff0c;联合&#xff08;Union&#xff09;和枚举&#xff08;Enum&#xff09;是两种重要的的自定义数据类型。它们分别适用于不同的场景&#xff0c;能够提升代码的效率和可维护性。。本文将结合代码示例&#xff0c;详细讲解它们的声明、特点及使用方法。 一、…...

Redis SCAN 命令详解:安全遍历海量键的利器

一、SCAN 命令的核心价值 Redis 的 KEYS * 命令虽然可以遍历所有键&#xff0c;但在生产环境中直接使用可能导致服务阻塞&#xff08;时间复杂度 O(n)&#xff09;。SCAN 命令通过游标分批次迭代&#xff0c;实现非阻塞式遍历&#xff0c;成为处理百万级键的安全选择。 二、命…...

文字滚动效果组件和按钮组件

今天和大家分享一个vue中好用的组件&#xff0c;是我自己写的&#xff0c;大家也可以自己改&#xff0c;就是文字的循环滚动效果&#xff0c;如下图&#xff0c;文字会向左移动&#xff0c;结束之后也会有一个循环&#xff0c;还有一个按钮组件&#xff0c;基本框架写的差不多了…...

Sqlserver安全篇之_TLS的证书概念

证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…...

VS Code 如何搭建CC++开发环境

VS Code 如何搭建C/C开发环境 文章目录 VS Code 如何搭建C/C开发环境1. VS Code是什么2. VS Code的下载和安装2.1 下载和安装2.2 环境的介绍 3. VS Code配置C/C开发环境3.1 下载和配置MinGW-w64编译器套件3.2 安装C/C插件3.3 重启VS Code 4. 在VS Code上编写C语言代码并编译成功…...

计算机网络之传输层(传输层的功能)

一、数据分段与重组 传输层从会话层接收数据&#xff0c;并将其分割成较小的数据段&#xff0c;以适应网络层的最大传输单元&#xff08;MTU&#xff09;限制。在目的端&#xff0c;传输层负责将这些数据段重新组合成原始数据&#xff0c;确保数据的完整性和正确性。 二、端口…...

中科大计算机网络原理 1.5 Internt结构和ISP

一、互联网的层次化架构 ‌覆盖范围分层‌ ‌主干网&#xff08;Tier-1级&#xff09;‌ 国家级或行业级核心网络&#xff0c;承担跨区域数据传输和全球互联功能。例如中国的四大主干网&#xff08;ChinaNET、CERNET等&#xff09;以及跨国运营商&#xff08;如AT&T、Deuts…...