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

“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce

文章目录

    • O 背景知识
      • 1 数据挖掘
      • 2 邦费罗尼原则
      • 3 TF.IDF
      • 4 哈希函数
      • 5 分布式文件系统
    • 一、MapReduce基本介绍
      • 1. Map 任务
      • 2. 按键分组
      • 3. Reduce 任务
      • 4. 节点失效处理
      • 5.小测验:在一个大型语料库上有100个map任务和若干reduce任务:
    • 二、基于MapReduce的基本运算
      • 1. 选择(Selection)
      • 2. 交(Intersection)
      • 3. 并(Union)
      • 4. 补(Difference)
      • 5. 聚合分组(Aggregation and Grouping)
      • 6. 矩阵乘法(Matrix Multiplication)
    • 三、MapReduce的复杂性估计
      • 1. 复制率(Replication Rate)
      • 2. Reduce 规模(Reduce Size)
      • 3. 映射模式(Mapping Patterns)

O 背景知识

1 数据挖掘

定义:数据挖掘是从大规模数据集中提取有用信息和模式的过程,通常应用于预测和决策支持。

例子:零售商通过分析销售数据,发现顾客在购买啤酒时经常同时购买尿布。基于这一发现,零售商可以优化商品陈列,提升销量。

2 邦费罗尼原则

定义:邦费罗尼原则指出,如果某个特征在随机数据中频繁出现,那么这种特征在特定数据集中的显著性可能不可靠。

例子:假设在多个随机抽样中发现某个疾病与吸烟之间的关联。如果该关联在随机数据中普遍存在,那么在具体研究中,该关联可能并不是显著的。

3 TF.IDF

定义:TF.IDF是一个用于评估文本中某个词汇重要性的度量,结合了该词在文档中的出现频率和在所有文档中的稀有性。
TF-IDF(Term Frequency-Inverse Document Frequency)是一种常用的文本挖掘技术,用于评估某个词在文档中的重要性。它结合了词在文档中的频率(TF)和词在整个文档集中的稀有性(IDF)。下面是 TF 和 IDF 的计算方法。

  1. 词频(TF)

词频(Term Frequency, TF)是指某个特定词汇在文档中出现的频率。计算公式如下:
TF ( t , d ) = 词 t 在文档 d 中出现的次数 文档 d 中总词数 \text{TF}(t, d) = \frac{\text{词 t 在文档 d 中出现的次数}}{\text{文档 d 中总词数}} TF(t,d)=文档 d 中总词数 t 在文档 d 中出现的次数
其中:

  • ( t ) 是某个特定的词。
  • ( d ) 是某个特定的文档。
  1. 逆文档频率(IDF)

逆文档频率(Inverse Document Frequency, IDF)用于衡量词汇的重要性,尤其是那些在多个文档中都出现的词汇。计算公式如下:

IDF ( t ) = log ⁡ ( N ∣ { d ∈ D : t ∈ d } ∣ ) \text{IDF}(t) = \log\left(\frac{N}{|\{d \in D: t \in d\}|}\right) IDF(t)=log({dD:td}N)
其中:

  • ( N ) 是文档总数。
  • ∣ { d ∈ D : t ∈ d } ∣ |\{d \in D: t \in d\}| {dD:td}是包含词 ( t ) 的文档数量。
  1. TF-IDF 计算

结合以上两者,TF-IDF 的计算公式为: TF-IDF ( t , d ) = TF ( t , d ) × IDF ( t ) \text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t) TF-IDF(t,d)=TF(t,d)×IDF(t)

例子:在一篇关于“数据挖掘”的文章中,词“数据”出现了50次,而在100篇文档中只出现在10篇中。则“数据”的TF.IDF值较高,说明它是该文档的重要主题词。

4 哈希函数

定义:哈希函数是将输入数据(如字符串)转换为固定大小(通常是整数)的输出值的算法,具有快速计算和均匀分布的特点。

例子:在一个用户数据库中,使用哈希函数将用户的电子邮件地址转换为一个哈希值,这样可以快速查找用户的信息而不必逐个匹配。

5 分布式文件系统

