人类活动识别系统综述_人类活动识别输入-程序员宅基地

技术标签: 活动识别论文阅读笔记  深度学习  人工智能  

人类活动识别系统综述

1. 两大主流的人类活动识别系统:
  • 基于视频的系统
  • 基于传感器的系统——利用身体上(手机、手表)或环境(汽车、墙壁、家居)传感器来估算人们的运动细节和记录他们的活动轨迹
2. 挑战
特征提取
  • 不同的活动可能有相似的特点(如步行和跑步)。因此,很难产生可区分的特征来唯一地表示活动。
注释稀缺
  • 感官活动数据的采集和注释是一项费时、费钱的工作
类不平衡
  • 分类问题中数据集的类别数量不一致
分布差异
  • 用户差异性
  • 时间差异性
  • 传感器差异性
复合行为(Composite Activities)
  • 记录人类日常活动更有意义的方式是由一系列简单行为组成的复合行为。
  • 由于复合行为不仅仅需要识别人体活动,还需要识别周遭环境的信息,因此比识别简单行为更有挑战性。
数据分割(Date Segmentation)
并行行为(Concurrent activities)
  • 用户同时参与多个行动
多人行为(Mutil-occupant Activity)
运算成本(Computation Cost)
隐私性(Privacy)
深度学习对于传感器数据的可解释性 (Interpretability)
  • 人类行为的传感器数据是不可读的。
3. 深度学习在人类活动识别领域的应用
  • CNN
  • RNN
    • 适合于人类活动识别中的流感知数据。
4. 主要贡献
  • 迁移学习?
  • 多模态融合
  • 对基于传感器的人类活动识别的深度学习方法进行了全面的调查。
  • 挑战-方法-分析
  • 此外,我们提供了有关可用公共数据集及其潜在扩展的信息,以评估具体挑战。
  • 我们讨论了该领域的一些悬而未决的问题,并指出了未来可能的研究方向。
5. 传感器模态和数据集
传感器模态
  • 可穿戴传感器、环境传感器、物体传感器、其他传感器
数据
  • 图标中显示
6. 挑战和技术
6.1 特征提取(Feature Extraction)—— 参考Table2
原因
  • 人类活动范围广、方式多样
