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

Sentinel-1 Level 1数据处理的详细算法定义(三)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。

今天介绍的内容如下:

Sentinel-1 Level 1数据处理的详细算法定义(三)

  • 4. 预处理算法
        • 4.2.1.5 接收增益偏移
        • 4.2.1.6 仪器漂移推导
          • 4.2.1.6.1 基于PG产品的漂移补偿
          • 4.2.1.6.2 基于PG产品模型的漂移补偿
        • 4.2.1.7 图像复制品系数生成
          • 4.2.1.7.1 振幅系数
          • 4.2.1.7.2 相位系数
        • 4.2.1.8 PG产品验证
        • 4.2.1.9 噪声测量处理
      • 4.2.2 算法实现
      • 4.3 下行链路头验证

4. 预处理算法

4.2.1.5 接收增益偏移

PG校准脉冲是使用模式中第一个子条带的啁啾参数和增益设置生成的。在将仪器漂移校正应用于数据时,必须考虑第一个子条带与随后每个子条带之间的增益偏移。为此,每个子条带n的平均接收增益功率是按照以下方式根据图像校准数据计算的:

4.2.1.6 仪器漂移推导

IPF应执行仪器相位和增益漂移校正。实现此校正有两种选项:

  • 基于PG产品的漂移校正
  • 基于PG产品模型的漂移校正
4.2.1.6.1 基于PG产品的漂移补偿

内部校准的目标之一是测量发射功率和接收增益的乘积,这也被称为PG产品。PG产品计算的详细描述可以在[R-13]中找到。

PG产品可以从复制品中导出,而复制品又可以从校准数据包中导出,如第4.2.1.3节所述,因此,在单次数据采集中将有特定数量的PG产品可用。

然后,将对可用的PG产品进行插值,以获得每个接收到的信号回波的复杂校正因子。PG增益的补偿在原始数据校正之后、任何其他处理步骤之前,逐个回波执行,如第9.4节所述。

算法的第一步是使用第4.2.1.3节中描述的重建复制品,并利用提取的第一个有效复制品进行压缩。

对应于校准数据包m的子条带n的PG校正因子,然后可以通过将参考PG与压缩复制品峰值相除,并应用当前子条带的接收增益功率比来计算:

其中:
PGref是一个参考的绝对PG值,它将通过获取数据的离线分析来定义。注意:共极化情况下的PGref将与交叉极化情况下的PGref不同。这两个PGref都将存储在辅助文件中。

是压缩复制品的最大值(峰值)。

请注意,为了准确确定压缩复制品的最大值,结果首先通过FFT在更细的采样间隔进行重采样。这个操作与第4.2.1.4节步骤2中描述的复制品提取操作相同。其他极化的漂移系数以类似的方式计算。

每个漂移系数的时间戳被定义为位于相应的校准序列m的中心。这组漂移系数代表了一组有时间戳的PG值,这些值将按照第9.4节中的描述,稍后通过线性插值并应用于每个回波源数据包。

4.2.1.6.2 基于PG产品模型的漂移补偿

仪器的相位/增益漂移应不断监控,并且在Sentinel-1的整个生命周期中应提供长期稳定性分析。如果漂移呈现出预期的缓慢且可预测的时间变化,那么可以定义一个适当的漂移模型,并作为一个PG产品模型提供,这是一个可配置的输入查找表(LUT)。PG产品模型的使用由一个可配置的输入参数getDriftFromPGmodel控制。

4.2.1.7 图像复制品系数生成

提取的图像复制品通常含有噪声,在使用提取的图像复制品进行距离压缩之前,应该进行去噪处理。去噪可以通过拟合提取复制品的幅度和相位的多项式系数来完成。在本节中,我们提出了一种算法来计算提取复制品的多项式系数。

提出的算法所涉及的主要步骤在图4-2中表示。

请注意,该算法是独立于每个极化通道执行的,因此在后续章节中,脉冲表示中将省略极化符号。

4.2.1.7.1 振幅系数

复制品振幅的向量定义为:

如图4-2左侧流程图所示,执行以下操作,并涉及以下步骤:

  1. 计算复制品的振幅。

  2. 振幅向量通过多项式函数

进行拟合,该函数在相同的网格上采样。多项式的阶数是一个可配置的输入参数。
在生成范围参考函数(RRF)时,振幅会被反转,以便经过距离压缩后的输出将具有平坦的频谱。反转后的振幅函数可以表示为:

