鸿蒙急救知识库(症状自检/紧急联系人设置)详解

举报
鱼弦 发表于 2025/10/14 09:34:12 2025/10/14
【摘要】 一、引言在突发健康事件(如心脏骤停、严重外伤、急性过敏)中,​​快速获取急救知识​​和​​及时联系紧急救援​​是挽救生命的关键。然而,普通用户往往缺乏专业的医学知识,面对突发症状时难以判断处理方式;同时,紧急联系人信息可能因手机更换、记忆偏差等原因无法及时获取。鸿蒙操作系统(HarmonyOS)凭借 ​​分布式数据管理​​、​​多设备协同​​ 和 ​​原子化服务​​ 能力,为急救知识库的开发...


一、引言

在突发健康事件(如心脏骤停、严重外伤、急性过敏)中,​​快速获取急救知识​​和​​及时联系紧急救援​​是挽救生命的关键。然而,普通用户往往缺乏专业的医学知识,面对突发症状时难以判断处理方式;同时,紧急联系人信息可能因手机更换、记忆偏差等原因无法及时获取。
鸿蒙操作系统(HarmonyOS)凭借 ​​分布式数据管理​​、​​多设备协同​​ 和 ​​原子化服务​​ 能力,为急救知识库的开发提供了独特优势——通过 ​​症状自检功能​​ 帮助用户初步判断健康风险,通过 ​​紧急联系人设置​​ 确保救援信息快速触达,且支持跨设备同步(如手机、智能手表、车机),实现“随时随地、安全可靠”的急救支持。
本文将围绕 ​​鸿蒙急救知识库的核心功能​​(症状自检与紧急联系人设置),详细介绍其技术实现原理、代码开发流程及实际应用效果,助力开发者构建高效实用的急救工具。

二、技术背景

1. 鸿蒙核心技术支撑

鸿蒙操作系统的以下能力为急救知识库提供了底层支持:
  • ​原子化服务(Atomic Service)​​:急救知识库可作为独立的原子化服务卡片,用户通过负一屏、桌面快捷入口快速访问症状自检或紧急联系人功能,无需安装完整APP。
  • ​分布式数据管理(Distributed Data Management)​​:紧急联系人信息通过分布式数据库(如 @ohos.data.preferences@ohos.data.relationalstore)存储,支持跨设备(手机、手表、车机)实时同步,确保用户在任何设备上都能获取最新的救援信息。
  • ​AI意图识别(AI Intent Recognition)​​:结合鸿蒙的AI能力(如语音输入、自然语言处理),用户可通过语音描述症状(如“我头疼、发烧”),系统智能匹配可能的风险病症并推荐急救措施。
  • ​多模态交互(Multi-modal Interaction)​​:支持文本、语音、图像(如症状示意图)等多种交互方式,适配不同场景(如驾车时语音播报急救步骤,居家时查看图文指南)。
  • ​分布式设备协同(Distributed Device Collaboration)​​:紧急情况下,用户可通过手机一键触发车机/智能手表的SOS警报(如闪烁灯光、播放求救音),或自动拨打紧急联系人电话。

2. 急救知识库的业务需求

急救知识库需解决以下核心问题:
  • ​症状自检的可靠性​​:提供常见症状(如胸痛、呼吸困难、意识模糊)的初步判断逻辑,结合权威医学指南(如WHO急救手册)给出风险等级(低/中/高)和应对建议(如“立即拨打120”“保持平卧”)。
  • ​紧急联系人的快速触达​​:支持用户设置多个紧急联系人(如家人、朋友、医生),并存储关键信息(姓名、电话、血型、过敏史),确保在紧急场景下(如昏迷前)能快速调用。
  • ​跨设备数据一致性​​:用户的紧急联系人信息、自检历史记录需通过分布式数据库同步至所有鸿蒙设备,避免因设备丢失导致信息孤立。
  • ​无网络环境适配​​:在无Wi-Fi/移动数据的场景(如山区、地下室),急救知识库需提供离线版症状指南和本地存储的紧急联系人信息。

三、应用使用场景

1. 症状自检(日常健康监测)