定义:分布式文件系统是一种将文件存储在网络中多台计算机上,并允许用户和应用程序通过统一接口进行访问的系统。它能实现文件的透明访问、数据冗余和高可用性。

特征

  • 多副本:文件通常在多个节点上存储副本,以提高容错性和数据安全性。
  • 并发访问:支持多个用户同时访问和修改文件,提供机制以维护数据一致性。

例子:在Hadoop的HDFS中,文件会被分割成多个块,并在不同的节点上存储这些块的副本,以便于大数据处理和容错;在Google File System中,文件也会被划分为多个块,并在多个服务器上进行冗余存储。

一、MapReduce基本介绍

定义:MapReduce 是一种编程模型和处理大规模数据集的计算框架,最早由 Google 提出。它将数据处理过程分为两个主要阶段:Map 阶段和 Reduce 阶段。MapReduce 允许开发人员以简洁的方式进行并行计算,适用于大数据环境。
在这里插入图片描述

1. Map 任务

在 Map 阶段,输入数据被分成若干个片段,独立处理。每个片段通过一个 Map 函数进行处理,Map 函数的作用是读取输入数据并生成一系列的中间键值对。

  • 输入:原始数据集(如文本文件)。
  • 输出:中间键值对(key-value pairs),这些键值对将被用于后续的 Reduce 任务。

示例:在词频统计中,Map 函数会把每个单词作为键,值为 1,生成如 {“hello”: 1, “world”: 1} 的中间结果。

2. 按键分组

在 Map 阶段之后,系统会对所有 Map 任务生成的中间键值对进行洗牌(Shuffle)和分组,将相同的键聚集在一起,并将这些键值对发送到相应的 Reduce 任务。

  • 洗牌:将所有 Map 任务输出的中间结果进行排序和分配。
  • 分组:相同的键会被聚集在一起,便于 Reduce 阶段处理。

这一过程确保每个 Reduce 任务只处理一组特定的键及其相关联的值。

3. Reduce 任务

Reduce 阶段的主要任务是处理从 Map 任务中得到的中间数据,合并相同键的值并生成最终输出结果。

  • 输入:中间键值对(经过分组后的数据)。
  • 输出:最终结果,通常是经过汇总、计算后的数据(例如词频计数的总和)。

示例:在词频统计中,Reduce 函数会将相同单词的值进行求和,最终输出如 {“hello”: 10, “world”: 5} 的结果。

4. 节点失效处理

在分布式环境中,节点失效是常见的问题。MapReduce 框架设计了机制来处理节点失效,以确保任务的可靠性和正确性。

  • 任务重试:如果某个 Map 或 Reduce 任务的执行节点失败,系统会自动重新调度该任务到其他可用节点进行执行。
  • 任务监控:主控制节点(如 Job Tracker)会监控每个任务的执行状态,及时发现失败并重新分配任务。
  • 数据冗余:数据片段会在多个节点上进行冗余存储,这样即使某个节点失效,其他节点仍然可以提供相应的数据。

5.小测验:在一个大型语料库上有100个map任务和若干reduce任务:

(a) 如果在 Map 任务中不使用组合器,那么处理值的 Reducer 的时间差异会不会很大?为什么?

回答
如果不使用组合器,所有的中间键值对都会被直接发送到 Reducer。在大规模数据集的情况下,Map 阶段可能会生成大量中间结果,尤其是在词频统计这样的应用中,比如同一个词可能会出现多次。

  • 时间差异:由于所有的中间结果都需要通过网络传输到 Reducer,处理大量重复的键值对会导致网络带宽的浪费和 Reducer 的处理时间增加,可能会导致某些 Reducer 处理的时间远远长于其他 Reducer。因此,Reducer 的处理时间差异可能会很大。
  • 组合器的作用:组合器可以在 Map 任务的本地阶段对中间结果进行初步汇总,从而减少传输到 Reducer 的数据量,这样可以显著提高整体效率并减少时间差异。

(b) 如果将 Reducer 组合成数量较少的 Reduce 任务,比如说随机的 10 个任务,那么上述时间差异不会十分显著?如果将 Reducer 组合成 10,000 个 Reduce 任务,结果会怎么样?