方法
  • 有监督——端到端训练——
  • 半监督
  • 无监督
  • 时间特征提取

    • 手工特征:均值和方差——缺乏可扩展性

    • 新方法:时频图像

    • 端到端学习

      • RNN

        • 传统RNN

          • 存在梯度消失、梯度爆炸问题
          • 需要滑动窗口来分割流数据
        • 改进:LSTM

        • Bi-LSTM ——双向LSTM

        • 集成多个深度LSTM网络

        • 利用门控循环单元(GRUs)代替LSTM细胞构建RNN

        • 一些研究表明,其他类型的RNN细胞在分类精度[45]方面不能提供明显优于传统LSTM细胞的性能。然而,由于gru的计算效率,它更适合计算资源有限的移动设备。

      • CNN

        • 传统CNN
          • 不需要滑动窗口
          • 小卷积核可以捕获局部的时间依赖性
          • 多个传感器——多元时间序列——单独应用一维卷积
          • 一维CNN
            • 问题1:固定的核大小——只能发现固定时间范围内的信号波动
          • 改进1:采用多个不同核大小——获得不定时间尺度下的时间特征
          • 问题2: 多核CNN结构将消耗更多的计算资源,纯CNN所能探索的时间尺度也不够; 需要大的时间尺度,则通常在两个CNN层之间使用池操作,这将导致信息丢失。
          • 改进2: 空洞CNN (Dilated CNN 空洞卷积)—— 尽量保留内部数据结构和避免下采样( 从多数集中选出一部分数据与少数集重新组合成一个新的数据集 ),就是增大感受野的情况下保留更多信息,代替pooling
          • **问题3:**常用的CNN以相同的方式处理不同的模态
          • 改进3: 提出具有针对不同模式的特定1D CNN,用于学习模式特定的时间特征。
          • 其他变体(优于传统CNN): 利用门控CNN从音频信号中进行日常活动识别 、 采用残块构建了处理不同时间尺度的双流CNN结构
      • 深度混合模型

        • 将CNN和LSTMs结合起来进行局部和全局时间特征提取。
        • Inception CNN
        • dual-stream ConvLSTM(双流)
        • 提出了一种不同类型的循环单元(sru和gru)的混合模型,用于处理不同方面的时间信息。
  • 多模态特征提取

    • 多种传感方式的组合可以获得比单一传感器更好的结果。
    • 模态融合
      • 特征融合: 将不同的模式结合起来,产生单个特征向量进行分类 (四类)
        • 早期融合(Early Fusion ): 一开始就融合了所有来源的数据,而不考虑传感模式
          • 有丢失详细关联的风险
          • 计算x, y, z的欧氏范数,将原始的x, y, z加速度数据转换为一个幅度向量。
          • 将不同模态的时间序列信号水平堆叠到单个1D向量中
          • 将所有信号序列垂直堆叠,形成一个2D矩阵
          • 3D
          • 问题1: 传统的CNN局限于探索相邻排列模态之间的相关性,从而忽略了非相邻排列模态之间的关系。
          • 改进1: Dilated convolution
        • 基于传感器的融合(Sensor-based Fusion ): 单独考虑每个模态,然后融合不同的模态
          • a fully connected deep neural network (DNN)—— 全连接深度神经网络
          • 将传感器的所有轴垂直堆叠形成二维矩阵,并为每个二维矩阵设计单独的cnn来学习模态内关系。然后将不同传感器的特定传感器特征压平并堆叠成一个新的二维矩阵,然后将其输入合并CNN,进一步提取不同传感器之间的相互作用。
          • 调节每个传感器的贡献水平 (设置置信度计算层)
        • 基于轴的融合(Axis-based Fusion ): 分别处理每个传感器轴来更详细地处理信号源。这样就消除了不同传感器轴之间的干扰。
          • 一种常用的AF策略是为每个感知通道的每个单变量时间序列设计特定的神经网络(一维CNN);最后将来自各个渠道的信息表示进行串联,输入到最终的分类网络中
        • 共享滤波器融合(Shared-filter Fusion): 与AF方法一样,该方法对传感器轴的单变量时间序列数据进行独立处理。 过滤器受到所有输入成员的影响
          • 相当于将相同的一维cnn应用于不同的单变量时间序列
      • 分类器集成: 只对一种模态的特征进行操作的分类器的输出被混合在一起
        • 混合来自每个模态的识别结果来完成多模态的集成
        • 优点:附加传感器的可伸缩性 自由适应硬件变化
        • 缺点:融合阶段晚,可能会低估模态间的相关性
  • 统计特征提取

    • 基于特征工程的方法,能够提取有意义的特征
    • 缺点:手工设计这类特性通常需要领域知识
    • Distribution-Embedded Deep Neural Network (DDNN)—— 分布嵌入深度神经网络
    • 将统计特征与空间和时间信息集成到一个端到端深度学习框架中,用于活动识别。
    • 优点:良好的可解释性
6.2 注释稀缺(Annotation Scarcity)
挑战
  • 注释过程昂贵、耗时且非常繁琐
  • 标签容易受到各种噪声源的影响, 注释过程容易出错
解决
  • 考虑半监督和无监督的深度学习方法, 以减少对大量标注数据的依赖。
  • 深度生成模型包括深度信念网络(Deep Belief Networks (DBNs))和自动编码器已经成为无监督学习的主导。
  • 识别过程(两部分)
    • 1 将输入数据输入特征提取器(通常是深度生成模型),进行特征提取的预训练。
    • 2 添加顶层或其他分类器,然后以监督的方式使用标记数据进行训练,以进行分类
  • 方法
    • 自编码器代替PCA 进行无监督特征学习
    • 自编码器的变体 将自动特征学习和降维结合到一个集成神经网络中进行活动识别