4.2.1.7.2 相位系数

计算复制品相位系数的步骤在图4-2的右侧流程图中展示。
1.通过将复制品与标称啁啾的共轭相乘,计算标称啁啾和提取复制品之间的相位差:

注意:提取的复制品已经与标称啁啾在时间上对齐,如第4.2.1.4节所述。

2.按照第5.3节中描述的FFT方法,对相位差进行展开。

3.对展开后的相位拟合多项式。多项式的阶数是一个可配置的输入参数。

4.将展开后的相位多项式系数与标称系数结合,以获得提取的复制品相位系数。

4.2.1.8 PG产品验证

对PG产品执行两种类型的验证(每种通道独立执行验证;因此将省略极化索引):

  • 相对验证。这种验证包括确定PG产品值是否在所有PG产品值的平均值的给定阈值内。

为此,计算PG产品幅度和相位的平均值

以及标准偏差

如果PG产品值Pm 满足以下条件,则被视为无效:

其中pgAmpStdFraction和pStdFraseStdFraction是可配置的输入参数。

  • 绝对验证。这种验证包括确定PG产品值是否在PG产品模型对应值的给定阈值内。然后,如果PG产品值 Pm 满足以下条件,则被视为无效:

其中Pmodm 是PG产品模型的值,而maxPgAmpError和maxPgPhaseError 是可配置的输入参数。

如果无效PG产品的比例不超过由可配置输入参数invalidPgMaxFraction给定的某个阈值,那么无效的PG值将被丢弃(只有有效值将被用于对数据的线性插值和应用)。否则,所有计算出的PG产品值将被丢弃,并替换为相应的PG产品模型值。

请注意,在PG验证期间不考虑当前子条带的接收增益功率比。

请注意,相对验证要求所有IPF实例对所有数据包执行PG产品计算。

4.2.1.9 噪声测量处理

在每次数据采集期间,作为初始和最终内部校准数据包的一部分,会获取噪声测量数据。这些测量是通过在噪声测量前关闭TX信号足够数量的TX脉冲来记录的。每个子条带的噪声测量是分开记录的。

噪声水平是通过计算每个子条带可用噪声数据包的平均功率来计算的。噪声水平将用于确定输出图像的噪声轮廓,如第9.17节所述。

通常的噪声数据包将被指示为一个复数样本数组:

噪声数据的处理如下:

  1. 按照第9.2.1节的描述应用I/Q偏置校正。
  2. 如第9.24.1节所述执行来自噪声测量的射频干扰(RFI)检测。
  3. 按照第9.2.2节的描述应用杂散信号校正。
  4. 按照第9.2.3节的描述应用接收机增益补偿。
  5. 计算平均功率如下:

对于噪声数据,可能有不同的编码选项(见第9.1.2节)。

在IPF 2.9.0之前,噪声功率信息完全依赖于在前导码和后导码中进行的噪声测量。为了解释数据采集期间的噪声水平变化,这可能会持续几分钟,执行了初始值和最终值之间的线性插值。

对噪声功率估计的长期分析显示了双峰分布。实际上,地球表面向太空辐射的能量被仪器记录下来,它增加了噪声测量的功率。双峰分布是由于陆地上辐射的能量高于海洋上。由于测量的噪声功率取决于仪器下面的景象,因此基于每个TopSAR突发的首次回波,制定了一种新的去噪策略。这些回波,称为“等级回波”,是在每个突发的第一个传输脉冲的传播时间内记录的,因此可以视为等同于噪声脉冲。自IPF 2.9.0以来,使用“等级回波”估计噪声功率可以以现实的方式跟踪噪声波动。

不幸的是,并非所有的等级回波都可以用来估计噪声,因为其中一些受到前导码中的稳定脉冲和TxCal/TxHCalIso脉冲的影响。根据当前的Sentinel-1时间线,处理器中实施了以下规则来选择有效的等级回波:

等级回波在以下条件下必须被丢弃:

  1. 如果采集模式既不是IW也不是EW,则始终丢弃;
  2. 如果采集模式是EW:
    • 如果等级回波属于数据采集的第一个突发;
    • 如果等级回波是EW1序列中的最后一个回波(可能存在法线回波);
    • 如果等级回波是EW2的一部分;
  3. 如果采集模式是IW:
    • 如果等级回波属于数据采集的第一个突发;
    • 如果等级回波属于奇数编号的突发(从数据采集开始计数)。