回答

  • 数量较少的 Reduce 任务:如果将 Reducer 组合成较少的 Reduce 任务(如 10 个),每个 Reducer 将需要处理更多的中间键值对。虽然每个 Reducer 的工作量增大,但由于任务数量较少,整体处理时间可能不会显著增加,因为任务调度和启动的开销相对较小,且可以并行处理。

  • 数量较多的 Reduce 任务:如果将 Reducer 组合成 10,000 个 Reduce 任务,可能会导致以下问题:

    • 过多的任务调度开销:每个任务的启动和调度都有一定的成本,过多的任务会导致系统资源的浪费和调度延迟。
    • 不均衡的负载:由于每个 Reducer 可能处理的中间结果数量相对较少,可能会导致有些 Reducer 完成得很快,而有些 Reducer 可能仍在处理数据,造成整体效率下降。
    • 资源消耗:大量的 Reducer 任务会消耗更多的系统资源,可能导致系统性能瓶颈。

© 假设我们在 100 个 Map 任务中使用组合器,那么上面时间的差异不会很显著?为什么?

回答
当使用组合器时,Map 阶段可以在本地汇总和压缩输出的中间结果,减少传输到 Reducer 的数据量。

  • 数据量减少:组合器能够有效地减少传输到 Reducer 的中间结果数量。这不仅降低了网络带宽的需求,还减少了 Reducer 端处理的工作量。
  • 时间差异降低:由于每个 Reducer 接收到的中间结果量相对较少,处理时间差异会缩小,因此整体的处理时间差异不会显著。所有 Reducer 能够更均匀地分配工作负载,提高了处理效率。

二、基于MapReduce的基本运算

MapReduce 是一种强大的编程模型,适用于处理和生成大规模数据集。它在多种基本运算中都得到了广泛应用,以下是基于 MapReduce 的一些基本运算的介绍,包括选择、交、并、补、聚合分组和矩阵乘法等。

1. 选择(Selection)

选择操作用于从数据集中筛选满足特定条件的记录。在 MapReduce 中,该操作主要在 Map 阶段完成。

实现步骤

  • Map 阶段:读取输入数据集,检查每条记录是否满足条件(如某一字段的值是否为特定值)。如果满足条件,就输出该记录。
  • Reduce 阶段:通常选择操作不需要 Reduce 阶段,因为只需输出符合条件的结果。

示例:假设我们有一个包含用户信息的日志文件,我们想要选择年龄大于 18 岁的用户:

def map_function(record):if record.age > 18:emit(record.id, record)

2. 交(Intersection)

交操作用于找到两个数据集中的共同元素。在 MapReduce 中,可以通过 Map 和 Reduce 组合实现。

实现步骤

  • Map 阶段:对每个数据集的记录进行处理,输出形式为 (key, source),其中 key 是记录的关键字段,source 是数据集标识。
  • Reduce 阶段:对于相同的 key,检查其来源。如果来自两个不同的数据集,则输出这个 key

示例:假设有两个用户ID列表,我们要找出两个列表中的共同元素。

def map_function(record):emit(record.user_id, "dataset1")  # 对于第一个数据集emit(record.user_id, "dataset2")  # 对于第二个数据集def reduce_function(key, values):if "dataset1" in values and "dataset2" in values:emit(key, key)  # 输出交集的元素

3. 并(Union)

并操作用于合并两个数据集,返回两个数据集中的所有元素。在 MapReduce 中,也可以通过 Map 和 Reduce 来实现。

实现步骤

  • Map 阶段:对两个数据集的记录进行处理,将所有记录发送到 Reducer。
  • Reduce 阶段:简单地输出所有接收到的记录。

示例:将两个用户ID列表合并为一个列表。

def map_function(record):emit(record.user_id, None)def reduce_function(key, values):emit(key, key)  # 输出并集的元素

4. 补(Difference)

补操作用于找到在一个数据集中存在但在另一个数据集中不存在的元素。可以通过 Map 和 Reduce 实现。