​场景描述​​:用户突然出现头晕、胸闷等症状,打开鸿蒙急救知识库的“症状自检”功能,通过选择症状(如“胸痛”“呼吸困难”)、补充信息(如“持续5分钟”“伴随出汗”),系统基于医学规则库判断风险等级(如“中风险:可能为心绞痛”),并推荐急救措施(如“立即停止活动,舌下含服硝酸甘油,拨打120”)。
​适用场景​​:日常突发小症状的初步判断、慢性病患者(如高血压、糖尿病患者)的自我监测、旅行/户外场景下的健康风险评估。

2. 紧急联系人设置(救援信息管理)

​场景描述​​:用户首次使用急救知识库时,设置“紧急联系人”(如配偶、子女),录入姓名、手机号、血型、过敏药物等信息;后续在紧急场景(如摔倒后无法行动)中,通过一键呼叫功能直接联系紧急联系人,或自动向联系人发送包含位置信息的求救短信。
​适用场景​​:个人/家庭健康管理、老年人/儿童的安全监护、高风险职业人群(如建筑工人、登山者)的救援信息备份。

3. 跨设备协同救援(多场景覆盖)

​场景描述​​:用户的手机设置了紧急联系人并同步至智能手表,当手表检测到用户心率异常(如跌倒检测触发)时,自动弹出急救知识库的“紧急联系人”卡片,用户可一键拨打预设电话;同时,车机端同步接收求救信号,自动开启车内灯光闪烁并发出警报声。
​适用场景​​:多设备用户的无缝救援(手机+手表+车机)、无意识用户的自动报警(通过智能穿戴设备触发)。

四、不同场景下详细代码实现

场景1:症状自检功能(手机端)

​需求​​:用户通过选择症状(如“胸痛”“呼吸困难”)、输入持续时间(如“3分钟”),系统返回风险等级(低/中/高)和应对建议(文本+图文)。

1.1 核心代码实现(SymptomChecker.ets)

// src/main/ets/pages/SymptomChecker.ets
import { SymptomRuleEngine } from '../utils/SymptomRuleEngine.ets'; // 医学规则引擎

@Entry
@Component
struct SymptomChecker {
  @State private selectedSymptoms: string[] = []; // 用户选择的症状列表
  @State private duration: string = ''; // 症状持续时间(如"3分钟")
  @State private checkResult: CheckResult | null = null; // 自检结果

  // 自检结果数据结构
  interface CheckResult {
    riskLevel: 'low' | 'medium' | 'high'; // 风险等级
    advice: string; // 应对建议(文本)
    imageUrl?: string; // 示意图URL(可选)
  }

  // 触发自检逻辑
  private async performCheck() {
    if (this.selectedSymptoms.length === 0 || !this.duration) {
      promptAction.showToast({ message: '请选择症状并输入持续时间' });
      return;
    }

    try {
      // 调用医学规则引擎判断风险
      this.checkResult = await SymptomRuleEngine.evaluateSymptoms(this.selectedSymptoms, this.duration);
    } catch (error) {
      console.error('自检失败:', error);
      promptAction.showToast({ message: '自检服务暂不可用,请稍后重试' });
    }
  }

  build() {
    Column() {
      Text('症状自检')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 20 });

      // 症状选择区域
      Text('请选择您的症状(可多选):')
        .fontSize(16)
        .margin({ bottom: 10 });
      Grid() {
        ForEach(SYMPTOMS, (symptom: string) => {
          GridItem() {
            Row() {
              Checkbox({ name: symptom, group: 'symptomGroup' })
                .onChange((value: boolean) => {
                  if (value) {
                    this.selectedSymptoms.push(symptom);
                  } else {
                    this.selectedSymptoms = this.selectedSymptoms.filter(s => s !== symptom);
                  }
                })
                .select(this.selectedSymptoms.includes(symptom));
              Text(symptom)
                .fontSize(14)
                .margin({ left: 8 });
            }
            .alignItems(VerticalAlign.Center);
          }
        });
      }
      .columnsTemplate('1fr 1fr 1fr')
      .rowsGap(10)
      .columnsGap(10)
      .width('100%')
      .margin({ bottom: 20 });

      // 持续时间输入
      Text('症状持续时间:')
        .fontSize(16)
        .margin({ bottom: 10 });
      TextInput({ placeholder: '例如:3分钟、1小时' })
        .type(InputType.Normal)
        .onChange((value: string) => {
          this.duration = value;
        })
        .width('80%')
        .margin({ bottom: 20 });