尽管深度生成模型在无监督学习中成功地用于人类活动识别,但无监督学习仍然不能独立地承担活动识别任务,因为在没有任何标记样本呈现基本真相的情况下,无监督学习无法识别活动的真实标签。因此,上述方法可以看作是半监督学习,即利用标记数据和非标记数据来训练神经网络。

  • 方法: Co-training、Active Learning、数据增强(Data augmentation )
  • Co-training

    • 使用多个分类器,每个分类器使用训练数据的一个单独view进行训练。同样,分类器通过置信度评分或多数投票选择未标记的样本添加到标记集。
    • 随着训练集的增强,分类器也得到了增强。
    • 多个模态可以被视为多个view
  • Active Learning

    • 主动学习的目标是为注释器选择信息最丰富的未标记实例进行标记,并使用这些数据改进分类器,这样就不需要多少人的监督。
    • 分类器、注释器、查新策略(多样性、不确定性)
    • 将主动学习和深度学习相结合
      • 问题1: 异常值很容易被误认为重要样本。 ——联合损失函数
      • 问题2:如何减少注释者的工作
  • Data augmentation
    • 综合数据的数据增强是指用少量的真实数据生成大量的假数据,使假数据便于训练模型。
    • 工具——生成对抗网络——GAN
    • GAN:生成器(创建合成数据)、判别器(评估真实性)
    • SensoryGANs—— 针对三种活动使用了三种活动特异性GANs
    • 半监督GAN的判别器进行K+1分类(活动分类 虚假数据识别)
6.3 类不平衡(Class Imbalance)
  • 当使用不平衡数据集时,传统模型倾向于预测训练样本数量最多的类,而忽略训练样本数量较少的类。
  • 方法(两类)
    • Data Level :
      • 对样本数量最大的类重新采样。
      • 将新样本增加到样本数量较少的类中 : Gaussian noises perturbation / interpolation
    • Algorithmic Level. 修改模型构建策略
      • F1-score (同时考虑召回率和准确率)作为损失函数解决不平衡问题
      • 逐步标记未标记样本的过程可能会在不同的类之间产生不均匀的新标签数量。 (半监督)