实现步骤

  • Map 阶段:处理数据集,输出 (key, source)
  • Reduce 阶段:检查 key 的来源,如果只来自第一个数据集,则输出该 key

示例:找出在第一个用户ID列表中,但不在第二个用户ID列表中的元素。

def map_function(record):emit(record.user_id, "dataset1")  # 第一个数据集def reduce_function(key, values):if "dataset1" in values and "dataset2" not in values:emit(key, key)  # 输出补集的元素

5. 聚合分组(Aggregation and Grouping)

聚合分组操作用于根据某些键对数据进行分组,并对每组的数据进行汇总计算(如求和、计数等)。

实现步骤

  • Map 阶段:根据特定的键(如某字段的值)输出 (key, value) 对。
  • Reduce 阶段:对相同的 key 进行汇总计算。

示例:计算每个用户的订单总数。

def map_function(record):emit(record.user_id, 1)  # 每个订单计为 1def reduce_function(user_id, values):total_orders = sum(values)  # 汇总每个用户的订单数emit(user_id, total_orders)

6. 矩阵乘法(Matrix Multiplication)

矩阵乘法是更复杂的运算,可以通过 MapReduce 来实现。假设我们有两个矩阵 A 和 B,想要计算 C = A * B。

实现步骤

  • Map 阶段:将矩阵 A 和 B 的元素进行处理。对于 A 的每个元素 (i, j),输出 (i, k),值为 A[i][j] * B[j][k]。对于 B 的每个元素,输出 (j, k) 及其对应值。
  • Reduce 阶段:将相同的 (i, k) 汇总,计算总和。

示例

# 假设 A[i][j] 和 B[j][k] 的索引表示
def map_a(i, j, value):for k in range(num_cols_B):emit((i, k), value * B[j][k])  # 从 A 发出def map_b(j, k, value):for i in range(num_rows_A):emit((i, k), value * A[i][j])  # 从 B 发出def reduce_function(index, values):total = sum(values)  # 对于相同的 (i, k) 汇总emit(index, total)

三、MapReduce的复杂性估计

1. 复制率(Replication Rate)

定义
在 MapReduce 中,复制率通常指的是所有 Map 任务产生的键值对的数量与其输入数据的大小之比。更具体地说,可以用以下公式表示:

复制率 = 所有 Map 任务产生的键值对数量 输入数据的大小 \text{复制率} = \frac{\text{所有 Map 任务产生的键值对数量}}{\text{输入数据的大小}} 复制率=输入数据的大小所有 Map 任务产生的键值对数量

影响因素

  • 数据冗余:较高的复制率意味着每个输入记录会生成更多的输出键值对,这可能会增加后续处理的复杂性。
  • 中间结果的处理:在某些情况下,尤其是使用组合器时,复制率可以影响 Reducer 接收到的数据量,从而影响性能。
  • 资源利用率:过高的复制率可能导致不必要的资源消耗,尤其是在处理大规模数据时。

复杂性估计
复制率是评估 MapReduce 性能的重要指标。合理的复制率能够提高数据处理效率,但过高的复制率则可能会导致资源浪费和处理延迟。因此,在设计 MapReduce 作业时,需要仔细考虑复制率的设置。

2. Reduce 规模(Reduce Size)

定义
Reduce 规模通常指的是参与 Reduce 阶段的任务数量和每个任务处理的数据量,决定了整个 MapReduce 作业的并行处理能力。

影响因素

  • 任务数量:增加 Reduce 任务的数量可以提高并行处理能力,降低单个任务的负载。
  • 数据倾斜:如果某些键的值集中,可能导致某些 Reduce 任务的负载过重,从而影响整体性能。
  • 网络传输开销:Reduce 任务接收的数据量越大,其网络传输成本也越高。

复杂性估计
合理的 Reduce 规模设计可以提高作业的执行效率。需要根据输入数据的规模和特性调整 Reduce 任务的数量,以避免数据倾斜和资源浪费。

3. 映射模式(Mapping Patterns)

定义
映射模式指的是在 MapReduce 中数据如何被映射(处理)的方式。不同的映射模式会对复杂性和性能产生不同影响。

