英文版权归Matthieu Wipliez所有,中译文作者yangyang(aka davidkoree)。双语版可用于非商业传播,但须注明英文版作者、版权信息,以及中译文作者。翻译水平有限,请广大读者指正。

长文勿读(译注:原文「TL;DR」,表示too long, don't read,这里是作者自嘲,皮一下)。让每个浏览器来大规模生成通用唯一标识符,你觉得靠谱吗?在Teads,我们做了尝试,答案是肯定的,但有几点警告。本文介绍了我们所做的探索,以及在此过程中的发现。

为什么我们需要客户端唯一标识符

「唯一标识符」作为一种普遍需求,主要用于分析、营销、或广告相关领域,Web页面的第三方脚本和电子商务站点便是它的载体。

这些脚本几乎总是从CDN(内容交付网络)加载,在大规模使用的场景中,这样可以获得最佳的响应时间并减轻原始服务器的负载。

这意味着脚本无法即时生成。解决方法可能是(或曾经是)让CDN生成唯一标识符并将其存储在Cookie中。但用户隐私法规(例如欧洲的GDPR和ePrivacy条例或美国的CCPA)禁止设置Cookie,除非用户已明确表示同意。

识别广告的独特体验

作为一家在线广告公司,Teads收集并存储有关「广告体验」方方面面的数据。所谓「广告体验」,既包括用户访问网页并加载广告脚本时发生的所有事件,也包括从初始化广告播放器开始对广告服务器的请求和用户操作(例如点击)。要将一组事件归类为同一批次的体验,我们需要能够唯一地识别这种体验,并且从一开始即在调用广告服务器之前就必须进行识别。

到目前为止,广告服务器一直在生成唯一标识符,并将其作为广告响应的一部分进行发送。这是有问题的,因为响应之前的事件没有标识符,因此你需要交叉引用数据以查找属于同一批次的事件。服务器端生成的标识符几乎可以保证是唯一的,并且在触达生产系统之前,我们必须确保浏览器也可以生成通用唯一的标识符。

通用唯一标识符

UUID(「通用唯一标识符」,也被称为GUID,即「全局唯一标识符」)是一个拥有128比特位的值,它可由计算机独立生成,即不与其它计算机进行通信,并且其唯一性应当具有非常高的概率。字面上用以破折号分隔的十六进制数字序列来表示UUID。

以下是RFC 4122定义的「版本4 UUID」的示例:

UUID最初是作为分布式计算而设计的,它是网络计算系统(NCS)的一部分,已在许多情况下使用,充分地利用了其属性。在Windows上,UUID的使用很普遍,因为它们标识了所有COM类(CLSID)和接口,因此所有基于COM的Windows API和应用程序以及许多OS对象(例如用户,安全策略等)都使用UUID。

实际上,除了上面显示的RFC兼容变体和保留变体之外,可以指定的四个变体中,其他两个是1)NCS向后兼容(最高有效位是0,数字0到7) 2)Microsoft Corporation向后兼容(最高有效位是110,数字C和D)。

UUID的其他应用程序包括文件系统,例如GUID分区表(UEFI的一部分)中的文件系统,或可以将其代替传统整数用作记录主键的数据库。在在线广告的上下文中,它们经常用于唯一地标识在Web上查看广告的用户。例如,Interactive Advertising Bureau(IAB)建议将UUID用于IDFA(广告标识符)/ AAID(Android的Google广告ID),以唯一地标识移动用户。

选择你的版本

UUID版本1和2使用以下组合生成标识符——宿主计算机的MAC地址、100纳秒精度的当前时间UTC的时间戳,以及“时钟序列”,这种组合可以在100ns的时间内消除标识符的歧义,可以单调递增或随机。

每个带有网络控制器的设备都应该具有唯一的48位MAC地址,这使得不可能有两个设备生成相同的UUID。但是,这也是这些版本的弱点,因为这意味着此类UUID可用于以个人方式唯一标识用户。请注意,这是在用户设备而非服务器上生成UUID时出现的一个问题,例如MySQL使用UUID v1。