6.4 分布差异(Distribution Discrepancy)
  • 训练数据和测试数据在活动识别中存在分布差异

    • 用户之间的差异
    • 时间有关的差异
    • 传感器差异( 实例、类型、位置和环境中的布局。 )
    • 用户和时间之间的差异属于同质差异,而与传感器实例数量、传感器类型和传感器布局的差异是异质差异
    • 同质差异(homogeneous discrepancy——齐次差异): 训练数据和测试数据具有相同的属性和相同的特征空间
    • 异质差异(heterogeneous discrepancy ): 训练数据和测试数据的特征空间可能在维度或属性上有所不同
  • 迁移学习(解决分布差异)

    • 将学习模型的分类能力从一个预定义设置转移到一个动态设置
  • 6.4.1 Distribution Discrepancy with Users

    • 相同的活动不同的人可能会有不同的表现。
    • 训练数据和测试数据之间的分布差异成为人类活动识别的一个挑战,模型的性能在不同用户之间急剧下降
    • Learning Hidden Unit Contributions
    • GAN
    • 活动识别和用户识别与多任务模型相结合
      • 该方法在活动模块和用户模块之间共享参数,从而利用从用户识别模块学习到的特征来提高活动识别性能。为了在两个模块之间传递重要的知识,部署了一个相互注意的机制。
  • 6.4.2 Distribution Discrepancy with Time

    • 流传感器数据会随着时间而变化 (三个问题)
      • concept drift problem(概念漂移): 数据流中的潜在数据分布随时间发生不可预测的变化,使原有的分类器分类不准确或决策系统无法正确决策
        • 为了适应这种漂移,深度学习模型应该结合增量训练,从新数据中不断学习人类活动的新概念。
        • 模型:an ensemble classifier termed multi-column bi-directional LSTM ( 多列双向LSTM的集成分类器 )
        • 增量学习—— 不断地处理现实世界中连续的信息流,在吸收新知识的同时保留甚至整合、优化旧知识的能力
        • 主动学习(特殊的增量学习)
      • the concept evolution problem
        • 概念演化是指流数据中出现的新活动。
        • 方法:
          • 活动分解
      • the open-set problem
        • 只需要识别测试样本是否属于目标活动,而不是准确识别活动。
        • 用GAN生成假样本来构造负集,GAN的鉴别器可以无缝地用作开集分类器。
  • 6.4.3 Distribution Discrepancy with Sensors

    • 由于传感器的灵敏度,传感器的微小变化可能导致传感器收集或传输的数据发生重大变化。传感器的影响因素包括环境中的实例、类型、位置和布局
    • Sensor Instances. 实例
      • 即使在相同的设置下收集数据,只是传感器实例不同,例如,一个人用新的智能手机替换了他的智能手机,识别精度仍然很快下降。硬件和软件都有责任。
      • 使用GANs进行数据增强
    • Sensor Types and Positions. 类型和位置
      • 带来的问题:
        • 1 需要来自新传感器或新位置的大量数据,这样才能相当完整地估计新的分布。
        • 2 现有的大部分工作仍然是用相同的特征来描述旧数据和新数据,这在传感器类型和位置不固定的情况下是不切实际的。
    • Sensor Layouts and Environments. 布局和环境
      • 传感器布局是关于非设备传感器,如WiFi和RFID。
      • 问题:
        • 如何在野外配置传感器时获得同样精确的识别性能
        • 方法: 将对抗网络与深度特征提取模型相结合,去除与环境相关的信息,提取与环境无关的特征
          • One-fits-all is a new direction for researchers to mitigate the distribution discrepancy problem in activity recognition.
          • Body-coordinate Velocity Profile (BVP)
6.5 复合行为(Composite Activities)
  • 在大多数实际的人机交互场景中,识别更复杂和高级的人类活动是令人向往的

  • 复合活动识别不仅需要人体动作,还需要周围环境的上下文信息,因此与简单活动识别相比,复合活动识别更具挑战性。

  • 为复合活动设计有效的传感器数据采集实验也是一项具有挑战性的任务,需要丰富的各种传感器的使用经验和人机交互应用方案。

  • 6.5.1 Unified Models / 统一模型

    • 第一个模型混合了复杂和简单的活动,并试图创建一个统一的模型来识别这两种活动。
    • 该方法是在科目相关设置下得到的结果,其中训练样本和测试样本来自同一实体,这限制了该方法的适应性。
  • Separated Models / 分离模型

    • 将复合活动与简单活动分开考虑,并进一步将复合活动视为一系列简单活动的组合
    • 1 joint learning
      • 多任务学习方法
      • 将一个复合活动划分为多个简单的活动 这些活动由一系列顺序的传感器信号段表示。
      • 将信号段输入cnn以提取低级活动的表示形式,然后将其加载到softmax分类器中以识别简单活动。
      • 同时,cnn提取的所有片段的特征被纳入一个LSTM网络,利用它们的相关性,从而产生高层次的语义活动分类
    • 2 action to activity
      • 使用估计的动作序列来推断复合活动,其中提取简单动作的时间相关性用于复合活动分类。
      • 相反,预测的复合活动被用于在下一个时间步骤中帮助导出简单的活动序列。
      • 因此,在推理过程中,简单活动和复合活动序列的预测是相互更新的。
      • 问题: 正确地将原始时间序列信号切割成单个简单动作的片段
    6.6 数据分割(Date Segmentation)
    • 由于原始传感器数据由连续的流信号表示,通常使用固定大小的窗口将原始传感器数据序列分割成段,作为活动识别模型的输入。

    • 当在窗口中间发生活动转换时,一个窗口中的示例可能并不总是共享相同的标签。因此,最优的分割方法是提高活动识别精度的关键。

    • Explicit Segmentation(明确分割)

      • 问题1 : 尽管较大的窗口大小提供了更丰富的信息,但它增加了在窗口中间发生转换的可能性。相反,较小的窗口大小无法提供足够的信息。
      • 解决 1:
        • a hierarchical signal segmentation method(分层信号分割)
        • 它最初使用大窗口大小,并逐渐缩小分割,直到子窗口中只有一个活动。
      • 解决 2:
        • 直接为每个时间步分配一个标签,而不是预测整个窗口 ——fully connected
          networks (FCNs)
        • FCNs不仅可以利用相应时间步(timestep)本身的信息,还可以利用相邻时间步的信息。
        • 使用1D CNN层取代最终的softmax层,其中特征映射的长度等于时间步长,特征映射的数量等于活动类的数量,预测每个时间步的标签
    • Implicit Segmentation / 隐式分割

      • 活动识别的显式分割是不实际的,因为用户在不固定的持续时间内执行活动。
