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

Web安全研究(七)

NDSS 2023
开源地址:https://github.com/bfpmeasurementgithub/browser-fingeprint-measurement
霍普金斯大学

文章结构

  1. intro
  2. background
    1. threat model
  3. measurement methodology
    1. step1: traffic analysis
    2. step2: fingerprint analysis
  4. dataset
    1. attack statistics
    2. browser fingerprint collection and statistics
  5. observations
    1. observation1: adversarial vs. benign fingerprints
    2. observation2: adversarial generative strategies
    3. observation3: adversarial fingerprints over attack and account types
  6. discussion

Abstract

作者从14个主要商业网站收集到第一个十亿级的测量研究,且进一步将指纹分类为良性和攻击指纹,使用的是F5公司基于学习的反馈驱动的欺诈和bot检测系统;得到3个主要结论:

(i)攻击指纹在许多指标上与良性指纹显著不同,例如熵、唯一率和演变速度;(ii)攻击者正在采用各种工具和策略生成攻击指纹;(iii)攻击指纹在不同攻击类型之间变化,例如从内容抓取到欺诈交易。

Intro

浏览器指纹是 Cookie 的替代品,是由一系列客户端特征(如用户代理和画布渲染结果)组成的标识符,用于表示浏览器实例。虽然浏览器指纹的最初用途[30]是网络跟踪,例如个性化广告(通常被认为是对网络隐私的侵犯),但最近的进展使浏览器指纹在预防网络攻击方面发挥了更积极的防御作用。例如,Azad 等人[10]的研究表明,浏览器指纹是bot检测的一个重要因素。另一个例子是,Laperdrix 等人[46] 发现,在线金融交易通常会检查浏览器指纹,以防止欺诈性登录和支付。

与往常一样,攻击者和防御者之间也存在着角力: 这同样适用于作为防御手段的浏览器指纹,尤其是考虑到它是一种取决于熵的弱浏览器识别手段。具体来说,攻击者可以通过改变浏览器指纹来绕过现有的防御措施、 例如,指纹用于检测bot: 如果具有特定指纹和其他特征(如 IP 等低层特征)的请求数量超过阈值,客户端就会被检测并作为bot被阻止。然后,攻击者可以不断更改自己的指纹,以避免被拦截。因此,本文将这种由攻击者伪造的指纹定义为 “攻击者浏览器指纹”(或简称 “攻击者指纹”),而将来自用户浏览器的传统指纹定义为 “良性指纹”。

从直观上看,对抗性指纹不同于良性指纹,因为它们的目的是击败防御措施。虽然直觉上是正确的,但研究界对这些野生对抗性指纹的特性大多研究不足,也不了解。例如,一些开放式研究问题包括但不限于以下方面:(i) 在熵和特征方面,对抗性指纹与良性指纹有何不同;(ii) 对抗者采用什么策略和工具来改变指纹,特别是针对不同的攻击;(iii) 不同攻击类型的对抗性指纹有何不同。这些问题的答案不仅能为今后检测对抗性指纹(及相关攻击)提供启示,还能帮助研究人员更好地了解良性指纹的特性,以用于个性化广告等跟踪目的(对抗性指纹应排除在外)。

最先进的工作一般从三个主要来源对浏览器指纹进行小规模(如最多百万规模)研究:受控用户群[48]、[48]、盲目收集的网站流量[36]、[50]和蜜罐网站流量[53]。然而,无论规模大小,之前的测量工作都没有对来自同一网站的恶意和良性指纹进行比较。受控用户群和蜜罐网站只有对抗性或良性指纹;盲目收集的网站流量无法区分指纹是良性还是对抗性的。也就是说,它们都无法回答上述研究问题,即现实世界中对抗性指纹和良性指纹的实际区别,以及针对不同类型攻击生成对抗性指纹的工具和策略。

在本文中,我们首次对从 14 个商业网站(包括主要金融机构、餐馆和航空公司)收集到的恶意和良性指纹进行了十亿规模的测量研究。具体来说,我们与一家安全公司 F5 公司合作,利用其bot和欺诈检测与防御系统收集网站流量并对流量进行分类。然后,与bot和欺诈流量相关的浏览器指纹被视为恶意指纹,其余的则被视为良性指纹。需要注意的是,外部独立审查显示,bot和欺诈检测系统将账户接管攻击造成的成本降低了 96%,假账户总数降低了 92%。

