-
【操作步骤&问题现象】1、App多、标准页面多的时候,只能通过进入任意App->左侧的“资产”->标准页面->搜索2、能够搜索指定的标准页面,但是不能定位到哪个App。因需要知道标准页面放在哪个App方便定位模块问题。【截图信息】
-
RT
-
【功能模块】标准页面【操作步骤&问题现象】利用表格组件添加的工具栏,点击“新增行”按钮没有反应【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
大家好,此贴可支撑各厂家用于AR-CORE融合终端二次开发,请各厂家参考,有问题欢迎回帖,FAE会及时回复,谢谢!关注:1、此贴中需要特别关注大包版本,当前存在送检版本(带T)和商用版本(大包版本R20C00SPC100B508加R20C00SPC101补丁),送检版本仅限中国电科院送检使用,其余各网省电科院送检及供货请使用商用大包;2、送检大包与商用大包区别如下:1)/dev/cpld_i2c_ext_bus0、/dev/bus/usb两个目录只在送检大包存在,商用大包只开放对应的设备节点,具体可见列表;2)送检大包中FT4232功能与商用大包存在差异;3、商用大包使用的配置文件可参考附件中的device_definition.json文件,使用命令行:devcapctl -f /mnt/internal_storage/device_definition.json,因配置和硬件强相关,该配置文件只用于联调,正式配置文件请联系华为FAE获取,请关注!4、附件中的配置文件具备以下功能:1、AR-CORE国网模式;2、LTE模块点灯;3、GPO9和GPO14的初始化状态为高电平;4、IIC口的开放,涉及PT100及交采;5、FT4232第一、二路的解绑,可以切换扩展口的模式;6、emmc硬件外扩节点;5、附件中第一个配置文件适配商用大包,第二个配置文件适配送检大包。具体开发指南如下:1、 设备节点对应关系 :该表格存在送检大包和商用大包的差异,具体节点映射关系如下:1)送检大包节点对应关系如下:款型主机访问路径容器映射设备的访问路径节点用途AR-CORE /dev/di1/dev/di1/dev/di2/dev/di2/dev/di3/dev/di3/dev/di4/dev/di4/dev/ttyAMA1 /dev/ttyUART1 485-1/dev/ttyAMA2/dev/ttyUART2485-2/dev/ttyAMA3/dev/ttyUART3蓝牙芯片通信串口/dev/cplduart0/dev/ttyUART4GNSS/dev/cplduart1/dev/ttyUART5485-3/dev/cplduart2/dev/ttyUART6MCU/dev/cplduart3/dev/ttyUART7485-4/dev/cplduart4/dev/ttyUART8上行模块/dev/cplduart5/dev/ttyUART9下行模块/dev/gpi12/dev/gpi12开关量输入/dev/gpi13/dev/gpi13开关量输入/dev/gpi17/dev/gpi17开关量输入/dev/gpi21/dev/gpi21开关量输入/dev/gpi22/dev/gpi22开关量输入/dev/gpi23/dev/gpi23485-3/232切换按钮输入/dev/gpi24/dev/gpi24485-4/232切换按钮输入/dev/gpi25/dev/gpi25开关量输入/dev/gpi26/dev/gpi26开关量输入/dev/gpi31/dev/gpi31开关量输入/dev/gpi32/dev/gpi32开关量输入/dev/gpi33/dev/gpi33开关量输入/dev/gpi35/dev/gpi35开关量输入/dev/gpi38/dev/gpi38开关量输入/dev/gpo8/dev/gpo8/dev/gpo9/dev/gpo9/dev/gpo10/dev/gpo10BLE_CON2/dev/gpo14/dev/gpo14USB转SPI芯片复位信号/dev/gpo16/dev/gpo16/dev/gpo17/dev/gpo17/dev/gpo18/dev/gpo18/dev/gpo19/dev/gpo19/dev/gpo25/dev/gpo25BLE_RST_N/dev/gpo26/dev/gpo26BLE_CON1/dev/gpo34/dev/gpo34RS485/RS232通道切换/dev/gpo37/dev/gpo37RS485/RS232通道切换/dev/gpo38/dev/gpo38/dev/gnssReset/dev/gnssResetGNSS拉高管脚/dev/cpld_i2c_ext_bus0/dev/cpld_i2c_ext_bus0IIC总线,其中PT100使用通道0,交采板使用通道6,送检大包临时方案,商用大包方案/dev/bus/usb/dev/bus/usbUSB目录,送检大包临时方案,商用大包方案2)商用大包对应关系如下:款型主机访问路径容器映射设备的访问路径节点用途AR-CORE/dev/di1/dev/di1/dev/di2/dev/di2/dev/di3/dev/di3/dev/di4/dev/di4/dev/ttyAMA1 /dev/ttyUART1 485-1/dev/ttyAMA2/dev/ttyUART2485-2/dev/ttyAMA3/dev/ttyUART3蓝牙/dev/ttyAMA4/dev/ttyUART4GNSS/dev/ttyAMA5/dev/ttyUART5485-3/dev/cplduart2/dev/ttyUART6MCU/dev/cplduart3/dev/ttyUART7485-4/dev/cplduart4/dev/ttyUART8上行模块/dev/cplduart5/dev/ttyUART9下行模块/dev/gpi12/dev/gpi12开关量输入/dev/gpi13/dev/gpi13开关量输入/dev/gpi14/dev/gpi14开合盖/dev/gpi15/dev/gpi15开合盖/dev/gpi17/dev/gpi17开关量输入/dev/gpi21/dev/gpi21开关量输入/dev/gpi22/dev/gpi22开关量输入/dev/gpi23/dev/gpi23开关量输入/dev/gpi24/dev/gpi24开关量输入/dev/gpi25/dev/gpi25开关量输入/dev/gpi26/dev/gpi26开关量输入/dev/gpi31/dev/gpi31开关量输入/dev/gpi32/dev/gpi32开关量输入/dev/gpi33/dev/gpi33开关量输入/dev/gpi35/dev/gpi35开关量输入/dev/gpi38/dev/gpi38开关量输入/dev/gpo8/dev/gpo8/dev/gpo9/dev/gpo9/dev/gpo10/dev/gpo10蓝牙芯片CON2/dev/gpo13/dev/gpo13PLC复位管脚,暂未开放/dev/gpo14/dev/gpo14USB转串口芯片复位信号/dev/gpo16/dev/gpo16/dev/gpo17/dev/gpo17/dev/gpo18/dev/gpo18/dev/gpo19/dev/gpo19/dev/gpo25/dev/gpo25蓝牙芯片复位信号/dev/gpo26/dev/gpo26蓝牙芯片CON1/dev/gpo34/dev/gpo34RS485/RS232通道切换/dev/gpo37/dev/gpo37RS485/RS232通道切换/dev/gpo38/dev/gpo38/dev/bus/usb/001/005FT4232USB转SPI芯片设备节点,与送检包存在差异,请关注/dev/cpld_i2c_bus0/dev/i2c0PT100接口,用法请参考Higrid-T1/dev/cpld_i2c_bus1/dev/i2c1/dev/cpld_i2c_bus2/dev/i2c2/dev/cpld_i2c_bus3/dev/i2c3/dev/cpld_i2c_bus4/dev/i2c4/dev/cpld_i2c_bus6/dev/i2c6交采板接口,用法请参考Higrid-T12、 蓝牙模块蓝牙模块建议厂家选择熟悉的蓝牙模组,可不使用我司 demo底板上的芯片,关注所选模组需支持蓝牙4.2版本及以上,具体APP开发请推荐型号:BR2262e、ZLG52810P0-1C-TC;若使用蓝牙模组,相关产品文档请联系模组厂家获取;若使用华为底板,当前蓝牙固件提供的是标准透传模式,相关资料请参考TI cc2640芯片的datesheet;若使用我司demo底板,因使用的是蓝牙芯片,需要注意一下几点:1) 前提条件:蓝牙芯片需要烧写固件,若蓝牙芯片无固件,可联系华为FAE;2) 蓝牙芯片有3个管脚:BLE_RST_N(GPO25)、BLE_CON1(GPO26)、BLE_CON2(GPO10),当系统起来后需确保GPO26、GPO10高电平,此时再将GPO25拉低再拉高实现解复位;3) 此时可以在手机端通过蓝牙搜索;3、 GPS模块GPS模块建议厂家选择熟悉的GPS模组,按照国网要求需要支持北斗/GPS两种模式。需要厂家在此基础上开发APP,满足中国电科院送检要求,我司demo底板上使用的型号:u-blox||NEO-M8Q-0-10;注意事项:1)大包内已经开发部分GNSS功能,需要厂家加载我司提供的设备能力工具,将我司大包内的GNSS功能关闭,设备能力工具名称一般为:device_definition.json,请联系华为FAE获取;2)送检大包:GPS复位管脚是:/dev/GNSSReset,需要在app初始化完后解复位; 商用大包:由自研硬件方案决定,当前推荐使用GPO8\GPO9等;4、 485/232模式切换方案485/232切换管脚分别为GPO_34/ GPO_37,状态如下:1) GPO_34/37低电平RS485,高电平RS232;2) GPO_34对应RS485-3 与RS232-1切换;GPO_37对应RS485-4与RS232-2切换;AR-CORE融合终端切换有以下两种实现方案:1) 在APP控制对应GPO口来实现485/232模式切换,GPO操作可参考产品手册上的GPO编程示例,该方案同Higrid-T1,具体节点请参考设备节点列表;2) 使用扩展板上的物理按键(GPI23/GPI24)进行切换,该方案为方便现场运维,当前整体方案与Higrid-T1存在差异,需要在APP内监控485/232对应的GPI口状态,当监控到状态切换时再控制GPO口实现485/232模式切换,如切换方案1),可不关注,华为SPC102补丁(待发布)已经实现按键切换。5、 FT4232扩展SPI方案一、AR-CORE融合终端交采模块硬件方案如下:USB3.0->USB HUB->FT4232(扩展2路SPI)->交采板;当前具体APP开发依赖厂家自行完成,华为没有深入开发交采APP,但在配合厂家开发过程中收集部分资料,提供给厂家,具体信息如下:二、交采APP操作流程如下:商用大包:1) 软件启动时已将/dev/gpo14节点拉高,此时识别出FT4232外接的USB设备节点,可通过lsusb查看,FT4232对应ID 0403:6011;2) 使用FT官网提供的库函数进行模式切换(参考FT官方lib库libftd2xx.so);3) 使用切换出来的SPI接口进行数据收发,串口操作可见官网提供的样例(参考FT官方lib库:libMPSSE.so)。送检大包:1) 在容器内将/dev/gpo14节点拉高,此时可以动态识别出FT4232外接的USB设备节点,可通过lsusb查看,FT4232对应ID 0403:6011;2) 因芯片原因,当操作步骤1中识别的USB节点去将UART模式切换为SPI模式时,需要将ftdi_sio驱动卸载,指令:rmmod ftdi_sio;(报错可以忽略)3) 使用FT官网提供的库函数进行模式切换(参考官方lib库libftd2xx.so);4) 使用切换出来的SPI接口进行数据收发,串口操作可见官网提供的样例(参考官方lib库:libMPSSE.so)。三、FT官网文档链接地址如下:1) FT4232整体芯片介绍:http://www.ftdichip.cn/Products/ICs/FT4232H.htm;2) 参考手册: https://www.ftdichip.com/Support/Documents/AppNotes/AN_114_FTDI_Hi_Speed_USB_To_SPI_Example.pdf;https://www.ftdichip.com/Support/Documents/AppNotes/AN_108_Command_Processor_for_MPSSE_and_MCU_Host_Bus_Emulation_Modes.pdf; 3) 驱动下载地址:https://www.ftdichip.com/Drivers/D2XX.htm,下载其中linux《1.4.8 ARMv8 hard-float》版本;4) 介绍FT4232如何切换模式:D2XX_Programmer's_Guide(FT_000071).pdf; 5) 注意事项:FT4232转出来的SPI口只支持模式0和2;四、说明: 据其他厂家反馈,当前FTDI官方已经不推荐使用libMPSSE.so,libftd2xx.so已经能够满足相关操作要求,推荐使用AN_114配合AN_108手册使用SPI,具体示例代码可以参考上面第2点给的手册:
-
功能描述:通过MQS上报一个消息,然后在App Engine的业务大屏上实时显示出来通过接口向Topic发送一个消息,消息能够被定义的数据接入和事件正常消费,但是在自定义组件使用websocket建立热联以后,无法获取到MQS的消息
-
作为一个在校大学生,app engine让我实现了在专业知识较少的情况下,可以实现一些自己的小想法。App engine作为一个低代码开发平台便利了很多非计算机科学、软件工程专业的同学的软件制作梦想,让其他专业的同学实现了自我价值的提升和自身技能的增强。
immortality
发表于2020-11-13 18:56:10
2020-11-13 18:56:10
最后回复
Astro zero小萌新
2020-11-17 10:11:24
1381 4 -
“该平台的建设解决了资产盘点慢、耗时长的难题,提高了园区的管理水平,提升了园区的服务水平。”——常德德源资产经营管理有限公司副总经理刘恒一、背景与挑战目前的德源智慧园区现有中小企业创业园、智能电子产业园,共计房屋26万平米,目前已出租21万平米,厂房出租率超过80%。已有超50家企业入驻园区当中,园区日常活跃人数达5000人以上。通过对园区智能化、信息化改造,来提升园区的服务水平、提高管理水平、降低运营成本、增强安全保障、提高工作效率、提升房屋出租率及设备使用率是目前智慧园区改造的迫切需求。二、客户痛点1.服务感知差:企业有意向进行房屋租赁时需要前往资产公司进行实地咨询,浪费时间及人力。目前园区内的费用缴纳信息管理是通过人工进行记账,需要人工定时排查逾期或未缴纳费用的相关企业。同时企业入驻后不能清晰的了解到自己该缴纳的费用及明细,在缴纳房屋、水电、物业费等费用时需要人员前往服务中心缴纳或去银行排队办理,针对逾期未缴纳费用的企业需要派人反复上门催缴,。2.事件处理效率低:目前设备的报修、养护都是通过纸质文文档进行记录和传递,企业和相关工作人员无法实时掌握维修工单的处理进度,容易影响到企业的生产经营,采用传统的纸质处理模式不仅处理效率低而且事后追溯难。3.资源利用低:对房屋、设备等资源的利用采用人工记账的方式,房屋等资源释放后无法第一时间对外发布,相关工作人员也没办法在第一时间就掌握资源的利用情况,造成资源的闲置,资源的利用效率低。4.运营成本高:在园区日常运营过程中想要知道园区目前的厂房的出租情况、园区的营收情况等信息时都需要人工进行数据的统计,统计周期长、数据精度低。三、解决方案通过对园区智能化的改造,提升园区的服务水平、提高管理水平、降低运营成本、增强安全保障、提高工作效率、提升房屋出租率及设备使用率。1.综合态势:查看多个园区的综合经营情况,各园区招商情况,房屋租售态势,事件统计,缴费态势,收入态势等。2.视频巡更:通过选择摄像头和设定巡更时间进行巡更任务配置,巡更人员可以通过系统进行远程视频巡更,巡更时可进行相应的记录最终巡更结束时生成巡更日志。3.智慧物业:园区通过平台制定缴费的科目及周期,制定不同企业的缴费金额,记录企业的缴费记录,逾期未缴费的企业实时提醒,可根据时间、企业等不同维度进行历史记录的检索;管理设备的基础档案信息,在巡检过程中发现设备损坏时通过APP上报设备维修工单,平台接收到工单后管理员分派维修人员,维修人员维修完成后通过APP登记维修结果并拍照,后台可根据时间、设备类型、维修状态、维修人等维度进行维修工单检索;制定设备的保养计划并分派保养人,保养人根据计划进行设备的保养并通过APP进行保养登记;管理入驻园区的企业装修信息,装修时登记企业的装修保证金缴纳记录、装修证发放记录及装修时间管理,装修过程中管理企业装修检查记录,装修完成后登记企业的装修证退还记录及退还保证金登记。4.园区招商:管理园区内的房屋基础信息,通过房屋销控图实时查看房屋的租售情况,管理房屋租售的合同信息及合同的续期,变更、转租、到期等记录,平台通过房屋租售的时间、营收等维度生成报表及图表。5.服务门户:园区通过门户发布中最新动态,招商信息。意向企业可通过门户进行入驻申请,查看自己房屋租赁的信息及缴费信息。6.企业服务: 第三方企业可以通过门户注册到园区中来,审核通过后可以通过门户发布可提供的服务信息,包括打印服务、税务服务等服务,企业可以通过门户或APP查看相关的服务信息,在线购买以下服务,园区与服务商进行服务进行服务结算;园区也可以将可提供的各类服务发布到门户中比如金融服务、资产服务等可以自定义服务步骤及服务内容,企业可以在线选购。四、客户价值通过对园区智能化的改造,提升园区的服务水平、提高管理水平、降低运营成本、增强安全保障、提高工作效率、提升房屋出租率及设备使用率。1、建设园区服务及业主端APP,意向企业可通过门户了解园区的最新招商政策、空闲房屋等信息,在线提交入驻意向申请,入驻园区的企业可通过门户及APP在线购买服务、查看园区最新动态、查看自己的房屋租赁、水电、物业费等账单,在线缴纳费用无需排队办理,提升园区的服务水平。2、建设工作人员APP,工作人员可通过APP实时查看企业的缴费信息,自动筛选预期未缴的企业信息。3、通过APP端进行维修上报,平台进行派工,派工消息自动推送至相关工作人员APP,可实时查看维修工单进行情况,维修完成后通过APP拍照登记方便事后追溯。4、通过平台对资源进行统一管理,资源释放后自动推送至服务门户及业主端APP,闲置资源实施共享,提升资源的利用效率。5、建设IOC智慧管控中心,通过大数据分析技术对园区运营过程中的招商、物业、安防、维保等数据进行分析展示,生成各类统计图表。协助运营人员“一屏览全园”;协助安保人员及时处理突发状况,做到“事件可控、可管”;协助维保管理员及时了解园区设备的最新维保情况,制定合理的维修保养计划,提高作业效率;协助运营人员及时掌握园区的房屋招商信息及入驻企业的类新、规模等情况,为制定科学的、高效的招商引资政策提供数据支持。案例中提到的商品:万洲嘉智智慧园区运营管理平台【华为云云市场,助您上云无忧】
-
APP用户调研,倾听您的声音!活动形式:本次活动采用问卷调研+1对1用户访谈的形式。我们将在用户问卷中(扫描下方二维码或点击链接填写问卷申请成为被访谈人员)筛选出15+位访谈用户进行电话访谈,给予京东100元礼品卡奖励。问卷提交时间:2020年11月20日 16:00前提交问卷,11月4日到20日期间我们会陆续联系用户确认访谈时间,预计访谈1小时以内。 11月21日停止访谈。2020年11月30日 16:00前,将已采访者名单(获奖信息)告知所有报名用户。活动奖励: 京东100元礼品卡更多关于华为云APP的相关内容请点击链接下载和了解:https://www.huaweicloud.com/mobile_app/hwapp.html
-
-
MSG Flow 是什么? >是一个异步消息驱动的业务流程编排工具 >是一个边云协同编排工具 & “全”环境运行引擎 >是客户既有系统能力“0成本”集成、编排工具 >是一个边、端侧APP 一键部署及管理工具实现的客户/伙伴价值•1)快速、零成本封装集成客户既有系统能力,并可通过可视化编排拉通消除系统孤岛,编排新业务流程,实现用户既有系统低成本利旧。 •2)云边端流程编排一体化,编排的业务流程同时适配云端标准服务器、边侧设备、资源受限的单片机系统,不同层级流程可相互通信,屏蔽端边云开发的差异,降低开发成本。 •3)通过统一规范及规范配套工具将客户既有能力零成本或底成本封装成标准资产,可在不同场景中通过编排工具低成本编排复用。 •4)针对边侧系统、端侧资源受限系统低效率的开发模式(如C 编码->交叉编译->串口烧录),改成云端可视化编排开发,极大提升开发效率和对开发人员能力要求。 •5)模块级组装开发,极大降低了开发难度,可由业务人员进行开发,降低开发成本。 •6)审批通过的边、端侧APP流程按需随时更新,没有手工安装部署过程,缩短新功能的TTM。案例:部分国网应用合作伙伴基于Message Flow柔性开发平台开发App跟踪5G加油站安全帽AI检测流程编排样例通过可视化快速拖拽编排AI算子完成5G加油站安全帽检测告警流程。流程以元数据的形式一键下发至边侧硬件设备上运行的引擎。边侧引擎解析元数据完成业务逻辑处理上报告警信息至云端。
-
场景一:深夜,运维同事小王睡的正酣,突然手机铃声响起,是公司领导来电:“小王啊,刚刚一线同事找到我,说是公司网站访问异常,客户下单受到影响,赶紧看一下”,小王赶紧起床,打开便携,然后一顿操作定位故障,最终将异常处理完成,由于现网问题反馈到公司领导,小王本月绩效堪忧。 场景二:周日,运维同事小李正跟女朋友小美在海边畅想未来,突然手机收到通知,内容是公司服务器出现异常。小李赶紧拿出华为云App,通过App的云监控告警看到公司一台服务器有接口异常,使用API调试工具对异常的接口进行了调试后,再使用SSH工具远程接入公司服务器对异常接口进行了紧急处理后,利用App中的控制台ECS小程序重启服务器,服务器异常消失~~~此时,公司领导电话打来:“小李啊,刚才我收到一线客服反馈,有用户访问我们网站出现异常,导致下单失败,你赶紧看一下。”小李回复“领导,异常问题已经处理完成了,是因为有个接口出现故障了,刚才通过华为云App已经紧急处理完毕,现在问题已经解决了。”由于小李处理现网问题快,客户下单最终没受影响,第二天受到公司表扬,升职加薪,从此走上迎娶小美的幸福生活。 以上两个段子均为杜撰,不管你信不信,都可以下载华为云App试试就如我们的标题一样,你不知道的宝藏工具,之所以称华为云App为宝藏工具,是因为它确实有一些宝藏功能为大家所不知,现在我就给大家介绍一下:宝藏功能一:资源监控对所有有资源的用户来讲,资源监控告警功能绝对是比实名认证更宝藏的功能,试想一下,当你名下有华为云的服务器,只要通过一款App就能随时随地查看你名下华为云服务器的运作情况,涵盖CPU使用率监控、出网、入网带宽监控、磁盘读写速率监控等等核心功能监控,还有什么功能会比这个更香?任何异常,只要打开华为云App就能快速知晓问题根因所在,绝对是运维同事的得力帮手。宝藏功能二:实名认证我们先来看一个实测视频,华为云App实名认证,从OCR(文字识别)姓名身份证、到活体识别再到三证合一校验,30秒快速完成,在活体检测环节,所有动作指令均为实时校验,确保用户一次通过完成,方便、快速的优势一览无余,从实名认证的体验以及效率可以看出,华为云App的实名认证体验绝对处于行业应有水平,期待大家下载华为云APP体验。宝藏功能三:虚拟MFA账号安全对所有华为云用户来讲都是十分重视的,相较于大家常见的短信验证码,MFA(多因子认证,Multi-factor authentication)才是二次校验中安全系数最高的验证方式。现在,华为云App的虚拟MFA功能已经上线很长时间了,除了登录安全加固,敏感操作也能通过MFA做二次校验了。本次,只是跟大家简单的介绍了一下华为云App的几个宝藏功能,当然,我们已上线的宝藏功能绝不仅仅只是这些:账户充值、资源续费、工单提交、扫码登录、多账号切换、文档查询、专题直播、微信分享~~~,华为云App上更多的宝藏功能需要大家自己去下载、把玩。我们仍在前进的道路上,离不开大家的吐槽和建议,我们会努力攻克各种问题,提升App的性能、功能以及体验!
-
场景一:深夜,运维同事小王睡的正酣,突然手机铃声响起,是公司领导来电:“小王啊,刚刚一线同事找到我,说是公司网站访问异常,客户下单受到影响,赶紧看一下”,小王赶紧起床,打开便携,然后一顿操作定位故障,最终将异常处理完成,由于现网问题反馈到公司领导,小王本月绩效堪忧。 场景二:周日,运维同事小李正跟女朋友小美在海边畅想未来,突然手机收到通知,内容是公司服务器出现异常。小李赶紧拿出华为云App,通过App的云监控告警看到公司一台服务器有接口异常,使用API调试工具对异常的接口进行了调试后,再使用SSH工具远程接入公司服务器对异常接口进行了紧急处理后,利用App中的控制台ECS小程序重启服务器,服务器异常消失~~~此时,公司领导电话打来:“小李啊,刚才我收到一线客服反馈,有用户访问我们网站出现异常,导致下单失败,你赶紧看一下。”小李回复“领导,异常问题已经处理完成了,是因为有个接口出现故障了,刚才通过华为云App已经紧急处理完毕,现在问题已经解决了。”由于小李处理现网问题快,客户下单最终没受影响,第二天受到公司表扬,升职加薪,从此走上迎娶小美的幸福生活。 以上两个段子均为杜撰,不管你信不信,都可以下载华为云App试试就如我们的标题一样,你不知道的宝藏工具,之所以称华为云App为宝藏工具,是因为它确实有一些宝藏功能为大家所不知,现在我就给大家介绍一下:宝藏功能一:资源监控对所有有资源的用户来讲,资源监控告警功能绝对是比实名认证更宝藏的功能,试想一下,当你名下有华为云的服务器,只要通过一款App就能随时随地查看你名下华为云服务器的运作情况,涵盖CPU使用率监控、出网、入网带宽监控、磁盘读写速率监控等等核心功能监控,还有什么功能会比这个更香?任何异常,只要打开华为云App就能快速知晓问题根因所在,绝对是运维同事的得力帮手。宝藏功能二:实名认证我们先来看一个实测视频,华为云App实名认证,从OCR(文字识别)姓名身份证、到活体识别再到三证合一校验,30秒快速完成,在活体检测环节,所有动作指令均为实时校验,确保用户一次通过完成,方便、快速的优势一览无余,从实名认证的体验以及效率可以看出,华为云App的实名认证体验绝对处于行业应有水平,期待大家下载华为云APP体验。宝藏功能三:虚拟MFA账号安全对所有华为云用户来讲都是十分重视的,相较于大家常见的短信验证码,MFA(多因子认证,Multi-factor authentication)才是二次校验中安全系数最高的验证方式。现在,华为云App的虚拟MFA功能已经上线很长时间了,除了登录安全加固,敏感操作也能通过MFA做二次校验了。本次,只是跟大家简单的介绍了一下华为云App的几个宝藏功能,当然,我们已上线的宝藏功能绝不仅仅只是这些:账户充值、资源续费、工单提交、扫码登录、多账号切换、文档查询、专题直播、微信分享~~~,华为云App上更多的宝藏功能需要大家自己去下载、把玩。我们仍在前进的道路上,离不开大家的吐槽和建议,我们会努力攻克各种问题,提升App的性能、功能以及体验!
-
跪求大神帮忙解决!!!以下是我从华为为下载的编程关于 “展示了分段并发上传大对象的用法” 。但是当我们跑完代码, 在模拟的手机,它显示“Create a demo busket for demo Error message: The location contraint is incompatible for the region specific endpoint this request was sent to. Error code: IllegalLocationConstraintExceprtion Request ID: 000000175.... Host ID:wQQYK..."public class MainActivity extends androidx.appcompat.app.AppCompatActivity{ private static final String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; private static final String ak = "E5DVZAAK95..."; private static final String sk = "PluwDOGzcWcFXXYdlNjsnITWrB4Hud7..."; private static String bucketName = "chenzi"; private static String objectKey = "my-obs-object-key-demo"; private static ExecutorService executorService = Executors.newFixedThreadPool(5); private static List<PartEtag> partETags = Collections.synchronizedList(new ArrayList<PartEtag>()); private static ObsClient obsClient; private static StringBuffer sb = new StringBuffer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout2); //Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); ObsConfiguration config = new ObsConfiguration(); config.setSocketTimeout(30000); config.setConnectionTimeout(10000); config.setEndPoint(endPoint); /* * Constructs a obs client instance with your account for accessing OBS */ obsClient = new ObsClient(ak, sk, config); final TextView tv = (TextView)findViewById(R.id.tv); tv.setText("Click to start test"); // Toast.makeText(this, "hUAWEItYR", Toast.LENGTH_LONG).show(); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setClickable(false); AsyncTask<Void, Void, String> task = new ConcurrentUploadPartTask(); task.execute(); } }); } private static class PartUploader implements Runnable { private File sampleFile; private long offset; private long partSize; private int partNumber; private String uploadId; public PartUploader(File sampleFile, long offset, long partSize, int partNumber, String uploadId) { this.sampleFile = sampleFile; this.offset = offset; this.partSize = partSize; this.partNumber = partNumber; this.uploadId = uploadId; } @Override public void run() { try { UploadPartRequest uploadPartRequest = new UploadPartRequest(); uploadPartRequest.setBucketName(bucketName); uploadPartRequest.setObjectKey(objectKey); uploadPartRequest.setUploadId(this.uploadId); uploadPartRequest.setFile(this.sampleFile); uploadPartRequest.setPartSize(this.partSize); uploadPartRequest.setOffset(this.offset); uploadPartRequest.setPartNumber(this.partNumber); UploadPartResult uploadPartResult = obsClient.uploadPart(uploadPartRequest); sb.append("Part#" + this.partNumber + " done\n\n"); partETags.add(new PartEtag(uploadPartResult.getEtag(), uploadPartResult.getPartNumber())); } catch (Exception e) { e.printStackTrace(); } } } class ConcurrentUploadPartTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { try { /* * Create bucket */ sb.append("Create a new bucket for demo\n\n"); obsClient.createBucket(bucketName); /* * Claim a upload id firstly */ String uploadId = claimUploadId(); sb.append("Claiming a new upload id " + uploadId + "\n\n"); long partSize = 5 * 1024 * 1024l;// 5MB File sampleFile = createSampleFile(); long fileLength = sampleFile.length(); long partCount = fileLength % partSize == 0 ? fileLength / partSize : fileLength / partSize + 1; if (partCount > 10000) { throw new RuntimeException("Total parts count should not exceed 10000"); } else { sb.append("Total parts count " + partCount + "\n\n"); } /* * Upload multiparts to your bucket */ sb.append("Begin to upload multiparts to OBS from a file\n\n"); for (int i = 0; i < partCount; i++) { long offset = i * partSize; long currPartSize = (i + 1 == partCount) ? fileLength - offset : partSize; executorService.execute(new PartUploader(sampleFile, offset, currPartSize, i + 1, uploadId)); } /* * Waiting for all parts finished */ executorService.shutdown(); while (!executorService.isTerminated()) { try { executorService.awaitTermination(5, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } } /* * Verify whether all parts are finished */ if (partETags.size() != partCount) { throw new IllegalStateException("Upload multiparts fail due to some parts are not finished yet"); } else { sb.append("Succeed to complete multiparts into an object named " + objectKey + "\n\n"); } /* * View all parts uploaded recently */ listAllParts(uploadId); /* * Complete to upload multiparts */ completeMultipartUpload(uploadId); return sb.toString(); } catch (ObsException e) { sb.append("\n\n"); sb.append("Response Code:" + e.getResponseCode()) .append("\n\n") .append("Error Message:" + e.getErrorMessage()) .append("\n\n") .append("Error Code:" + e.getErrorCode()) .append("\n\n") .append("Request ID:" + e.getErrorRequestId()) .append("\n\n") .append("Host ID:" + e.getErrorHostId()); return sb.toString(); } catch (Exception e) { sb.append("\n\n"); sb.append(e.getMessage()); return sb.toString(); } finally { if (obsClient != null) { try { /* * Close obs client */ obsClient.close(); } catch (IOException e) { } } } } @Override protected void onPostExecute(String result) { TextView tv = (TextView)findViewById(R.id.tv); tv.setText(result); tv.setOnClickListener(null); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); } private String claimUploadId() throws ObsException { InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectKey); InitiateMultipartUploadResult result = obsClient.initiateMultipartUpload(request); return result.getUploadId(); } private File createSampleFile() throws IOException { File file = File.createTempFile("obs-android-sdk-", ".txt"); file.deleteOnExit(); Writer writer = new OutputStreamWriter(new FileOutputStream(file)); for (int i = 0; i < 1000000; i++) { writer.write(UUID.randomUUID() + "\n\n"); writer.write(UUID.randomUUID() + "\n\n"); } writer.flush(); writer.close(); return file; } private void completeMultipartUpload(String uploadId) throws ObsException { // Make part numbers in ascending order Collections.sort(partETags, new Comparator<PartEtag>() { @Override public int compare(PartEtag o1, PartEtag o2) { return o1.getPartNumber() - o2.getPartNumber(); } }); sb.append("Completing to upload multiparts\n\n"); CompleteMultipartUploadRequest completeMultipartUploadRequest = new CompleteMultipartUploadRequest(bucketName, objectKey, uploadId, partETags); obsClient.completeMultipartUpload(completeMultipartUploadRequest); } private void listAllParts(String uploadId) throws ObsException { sb.append("Listing all parts......"); ListPartsRequest listPartsRequest = new ListPartsRequest(bucketName, objectKey, uploadId); ListPartsResult partListing = obsClient.listParts(listPartsRequest); for (Multipart part : partListing.getMultipartList()) { sb.append("\tPart#" + part.getPartNumber() + ", ETag=" + part.getEtag()); } sb.append("\n"); } }
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签