UUID版本3和5是通过对字符串进行哈希处理(对于v3使用MD5,对于v5使用SHA-1)产生的,并且由于哈希是确定性的,因此输出与输入一样唯一。如果你想将URL用作唯一标识符,这个方法可行。但它们不适合我们的场景。

最后,在版本4的情况下,除变体和版本以外的所有位都是随机的,总计为122个随机位。这保证了这些UUID不会携带任何个人身份信息。需要注意的是,若要受益于UUID在唯一性和不可预测性上的保证,则应使用加密安全的随机数生成器(CSRNG)。

让我们在浏览器中生成一个UUID

正如我们已经看到的,如果我们拥有CSRNG,则「版本4 UUID」是我们的最佳选择。这立即排除了经久不衰的Math.random,后者的实现取决于浏览器,并且不能保证密码使用的安全性。在实践中,主流浏览器使用Xorshift伪随机数生成器的变体,与伪随机数生成器(PRNG)一起使用时,会相当不错。

CSRNG和PRNG之间的区别在于PRNG使用单个种子,因此具有完全确定性,进而无法根据先前生成的数字预测CSRNG的输出。

2017年发布的Web密码学API或Crypto API定义了一个getRandomValues函数。根据caniuse的说法,有96.6%的用户使用的浏览器支持Crypto。我们发现,在我们的用户中,这个支持率接近99.9%,换句话说,Crypto API几乎可以在任何地方使用(甚至包括边缘设备,例如PS Vita)。这是一个重要的考虑因素:我们拥有15亿的独立用户,代表着超过一百万个不同的OS x 浏览器 x 浏览器版本 x 设备组合,因此我们必须确信所有用户都可以毫无问题地运行我们的代码。

使用Crypto API生成128位(16字节)随机数非常简单:

crypto.getRandomValues(new Uint8Array(16))

要将这些随机字节转换为RFC兼容的「版本4 UUID」,需要设置变体和版本位,然后将字节转换为以破折号分隔的十六进制数字。

另一种可能性是将File API与该URL.createObjectURL函数结合使用以获得包含UUID的Blob URL。对URL.createObjectURL的支持程度,与加密相似,为99.9%。

const url = URL.createObjectURL(new Blob())
url.substring(url.lastIndexOf('/')+ 1)

File API未指定应使用哪个版本的UUID,也未指明如何生成。实际上,基于Chromium的浏览器(Chrome和Edge)和WebKit重用其Crypto实现来生成随机字节,然后设置/清除位以创建「版本4 UUID」。当操作系统有相应支持时(CoCreateGuid在Windows,CFUUIDCreatemacOS上),Firefox会调用OS级别的函数,否则Firefox会选择使用类似Chromium和WebKit的Crypto。

最后,浏览器会基于操作系统来实现Crypto.getRandomValues,要么直接提供随机数,要么收集「无序状态」(entropy)然后定期将其转入到PRNG,从而使其具有加密安全性(CSPRNG)。

注意事项

我们的脚本已集成在数千个网站上,这些网站通常包括其他第三方脚本,并且每个脚本都可以重新定义/重载大多数JavaScript函数。我们发现有些脚本使Math.random函数重载,会始终返回相同的值,而另一些脚本则重新定义了window.URL属性以返回当前页面的URL。

有两种方法可以在不受第三方脚本影响的上下文中运行脚本:iframe和Web Workers。Web Workers更有趣,因为它们实例化更快,它们仅创建新的JavaScript执行上下文,而不是完整的DOM。

UUID生成实验

我们实现了一项功能,该功能可以生成带有Crypto的UUID(并依靠Math.random)并将其发送到我们的服务器,并设置A/B测试。这使我们能够检查大多数浏览器确实支持Crypto,并且我们的代码没有任何问题,而又不影响大多数用户。在可能的情况下,我们也对当前帧中运行的功能以及Web Worker中运行的功能进行了A/B测试。