常见的映射模式

  • 单一映射模式:每个 Mapper 处理特定的数据分片,适合于简单的处理任务。
  • 分布式映射模式:多个 Mapper 同时处理数据,适用于大规模并行计算,增强了处理能力。
  • 多输入模式:一个 Mapper 可以处理来自多个输入源的数据,适合于需要联合多份数据进行处理的场景。

复杂性估计
映射模式影响时间复杂性和空间复杂性。选择合适的映射模式可以提高数据处理的效率。例如,分布式映射模式通常能获得更好的处理速度,但可能会增加对资源的需求。

相关文章:

“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce

文章目录 O 背景知识1 数据挖掘2 邦费罗尼原则3 TF.IDF4 哈希函数5 分布式文件系统 一、MapReduce基本介绍1. Map 任务2. 按键分组3. Reduce 任务4. 节点失效处理5.小测验:在一个大型语料库上有100个map任务和若干reduce任务: 二、基于MapReduce的基本运…...

shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别

Vue3 浅层响应式 API 1. ref vs shallowRef 1.1 基本概念 ref: 深层响应式,会递归地将对象的所有属性转换为响应式shallowRef: 浅层响应式,只有 .value 的改变会触发更新,不会递归转换对象的属性 1.2 使用对比 // ref 示例 const deepRe…...

maven、npm、pip、yum官方镜像修改文档

文章目录 Maven阿里云网易华为腾讯云 Npm淘宝腾讯云 pip清华源阿里中科大华科 Yum 由于各博客繁杂&#xff0c;本文旨在记录各常见镜像官网&#xff0c;及其配置文档。常用镜像及配置可评论后加入 Maven 阿里云 官方文档 setting.xml <mirror><id>aliyunmaven&l…...

HTML5+SVG+CSS3实现雪中点亮的圣诞树动画效果源码

源码介绍 这是一款基于HTML5SVGCSS3实现雪中点亮的圣诞树动画效果源码。画面中的圣诞树矗立在雪地中&#xff0c;天上飘落着雪花。当鼠标滑过圣诞树时&#xff0c;可见到圣诞树上的灯光闪烁&#xff0c;同时左下角探出雪怪模样的半个脑袋&#xff0c;四处张望着。整体画面栩栩…...

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式&#xff1a; --行内样式&#xff1a;写在标签的style属性中&#xff08;不推荐&#xff09; --内嵌样式&#xff1a;写在style标签中&#xff08;可以写在页面任何位置&#xff0c;但通常约定写在head标签中&#xff09; --外联样式&#xf…...

Linux-day10

第21章 Linux高级篇-日志管理 日志介绍和实例 基本介绍 系统常用的日志 日志服务 日志服务原理图 在这个配置文件里面记录了日志服务程序 日志管理服务rsyslogd -v是反向匹配 invert 日志服务配置文件 时间、主机、是由哪个程序或者服务发生的、事件信息 自定义日志服务 日…...

【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例

通过网盘分享的文件&#xff1a;CubeMoveMusic.unitypackage 链接: https://pan.baidu.com/s/1Rq-HH4H9qzVNtpQ84WXyUA?pwda7xn 提取码: a7xn 运行游戏点击空格动态创建拉伸的方块&#xff0c;由Speed控制速度&#xff0c;新方向是随机上下左右生成。 using System.Collect…...

AI智能日志分析系统

文章目录 1.combinations-intelligent-analysis-starter1.目录结构2.pom.xml3.自动配置1.IntelligentAnalysisAutoConfiguration.java2.spring.factories 2.combinations-intelligent-analysis-starter-demo1.目录结构2.pom.xml3.application.yml4.IntelligentAnalysisApplicat…...

试用ChatGPT开发一个大语言模型聊天App

参考官方文档&#xff0c;安装android studio https://developer.android.com/studio/install?hlzh-cn 参考这个添加permission权限&#xff1a; https://blog.csdn.net/qingye_love/article/details/14452863 参考下面链接完成Android Studio 给项目添加 gradle 依赖 ht…...

Unity Epplus读取excel表并存入So文件举例

