搜广推校招面经六十六
高德推荐算法
一、介绍Transformer中的位置编码(Positional Encoding)
在 Transformer 结构中,由于模型没有内置的序列信息(不像 RNN 那样有时间步的顺序依赖),需要通过**位置编码(Positional Encoding, PE)**来提供位置信息,使得模型能够区分不同 token 的相对位置。
1.1. 位置编码的作用
由于 Transformer 采用的是自注意力机制(Self-Attention),它对输入序列的排列顺序不敏感,因此需要显式地向输入中添加位置信息。位置编码的主要作用包括:
- 提供位置信息,使模型能够捕捉顺序关系。结合词向量(Embedding)输入到 Transformer 中,以提供语义和位置信息。
1.2. 正弦-余弦位置编码(Sinusoidal Positional Encoding)
Vaswani 等人在 “Attention is All You Need” 论文中提出了一种固定的位置编码方法,使用不同频率的正弦(sin)和余弦(cos)函数来编码位置:
P E ( p o s , 2 i ) = sin ( p o s 1000 0 2 i / d ) P E ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i / d ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right) \\ \ \\ PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right) PE(pos,2i)=sin(100002i/dpos) PE(pos,2i+1)=cos(100002i/dpos)
其中:
- p o s pos pos 表示序列中的位置(Position)。
- i i i 表示维度索引(每个位置编码有 d 维)。
- d d d 表示编码的总维度(等于 Embedding 维度)。
- 1000 0 2 i / d 10000^{2i/d} 100002i/d 作为不同维度的缩放因子,使得不同维度的 PE 具有不同的变化率。
1.3. 为什么使用正弦和余弦?
- 周期性:不同位置的编码可以通过线性组合推导出新位置的编码,有利于泛化到更长的序列。
- 不同频率:较低维度的编码变化较快,较高维度的编码变化较慢,使得模型能够学习不同粒度的相对位置信息。
- 平滑变化:相邻位置的编码变化平滑,符合自然语言的顺序特性。
1.4. PyTorch 实现
以下是使用 PyTorch 实现的位置编码模块:
import torch
import torch.nn as nn
import mathclass PositionalEncoding(nn.Module):def __init__(self, d_model: int, max_len: int = 5000):""":param d_model: 词向量维度 (Embedding 维度):param max_len: 序列最大长度"""super(PositionalEncoding, self).__init__()# 创建位置编码矩阵(shape: [max_len, d_model])pe = torch.zeros(max_len, d_model)position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) # [max_len, 1]div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)) # [d_model/2]# 计算 sin 和 cos 位置编码pe[:, 0::2] = torch.sin(position * div_term) # 偶数索引pe[:, 1::2] = torch.cos(position * div_term) # 奇数索引# 增加 batch 维度以便广播pe = pe.unsqueeze(0) # shape: [1, max_len, d_model]# 注册为 buffer,使其不会被模型参数更新self.register_buffer('pe', pe)def forward(self, x):""":param x: 输入张量,形状为 [batch_size, seq_len, d_model]:return: 加入位置编码后的张量"""return x + self.pe[:, :x.size(1), :]
二、如何解决CTR预估中广告位置的bias,讲讲网络中的bias net如何做
见【搜广推校招面经二十六】
在广告投放中,**广告位置(Ad Placement)会对点击率(CTR)、转化率(CVR)等关键指标产生影响,导致模型学习到的特征偏向某些广告位,而不是用户真实的兴趣或广告的质量。这种位置偏差(Position Bias)**可能导致:
- 高曝光广告位置的 CTR 过高,导致模型高估广告效果。
- 低曝光广告位置的 CTR 过低,导致模型低估广告的潜力。
- 难以推广新的广告位,模型可能更倾向于已经有数据的广告位。
2.1. Bias Net(偏置网络)原理
Bias Net 主要用于建模广告位置对点击率的影响,并将其从主模型(如 CTR 预估模型)中剥离,使主模型学习到去除位置影响后的广告真实效果。
Bias Net 主要采用 “双塔网络”(Two-Tower Model) 的思想:
- 一个塔(主网络 MainNet):学习广告本身的影响,如广告内容、用户兴趣等。
- 一个塔(BiasNet):专门学习广告位置的偏置,并将其影响去除。
最终的去偏目标:
P ( click ∣ ad, user ) = P ( click ∣ ad, user, pos ) / P ( click ∣ pos ) P(\text{click} | \text{ad, user}) = P(\text{click} | \text{ad, user, pos}) / P(\text{click} | \text{pos}) P(click∣ad, user)=P(click∣ad, user, pos)/P(click∣pos)
其中: - P ( click ∣ ad, user, pos ) P(\text{click} | \text{ad, user, pos}) P(click∣ad, user, pos) 是普通 CTR 预估模型的预测值。
- P ( click ∣ pos ) P(\text{click} | \text{pos}) P(click∣pos) 由 BiasNet 预测,建模广告位置的影响。
2.2. Bias Net 结构
BiasNet 通过 MLP(多层感知机)或 Embedding 方式 学习广告位置的偏置。以下是 BiasNet 的常见结构:
- Embedding + MLP 方式:
- 输入:广告位
position_id
- 处理:通过
Embedding
层将广告位转换为向量,再通过MLP
学习其对点击率的影响。 - 输出:广告位的偏置得分。
- 输入:广告位
- 独立建模:
- 训练一个单独的网络,仅依赖广告位置
position_id
预测CTR
,然后归一化,使其成为位置偏置因子。
- 训练一个单独的网络,仅依赖广告位置
2.2.1. PyTorch 实现 BiasNet
import torch
import torch.nn as nnclass MainNet(nn.Module):def __init__(self, ad_feature_dim, user_feature_dim):super(MainNet, self).__init__()self.fc = nn.Sequential(nn.Linear(ad_feature_dim + user_feature_dim, 128),nn.ReLU(),nn.Linear(128, 64),nn.ReLU(),nn.Linear(64, 1),nn.Sigmoid())def forward(self, ad_features, user_features):x = torch.cat([ad_features, user_features], dim=1)return self.fc(x)
2.3. 去除广告位置(pos)的影响,为什么使用除法?
在去除广告位置(Position, pos
)的影响时,使用除法而不是加法的主要原因是 归一化 和 比例调整。
2.3.1. 直觉解释
假设我们要预测广告的点击率(CTR),模型的原始预测值是:
P ( click ∣ ad , user , pos ) P(\text{click} | \text{ad}, \text{user}, \text{pos}) P(click∣ad,user,pos)
但由于广告位置会影响点击率(例如,广告展示在页面顶部时点击率更高),我们需要去除 pos
的影响,使得模型的预测结果更加公正,仅反映广告内容和用户兴趣。
BiasNet 是专门用于学习 pos
对点击率影响的网络,它的输出是:
P ( click ∣ pos ) P(\text{click} | \text{pos}) P(click∣pos)
最终,我们想要的去偏点击率应该是:
P debiased ( click ∣ ad , user ) = P ( click ∣ ad , user , pos ) P ( click ∣ pos ) P_{\text{debiased}}(\text{click} | \text{ad}, \text{user}) = \frac{P(\text{click} | \text{ad}, \text{user}, \text{pos})}{P(\text{click} | \text{pos})} Pdebiased(click∣ad,user)=P(click∣pos)P(click∣ad,user,pos)
2.3.2. 为什么使用除法?
(1) 归一化(Normalization)
- P ( click ∣ pos ) P(\text{click} | \text{pos}) P(click∣pos) 代表某个广告位置的整体点击率,它可以看作是该位置的“全局 CTR”。
- 通过除法,我们可以消除广告位置对 CTR 的整体提升或降低的影响,使不同广告位置的 CTR 处于相同的基准水平。
(2) 避免负值
- 如果使用加法去除位置影响,比如 P ( click ∣ ad , user , pos ) − P ( click ∣ pos ) P(\text{click} | \text{ad}, \text{user}, \text{pos}) - P(\text{click} | \text{pos}) P(click∣ad,user,pos)−P(click∣pos),可能会导致负的点击率,这不符合实际情况。
- 而使用除法确保调整后的 CTR 始终是正数,并且仍然具有可解释性。
(3) 保持比例关系
- 广告位的影响往往是乘法关系,而非加法关系。例如:
- 广告 A 在顶部位置 的点击率可能是 广告 B 在底部位置 点击率的 3 倍。
- 如果使用除法,广告 A 和广告 B 的 CTR 仍然可以保持这个比例。
- 而如果使用加法,会导致 CTR 计算失真,失去原有的相对比例。
2.4. 也可以通过多任务学习,联合优化两个loss。
- CTR 预测的目标: P ( click ∣ ad , user ) P(\text{click} | \text{ad}, \text{user}) P(click∣ad,user)
- 位置偏置预测的目标: P ( click ∣ pos ) P(\text{click} | \text{pos}) P(click∣pos)
- 联合损失函数:
L = L CTR + λ L BiasNet L = L_{\text{CTR}} + \lambda L_{\text{BiasNet}} L=LCTR+λLBiasNet
三、点击率(CTR)建模中如何保证广告位自上而下 CTR 率依次递减?
在广告点击率(CTR)建模中,广告通常是按一定策略排序展示的。通常情况下,用户的注意力随广告位(Position)下降而减少,因此 CTR 也应该遵循 “自上而下递减” 的规律。然而,在实际建模过程中,CTR 可能会受到其他因素(如广告内容、用户兴趣等)的干扰,导致某些下方广告的 CTR 反而比上方广告高。
3.1. 为什么需要保证 CTR 递减?
- 符合用户行为模式:在大多数应用场景中,用户对上方广告的关注度较高,因此 CTR 也应该较高。
- 避免模型异常学习:如果 CTR 没有递减趋势,可能意味着模型没有正确建模广告位置的影响,或者数据存在偏差。
- 提升广告排序的稳定性:确保 CTR 预测结果合理,有助于广告投放系统优化广告排序,提高收益。
如果模型未能正确学习广告位的影响,CTR 预测可能出现异常。
3.2 保证广告位 CTR 递减的方法
(1) 在模型输入中添加广告位置信息
- 显式建模广告位特征:在模型中添加广告位
pos
作为一个重要特征,并确保其影响符合期望:
P ( click ∣ pos ) 递减 P(\text{click} | \text{pos}) \text{ 递减} P(click∣pos) 递减 - 位置编码方式:
- Embedding 方式:使用
pos_embedding = nn.Embedding(n_pos, embedding_dim)
,让模型学习广告位的影响。 - 数值归一化方式:直接使用
pos / n_pos
作为一个数值特征输入。
- Embedding 方式:使用
(2) 在模型优化中添加单调性约束
为了确保 P ( click ∣ pos ) P(\text{click} | \text{pos}) P(click∣pos) 递减,可以对模型进行约束:
-
位置影响单调递减:
- 约束 ∂ P ( click ) ∂ pos ≤ 0 \frac{\partial P(\text{click})}{\partial \text{pos}} \leq 0 ∂pos∂P(click)≤0,即广告位
pos
越大(排名越靠后),CTR 预测值不会上升。 - 在神经网络中,可通过 单调性网络(Monotonic Neural Networks) 或 权重约束 来实现。
- 约束 ∂ P ( click ) ∂ pos ≤ 0 \frac{\partial P(\text{click})}{\partial \text{pos}} \leq 0 ∂pos∂P(click)≤0,即广告位
-
使用单调递减的变换函数:
- 例如在 MLP 层中,使用 S o f t p l u s ( − x ) Softplus(-x) Softplus(−x) 或 − R e L U ( x ) -ReLU(x) −ReLU(x) 来确保输出单调递减:
class MonotonicLayer(nn.Module):def __init__(self, input_dim):super().__init__()self.linear = nn.Linear(input_dim, 1)def forward(self, x):return -torch.relu(self.linear(x)) # 保证单调递减
- 使用排序损失(Ranking Loss)**:
- 设
pos_1
在pos_2
之上,则P(\text{click} | \text{pos_1})
应该大于P(\text{click} | \text{pos_2})
:
- 设
(3) 在数据处理阶段去除位置偏差
如果数据中广告位的 CTR 没有遵循递减规律,可以通过以下方法调整:
-
分层归一化(Layer-wise Normalization):
- 在训练数据中,对不同广告位的 CTR 进行归一化,避免数据不均衡带来的问题。
- 例如,对每个广告位
pos
计算均值 CTRμ_pos
,然后对y
进行调整:
y ′ = y μ pos y' = \frac{y}{\mu_{\text{pos}}} y′=μposy
-
逆倾向采样(Inverse Propensity Weighting, IPW):
- 由于广告位较高的曝光量远大于广告位较低的曝光量,可以使用
P(\text{pos})
作为权重,对样本进行重新加权:
w i = 1 P ( pos i ) w_i = \frac{1}{P(\text{pos}_i)} wi=P(posi)1 - 在损失函数中加入权重:
- 由于广告位较高的曝光量远大于广告位较低的曝光量,可以使用
loss = torch.mean(weight * loss_function(y_pred, y_true))
(4) 在预测阶段调整 CTR
如果模型仍然预测出了不符合递减规律的 CTR,可以在后处理时进行 排序约束调整:
- 强制后验排序修正:
- 对每个广告列表的
CTR_pred
进行Sort
,确保P(\text{click} | \text{pos})
递减:
- 对每个广告列表的
ctr_pred_sorted, _ = torch.sort(ctr_pred, descending=True)
- 加权平均平滑:
- 使用滑动窗口平滑方法,确保预测的 CTR 递减:
def smooth_ctr(ctr_pred):for i in range(1, len(ctr_pred)):ctr_pred[i] = min(ctr_pred[i], ctr_pred[i-1])return ctr_pred
相关文章:
搜广推校招面经六十六
高德推荐算法 一、介绍Transformer中的位置编码(Positional Encoding) 在 Transformer 结构中,由于模型没有内置的序列信息(不像 RNN 那样有时间步的顺序依赖),需要通过**位置编码(Positional…...
Java高频面试题2:集合框架
一、集合框架概述 1. 常见的集合框架有哪些? Collection:存储单个元素的集合。 List(有序、可重复):ArrayList(动态数组)、LinkedList(双向链表)。Set(无序…...
06-公寓租赁项目-后台管理-公寓管理篇
尚庭公寓项目/公寓管理模块 https://www.yuque.com/pkqzyh/qg2yge/5ba67653b51379d18df61b9c14c3e946 一、属性管理 属性管理页面包含公寓和房间各种可选的属性信息,其中包括房间的可选支付方式、房间的可选租期、房间的配套、公寓的配套等等。其所需接口如下 1.1…...
目前主流OCR/语义理解/ASR
OCR 基于多篇专业评测的结果,以下是目前免费开源OCR工具的推荐排名(侧重中文场景): 1. RapidOCR 优势:基于PaddleOCR优化,在印刷中文、自然场景文字识别中综合评分第一,支持180度旋转和低对比…...
Selenium 元素定位方法详解
Selenium 提供了多种元素定位方式,掌握这些方法是进行 Web 自动化测试的基础。以下是主要的元素定位方法及其使用示例: 1. 基本定位方法 1.1 通过 ID 定位 element driver.find_element(By.ID, "element_id") 1.2 通过 Name 定位 element …...
fastGPT—前端开发获取api密钥调用机器人对话接口(HTML实现)
官网文档链接:OpenAPI 介绍 | FastGPT 首先按照文档说明创建api密钥 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…...
c语言数据结构--------拓扑排序和逆拓扑排序(Kahn算法和DFS算法实现)
#include <stdio.h> #include <string.h> #include <stdbool.h> #include <stdlib.h>//使用卡恩算法(Kahn)和深度优先算法(DFS)实现//拓扑排序和逆拓扑排序//拓扑排序和逆拓扑排序顶点顺序相反//图,邻接矩阵存储 #define MaxVertexNum 100 …...
日期类的实现
本文运用c类和对象中的构造函数, 析构函数 ,拷贝构造函数 , 赋值运算符重载等为大家模拟实现日期类的操作 #define _CRT_SECURE_NO_WARNINGS 1 #include"date.h" void Date:: showinfo() {cout << _year << "年&…...
3dgs通俗讲解
3d gaussian splatting:基于splatting和机器学习的三维重建方法。 特点: 无深度学习简单的机器学习大量的CG知识复杂的线性代数对GPU的高性能编程 一、什么是splatting 1、选择“雪球”; 为什么使用核(雪球) 各向…...
源码分析之Leaflet比例尺控件Control.Scale实现原理
概述 Control.Scale 是一个用于显示地图比例尺的控件,是 Leaflet 中实现比例尺控件的核心逻辑,用于在地图上动态显示公制(米/千米)和英制(英尺/英里)的比例尺。 源码分析 源码实现 Control.Scale的源码…...
【无标题 langsmith
【GPT入门】第32课 langsmith介绍与实战 1.lang smith作用2.lang smith配置方法3. 上手第一个lang smith3.1 可运行代码3.2 lang smith 官网,个人项目下 1.lang smith作用 LangSmith是由LangChain开发的一个平台,主要用于构建生产级LLM应用程序…...
智能建造新范式:装配式建筑 4.0 的数字化进阶
在全球数字化与可持续发展的浪潮中,建筑业正经历着第四次工业革命的深刻变革。装配式建筑4.0的出现,标志着建筑行业从传统的“钢筋水泥时代”迈向“数据驱动时代”,其核心在于通过技术融合重构建筑全生命周期的生产方式,实现从设计…...
从标准输入中读取所有内容sys.stdin.read()
sys.stdin.read().strip() 用于从标准输入中读取所有内容并去除首尾的空白字符。 1. sys.stdin.read() 作用:从标准输入流中读取所有内容,直到遇到文件结束符(EOF)。在命令行中,EOF 可以通过 CtrlD(Linux…...
网络:华为数通HCIA学习:静态路由基础
文章目录 前言静态路由基础静态路由应用场景 静态路由配置静态路由在串行网络的配置静态路由在以太网中的配置 负载分担配置验证 路由备份(浮动静态路由)配置验证 缺省路由配置验证 总结 华为HCIA 基础实验-静态路由 & eNSP静态路由 基础…...
DAY 35 leetcode 202--哈希表.快乐数
题号202 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&a…...
Linux Command nmap 网络扫描
tags: 网络 文章目录 简介原理端口状态选项基本扫描发现扫描禁用DNS名称解析无ping扫描 端口扫描版本检测防火墙规避技术故障排除和调试NMAP 脚本 简介 Nmap(“ Network Mapper ”)是一个用于网络探索和安全审计的开源工具。它旨在快速扫描大型网络&…...
根据源码分析vue中nextTick的实现原理
根据源码分析vue中nextTick的实现原理 一. 核心变量定义二. 异步策略选择(降级处理)1. 微任务优先2. 降级到 MutationObserver3. 降级到宏任务 三、回调执行逻辑四、 nextTick 函数实现五、 与 Vue 更新流程的结合六、关键设计…...
Linux内核TCP/IP协议栈中的设计模式:从面向对象到系统级软件的跨界实践
引言 设计模式(Design Patterns)自GoF(Gang of Four)在1994年提出以来,已成为软件工程领域的核心概念。尽管其经典定义基于面向对象编程(OOP),但设计模式的本质是解决复杂问题的经验总结,而非局限于特定编程范式。本文以Linux内核的TCP/IP协议栈为例,探讨设计模式在…...
风云可测:华为AI天气大模型将暴雨预测误差缩至3公里内
华为云正式发布全球首个气象专用人工智能大模型"盘古气象",实现台风路径24小时预测误差<30公里、暴雨落区72小时精度91%,较传统数值预报效率提升10000倍。本文基于对西北太平洋10个台风回溯测试、全国2360个气象站验证数据,解析…...
DeepSeek-R1 面试题汇总
Deepseek-r1 面试宝典 原文地址:https://articles.zsxq.com/id_91kirfu15qxw.html DeepSeek-R1 面试题汇总 DeepSeek-R1 面试题汇总 GRPO(Group Relative Policy Optimization)常见面试题汇总篇 DeepSeek-R1 DeepSeek-R1-Zero 常见面试题汇总…...
ASM1042A型CANFD芯片通信可靠性研究
摘要 本文旨在深入探讨ASM1042A型CAN-FD芯片在多节点通信中的可靠性表现。通过对芯片的电气特性、测试环境、多节点通信测试结果等多方面进行分析,结合实验数据与理论研究,全面评估其在复杂通信场景下的性能与可靠性。研究结果表明,ASM1042A…...
Java8 到 Java21 系列之 Stream API:数据处理的新方式(Java 8)
Java 8 到 Java 21 系列之 Stream API:数据处理的新方式(Java 8) 系列目录 Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)Java 8 到 Java 21 系列之 Stream API:数据处理的…...
【每日一个知识点】分布式数据湖与实时计算
在现代数据架构中,分布式数据湖(Distributed Data Lake) 结合 实时计算(Real-time Computing) 已成为大数据处理的核心模式。数据湖用于存储海量的结构化和非结构化数据,而实时计算则确保数据能够被迅速处理…...
接口自动化学习三:参数化parameterize
使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize参数化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…...
呼叫中心系统压力测试文档
前期准备 用户需要准备两台配置相同的服务器,A服务器和B服务器。我们在这两台服务器上部署相同授权的程序。 配置流程 1. 创建话术 A服务器和B服务器都需要创建压力测试放音的话术,用于放音。按图操作: 2. 线路和线路组配置 A服务器&am…...
从0开始的构建的天气预报小时钟(基于STM32F407ZGT6,ESP8266 + SSD1309)——第1章 简单的介绍一下ESP8266和他的编程指令
目录 ESP8266编程指令前导——三种工作模式 ESP8266编程指令 工作确认指令(用于非穿透模式下) 设置工作模式:ATCWMODEX 两个重要的复位 硬复位ATRESTORE 软复位ATRST 加入Wifi ATCWJAP 开始一次TCP通信 进入和退出穿透模式 进入 ES…...
Cadence Integrity 3D-IC的解密
Early System-Level Analysis and Signoff Flow 请看下期发布...
清晰易懂的 Flutter 开发环境搭建教程
Flutter 是 Google 推出的跨平台应用开发框架,支持 iOS/Android/Web/桌面应用开发。本教程将手把手教你完成 Windows/macOS/Linux 环境下的 Flutter 安装与配置,从零到运行第一个应用,全程避坑指南! 一、安装 Flutter SDK 1. 下载…...
NO.63十六届蓝桥杯备战|基础算法-⼆分答案|木材加工|砍树|跳石头(C++)
⼆分答案可以处理⼤部分「最⼤值最⼩」以及「最⼩值最⼤」的问题。如果「解空间」在从⼩到⼤的「变化」过程中,「判断」答案的结果出现「⼆段性」,此时我们就可以「⼆分」这个「解空间」,通过「判断」,找出最优解。 这个「⼆分答案…...
Python星球日记 - 第1天:欢迎来到Python星球
🌟引言: 上一篇:Python星球日记专栏介绍(持续更新ing) 名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 创作者:Code_流苏(CSDN)(一个喜欢古诗…...
去中心化交易所(DEX)
核心概念与DEX类型 DEX vs CEX 中心化交易所(CEX)风险:资产托管风险(如2019年超2.9亿美元被盗)、隐私泄露(如50万用户信息泄漏)。 DEX优势:用户自持资产(非托管&#x…...
HTTP数据传输的几个关键字Header
本文着重针对http在传输数据时的几种封装方式进行描述。 1. Content-Type(描述body内容类型以及字符编码) HTTP的Content-Type用于定义数据传输的媒体类型(MIME类型),主要分为以下几类: (一)、基础文本类型 text/plain …...
Redis 的 Raft 选举协议
Redis 的 Raft 选举协议 主要用于 Redis Sentinel 和 Redis Cluster 的高可用实现中(尽管 Redis Cluster 默认使用类似 Gossip 的协议,但 Raft 的思想在 Sentinel 的领导者选举中有体现)。以下是关于 Raft 协议在 Redis 中的应用及脑裂问题的详细解析: 一、Redis 中的 Raft…...
sshd启动报错“Failed to start OpenSSH Server daemon”
“systemctl restart sshd”启动sshd服务异常,报错“Failed to start OpenSSH Server daemon”。 使用sshd -t命令检查sshd配置文件,返回关键信息gssapikexalgorithms相关错误。 解决方法 禁用 GSSAPI 相关的 KEX 算法 编辑sshd配置文件,注…...
MIT6.828 Lab3-2 Print a page table (easy)
实验内容 实现一个函数来打印页表的内容,帮助我们更好地理解 xv6 的三级页表结构。 修改内容 kernel/defs.h中添加函数声明,方便其它函数调用 void vmprint(pagetable_t);// lab3-2 Print a page tablekernel/vm.c中添加函数具体定义 采用…...
AI本地部署之ragflow
Ubunturagflowdeepseek本地部署目录 一、配置说明1. 软件配置说明2. 硬件配置说明 二、RagFlow安装和部署1. 前置条件2. 安装注:如果发现没有出现这个界面,可以进入ragflow/docker/ragflow-logs这个路径,查看ragflow_server.log文件中的内容&…...
源码分析之Leaflet属性控件Control.Attribution实现原理
概述 Control.Attribution 是一个 Leaflet 地图控件,用于显示地图的版权信息。它可以显示地图提供者的名称和链接,以及地图上的图层的版权信息。 源码分析 源码实现 Control.Attribution的源码实现如下 var ukrainianFlag <svg aria-hidden"…...
NO.62十六届蓝桥杯备战|基础算法-二分查找|查找元素的第一个和最后一个位置|牛可乐和魔法封印|A-B数对|烦恼的高考意愿(C++)
⼆分算法是我觉得在基础算法篇章中最难的算法。⼆分算法的原理以及模板其实是很简单的,主要的难点在于问题中的各种各样的细节问题。因此,⼤多数情况下,只是背会⼆分模板并不能解决题⽬,还要去处理各种乱七⼋糟的边界问题 34. 在…...
开源模型应用落地-Qwen2.5-Omni-7B模型-部署 “光速” 指南
一、前言 2025年3月,阿里巴巴通义千问团队开源的全模态大模型Qwen2.5-Omni-7B,犹如一记惊雷划破AI领域的长空。这个仅70亿参数的"小巧巨人",以端到端的架构实现了对文本、图像、音频、视频的全模态感知,更通过创新的Thinker-Talker双核架构,将人类"接收-思…...
顺序容器 -forward list单链表
forward list单链表是C11加入到STL的。 使用forward list,必须包含头文件<forward_list> #include <forward_list> 这个头文件被定义在命名空间std内。 namespace std {template <typename T,typename Allocator allocator<T> >class …...
C++:算术运算符
程序员Amin 🙈作者简介:练习时长两年半,全栈up主 🙉个人主页:程序员Amin 🙊 P S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全…...
缺页异常导致的iowait打印出相关文件的绝对路径
一、背景 在之前的博客 增加等IO状态的唤醒堆栈打印及缺页异常导致iowait分析-CSDN博客 里,我们进一步优化了D状态和等IO状态的事件的堆栈打印,补充了唤醒堆栈打印,也分析了一种比较典型的缺页异常filemap_fault导致的iowait的情况。 在这篇…...
【Centos】centos7内核升级-亲测有效
相关资源 通过网盘分享的文件:脚本升级 链接: https://pan.baidu.com/s/1yrCnflT-xWhAPVQRx8_YUg?pwd52xy 提取码: 52xy –来自百度网盘超级会员v5的分享 使用教程 将脚本文件上传到服务器的一个目录 执行更新命令 yum install -y linux-firmware执行脚本即可 …...
多模态模型:专栏概要与内容目录
文章目录 多模态模型📚 核心内容模块Stable Diffusion基础教程Stable Diffusion原理深度解析部署与环境配置其他多模态模型实践 多模态模型 🔥 专栏简介 | 解锁AI绘画与多模态模型的技术奥秘 探索多模态AI技术,掌握Stable Diffusion等流行框…...
1. 购物车
1. 购物车 咱们购物车基于 V2 装饰器进行开发,底气来源于 自定义组件混用场景指导 1.1. 素材整合 observedv2和Trace 数据模型和页面 // 其他略 // 购物车 export interface CartGoods {count: number;id: string;name: string;picture: string;price: number;…...
frp 让服务器远程调用本地的服务(比如你的java 8080项目)
1、服务器上安装frp 2、本地安装frp 服务器上 frps.toml 配置信息: bindPort 30000auth.token "密码" # 客户端连接密码vhostHTTPPort 8082 本地 frpc.toml serverAddr "服务器ip" serverPort 30000 auth.token "服务器上设置的…...
《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
第56篇:LangChain快速入门与应用示例 前言 最近最火的肯定非Manus和OpenManus莫属,因为与传统AI工具仅提供信息不同,Manus能完成端到端的任务闭环。例如用户发送“筛选本月抖音爆款视频”,它会自动完成: 爬取平台数据…...
大模型——如何在本地部署微软的OmniParser V2
微软的 OmniParser V2 是一款尖端的人工智能屏幕解析器,可通过分析屏幕截图从图形用户界面中提取结构化数据,使人工智能代理能够与屏幕元素进行无缝交互。该工具是构建自主图形用户界面代理的完美选择,它改变了自动化和工作流程优化的游戏规则。在本指南中,我们将介绍如何在…...
Oracle触发器使用(一):DML触发器
Oracle触发器使用(一):DML触发器 DML触发器条件谓词触发器INSTEAD OF DML触发器复合DML触发器Oracle数据库中的触发器(Trigger)本质上也是PL/SQL代码,触发器可以被Enable或者Disable,但是不能像存储过程那样被直接调用执行。 触发器不能独立存在,而是定义在表、视图、…...
智慧园区大屏如何实现全局监测:监测意义、内容、方式
智慧园区的价值不容小觑呀,可以说园区的大部分数据都在这个大屏上,监测数据越多,那么大屏的价值就越大。很多小伙伴拿到需求后感觉无从下手,本文在这里智慧园区大屏可以监测哪些内容、监测的意义、监测的方式等,欢迎点…...