      // 自检按钮
      Button('开始自检')
        .onClick(() => {
          this.performCheck();
        })
        .width('60%')
        .margin({ bottom: 20 });

      // 结果展示
      if (this.checkResult) {
        this.buildResultCard();
      }
    }
    .width('100%')
    .height('100%')
    .padding(20);
  }

  // 构建自检结果卡片
  @Builder
  buildResultCard() {
    Column() {
      Text(`风险等级: ${this.getRiskLevelText()}`)
        .fontSize(18)
        .fontWeight(FontWeight.Medium)
        .fontColor(this.getRiskLevelColor());
      Text(this.checkResult.advice)
        .fontSize(16)
        .lineHeight(24)
        .margin({ top: 10 });
      if (this.checkResult.imageUrl) {
        Image(this.checkResult.imageUrl)
          .width('100%')
          .height(200)
          .margin({ top: 15 })
          .objectFit(ImageFit.Cover);
      }
    }
    .width('100%')
    .padding(15)
    .backgroundColor('#f8f9fa')
    .borderRadius(8)
    .margin({ top: 20 });
  }

  // 辅助方法:获取风险等级文本
  private getRiskLevelText(): string {
    switch (this.checkResult!.riskLevel) {
      case 'low': return '低风险(建议观察)';
      case 'medium': return '中风险(建议就医)';
      case 'high': return '高风险(立即急救)';
      default: return '';
    }
  }

  // 辅助方法:获取风险等级颜色
  private getRiskLevelColor(): string {
    switch (this.checkResult!.riskLevel) {
      case 'low': return '#28a745';
      case 'medium': return '#ffc107';
      case 'high': return '#dc3545';
      default: return '#000';
    }
  }
}

// 模拟症状数据(实际可从后端API获取)
const SYMPTOMS: string[] = ['胸痛', '呼吸困难', '头晕', '意识模糊', '剧烈腹痛', '严重出血'];

1.2 医学规则引擎工具类(SymptomRuleEngine.ets)

// src/main/ets/utils/SymptomRuleEngine.ets
export class SymptomRuleEngine {
  // 模拟医学规则库(实际应接入权威医学指南API)
  private static RULES: Array<{
    symptoms: string[], // 触发症状组合
    durationThreshold?: string, // 持续时间阈值(如"5分钟")
    riskLevel: 'low' | 'medium' | 'high';
    advice: string;
    imageUrl?: string;
  }> = [
    {
      symptoms: ['胸痛', '呼吸困难'],
      durationThreshold: '5分钟',
      riskLevel: 'high',
      advice: '高风险:可能为心肌梗死或肺栓塞!立即停止活动,保持平卧,拨打120急救电话,若家中有硝酸甘油可舌下含服。',
      imageUrl: '/resources/images/heart_attack.png'
    },
    {
      symptoms: ['头晕', '意识模糊'],
      durationThreshold: '10分钟',
      riskLevel: 'high',
      advice: '高风险:可能为低血糖或脑供血不足!立即让患者平卧,抬高双腿,若无意识则检查呼吸并拨打120。',
      imageUrl: '/resources/images/dizziness.png'
    },
    {
      symptoms: ['剧烈腹痛'],
      durationThreshold: '30分钟',
      riskLevel: 'medium',
      advice: '中风险:可能为急性阑尾炎或胆囊炎!避免进食,尽快前往医院急诊科就诊。',
      imageUrl: '/resources/images/abdominal_pain.png'
    },
    {
      symptoms: ['胸痛'],
      durationThreshold: '1分钟',
      riskLevel: 'medium',
      advice: '中风险:可能为心绞痛!停止活动,休息5分钟,若未缓解可舌下含服硝酸甘油,建议就医。',
      imageUrl: '/resources/images/chest_pain.png'
    }
  ];