我们的测量发生在 2021 年 1 月至 2021 年 6 月期间,结果是来自 14 个商业网站的 360 亿次 HTTP(s)请求/响应以及相应的浏览器指纹。检测系统通过五种详细的攻击类型将 42.5% 的流量归类为bot或欺诈(即恶意)流量,将 57.5% 的流量归类为用户流量(即良性)流量。与bot或欺诈流量相关的指纹被视为恶意指纹,而与用户流量相关的指纹被视为良性指纹。然后,我们从演化和熵等不同指标的角度对对抗性指纹和良性指纹进行比较,并分析对抗性指纹的特性,以利于生成工具和策略的使用。例如,如果缺少所有 JavaScript 特征,我们就认为指纹是使用脚本工具生成的;如果收集的渲染方法具有一致的虚拟机相关值,我们就认为指纹是使用虚拟机(VM)工具生成的。再比如,如果浏览器实例的指纹特征值为空,我们就认为该指纹特征被屏蔽了;如果良性指纹中没有出现该指纹特征值,我们就认为该指纹特征被随机化了。我们的分析提出了以下三点看法:

观察结果-1:在同一网站上,敌对浏览器的指纹与良性浏览器的指纹明显不同。在所有独特指纹中,只有 1.6% 是对抗性指纹和良性指纹共享的,其余的要么是对抗性指纹(8.1%),要么是良性指纹(90.3%)。它们在进化速度和熵等许多方面也存在差异。以进化为例。良性指纹往往会随着浏览器实例的更新而不断进化;相比之下,对抗性指纹则相对稳定,因为对抗者通常会将指纹与受损账户绑定,并在一次性使用后放弃伪造账户。

观察结果-2:反病毒者采用不同的工具生成反病毒指纹,并表现出不同的特性。 具体而言,我们总结了三种通用工具,即脚本工具、模拟浏览器(如无头浏览器或完整浏览器)和虚拟机(VM)。脚本工具是最流行的工具,尤其是在抓取网页内容方面,因为它效率高;相比之下,模拟浏览器和虚拟机不那么流行,但功能更强大,不仅能生成对抗性指纹,还能模拟良性指纹。

观察结果-3:不同攻击的对抗性浏览器指纹属性各不相同。以内容抓取和欺诈交易为例。用于内容抓取的对抗性指纹往往会频繁而随机地变化,以避免被网站屏蔽;相比之下,用于欺诈交易的对抗性指纹往往会模仿良性指纹的特征,从而获得更高的交易成功率。

Back

首先介绍攻击指纹和良性指纹的定义,然后阐述威胁模型;

浏览器指纹是客户端(例如,用户代理、WebGL渲染和字体列表)收集的浏览器特性组合,可以是显式或隐式(如通过边信道)收集的。传统的浏览器指纹定义假设它来自用户控制的浏览器,因此称为良性浏览器指纹。与良性指纹相反,敌对浏览器指纹,或简称敌对指纹,是由攻击者伪造的,用于绕过使用浏览器指纹进行的某些服务器端防御。攻击者可以使用各种工具,如脚本工具(例如,用Python编写)、模拟浏览器(例如,由Selenium自动化)和虚拟机,来构建敌对指纹的特征。

威胁模型考虑了利用浏览器指纹绕过服务器端防御的攻击。具体来说,我们的威胁模型涵盖以下根据其在真实世界网络流量中流行程度的攻击:

  • 账户接管尝试(即凭据填充)。账户接管尝试[11]、[67]、[76]、[82]是指攻击者尝试使用大量不同的用户名和密码组合登录用户账户,这些组合经常来自地下经济或者过去的数据泄露。此类攻击也称为凭据填充。
  • 欺诈交易。欺诈[54]、[55]、[66]是指攻击者代表受害者发起未经授权的交易,例如,下单、申请个人贷款、转账、结账或退货。欺诈通常发生在成功接管账户后,尽管一些欺诈行为可能不需要登录账户。
  • 自动创建虚假账户。自动创建虚假账户是指通过机器人而非人类自动创建账户。据之前的研究[15]、[16]、[32]、[68],这些账户可以用于多种恶意目的,如登录后抓取信息、发布垃圾邮件或虚假评论,以及注册网站额外奖励。
  • **强力内容抓取。**强力内容抓取[28]、[37]、[64]是指攻击者无视网站在robots.txt文件中列出的速率限制和黑名单,为自己的利益爬取目标网站,例如获取竞争对手如航空公司的价格信息。这种强力抓取可以基于虚假账户(称为已登录)或匿名(即,不登录)。
  • 礼品卡破解。礼品卡破解[1]是一种暴力攻击,攻击者枚举所有可能的礼品卡号,并试图在合法用户之前消费卡中的价值。