目录 此篇需要你有一定的阅读代码的能力&#xff0c;不然点开了也不知道在做什么 这是读表工具 So文件这么写 使用 此篇需要你有一定的阅读代码的能力&#xff0c;不然点开了也不知道在做什么 在此之前你需要知道epplus是干什么的&#xff0c;然后知道其基本api&#xff0…...

连接 OpenAI 模型:基础操作

在这一部分中&#xff0c;我们将介绍如何连接 OpenAI 模型&#xff0c;设置 API 密钥&#xff0c;并使用 Spring AI 的 ChatClient 与 OpenAI 模型进行简单的对话。Spring AI 为集成 OpenAI 模型提供了方便的工具&#xff0c;使得开发者能够更轻松地与 GPT 系列模型进行交互。 …...

[ Spring ] Spring Cloud Alibaba Message Stream Binder for RocketMQ 2025

文章目录 IntroduceProject StructureDeclare Plugins and ModulesApply Plugins and Add DependenciesSender PropertiesSender ApplicationSender ControllerReceiver PropertiesReceiver ApplicationReceiver Message HandlerCongratulationsAutomatically Send Message By …...

ubuntu 更新24LTS中断导致“系统出错且无法恢复,请联系系统管理员”

22LTS to 24LTS 更新过程中手jian把更新程序controlC导致的。 解决 目前企图完成更新来恢复&#xff0c;重启后有软件包冲突&#xff0c;sudo apt upgrade报冲突。无法进行。 将原来source.list重新 sudo dpkg --configure -a sudo apt install -f 这些都不管用。还是显示gno…...

力扣-链表-203 移除链表元素

思路1 处理头节点&#xff0c;然后遍历下一个节点&#xff0c;只有确保下一个节点不是要移除的节点时再跳到下一个节点 代码1 class Solution { public:ListNode* removeElements(ListNode* head, int val) {while(head ! nullptr && head->val val){head head…...

Unity中关于实现 管道水流+瀑布流动+大肠蠕动效果笔记

Unity中关于实现 管道水流瀑布流动大肠蠕动效果笔记 效果展示&#xff1a; 参考资料及链接&#xff1a; 1、如何在 Unity 中创建水效果 - 水弯曲教程 https://www.youtube.com/watch?v3CcWus6d_B8 关于补充个人技能中&#xff1a;顶点噪波影响网格着色器配合粒子实现水特效 …...

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求&#xff1a; 将word中所有excel表格的格式进行统一化&#xff0c;修改其中的数字类型为“宋体&#xff0c; 五号&#xff0c;右对齐&#xff0c; 不加粗&#xff0c;不倾斜”&#xff0c;其中的中文为“宋体&#xff0c; 五号&#xff0c; 不加粗&#xff0c;不倾斜” 数…...

Linux——网络(udp)

文章目录 目录 文章目录 前言 一、upd函数及接口介绍 1. 创建套接字 - socket 函数 2. 绑定地址和端口 - bind 函数 3. 发送数据 - sendto 函数 4. 接收数据 - recvfrom 函数 5. 关闭套接字 - close 函数 二、代码示例 1.服务端 2.客户端 总结 前言 Linux——网络基础&#xf…...

Oracle-Java JDBC 连接超时之后的认知纠正

背景 偶然读到熊老师的文章《老熊的三分地-JDBC中语句超时与事务》了解到&#xff1a;JAVA代码的最后正常断开数据库连接&#xff0c;在默认情况下&#xff0c;正常断开的数据库连接会自动提交没有提交的事务。   通过文章的测试JAVA程序&#xff0c;可以表明&#xff0c;JDB…...

自定义数据集使用框架的线性回归方法对其进行拟合

代码 import torch import numpy as np import torch.nn as nncriterion nn.MSELoss()data np.array([[-0.5, 7.7],[1.8, 98.5],[0.9, 57.8],[0.4, 39.2],[-1.4, -15.7],[-1.4, -37.3],[-1.8, -49.1],[1.5, 75.6],[0.4, 34.0],[0.8, 62.3]])x_data data[:, 0] y_data data…...

15天基础内容-5