对于已激活“uuid worker”功能的用户,我们测量出其中有50%的设备实例化一个worker需要花费200毫秒以上的时间。在我们的案例中,因为我们想在此过程中首先生成UUID,所以引入这样的延迟是不可接受的。然后,我们切换到基于File API的实现,使用Crypto作为后备,使用Math.random作为最后手段。

分析生成的UUID

我们最初发现,每千个请求中有将近2个请求带有重复的UUID。至少可以这么说,这令人警觉。

该理论说,如果你连续85年每秒产生10亿个UUID,则发生一次碰撞(译注:即「哈希冲突」)的可能性为50%。以我们为例,我们每天将产生约10亿个UUID,因此我们应该可以安全使用约700万年。

上面两种表述之间的差异来自何处?

不同之处在于我们正在查看重复的请求,而不是冲突的标识符。重复的请求来自同一客户端,并被发送到服务器一次或多次,如下所示。这可能有多种原因,我们发现这些重复请求中的绝大多数都是由第三方脚本中的错误引起的。

另一方面,当一个以上的客户端使用给定的标识符时,就会发生冲突。在下面的架构中,客户端1和3之间都发生了冲突,客户端1和3都生成了以“ 0a87341d…” 开头的相同(红色)UUID 。请记住,从理论上讲,这是每天生成十亿个UUID 的“ 每700万年一次 ”事件。

冲突

在我们删除了重复的请求(来自相同的User-Agent,IP地址哈希,引荐来源网址等)之后,具有冲突UUID的请求数量大约等于1万个请求中的2个。但是,这还不是全部。当查看标识符的数量时,我们每百万获得约5个非唯一标识符

这是小了40倍,非常出乎意料:当你想到发生冲突时,你会想象两个非常不幸的用户生成了相同的标识符,但是在一天之内,全世界有成千上万个 不同的客户端 在生成相同的标识符。相同的UUID。请记住,浏览器提供的CSPRNG本质上与您可以在服务器上使用的CSPRNG一样好。这里发生了什么?

如果我们使用冲突的UUID接收所有请求,然后放大浏览器的User-Agent,那么我们将得到:

这些请求中几乎有三分之一是由Chrome Mobile 41.0生成的。令人惊讶的是,Chrome Mobile 41已有5年以上的历史了。这些请求的另一个共同点是基于IP发出的城市:将近三分之二来自Mountain View。Chrome Mobile 41.0发出的所有请求(100%)均来自山景城。您能想到一家总部设在那里的公司吗?

我们不是唯一得到类似观察结果的团体:在StackOverflow上的一个提问,是关于「在浏览器生成UUID」的,其中一个答案中提到了Googlebot是冲突的主要来源。在这个问题下,还提到Googlebot是因为其具有“伪” Math.random和“ new Date()”实现,或者「涉及重复的事件标识符」。虽然没有声明,但托管在山景城的Chrome Mobile 41实际上是Googlebot或其他Google服务。这将不再是个问题,因为Google在2019年12月宣布将开始更新Googlebot以在台式机和移动设备上使用最新版本的Chrome。

但这还不是全部。链接到在Mountain View中生成的标识符,请求会带有冲突的UUID达到了惊人的92%,而剩余8%请求的浏览器的User-Agent分布图,如下所示:

EvoPdf,WnvPdf和HiQPdf是.NET的HTML到PDF转换库,很可能它们在爬行带有我们脚本的页面时多次重复使用相同的标识符。PS Vita浏览器生成的UUID冲突似乎是合法的(与欺诈活动无关),并且可能是由于加密实现不佳所致:没有浏览器会生成与PS Vita生成的UUID冲突的UUID。他们的Crypto实现可能只是PRNG较弱。