Method

image.png

图1展示了测量的整体架构,包括三个步骤:0)数据收集,1)流量分析,2)指纹分析。步骤0收集所有原始数据,包括完整的HTTP(s)请求和响应。然后,步骤1的流量分析对HTTP请求进行分类,标识为良性或恶意,并细分攻击类型。最后,步骤2的指纹分析研究所有指纹的属性以及步骤1的输出,这导致我们得出三个核心观察结果。

步骤0。与一家安全公司合作,从14个顶级目标网站(104个子域名)收集数据。 数据收集是通过在目标网站的Web应用程序中植入JavaScript和这些目标的原生移动应用的SDK来实现的。然后,收集到的原始数据包含了跨网络级、浏览器级和用户级的丰富信息。网络级信息包括TCP/IP头(如源IP和目的IP地址)、设备ID、时间戳和源自治系统号(ASN)。浏览器级信息主要包含浏览器指纹,这些指纹分解为不同的特征,如用户代理、字体列表和canvas图像。(详细的特征将在第四部分B节中介绍。)用户级信息包括账户ID和用户行为(如访问的链接)。

image.png

image.png

表I展示了根据它们对模型性能的贡献,实时和离线模型中使用的一些最重要特征的精选列表。实时模型主要采用可以从单个HTTP请求直接获取的高性能特征,如URL、Cookie、TCP/IP指纹和SSL指纹。相比之下,离线模型使用在特定时间段内多个HTTP请求的特征聚合统计。比如每IP、ASN、用户名、设备和HTTP头部的良性与恶意请求次数。请注意,我们仅列出部分特征。实际上,实时模型有数百个特征,而离线模型有数千个(因为特征聚合有不同组合)。

请注意,在创建双反馈循环之前的双模型初始训练集是通过结合规则和人工验证的方法构建的。表II展示了用于创建此类初始训练集的一些选择性指标。总体思路是根据异常程度过滤网络流量,然后人类专家验证流量。例如,会话时长。机器人通常自动化运行,因此与人类相比,其会话时长可能短得多。同样,机器人账号在注册时常使用虚假信息,如随机电话号码。这样的训练集是初步的,并在双反馈循环中进一步优化。

初始训练集的生成
image.png
现在,我们描述双重反馈循环。第一个反馈环是网站和实时模型之间的。如果平台做出错误的判断(例如,将机器人识别为良性,或将良性识别为机器人)并采取了错误的行动,那么这些反馈将从目标网站收集,经过人类专家验证,并在重新训练时更新到实时模型。第二个反馈环是实时模型与离线模型之间的。离线模型将进行独立的(更准确的)决策,不依赖实时模型。然后,离线模型的分析结果会被更新到数据集库中,进而影响第二个反馈环中的实时模型。请注意,实时模型和离线模型都受到人类专家的审计。具体来说,当以下情况发生时,人类专家会参与其中:(i) 客户(例如,网站用户)报告假阳性或假阴性,(ii) 实时模型与离线模型之间的不一致,以及 (iii) 报告的大规模攻击事件。此外,人类专家还会对预测置信度低的数据样本进行抽样检查,以确保两个模型的准确度。

双重模型和双重反馈循环架构的好处在于显著减少了适应性机器人和欺诈攻击。即便攻击者绕过了系统,反馈循环也能立即检测出这一情况,并更新实时模型以识别这些绕过行为。一个外部审查团队审查了机器人和欺诈检测/防御产品。审查结果显示,该平台产品长期下来可减少(i)96%的账户接管攻击损失,以及(ii)92%的虚假账户数量。我们想指出,虽然这个数字在初看时非常高,但实际上是合理的,并且对于一个付费的商业产品来说是必要的。一方面,该平台很少误分类良性的流量;另一方面,4%的账户接管和8%的虚假账户(经过外部团队验证)只发生在极小部分的网络流量和短暂的时间窗口中,且平台能迅速检测到。
image.png