day13 【String类、StringBuilder类】 主要内容 String类常用方法【重点】 String类案例【重点】 StringBuilder类【重点】 StringBuilder类常用方法【重点&#xff1a; append】 StringBuilder类案例【理解】 第一章String类 1.1 String类的判断方法 String类实现判断功能…...

82,【6】BUUCTF WEB .[CISCN2019 华东南赛区]Double Secret

进入靶场 提到了secret&#xff0c;那就访问 既然这样&#xff0c;那就传参看能不能报错 这个页面证明是有用的 传参长一点就会报错&#xff0c;传什么内容无所谓 所以网站是flask框架写的 有一个颜色深一点&#xff0c;点开看看 rc4加密url编码 import base64 from urllib…...

Android WebView 中网页被劫持的原因及解决方案

文章目录 一、原因分析二、解决方案一览三、解决方案代码案例3.1 使用 HTTPS3.2 验证 URL3.3 禁用 JavaScript3.4 使用安全的 WebView 设置3.5 监控网络请求3.6 使用安全的 DNS 四、案例深入分析4.1 问题4.2 分析 五、结论 在 Android 应用开发中&#xff0c;WebView 是一个常用…...

特朗普政府将开展新网络攻击

近日&#xff0c;特朗普政府已表态&#xff1a;减少物理战争&#xff0c;网络战将代替&#xff0c;以实现美国的全球优势。 特朗普也指示美国网络司令部可以在没有总统批准的情况下开展更广泛行动&#xff0c;尤其是应对一些突发事件&#xff0c;这其实成为了后续美国通过网络…...

快递代取项目Uniapp+若依后端管理

快递接单代取得uniappspringboot项目 实际效果图...

arcgis短整型变为长整型的处理方式

1.用QGIS的重构字段工具进行修改&#xff0c;亲测比arcgis的更改字段工具有用 2.更换低版本的arcgis10.2.2&#xff0c;亲测10.5和10.6都有这个毛病&#xff0c;虽然官方文档里面说的是10.6.1及以上 Arcgis10.2.2百度链接&#xff1a;https://pan.baidu.com/s/1HYTwgnBJsBug…...

06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等

Redis相关概念&#xff1a;缓存击穿、雪崩、穿透、预热、降级、一致性等 Redis缓存雪崩、缓存击穿、缓存预热热点key、缓存降级、短链接、分布式锁秒杀、预减库存、 堆外缓存Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜等一、缓存雪崩 缓…...

嵌入式基础 -- PCIe 控制器中断管理之MSI与MSI-X简介

PCIe 控制器中断管理技术文档 1. 背景 在现代计算机系统中&#xff0c;中断是设备与 CPU 通信的重要机制&#xff0c;PCIe 控制器提供了从传统线中断到基于消息的中断&#xff08;MSI/MSI-X&#xff09;的演进&#xff0c;以提升中断处理效率和可扩展性。x86 和 ARM 架构虽然…...

websocket实现

由于安卓资源管理器展示的路径不尽相同,各种软件保存文件的位置也不一定一样.对于普通用户上传文件时,查找文件可能是一个麻烦的事情.后来想到了一个办法,使用pc端进行辅助上传. 文章目录 实现思路1.0 实现定义web与客户端通信数据类型和数据格式web端websocket实现web端对客户…...

unity学习20:time相关基础 Time.time 和 Time.deltaTime

目录 1 unity里的几种基本时间 1.1 time 相关测试脚本 1.2 游戏开始到现在所用的时间 Time.time 1.3 时间缩放值 Time.timeScale 1.4 固定时间间隔 Time.fixedDeltaTime 1.5 两次响应时间之间的间隔&#xff1a;Time.deltaTime 1.6 对应测试代码 1.7 需要关注的2个基本…...

【C++】特殊类设计、单例模式与类型转换

目录 一、设计一个类不能被拷贝 &#xff08;一&#xff09;C98 &#xff08;二&#xff09;C11 二、设计一个类只能在堆上创建对象 &#xff08;一&#xff09;将构造函数私有化&#xff0c;对外提供接口 &#xff08;二&#xff09;将析构函数私有化 三、设计一个类只…...