在使用噪声功率估计来生成噪声向量(如第9.17节所述)之前,会执行一个验证步骤:比较连续噪声估计之间的差异与一个阈值,如果超出阈值,则丢弃噪声测量。数据采集的第一个和最后一个测量值(依赖于前导码和后导码)始终被接受。

4.2.2 算法实现

本节介绍了内部校准的算法步骤。请注意,为了简洁起见,这里只指定了HH通道的情况,如果其他通道以相同的方式处理:

  1. 处理PG校准数据:
    • 根据第4.2.1.1.2节中描述的方法,从下行链路啁啾参数生成标称PG啁啾。这个标称啁啾将用于复制品提取、时间延迟估计和PG产品计算。
    • 对于每个PG校准序列m,执行以下操作:
    • 根据第4.2.1.2节的描述,提取重建复制品所需的校准脉冲。
    • 按照第4.2.1.3节的描述,重建PG复制品。
    • 按照第4.2.1.4节的描述,提取复制品并估计内部时间延迟,并报告结果。
    • 按照第4.2.1.6.1节的描述,计算PG产品。
    • 计算估计的内部时间延迟的平均值,并将其传递给SLC处理器,以便在RRF生成期间对啁啾进行时间偏移。
    • 按照第4.2.1.8节的描述,计算PG产品值的平均值和标准偏差。
  • 对于每个PG校准序列m,验证PG产品并报告结果,如第4.2.1.8节所述。这意味着,如果以下任一条件失败,则将isPgProductValid(m)设置为FALSE:
    相对验证失败
    绝对验证失败
  • 计算无效PG产品值的百分比(占总校准序列数的比例)。
  • 确定用于漂移补偿的PG产品来源:
    如果无效PG产品值的百分比超过invalidPgMaxFraction或者getDriftFromPGmodel=TRUE ,使用PG产品模型进行漂移补偿。 模型如下:

其中m=0,1,…M-1
否则
从复制品(第5步)动态派生的PG产品设置漂移补偿

其中m=0,1,…M-1
注意:只有当isPgProductValid(m)=TRUE时,其值才会线性插值并用于漂移补偿。
结束
2. 处理图像校准数据:

  • 根据第4.2.1.1.1节中描述的方法,从提供的系数生成标称图像啁啾。这个标称啁啾将用于复制品提取和复制品系数生成。
  • 对于每个校准数据包m,执行以下操作:
  • 根据第4.2.1.1节的描述,提取重建复制品所需的校准脉冲。
  • 按照第4.2.1.3节的描述,重建图像复制品。
  • 按照第4.2.1.4节的描述,提取复制品并移动复制品。
  • 按照第4.2.1.5节的描述,计算接收增益功率偏移。
  • 设置复制品系数:
    • 如果RRF将使用提取的复制品生成,则按照第4.2.1.7节的描述,从第一个提取的复制品估计复制品系数,并将复制品系数传递给SLC处理器;否则,
    • 如果RRF将使用标称啁啾生成,则将标称啁啾系数传递给SLC处理器。
  • 提取复数增益:
    • 如果RRF将使用标称啁啾生成,则从配置文件中提取标称啁啾的通道间复数增益;否则,
    • 如果RRF将使用提取的啁啾生成,则从配置文件中提取提取的复制品的通道间复数增益,并将其实传递给SLC处理器。
  1. 执行第4.2.1.9节中描述的噪声水平估计。该结果稍后将用于推导噪声向量,如第9.17节所述。

请注意,在切片情况下,每个IPF实例将执行相同的计算,以确定整个段的唯一参考复制品和PG产品值。

4.3 下行链路头验证

IPF的Sentinel-1预处理组件将验证下行链路内的字段。此验证的目的是:

  • 确定后期处理阶段所需的下行链路字段值;
  • 验证单个字段值是否正确,是否受到比特错误的影响;
  • 检测缺失的行和间隙;
  • 检查下行链路的传输模式是否遵循Sentinel-1 IPF预期的模式,例如子条带的顺序、突发的长度以及回波与校准与噪声数据包的序列。