之后作者使用3个步骤分析了浏览器指纹;

生成工具分析:在这个子步骤中,我们分析敌对指纹并推断生成这些指纹的工具。具体来说,我们描述了三种通用的敌对工具类型及其在野外的检测方法。

  • 脚本工具。脚本工具是简单的应用程序(如用Python编写),向目标网站发送HTTP请求。一方面,这些工具通常无法实现由JavaScript驱动的复杂客户端功能,例如渲染canvas图像;另一方面,它们速度很快,能方便地抓取大量内容。因为脚本工具通常不支持JavaScript,所以我们如果在指纹中发现没有任何JavaScript特征,则检测为脚本工具。
  • 模拟浏览器。模拟浏览器是具有扩展或修改功能的浏览器,如无头浏览器、带有扩展的浏览器和定制的修改版浏览器,它们通常由Selenium等自动化工具驱动。这类模拟浏览器完全具备模拟所有不同浏览器指纹特性的能力。如果我们无法将工具鉴定为脚本工具或虚拟机(如下所述),则默认工具即为模拟浏览器。
  • 虚拟机。由KVM和VMWare等软件驱动的虚拟机也结合模拟浏览器来模拟真实用户。虚拟机通常由云服务提供,并且也能模拟所有不同的指纹特征。如果指纹的渲染方法具有一致的VM基础渲染器和供应商,我们就检测生成工具为虚拟机。

生成策略分析:一旦攻击者使用了特定工具,下一步就是选择改变或生成浏览器指纹(向目标网站发送请求时收集)特征的策略。在实践中,我们观察到以下策略,并进行了总结:

  • [保持] 保留原始指纹。攻击者的一种简单策略是保留工具的原始指纹(或某些特征值)。以内容抓取为例。虽然保留原始指纹增加了攻击者被阻止的可能性,但在某些特征的客户端请求阈值下,攻击者仍然可以获取一些信息。如果我们在特定浏览器实例中只观察到一个特征值,我们就认为攻击者保持了该值。
  • [屏蔽] 在指纹中屏蔽特定特征。另一种相对较简单的策略是阻止指纹中特征的值。以canvas渲染为例。攻击者可以在浏览器中禁用canvas API,防止目标网站获取有效值。这种策略在一定程度上有效,因为良性指纹中也有缺失值,特别是在需要大量计算的某些特征上。例如canvas渲染和字体列表。如果我们在恶意请求中发现该特征值缺失,我们认为攻击者阻止了该值。
  • [模仿] 模仿良性指纹。攻击者的一个复杂策略是在每个向目标网站发出的请求中模仿不同的良性指纹。这对攻击者较难,因为他们需要为每个HTTP(s)请求遍历大量的良性指纹。如果我们在恶意请求中发现一个浏览器实例有多重特征值,并且所有这些值也出现在良性指纹中,我们考虑攻击者在模仿良性指纹的值。
  • [随机化] 在指纹中随机化某些特征值。因为模仿策略相对较难,一些攻击者会采取另种策略,即随机化某些特征值。例如,对于插件特征,攻击者修改插件API,每次返回一个随机的插件列表。要注意,这种生成的攻击性指纹在大多数情况下是唯一的,不会与其他良性指纹共享。如果我们观察到一个浏览器实例有多重特征值,且没有一个值出现在良性指纹中,我们认为攻击者是在随机化值。

image.png

使用的特征如下:
image.png

知识星球

在尾部推荐一下我们的知识星球,以AI应用在安全作为主题,包括AI在安全上的应用和AI本身的安全;

加入星球你将获得:

【Ai4sec】:以数据驱动增强安全水位,涵盖内容包括:恶意软件分析,软件安全,AI安全,数据安全,系统安全,流量分析,防爬,验证码等安全方向。星主目前在某大厂从事安全研究,论文以及专利若干,Csdn博客专家,访问量70w+。分享者均为大厂研究员或博士,如阿里云,蚂蚁,腾讯等;
选择加入即可获得:
1、前沿安全研究资讯
2、相关安全领域的研究入门和进阶,如malware,fuzz,program analysis,antibot等
3、大厂岗位内推,包括阿里云,蚂蚁,腾讯等
4、求职考研考博简历润色及辅导是允许读者一对一咨询求职、考研考博相关问题,并帮助读者修改简历和告知相关经验。
5、相关论文方向指导