6.7 并发活动 / Concurrent Activity
  • 一个人还可以同时执行多个活动 ——can be abstracted as a multi-label task(多标签任务)
6.7.1 Recognize Individually / 单独识别
  • 一个并发活动可以被认为是几个独立的活动
6.7.2 Recognize Concurrently. / 同时识别
  • 直接考虑了不同活动同时发生的可能性。
  • 提出了一个多层LSTM框架,为每一个可能的活动组合提供并发的可能性。
  • 缺点: 随着并发活动数量的增加,输出维度将呈指数增长。
6.8 多人行为(Mutil-occupant Activity)
  • 并行活动(parallel activity): 一个人在吃饭,而另一个人在看电视
    • 可穿传感器
      • 可将其划分为多个单人活动识别任务,并通过常规方案求解
    • 环境或物体传感器
      • 将感知信号映射到实际导致数据生成的居住者的数据关联成为主要挑战
  • 协助活动 (collaborative activity):多个参与者一起合作完成同一项活动
    • 环境传感器:收集环境上下文信息
6.9 运算成本(Computation Cost)
  • 利用深度学习模型在移动设备上实现实时、可靠的人体活动识别,解决计算成本高的问题是非常必要和具有挑战性的。
  • Layer Reduction /层减少
    • 手动设计特征( hand-crafted features)和深度特征的结合是降低计算成本的潜在解决方案
    • 将深度学习特征和手工制作特征并行排列
  • Network Optimization / 网络优化
    • optimizing basic block
      • 对于基于cnn的方法,减小过滤器大小是优化内存消耗和计算操作数量的有效手段。
    • network quantization
      • 激活函数的权值和输出约束为两个离散的值(如−1、+1),而不是连续的数。
6.10 隐私性(Privacy)
  • 对于深度学习技术来说,其黑箱特性可能会在无意中暴露出用户判别的特征。
  • 解决最初用于人类活动识别的深度学习模型的隐私泄露潜力至关重要。
  • Transformation / 数据转换
    • 为了解决这一问题,一些研究人员探索了利用对抗损失函数来最小化训练过程中特定隐私信息的辨别准确性。
      • 对抗损失函数只能用于保护一种隐私信息,如用户身份和性别。
      • 对抗损失不利于端到端训练过程,使其难以稳定收敛
    • 作者创造性地从两个方面看待原始传感器信号:“类型”方面,它描述了用户如何执行一项活动,并受到用户相同信息的影响,如年龄、体重、性别、身高等;“内容”方面,描述用户执行的活动。他们提出对原始传感器数据进行变换,使其“内容”不变,但“类型”类似于随机噪声。因此,该方法有可能一次性保护所有敏感信息。
  • Perturbation
    • 除了数据转换,数据扰动是解决隐私问题的另一种方法。
      • 随机投影 (Random Projection)
      • repeated Gompertz( 对基于logistic模型的一类Gompertz模型 )