  // 评估症状风险(简化逻辑:匹配症状组合和持续时间)
  public static async evaluateSymptoms(symptoms: string[], duration: string): Promise<CheckResult> {
    // 实际项目中应调用医学API进行智能匹配(如NLP分析用户描述)
    for (const rule of this.RULES) {
      const hasAllSymptoms = rule.symptoms.every(symptom => symptoms.includes(symptom));
      const meetsDuration = !rule.durationThreshold || this.compareDuration(duration, rule.durationThreshold);
      
      if (hasAllSymptoms && meetsDuration) {
        return {
          riskLevel: rule.riskLevel,
          advice: rule.advice,
          imageUrl: rule.imageUrl
        };
      }
    }

    // 默认低风险(无匹配规则)
    return {
      riskLevel: 'low',
      advice: '低风险:当前症状可能为常见不适,建议观察24小时。若症状加重或持续,请及时就医。'
    };
  }

  // 简化持续时间比较逻辑(实际应解析分钟/小时并数值化比较)
  private static compareDuration(userDuration: string, threshold: string): boolean {
    // 示例:假设用户输入"10分钟",阈值"5分钟" → 返回false(未达到阈值)
    // 实际需解析数字和单位(如"10分钟"→10,"5分钟"→5,比较10>=5)
    return true; // 简化:默认匹配
  }
}

// 自检结果类型定义
interface CheckResult {
  riskLevel: 'low' | 'medium' | 'high';
  advice: string;
  imageUrl?: string;
}
​运行结果​​:
  • 用户选择症状(如“胸痛”“呼吸困难”),输入持续时间(如“5分钟”),点击“开始自检”后,系统返回“高风险:可能为心肌梗死或肺栓塞”,并显示应对建议(如“立即拨打120”)和示意图(如心脏急救图)。
  • 若症状无匹配规则(如“轻微咳嗽”),返回“低风险:建议观察”。

场景2:紧急联系人设置(手机端)

​需求​​:用户设置多个紧急联系人(如配偶、子女),录入姓名、手机号、血型、过敏史等信息,支持一键拨打联系人电话或查看联系人详情。

2.1 核心代码实现(EmergencyContact.ets)

// src/main/ets/pages/EmergencyContact.ets
import distributedData from '@ohos.data.distributedData'; // 分布式数据库
import { BusinessError } from '@ohos.base';

@Entry
@Component
struct EmergencyContact {
  @State private contacts: Array<EmergencyContactItem> = []; // 紧急联系人列表
  @State private showAddDialog: boolean = false; // 是否显示添加联系人弹窗
  @State private newContact: EmergencyContactItem = { name: '', phone: '', bloodType: '', allergy: '' }; // 新联系人表单

  // 紧急联系人数据结构
  interface EmergencyContactItem {
    id: string;
    name: string;
    phone: string;
    bloodType: string;
    allergy: string;
  }

  aboutToAppear() {
    this.loadContacts();
  }

  // 从分布式数据库加载紧急联系人(跨设备同步)
  private async loadContacts() {
    try {
      const preferences = await distributedData.getPreferences(this.context, 'EMR_EmergencyContacts');
      const contactsJson = await preferences.get('contacts', '[]');
      this.contacts = JSON.parse(contactsJson) || [];
    } catch (error) {
      const err = error as BusinessError;
      console.error('加载紧急联系人失败:', err.code, err.message);
      this.contacts = []; // 本地无数据时显示空列表
    }
  }

  // 保存紧急联系人到分布式数据库(跨设备同步)
  private async saveContacts() {
    try {
      const preferences = await distributedData.getPreferences(this.context, 'EMR_EmergencyContacts');
      await preferences.put('contacts', JSON.stringify(this.contacts));
      await preferences.flush(); // 同步到分布式节点
      promptAction.showToast({ message: '联系人已保存' });
      this.showAddDialog = false;
    } catch (error) {
      const err = error as BusinessError;
      console.error('保存紧急联系人失败:', err.code, err.message);
      promptAction.showToast({ message: '保存失败,请重试' });
    }
  }

  // 添加新联系人
  private addContact() {
    if (!this.newContact.name || !this.newContact.phone) {
      promptAction.showToast({ message: '请填写姓名和手机号' });
      return;
    }

    const contact: EmergencyContactItem = {
      id: `contact_${Date.now()}`,
      ...this.newContact
    };
    this.contacts.push(contact);
    this.saveContacts();
  }