现在正在低成本推广,秒杀一波福利,数量有限,先到先得,欢迎新老朋友们加入一起讨论:
在这里插入图片描述

对于没有抢到的朋友们,我们也有相应的较大额度的优惠券赠送:
在这里插入图片描述

相关文章:

Web安全研究(七)

NDSS 2023 开源地址:https://github.com/bfpmeasurementgithub/browser-fingeprint-measurement 霍普金斯大学 文章结构 introbackground threat model measurement methodology step1: traffic analysisstep2: fingerprint analysis dataset attack statisticsbro…...

矩池云jupyter运行opengait代码 未完成版

文章目录 前言——矩池云的使用技巧1.切换源 一、下载数据集二、下载模型三、环境配置1.查看python、torch、torchvision版本2.查看一些包版本是否过高3.下载包 四、开始训练1.设置环境变量2.遇到的问题(1)torch.cuda.is_available()返回false&#xff0…...

油烟净化器买家必看!商用油烟净化器功效及使用方法盘点

我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 在选择商用油烟净化器时,了解其功效和正确的使用方法至关重要。让我们一起来盘点一下。 高效净化油烟 商用油烟…...

gitee关联picgo设置自己的typora_图床

一:去gitee官网创建仓库:typora_图床 1.百度搜索关键字:gitee,进入官网 2.进入gitee登录或者注册自己的账号 3.进入主页后,点击右上方 4.点击新建仓库 5.设置仓库名:typora_图床 6.点击5的创建&#xff0…...

深入理解网络原理1

文章目录 前言一、网络初识1.1 IP地址1.2 端口号1.3 协议1.4 五元组1.5 协议分层 二、TCP/IP五层协议三、封装和分用四、客户端vs服务端4.1 交互模式4.2 常见的客户端服务端模型 前言 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据&…...

为什么感觉没有效果

以前在辅导小儿作业的时候,我会在常用的搜索引擎里去寻找答案,一般情况下都能解决问题。 但是最近一段时间,我发现,搜索引擎搜出来的结果还没有利用短视频搜出来的答案更全面,短视频软件不仅可以显示AI整理出来的答案…...

C++中的指针详解

C中的指针详解 在C编程中,指针是一个非常重要且基础的概念。它允许程序员直接访问和操作内存地址,为高级数据结构和算法的实现提供了基础。本文将详细讲解C中指针的概念、用法和注意事项,帮助读者深入理解并掌握指针的相关知识。 一、指针的…...

视频改字祝福 豪车装X系统源码uniapp前端小程序源码

视频改字祝福 豪车装X系统源码uniapp前端小程序源码,创意无限!AI视频改字祝福,豪车装X系统源码开源,打造个性化祝 福视频不再难! 想要为你的朋友或家人送上一份特别的祝福,让他们感受到你的真诚与关怀吗&am…...

google chromeDriver 地址

#chrome driver 下载地址 https://getwebdriver.com/chromedriver #chrome brower下载地址 https://googlechromelabs.github.io/chrome-for-testing/ centos 安装的dockerFile的部分命令: #安装browser wget https://dl.google.com/linux/chrome/rpm/stable/x86_…...

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法,它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制,比如日志必须是连续的,只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上,Raft算法相对…...

从自定义一个作用域开始来了解SpringBean的作用域

你好,这里是codetrend专栏“Spring6全攻略”。 在 Spring 框架中,Bean 的作用域(Scope)定义了 Bean 实例在容器中如何创建、管理和销毁的策略。 Spring 提供了多种 Bean 作用域,每种作用域都有其特定的生命周期和适用…...

Android 编译文件简述(Android.mk)

Android 编译文件简述(Android.mk) Android.mk 文件是 Android 构建系统中的一种构建配置文件,使用 GNU Make 语法,用于定义 Android 项目中的模块、库、应用程序、JNI 代码等的编译和链接方式。每个 Android.mk 文件通常对应一个目录,代表构建系统应该如何处理该目录下的源…...

[React] 手动实现CountTo 数字滚动效果