6.11 深度学习对于传感器数据的可解释性 (Interpretability)
  • 人类活动的感官数据是不可读的。
  • 一个数据样本可以包括不同的模态(如加速度,角速度)从多个位置(如手腕,脚踝)在一个时间窗口。 然而,只有来自特定职位的少数模式有助于确定某些活动
  • Feature Visualization / 特征可视化
    • 可解释深度学习的基本思想是自动确定输入数据的各个部分的重要性,通过省略不重要的部分,关注突出的部分来达到较高的准确性。
  • Attention Selection
    • 回到人类活动识别,注意机制不仅突出了最易区分的模态和时间间隔,还告诉我们对特定活动贡献最大的模式和身体部位。根据深度注意方法的可区分性,可将其分为软注意方法和硬注意方法。
    • 1 Soft Attention
      • 软注意为输入的每个元素分配从0到1的权重。它决定了对每个元素的关注程度。
      • 模型完全可微, 梯度可以传播到网络的其他部分
    • 2 Hard Attention
      • 输入部分的权值不是0就是1,所以这个问题是不可微的。
      • 深度强化学习( 将深度学习的感知能力和强化学习的决策能力相结合 )解决了深度学习中的选择问题,允许模型在选择策略空间中传播梯度。
7 FUTURE RESEARCH DIRECTION 未来发展方向
7.1 Independent unsupervised methods / 独立的无监督学习方法
  • 迄今为止,用于人类活动识别的深度无监督模型主要用于特征提取,但无法识别活动,因为没有ground truth( 正确打标记的数据 )。
7.2 Identifying new activities. / 识别新的活动
  • 识别模型从未见过的新活动是人类活动识别的一大挑战。
  • 一个有前途的方法是学习可扩展到不同活动的特性。
7.3 Future activity prediction / 预测未来的活动
  • 未来活动预测是活动识别的延伸。与活动识别不同,活动预测系统可以提前预测用户的行为。
  • 建模跨活动的时间依赖性有助于预测未来的预测。
7.4 A standardization of the state-of-the-art / 先进技术的标准化
  • 虽然在深度学习和基于传感器的人类活动识别方面已有数百项研究,但缺乏最先进的标准化,无法进行公平的比较。
  • 不同论文对活动识别性能的实验设置和评价指标各不相同。深度学习严重依赖训练数据,训练/测试/验证集的划分会影响识别结果。数据处理和实施平台等其他因素也会导致倾斜比较。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45772822/article/details/131626344

智能推荐

python简易爬虫v1.0-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏6次。python简易爬虫v1.0作者:William Ma (the_CoderWM)进阶python的首秀,大部分童鞋肯定是做个简单的爬虫吧,众所周知,爬虫需要各种各样的第三方库,例如scrapy, bs4, requests, urllib3等等。此处,我们先从最简单的爬虫开始。首先,我们需要安装两个第三方库:requests和bs4。在cmd中输入以下代码:pip install requestspip install bs4等安装成功后,就可以进入pycharm来写爬虫了。爬

安装flask后vim出现:error detected while processing /home/zww/.vim/ftplugin/python/pyflakes.vim:line 28_freetorn.vim-程序员宅基地

文章浏览阅读2.6k次。解决方法:解决方法可以去github重新下载一个pyflakes.vim。执行如下命令git clone --recursive git://github.com/kevinw/pyflakes-vim.git然后进入git克降目录,./pyflakes-vim/ftplugin,通过如下命令将python目录下的所有文件复制到~/.vim/ftplugin目录下即可。cp -R ...._freetorn.vim

HIT CSAPP大作业:程序人生—Hello‘s P2P-程序员宅基地

文章浏览阅读210次,点赞7次,收藏3次。本文简述了hello.c源程序的预处理、编译、汇编、链接和运行的主要过程,以及hello程序的进程管理、存储管理与I/O管理,通过hello.c这一程序周期的描述,对程序的编译、加载、运行有了初步的了解。_hit csapp