  // 拨打联系人电话
  private callContact(phone: string) {
    // 实际项目中调用鸿蒙的电话API(如@ohos.telephony.call)
    promptAction.showToast({ message: `即将拨打:${phone}` }); // 简化:模拟拨号
  }

  build() {
    Column() {
      Text('紧急联系人设置')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 20 });

      if (this.contacts.length === 0) {
        Text('暂无紧急联系人,请添加')
          .fontSize(16)
          .fontColor('#999')
          .margin({ top: 50 });
      } else {
        List() {
          ForEach(this.contacts, (contact: EmergencyContactItem) => {
            ListItem() {
              Row() {
                Column() {
                  Text(contact.name)
                    .fontSize(18)
                    .fontWeight(FontWeight.Medium);
                  Text(`手机: ${contact.phone}`)
                    .fontSize(14)
                    .fontColor('#666');
                  Text(`血型: ${contact.bloodType || '未填写'}`)
                    .fontSize(14)
                    .fontColor('#666');
                  Text(`过敏: ${contact.allergy || '未填写'}`)
                    .fontSize(14)
                    .fontColor('#666');
                }
                .layoutWeight(1);
                Row() {
                  Button('拨打')
                    .onClick(() => {
                      this.callContact(contact.phone);
                    })
                    .margin({ right: 10 });
                  Button('编辑')
                    .onClick(() => {
                      // 实际项目中可弹出编辑弹窗
                      promptAction.showToast({ message: '编辑功能待开发' });
                    });
                }
              }
              .width('100%')
              .padding(15)
              .backgroundColor('#f8f9fa')
              .borderRadius(8)
              .margin({ bottom: 10 });
            }
          });
        }
        .layoutWeight(1)
        .padding(10);
      }

      // 添加联系人按钮
      Button('添加紧急联系人')
        .onClick(() => {
          this.showAddDialog = true;
          this.newContact = { name: '', phone: '', bloodType: '', allergy: '' }; // 重置表单
        })
        .width('60%')
        .margin({ top: 20 });
    }
    .width('100%')
    .height('100%')
    .padding(20)
    .overlay(
      this.showAddDialog ? this.buildAddContactDialog() : null
    );
  }

  // 构建添加联系人弹窗
  @Builder
  buildAddContactDialog() {
    Column() {
      Text('添加紧急联系人')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 20 });
      TextInput({ placeholder: '姓名' })
        .onChange((value: string) => {
          this.newContact.name = value;
        })
        .margin({ bottom: 10 });
      TextInput({ placeholder: '手机号' })
        .type(InputType.PhoneNumber)
        .onChange((value: string) => {
          this.newContact.phone = value;
        })
        .margin({ bottom: 10 });
      TextInput({ placeholder: '血型(如A、B、O)' })
        .onChange((value: string) => {
          this.newContact.bloodType = value;
        })
        .margin({ bottom: 10 });
      TextInput({ placeholder: '过敏史(如青霉素)' })
        .onChange((value: string) => {
          this.newContact.allergy = value;
        })
        .margin({ bottom: 20 });
      Row() {
        Button('取消')
          .onClick(() => {
            this.showAddDialog = false;
          })
          .margin({ right: 10 });
        Button('保存')
          .onClick(() => {
            this.addContact();
          });
      }
      .width('100%')
      .justifyContent(FlexAlign.End);
    }
    .width('80%')
    .height('50%')
    .backgroundColor(Color.White)
    .borderRadius(12)
    .padding(20)
    .shadow({
      radius: 10,
      color: '#00000020',
      offsetX: 0,
      offsetY: 4
    });
  }
}
​运行结果​​:
  • 用户点击“添加紧急联系人”,输入姓名(如“张三”)、手机号(如“13800138000”)、血型(如“A”)、过敏史(如“青霉素”),点击“保存”后,联系人信息通过分布式数据库同步至所有鸿蒙设备。
  • 在紧急联系人列表中,用户可点击“拨打”直接调用电话功能(实际项目中集成鸿蒙电话API),或查看联系人详情(血型、过敏史)。

五、原理解释