最后,Internet Explorer的情况看起来不太像其加密实现较差,而更像是恶意脚本正在(滥)用它。UUID冲突的请求中有75%来自3个ISP:

  • Nobis Technology Group,
  • PSINet Inc.,
  • “m247 europe srl” (显然标签错误,应为“ PrivateInternetAccess ”).

从搜索引擎给出的结果中,我们发现,这些ISP提供VPN或公共代理。感觉有些不对劲,实际上这三个ISP仅占我们全球流量的0.1%,与我们在这里看到的75%相比,相去甚远。

从更深入的角度来看,在脚本加载3万次后,在32%的情况下,脚本由于网络错误而无法与广告服务器联系,并且在可以的情况下,该服务器阻止了98%以上的欺诈嫌疑请求(由DoubleVerify检查)。

结论

绝大多数的浏览器(99.9%)基于URL.createObjectURL或crypto.getRandomValues来提供生成随机(版本4)UUID所需的API。从主要浏览器的源代码中可以看到,这些功能的实现与服务器上的实现具有相似的质量。因此,非常令人惊讶的是,它们在每百万次请求中就会遇到5个非唯一标识符的大量冲突

仔细观察,这些API并不存在问题,而这些冲突似乎主要(92%)归因于Googlebot和其他一些与Google相关的服务。其余的冲突(8%)来自边缘浏览器(PS Vita),自动浏览器代理(HTML到PDF转换器)或与欺诈活动相关联,最有可能是由于中间人代理/代理。

对于我们的业务场景,每百万5个非唯一标识符的冲突率是可以接受的,特别是因为我们已经分析了其原因。为了避免在系统中出现这种“噪音”,我们正在设置一个过滤器,以维护一组重复的UUID,这些UUID被添加到阻止进入请求的阻止列表中。

致谢

感谢所有为本文及其所述内容做出贡献的人!首先,Nicolas Crovatti相信我们可以在浏览器中生成唯一的标识符,相信我可以深入浅出,并鼓励我写这篇文章;Thomas Azemard帮助我分析了数据(尤其是Chrome Mobile 41和PS Vita!);我的Format团队的同事们审阅了我的代码(特别感谢Benoit Ruiz审阅了它的无数次迭代!)和文章;我在SSP和Analytics(分析)团队中的同事们为他们在生产中实现这一目标提供了帮助(对于所有的不融洽,我们深表歉意!)(译注:原文sorry for all the non-hydrated macros!);最后是本杰明·戴维(Benjamin Davy),没有他,就不会有这篇文章。