这个CountTo组件npmjs里当然有大把的依赖存在,不过今天我们不需要借助任何三方依赖,造个轮子来手动实现这个组件。 通过研究其他count to插件我们可以发现,数字滚动效果主要依赖于requestAnimationFrame 通过js帧来让数字动起来,…...

9.Admin后台系统

9. Admin后台系统 Admin后台系统也称为网站后台管理系统, 主要对网站的信息进行管理, 如文字, 图片, 影音和其他日常使用的文件的发布, 更新, 删除等操作, 也包括功能信息的统计和管理, 如用户信息, 订单信息和访客信息等. 简单来说, 它是对网站数据库和文件进行快速操作和管…...

redis之集群

一.redis主从模式和redis集群模式的区别 redis主从模式:所有节点上的数据一致,但是key过多会影响性能 redis集群模式:将数据分散到多个redis节点,数据分片存储,提高了redis的吞吐量 二.redis cluster集群的特点 数据分片 多个存储入…...

#9松桑前端后花园周刊-React19beta、TS5.5beta、Node22.1.0、const滥用、jsDelivr、douyin-vue

行业动态 Mozilla 提供 Firefox 的 ARM64 Linux二进制文件 此前一直由发行版开发者或其他第三方提供,目前Mozilla提供了nightly版本,正式版仍需要全面测试后再推出。 发布 React 19 Beta 此测试版用于为 React 19 做准备的库。React团队概述React 19…...

STM32中UART通信的完整C语言代码范例

UART(通用异步收发器)是STM32微控制器中常用的外设,用于与其他设备进行串行通信。本文将提供一个完整的C语言代码范例,演示如何在STM32中使用UART进行数据传输。 硬件配置 在开始编写代码之前,需要确保以下硬件配置&…...

【ITK统计】第一期 分类器

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK中的分类器及其使用情况,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 在统计分…...

51单片机两个中断及中断嵌套

文章目录 前言一、中断嵌套是什么?二、两个同级别中断2.1 中断运行关系2.2 测试程序 三、两个不同级别中断实现中断嵌套3.1 中断运行关系3.2 测试程序 总结 前言 提示:这里可以添加本文要记录的大概内容: 课程需要: 提示&#x…...

VUE 监视数据原理

1、如何监测对象中的数据? 通过setter实现监视,且要在new vue时就传入监测的数据 (1)对象中后加的属性,vue默认不做响应式处理 (2)如需给后添加的属性做响应式,请使用如下API&#x…...

Thinkphp使用dd()函数

用过Laravel框架的同学都知道在调试代码的时候使用dd()函数打印变量非常方便,在ThinkPHP6及以上的版本框架中也默认加上了这个函数。但是在ThinkPHP5或更低版本的框架中,dd 并不是一个内置的方法,不过我们可以手动添加这个函数,步…...

Git使用指北

目录 创建一个Git仓库本地仓库添加文件文件提交到本地仓库缓冲区添加远程仓库地址本地仓库推送到远程仓库创建新的分支拉取代码同步删除缓冲区的文件,远程仓库的文件.gitignore文件 创建一个Git仓库 Git仓库分为远程和本地两种,远程仓库如Githu上创建的…...

STM32G030F6P6TR 芯片TSSOP20 MCU单片机微控制器芯片

STM32G030F6P6TR 在物联网(IoT)设备中的典型应用案例包括但不限于以下几个方面: 1. 环境监测系统: 使用传感器来监测温度、湿度、气压等环境因素,并通过无线通信模块将数据发送到中央服务器或云端平台进行分析和监控。…...

零基础入门学习Python第二阶01生成式(推导式),数据结构

Python语言进阶 重要知识点 生成式(推导式)的用法 prices {AAPL: 191.88,GOOG: 1186.96,IBM: 149.24,ORCL: 48.44,ACN: 166.89,FB: 208.09,SYMC: 21.29}# 用股票价格大于100元的股票构造一个新的字典prices2 {key: value for key, value in prices.i…...

Java面试题:多线程3

CAS Compare and Swap(比较再交换) 体现了一种乐观锁的思想,在无锁情况下保证线程操作共享数据的原子性. 线程A和线程B对主内存中的变量c同时进行修改 在线程A中存在预期值a,修改后的更新值a1 在线程B中存在预期值b,修改后的更新值b1 当且仅当预期值和主内存中的变量值相等…...

【QEMU系统分析之实例篇(十八)】