通常,将采用两种验证策略:

  1. 大多数投票,预期在整个数据采集、子条带或脉冲类型中具有恒定值的字段会在一组数据包中进行监控,大多数时间使用的值被视为正确值。然后使用这个多数值来检查整个数据采集过程中该字段的错误。

    在某些情况下(例如SWST字段),这个值在一段时间内是恒定的,但在某个点会切换到一个新值。在这种情况下,使用大多数投票来区分比特错误和值的真实变化。

  2. 时间线一致性检查,利用对预期数据包序列和时间线内不同字段相对变化方式的基本理解。例如,可以相互交叉检查计数字段和数据包类型字段,以确定它们是否符合预期的时间线。

Sentinel-1 IPF将对每个字段执行的验证的初步描述列在表4-1中。这些Sentinel-1下行链路字段在[A-6]中描述。此表包含以下信息:

  • 每个字段的名称和层次结构;
  • 字段值是否在轨道周围(在特定模式/子条带内)恒定;
  • 字段值是否在一次数据采集内恒定;
  • 字段值是否在子条带内(对于特定的数据采集/模式)恒定;
  • 字段值是否对于特定数据包类型(无论是回波、噪声还是校准)恒定;
  • 是否需要来自雷达数据库的额外信息以解释该字段(例如,为了使用仰角波束地址,还必须向IPF提供雷达数据库中的仰角波束模式);
  • 是否需要查找表或转换法则来解释字段值(例如,下行链路中的BAQ模式代码需要使用查找表进行翻译);
  • 要应用于每个字段的验证策略。

Table 4-1 Sentinel-1 IPF Downlink Header Validation可自行查看原始文档。

相关文章:

Sentinel-1 Level 1数据处理的详细算法定义(三)

《Sentinel-1 Level 1数据处理的详细算法定义》文档定义和描述了Sentinel-1实现的Level 1处理算法和方程,以便生成Level 1产品。这些算法适用于Sentinel-1的Stripmap、Interferometric Wide-swath (IW)、Extra-wide-swath (EW)和Wave模式。 今天介绍的内容如下&…...

一款永久免费的内网穿透工具——巴比达

近期,一款名为巴比达的内网穿透工具凭借其永久免费的特性,以及卓越的性能与安全性,引起了我的关注。本文将深入探讨巴比达如何通过其独创的技术方案,达到企业级数据通信要求。 WanGooe Tunnel协议 首先,巴比达的核心竞…...

翻译|解开LLMs的神秘面纱:他们怎么能做没有受过训练的事情?

大语言模型(LLMs)通过将深度学习技术与强大的计算资源结合起来,正在彻底改变我们与软件互动的方式。 虽然这项技术令人兴奋,但许多人也担忧LLMs可能生成虚假的、过时的或有问题的信息,他们有时甚至会产生令人信服的幻…...

代码随想录-DAY⑦-字符串——leetcode 344 | 541 | 151

344 思路 没啥好说的&#xff0c; 双指针头尾交换&#xff0c; 相遇结束。 时间复杂度&#xff1a;O(n) 空间复杂度&#xff1a;O(1) 代码 class Solution { public:void reverseString(vector<char>& s) {int left0, rights.size()-1;while(left<right){swa…...

JavaScript(7)——数组

JavaScript中数组的用法与Java差不多&#xff0c;但还是有一些区别 声明数组 语法: let 数组名 [数据1,数据2,数据...] let arr new Array(数据1,数据2,...数据n) 添加数据 数组.push()方法将一个或多个元素添加到数组末尾&#xff0c;并返回该数组新长度 <script>…...

Spark RDD优化

Spark RDD优化 一、分区优化二、持久化优化三、依赖优化四、共享变量优化五、提交模式与运行模式优化六、其他优化 一、分区优化 分区数调整&#xff1a;RDD的分区数可以通过repartition和coalesce方法进行调整。合理的分区数可以提高并行度&#xff0c;但过多的分区会增加管…...

idea:解决Maven报错 Properties in parent definition are prohibited

在父pom文件中定义了 <dhversion>1.0-SNAPSHOT</dhversion> 在子模块中引用 <parent><groupId>com.douhuang</groupId><artifactId>douhuang-springcloud</artifactId><version>${dhversion}</version> </parent&…...

代理IP池:解析与应用

代理IP大家都了解不少了&#xff0c;代理IP池又是什么呢&#xff1f;下面简单介绍一下吧&#xff01; 1. 概述 代理IP池就是由多个代理IP地址组成的集合&#xff0c;用于实现更高效的网络访问和数据获取。这些IP地址通常来自不同的地理位置和网络提供商&#xff0c;经过动态管…...

MQTT是什么,物联网