18个顶级人工智能平台-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏27次。来源:机器人小妹  很多时候企业拥有重复,乏味且困难的工作流程,这些流程往往会减慢生产速度并增加运营成本。为了降低生产成本,企业别无选择,只能自动化某些功能以降低生产成本。  通过数字化..._人工智能平台

electron热加载_electron-reloader-程序员宅基地

文章浏览阅读2.2k次。热加载能够在每次保存修改的代码后自动刷新 electron 应用界面,而不必每次去手动操作重新运行,这极大的提升了开发效率。安装 electron 热加载插件热加载虽然很方便,但是不是每个 electron 项目必须的,所以想要舒服的开发 electron 就只能给 electron 项目单独的安装热加载插件[electron-reloader]:// 在项目的根目录下安装 electron-reloader,国内建议使用 cnpm 代替 npmnpm install electron-relo._electron-reloader

android 11.0 去掉recovery模式UI页面的选项_android recovery 删除 部分菜单-程序员宅基地

文章浏览阅读942次。在11.0 进行定制化开发,会根据需要去掉recovery模式的一些选项 就是在device.cpp去掉一些选项就可以了。_android recovery 删除 部分菜单

随便推点

echart省会流向图(物流运输、地图)_java+echart地图+物流跟踪-程序员宅基地

文章浏览阅读2.2k次,点赞2次,收藏6次。继续上次的echart博客,由于省会流向图是从echart画廊中直接取来的。所以直接上代码<!DOCTYPE html><html><head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /&_java+echart地图+物流跟踪

Ceph源码解析:读写流程_ceph 发送数据到其他副本的源码-程序员宅基地

文章浏览阅读1.4k次。一、OSD模块简介1.1 消息封装:在OSD上发送和接收信息。cluster_messenger -与其它OSDs和monitors沟通client_messenger -与客户端沟通1.2 消息调度:Dispatcher类,主要负责消息分类1.3 工作队列:1.3.1 OpWQ: 处理ops(从客户端)和sub ops(从其他的OSD)。运行在op_tp线程池。1...._ceph 发送数据到其他副本的源码

进程调度(一)——FIFO算法_进程调度fifo算法代码-程序员宅基地

文章浏览阅读7.9k次,点赞3次,收藏22次。一 定义这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。这里,我_进程调度fifo算法代码

mysql rownum写法_mysql应用之类似oracle rownum写法-程序员宅基地

文章浏览阅读133次。rownum是oracle才有的写法,rownum在oracle中可以用于取第一条数据,或者批量写数据时限定批量写的数量等mysql取第一条数据写法SELECT * FROM t order by id LIMIT 1;oracle取第一条数据写法SELECT * FROM t where rownum =1 order by id;ok,上面是mysql和oracle取第一条数据的写法对比,不过..._mysql 替换@rownum的写法

eclipse安装教程_ecjelm-程序员宅基地

文章浏览阅读790次,点赞3次,收藏4次。官网下载下载链接:http://www.eclipse.org/downloads/点击Download下载完成后双击运行我选择第2个,看自己需要(我选择企业级应用,如果只是单纯学习java选第一个就行)进入下一步后选择jre和安装路径修改jvm/jre的时候也可以选择本地的(点后面的文件夹进去),但是我们没有11版本的,所以还是用他的吧选择接受安装中安装过程中如果有其他界面弹出就点accept就行..._ecjelm

Linux常用网络命令_ifconfig 删除vlan-程序员宅基地

文章浏览阅读245次。原文链接:https://linux.cn/article-7801-1.htmlifconfigping &lt;IP地址&gt;:发送ICMP echo消息到某个主机traceroute &lt;IP地址&gt;:用于跟踪IP包的路由路由:netstat -r: 打印路由表route add :添加静态路由路径routed:控制动态路由的BSD守护程序。运行RIP路由协议gat..._ifconfig 删除vlan