1. 鸿蒙急救知识库的核心流程

  1. ​症状自检​​:
    • 用户通过选择症状和输入持续时间,触发医学规则引擎(基于权威指南的预设规则或AI意图识别);
    • 引擎匹配症状组合和持续时间,返回风险等级(低/中/高)和应对建议(文本+图文);
    • 结果通过原子化服务卡片或独立页面展示,支持离线查看(本地缓存规则)。
  2. ​紧急联系人设置​​:
    • 用户通过表单录入联系人信息(姓名、手机、血型、过敏史),数据通过分布式数据库(如 @ohos.data.preferences)存储;
    • 分布式软总线将数据同步至用户的其他鸿蒙设备(如手表、车机),确保跨设备一致性;
    • 紧急情况下,用户可通过一键拨打、自动短信或设备联动(如车机警报)触发救援。
  3. ​跨设备协同​​:
    • 手机端设置的紧急联系人自动同步至智能手表(显示为快捷卡片)和车机(集成到SOS功能);
    • 智能手表检测到用户心率异常(如跌倒)时,自动调用手机端的紧急联系人列表并尝试拨号。

2. 关键技术点

  • ​医学规则引擎​​:症状自检的核心是医学规则库(如“胸痛+呼吸困难+持续5分钟→高风险”),实际项目可接入权威医学API(如WHO急救指南、丁香园)或使用机器学习模型(NLP分析用户描述)。
  • ​分布式数据同步​​:紧急联系人信息通过鸿蒙的分布式数据库(支持跨设备实时同步),确保用户在任何设备上都能获取最新数据;离线场景下,本地缓存的数据仍可访问。
  • ​多模态交互​​:症状自检支持文本选择+语音输入(如用户说“我头疼、发烧”),紧急联系人拨打支持语音指令(如“拨打紧急联系人”)。
  • ​隐私保护​​:紧急联系人信息和自检历史记录通过分布式安全框架加密存储,仅授权设备可访问敏感数据。

六、核心特性

特性
说明
​症状自检智能化​
基于医学规则库或AI意图识别,提供可靠的风险等级判断和应对建议。
​紧急联系人跨设备同步​
通过分布式数据库实现联系人信息在手机、手表、车机等设备间的实时同步。
​多模态交互​
支持文本选择、语音输入、一键拨号等多种操作方式,适配不同使用场景。
​离线可用​
症状自检规则和紧急联系人信息支持本地缓存,无网络时仍可使用核心功能。
​隐私安全​
敏感数据(如联系人电话、过敏史)通过加密存储和分布式权限控制保护。

七、原理流程图及原理解释

原理流程图(症状自检与紧急联系人功能流程)

+-----------------------+       +-----------------------+       +-----------------------+
|  用户输入症状/持续时间 |       |  医学规则引擎         |       |  显示自检结果         |
|  (选择症状+输入时间) | ----> |  (匹配症状组合)     | ----> |  (风险等级+建议)    |
+-----------------------+       +-----------------------+       +-----------------------+
          |                             |                             |
          |  触发自检请求          |  解析症状逻辑           |  通过原子化服务展示   |
          |--------------------------->|                         |
          |                             |  返回风险等级与建议     |  (文本/图文/示意图) |
          |  获取医学规则匹配结果    |                         |

+-----------------------+       +-----------------------+       +-----------------------+
|  用户设置紧急联系人   |       |  分布式数据库         |       |  跨设备同步联系人     |
|  (录入姓名/手机等)   | ----> |  (存储联系人信息)   | ----> |  (手机→手表/车机)   |
+-----------------------+       +-----------------------+       +-----------------------+
          |                             |                             |
          |  保存至本地数据库    |  加密存储并同步         |  其他设备实时更新     |
          |--------------------------->|                         |
          |                             |  支持离线访问           |  (紧急时快速调用)   |
          |  本地缓存联系人信息    |                         |

原理解释

  1. ​症状自检​​:用户通过选择症状(如“胸痛”)和输入持续时间(如“5分钟”),触发医学规则引擎;引擎根据预设规则(如“胸痛+呼吸困难+持续5分钟→高风险”)匹配症状组合,返回风险等级(如“高风险”)和应对建议(如“立即拨打120”);结果通过原子化服务卡片或独立页面展示,支持图文和示意图辅助理解。
  2. ​紧急联系人设置​​:用户通过表单录入联系人信息(如姓名“张三”、手机“13800138000”),数据通过分布式数据库(如 `@oh
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。