系列文章目录 第十八章 QEMU系统仿真的机器创建分析实例 文章目录 系列文章目录第十八章 QEMU系统仿真的机器创建分析实例 前言一、QEMU是什么?二、QEMU系统仿真的机器创建分析实例1.系统仿真的命令行参数2.创建后期后端驱动qemu_create_late_backends()qtest_serv…...

pyside6的调色板QPalette的简单应用

使用调色板需要先导入:from PySide6.QtGui import QPalette 调色板QPalette的源代码: class QPalette(Shiboken.Object):class ColorGroup(enum.Enum):Active : QPalette.ColorGroup ... # 0x0Normal : QPalette.ColorGrou…...

苍穹外卖项目

Day01 收获 补习git Git学习之路-CSDN博客 nginx 作用:反向代理和负载均衡 swagger Swagger 与 Yapi Swagger: 可以自动的帮助开发人员生成接口文档,并对接口进行测试。 项目接口文档网址: http://localhost:8080/doc.html Da…...

error: Execution was interrupted, reason: signal SIGABRT

c json解析时&#xff0c; error: Execution was interrupted, reason: signal SIGABRT const Json::Value points root["shapes"]; if (points.isArray()) { for (unsigned int i 0; i < points.size(); i) { std::cout << " - [" <<…...

HarmaonyOS鸿蒙应用科普课

一、什么是鸿蒙OS&#xff1f; 1.概念&#xff1a; 先给大家讲讲今天讲课的主题&#xff0c;鸿蒙OS是什么&#xff1f;鸿蒙系统大家都知道&#xff0c;就是一个操作系统&#xff0c;我们未来是为的成为鸿蒙程序员。所以我们不要将鸿蒙os完全等同于手机操作系统&#xff0c;太…...

wordpress主题知乎/站内seo是什么意思

文章目录示例工具版本项目结构pom.xml使用 ServletRegistrationBean 将 Servlets 注册为 Spring Bean使用 ServletComponentScan 对 Servlet 进行扫描测试应用程序1. 使用 Maven 命令2. 使用 Eclipse3. 使用可执行的 JAR参考文献源码下载本页将介绍Spring Boot的Servlet映射实例…...

个人博客网站域名注册/googleplay官方下载

3,查找结果如下:节点名称&#xff1a;HTML,节点类型&#xff1a;1,节点值&#xff1a;null节点名称&#xff1a;HEAD,节点类型&#xff1a;1,节点值&#xff1a;null节点名称&#xff1a;#text,节点类型&#xff1a;3,节点值&#xff1a;没有孩子节点节点名称&#xff1a;TITLE…...

wordpress htaccess文件/站长联盟

&#xff08;转&#xff09; 双向BFS&#xff08;http://www.cppblog.com/Yuan/archive/2011/02/23/140553.aspx&#xff09; 如果目标也已知的话&#xff0c;用双向BFS能很大提高速度 单向时&#xff0c;是 b^len的扩展。 双向的话&#xff0c;2*b^(len/2) 快了很多&#xff…...

怎么去创建一个网站/百度一下你就知道移动首页

企业数字化大势所趋&#xff0c;业务转型势在必行&#xff0c;大数据智能化时代已来&#xff0c;企业数据价值不断凸显&#xff0c;数据是DT时代的生成资料&#xff0c;数据灾备是信息安全的最后一道防线&#xff0c;而在数据灾备系统中&#xff0c;介质管理便是其中重要的一环…...

公众号网站怎么做的/开鲁seo网站

前 言 年终总是职场人最忙碌的时候&#xff0c;如果说忙碌中还存有一份期待&#xff0c;就是年终奖了。昨天微博热搜还在讨论“发年终奖的都是什么公司”。 其他公司且不说&#xff0c;大厂的年终奖每年都是打工仔关注的焦点&#xff0c;不过在全球经济衰退的宏观背景下&…...

泉州一个网站多少钱/长沙网站到首页排名

点击上方↑↑↑“OpenCV学堂”关注我来源&#xff1a;公众号 Datawhale 授权转载对卷积的困惑卷积这个概念&#xff0c;很早以前就学过&#xff0c;但是一直没有搞懂。教科书上通常会给出定义&#xff0c;给出很多性质&#xff0c;也会用实例和图形进行解释&#xff0c;但究竟为…...