原文地址:https://medium.com/teads-engineering/generating-uuids-at-scale-on-the-web-2877f529d2a2

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. MySQL插入和管理表

    使用Management Stuio界面方式管理数据表数据; 使用T-SQL语句管理数据表数据。注意: 以下数据及T-SQL语句全部以该数据表为基础进行操作✈点击前往查看 T-SQL语句创建及管理数据表T-SQL语句插入表数据T-SQL语句修改表数据操作提示 T-SQL语句插入表数据 1.向各个数据表中插入如…...

    2024/4/22 9:47:31
  2. python 机器学习——线性回归与波士顿房价案例

    线性回归与波士顿房价案例一、比较回归与分类二、线性回归器理论(1)线性回归( Linear Regression )(2)线性回归的参数估计最小二乘法( Least squares )梯度下降法极大似然法( Maximum Likelihood,ML )三、线性回归模型性能评价指标四、预测美国波士顿地区房价(一)…...

    2024/4/25 21:50:35
  3. mysql基础回顾

    运算符算数运算符+,-,*,/,%逻辑运算符And,or,not条件运算符<,>,=,!=,<>,<=,>=模糊查询like in、not in between…and is null、is not null位运算符常用SQLDQL(数据查询语言)select[distinct]—>from—>where—>group by—>having—>or…...

    2024/5/5 20:57:19
  4. 2020春招中软融鑫软件开发工程师面经

    本人双非普通一本,今年毕业,在智联招聘上投递的简历,上午投的下午hr就打电话联系。一共两面,一面人事面,二面人事+技术面,目前已经拿到了offer.1面:hr简单联系一下你问下简历上的东西,确定二面时间等2面:hr面+技术面,下面详细说下过程人事面和技术面都是一个人,就是…...

    2024/5/5 17:11:50
  5. 一、QT连接mysql

    一、QT连接mysql 1、MySQL的安装与配置 可在官网https://dev.mysql.com/downloads/mysql/上下载MySQL最新版,安装过程可以参考第22篇 数据库(二)编译MySQL数据库驱动 2、在QT中连接MySQL数据库 (1)新建Qt Widget Application项目名称设为mysql_try,类名默认MainWindow即可…...

    2024/5/5 18:42:29
  6. ng-inspector插件安装问题

    网页上显示安装包无效、不可用之类的: 1、把ng-inspector.crx后缀名改为.rar 2、更改扩展名后把文件解压到ng-inspector 3、打开Google浏览器,点击右上角"三点">“更多工具”>“扩展程序” 4、打开“扩展程序”页面以后,右上角有个“开发者模式”,把后面的…...

    2024/5/5 23:04:07
  7. 5.NPM学习

    5.NPM​ 是什么?NPM全称:Node Package Manager 类似于后端的MavenNPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,是全球最大的模块生态系统我们通过npm可以很方便的下载js库,管理前端工程Node.js已经集成了npm包管理工具​ 如何查看npm是否安装…...

    2024/5/5 20:32:53
  8. 一些相对特殊的算法题

    实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, ne…...

    2024/5/5 22:32:11
  9. im2col函数解析

    im2col函数是进行卷积运算所常用的一个函数,它的作用是将进行卷积运算的一组图片二维化,而后再与卷积核进行矩阵相乘,代替了卷积运算原来相乘再相加的运算形式,可以大大减少运算所需时间。接下来介绍im2col函数的实现原理以及其不同形式。 先上代码 def im2col(input_img, …...

    2024/5/5 21:34:03
  10. 作业十

    controller层 // 登录@RequestMapping(value = "/doLogin.html", method = RequestMethod.POST)public String doLogin(@RequestParam String userName, @RequestParam String userPwd, HttpSession session) {// 验证账号User user = oss.doLogin(userNam…...

    2024/5/6 0:19:52
  11. 牛客编程巅峰赛S1第7场 - 黄金&钻石 A.牛牛打怪兽

    牛客编程巅峰赛S1第7场 - 黄金&钻石 A.牛牛打怪兽 题目链接 题目描述 身为屯里第一剑士的牛牛来到训练场里闯关,由于过于勤奋,牛牛的宝剑的耐久度降到了 2 ,这意味着牛牛最多只能打倒两只怪兽,否则将会被淘汰。 训练场的地图可以看作一棵以 1 为根节点的树,训练场的终…...

    2024/4/15 17:09:45
  12. Tableau必知必会之如何在工具提示里显示条形图

    我们使用Tableau自带的超市数据。先将类别拖至行,销售额拖至文本中,创建出下图:接下来,需要实现:将鼠标悬停每个类别时,能提示我近几年各类别销售额的柱形图来对比查看年度变化。具体步骤如下:一、写计算公式为了达到预期(比如选择日期从11年到13年),首先需要将3个年…...

    2024/5/5 21:50:09
  13. 七夕祭

    题意 题意 题解 我们将喜欢的店铺称为点。 对于行和列,我们证明一下,如果我们i,i+1i,i+1i,i+1列的点的数量不同,那么一定可以让某一列的点−−--−−,另一列的点++++++。同时如果现在存在移动是第iii列的一个点移动向了第i+1i+1i+1列,那么i,i+1i,i+1i,i+1列的点的数量肯定…...

    2024/5/6 0:47:50
  14. 基于SSM的校园二手交易平台

    基于SSM的校园二手交易平台 完整的设计报告在后面喜欢就点一下star哟,谢谢亲的支持 Java版本:1.8 数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub代码已经上传gi…...

    2024/4/15 15:40:24
  15. [leetCode]剑指 Offer 05. 替换空格

    字符数组 使用一个字符数组保存替换后的字符穿,该数组的的长度为源字符串长度的三倍以保证可容纳替换后的字符串长度。 class Solution {public String replaceSpace(String s) {int n = s.length();char[] array = new char[3*n];int size = 0;//替换后的字符串长度for(int i…...

    2024/5/5 21:36:19
  16. 常用类

    常用类 内部类 概念在一个类的内部再定义一个类特点编译后生成独立的字节码文件,文件名:外部类名$内部类名.class 内部类内可直接访问外部类私有成员,而不破坏封装 可为外部类提供必要的功能组件种类成员内部类特点内部类可以有任何访问修饰符 内部类可以访问外部类的静态成…...

    2024/5/1 16:31:49
  17. java中 将多个jsonObject合成一个jsonObject

    JSONObject jsonThree = new JSONObject(); jsonThree.putAll(jsonOne);jsonThree.putAll(jsonTwo);System.out.println(jsonThree.toString());...

    2024/5/5 22:38:27
  18. MySQL实战基础知识入门(2):统计一天24小时数据默认补0的sql语句

    语句分析:如果不存在某时段的数据,会显示为null,如何将不存在的时段自动补齐呢? select a.lockdate,ifnull(b.count,0) as count from (SELECT 0 as lockdateunion allSELECT 1 as lockdateunion allSELECT 2 as lockdateunion allSELECT 3 as lockdateunion allSELECT 4 …...

    2024/5/5 16:56:02
  19. 轻量级网络SqueezeNet、MobileNet、ShuffleNet等的网络结构图以及pytorch代码(转载)

    转载 转载 超好的文章https://www.cnblogs.com/vincent1997/p/10916734.html前言深度卷积网络除了准确度,计算复杂度也是考虑的重要指标。本文列出了近年主流的轻量级网络,简单地阐述了它们的思想。由于本人水平有限,对这部分的理解还不够深入,还需要继续学习和完善。最后…...

    2024/5/5 22:22:45
  20. 艾永亮:增加用户粘性的这些细节,造就超级产品,你注意到了吗?

    在打造超级产品中,往往会有一些人性化的设计深得用户的喜爱,有些小细节是企业能够注意到的,却总是忽略,很多时候只要企业能够关注到产品的每一个细节,在细节上提升用户体验,让产品超越用户预期,就能够打造出属于自己的超级产品。本文将通过企业案例告诉大家打造超级产品…...

    2024/5/6 2:43:22

最新文章

  1. 数据结构:环形链表的实战指南

    ✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;http://t.csdnimg.cn/oHJAK&#xff08;数据结构与算法&#xff09; 小新的主页&#xff1a;编程版小新-CSDN博客 …...

    2024/5/7 16:16:21
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. promise.all方式使用

    romise.all( ).then( ) 处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 比如&#xff1a;用户点击按钮&#xff0c;会弹出一个弹出对话框&#xff0c;对话框中有两部分数据呈现&#xff0c;这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...

    2024/5/6 9:11:04
  4. 图解深度神经网络的架构

    图解深度神经网络的架构 基线模型 AlexNet 是突破性的架构&#xff0c;它使卷积网络&#xff08;CNN&#xff09;成为处理大型图像分类任务的主要机器学习算法。介绍 AlexNet 的论文呈现了一张很好的图&#xff0c;但是好像还缺点什么…… AlexNet 架构图示&#xff08;图源&…...

    2024/5/6 16:01:00
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/7 14:19:30
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/7 16:04:58
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/7 11:08:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57