写文思路&#xff1a; 以下从几个方面介绍MQTT&#xff0c;包括&#xff1a;MQTT是什么&#xff0c;MQTT和webSocket的结合&#xff0c;以及使用场景&#xff0c; 一、MQTT是什么 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息…...

分布式训练

一、分布式计算 跟多GPU不同是&#xff1a;数据不是从主存拿的&#xff0c;是在分布式文件系统拿的&#xff0c;有多个工作站&#xff0c;工作站中有多个GPU&#xff0c;通过网络读取数据到GPU中&#xff0c;GPU通过网络接收到来自参数服务器的参数进行运算计算梯度&#xff0c…...

day10:04一文搞懂decode和decoding的区别

在Python 3中&#xff0c;decode()方法和decoding概念同样与字符串的编码和解码紧密相关&#xff0c;但它们的应用场景和上下文有所不同。下面通过案例来解释它们的关系和区别。 1. decode() 方法 decode()方法是字节串&#xff08;bytes&#xff09;类型的一个方法&#xff…...

MechMind结构光相机 采图SDK python调用

测试效果 Mech-Mind结构光相机 Mech Mind(梅卡曼德)的结构光相机,特别是Mech-Eye系列,是工业级的高精度3D相机,广泛应用于工业自动化、机器人导航、质量检测等多个领域。以下是对Mech Mind结构光相机的详细解析: 一、产品概述 Mech Mind的结构光相机,如Mech-Eye PRO,…...

“学习Pandas中时间序列的基本操作“

目录 # 开篇 1. 创建和操作时间序列对象 2. 时间序列数据的读取和存储 3. 时间序列数据的索引和切片 4. 时间序列数据的操作和转换 5. 时间序列数据的可视化 6. 处理时间序列中的缺失值 7. 时间序列数据的聚合和分组 8. 时间序列的时间区间和偏移量操作 示例代码&…...

常用知识碎片 分页组件的使用(arco-design组件库)

目录 分页组件使用 API 组件代码示例 使用思路&#xff1a; 前端示例代码 html script 后端示例代码 Controller Impl xml 总结 分页组件使用 使用Arco Design之前需要配置好搭建前端环境可以看我另外一篇文章&#xff1a; 手把手教你 创建Vue项目并引入Arco Desi…...

WPF 制作一个文字漂浮提示框

WPF好像没有自带的文字提示漂浮&#xff0c;我们可以定制一个。 效果如下&#xff1a; xaml xaml如下&#xff1a; <Window x:Class"GroupServer.MsgTip"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sc…...

Node.js_fs模块

文件删除 文件重命名和移动&#xff08;本质都是修改路径&#xff09; 文件夹操作 创建文件夹(mkdir) 读取文件夹(readdir) &#xff08;打印出来是该文件夹下名称的数组形式&#xff09; 读取当前的文件夹(readdir) 删除文件夹 &#xff08;rmdir&#xff09; 查看资源状态…...

使用 Vue 3 实现打字机效果

在现代前端开发中&#xff0c;添加一些视觉效果可以提升用户体验。其中&#xff0c;打字机效果是一种常见且吸引人的效果&#xff0c;可以用于展示动态文本。本文将介绍如何在 Vue 3 中实现打字机效果。 实现步骤 1. 创建自定义指令 我们首先创建一个自定义指令 v-typewriter…...

unordered_map和set

前言&#xff1a;本篇文章继续分享新的容器unordered_map和set。前边我们分享过map和set&#xff0c;其底层为红黑树&#xff0c;而unordered_map和set的底层则为哈希表&#xff0c;因此在unordered_map和set的实现中&#xff0c;我们可以效仿许多在map和set的中就分享过的一些…...

java:运用字节缓冲输入流将文件中的数据写到集合中

代码主要是将文本文件中的数据写到集合中&#xff0c;运用到的是java字节缓冲输入流的知识点。 public static void main(String[] args) throws IOException {//创建字符缓冲流输入对象BufferedReader bufferedReader new BufferedReader(new FileReader("student.txt&q…...

【机器学习】支持向量机与主成分分析在机器学习中的应用

文章目录 一、支持向量机概述什么是支持向量机&#xff1f;超平面和支持向量大边距直觉 二、数据预处理与可视化数据集的基本信息导入必要的库加载数据集数据概况数据可视化特征对的散点图矩阵类别分布条形图平均面积与平均光滑度的散点图变量之间的相关性热图 三、模型训练&am…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...