• [教程指导] 使用IntelliJ IDEA导入MRS样例代码工程
    获取MRS最新样例代码文件。华为云MRS服务2.0版本的样例工程下载地址为:huaweicloud-mrs-example。本地已安装IntelliJ IDEA、JDK、Maven等必备软件。配置华为云镜像站中SDK的Maven镜像仓库,可参考华为云开源镜像配置方式。注意如果本地需配置代理上网,在Maven配置文件“settings.xml”的<proxy></proxy>字段中需配置相关代理信息。如下:打开IntelliJ IDEA,选择导入Project,然后导入下载的样例代码组件的pom文件,例如导入HDFS的样例代码工程。等待工程导入及相关jar包依赖下载完成,即可查看相关样例。使用Maven编译下项目,查看项目相关依赖是否下载完成。
  • [技术干货] 《Huawei LiteOS设备开发实战》—FAQ(持续更新),萌新遇到问题先看这里
    账号、课程学习相关FAQ:1、学习这个课,要注册两个账号?    华为云账号用户登录华为云(活动报名、打卡、使用物联网平台),华为账号用于学习视频课程。2、华为账号和华为云账号有什么区别,一定要注册两个账号?    可以只注册华为账号,在华为云登录界面,可以选择使用华为账号登录。3、不知道在哪儿看视频,打卡,报名活动?    看群公告。物联网平台(IoTDA设备接入)相关FAQ1、为什么我的平台不能正常使用,各种报错?   (1)登录账号后,先去进行实名认证(2)检查下是否欠费(3)控制台区域选择北京四(4)检查下资源空间,没有资源空间的新建一个,有的用默认的即可2、上报数据,下发命令和视频中不一致?    仔细检查下功能定义和插件开发是否完全正确,是否和视频中一致,建议反复观看对比。3、messageID和mid什么区别?    messageID标记不同种类的消息,mid标记同一种消息,具体是哪一次下发的,设备回复命令响应时,带上mid,平台根据mid可以判断出具体是对哪一条命令的响应。4、设备如何激活? 在物联网平台中,激活就是将真实设备在平台进行注册后,和平台进行连接或者上报数据。更多请查看https://support.huaweicloud.com/qs-iothub/iot_05_0005.html#section3 5、NB-IoT使用电信物联卡,无法正常接入设备接入平台? 由于电信做了限制,电信卡只能连电信自己的平台,会出现接入设备接入平台失败或执行软固件升级失败等情况。 6、获取账号详细信息时后台出现错误,获取失败? 请确保华为云账号实名认证通过,并且账号不处于欠费状态。7、NB-IoT设备在线离线状态不实时更新? NB-IoT设备,大部分时间处于休眠状态,设备接入平台后,设备在超过49小时未上报数据,平台会将设备置为“离线”状态。建议根据是否获取到设备数据判断是否在线,而不是通过显示的设备状态。 MQTT设备通常处于长连接状态,因此可通过在线离线状态实时判断设备运行情况8、小熊派FAQ链接:https://bbs.huaweicloud.com/forum/thread-18757-1-1.htmlVSCode和IoT Link插件相关FAQQ: 安装完插件后底部没有Home按钮?A: 常见的原因是您使用了Linux/Mac版的VSCode,目前插件还不支持。Q: 安装完插件后底部没有Home按钮?A: 常见的原因是您使用了Linux/Mac版的VSCode,目前插件还不支持。Q: 新建的工程编译失败?A: 检查'用户设置'--'工具链'里的GCC工具目录是否配置正确,如果插件自动下载安装的GCC,路径为C:\Users\用户名\.iotlink\tools\gcc-arm-none-eabi\bin。若此处没有配置,则需要点击提示里的链接下载安装GCC,安装完成后填写GCC目录,一般为 C:\Program Files (x86)\GNU Tools Arm Embedded\9 2019-q4-major\binQ: 工程烧录失败?A: 失败可能的原因较多,可以做如下的尝试:检查开发板和电脑是否正确连接重新插拔USB线检查工程设置--'调试器'中的Adapter是否配置正确,OpenOCD类型的注意检查参数,JLink类型的检查设备名称是否和开发板匹配尝试重新安装STLink驱动Q: VSCode提示检测到#include错误,请更新includePath?A: 该错误为VSCode找不到gcc编译器的头文件,但并不影响实际的编译功能。如果想修复可打开当前工程的.vscode/c_cpp_properties.json,检查配置的includePath是否正确。一个参考的配置如下:"includePath": [  "C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/arm-none-eabi/include",  "C:/Program Files (x86)/GNU Tools Arm Embedded/9 2019-q4-major/lib/gcc/arm-none-eabi/9.2.1/include",  "${workspaceFolder}/**",  "${sdkPath}/**"],1、本次嵌入式开发环境搭建要做什么?    只需要做这两步:(1)下载VSCode(2)VSCode内安装IoT Link插件2、VSCode在哪儿下载?    下载地址:https://code.visualstudio.com/,下载Windows64位Stable版3、编译失败?    检查IoT Link设置中的工具链GCC目录,是否设置到bin路径。    C:\XXX\GNU Tools Arm Embedded\9 2019-q4-major\bin4、VSCode如何设置中文界面?    看这里:https://bbs.huaweicloud.com/blogs/1693425、JLink下载慢?    不需要下载JLink,本次小熊派使用的是STLink,安装IoT Link过程中自动安装STLink,无需其他操作。6、GCC下载不了?    不需要单独下载GCC,安装IoT Link插件会自动安装GCC。7、烧录失败?    (1)没有小熊派开发板的,不需要执行烧录操作,只做打卡用不到烧录操作。    (2)检查下调试器配置是否正确。    (3)检查下是否将小熊派开发板用USB链接到电脑上。    (4)重新插拔下USB线。    (5)如果之前安装过STLink驱动,可以试下重装STLink驱动,驱动在帖子附件下载。8、能不能使用之前的IoT Studio?    熟练者可以使用,但不方便根据视频学习,本次课程视频里用的都是VSCode和IoT Link插件,建议用VSCode。9、安装完IoT Link插件,看不到Home?    不支持Linux、Mac,不支持Windows 32位。10、IoT Link插件是否支持Linux?    当前IoT Link插件仅支持windows 64位。
  • [视频] 【云小课】云视频 第2课 教您使用VOD处理并加速OBS中的视频
    某用户:小课呀,最近我又碰到了个问题,这个不是最近要求远程上课吗?以前一直有使用华为云的OBS服务,所以想把制作的视频课程上传到我自个的OBS桶中,但我现在又想到把这些课程引用到网站的课程板块。视频课程的格式没有统一,有没办法把OBS桶里的视频转换的同一格式和分辨率的。此外,还能截取一些视频课程图片。还有,因为观看课程的量可能不会很小,有没办法保障流畅度呀?小课:等等,让我搜索下小课:有了,您可以用华为云视频点播服务(VOD),VOD提供了一个托管功能,可以直接通过VOD来处理OBS桶中的视频课程,此外,VOD自带CDN加速功能,可以把托管的视频课程预热到广泛的CDN节点中,如此,我们的同学就可以直接在最用户最近的CDN节点获取到视频课程。你再把课程播放地址引用到网页中,可以直接使用VOD提供的Web播放器,更便捷,播放体验也是棒棒的哦~!某用户:听起来好像还比较简单,怎么操作?可否指导下?小课:OK,安排~~~操作流程整个操作过程可以分为如下几步,其中配置转码模板或配置工作流您可以根据实际需求选择配置。步骤一:开通VOD在开始使用前,先需要开通VOD,VOD服务提供按需计费和套餐包,在本次场景中,可能会产生流量费、转码费等费用,所以建议在使用前购买套餐包,更优惠~~步骤二:配置转码模板或工作流(可选)转码模板:VOD提供了3个预置的系统转码模板,同时也支持根据实际需求自定义转码模板,支持转码成DASH、HLS和MP4格式。 视频转码模板(system_template_group):内置了常用的视频清晰度流畅、标清、高清、超清、2K、4K六种清晰度,该模板适用于对分辨率、码率、帧率等音视频具体参数不熟悉的用户。 转封装模板(original_template_group):只转换音视频的封装格式,不改变其它参数,支持将FLV和HLS格式转换为MP4格式,将MP3、MP4和FLV格式转换成HLS格式。该模板主要适用于只需改变格式,无分辨率和码率等更改需求的场景。视频自适应转码模板(adaptive_template_group):支持视频画质增强功能,支持编辑具体的分辨率和码率。该模板适用于有修复视频受损图像需求的场景。建议优先使用系统模板,若不满足需求,再具体配置自定义转码模板,具体配置指南请戳此处。工作流:VOD提供了工作流处理功能, 支持流程化地对视频进行转码、转封装、审核、截图、音频提取、剪切等操作。工作流中所有任务并发执行,所以能在一定程度上提高视频处理效率。具体配置指南戳此处。步骤三:配置托管配置增量音视频托管后,被托管的OBS桶中新增文件将被同步到VOD,您可以对桶中的音视频文件进行相关管理操作。将用于存储原始视频文件和处理后的视频文件的OBS桶托管给点播服务。a.  登录视频点播控制台。b.  在左侧导航栏选择“音视频托管 > 桶授权”,显示您当前已创建的OBS桶。c.  在对应的桶右侧,单击“授权”,完成OBS桶授权。授权如果,点播服务才可读写对应桶里的视频文件。存储原始文件的OBS桶和存储视频处理后输出文件的OBS桶都需要完成授权。 在左侧导航栏选择“音视频托管 > 增量托管”。单击“添加配置”,进入创建托管配置页面,配置托管参数。托管桶:存储视频课程的OBS桶,可以选择一个或多个。托管文件类型:视频课程的格式。音视频处理:选择步骤二配置的转码模板或工作流。输出存储位置:选择使用点播服务处理视频后的文件的存储位置。  单击“确定”,完成配置。步骤四:上传视频课程根据原始视频文件存储的位置,选择不同的上传方式,具体如下所示:若原始文件存储在本地,您可以在OBS控制台或者OBS Browser+上传。若原始文件存储在其它云服务厂商,您可以通过对象存储迁移服务将视频文件迁移到华为云OBS桶中。由于在上传视频前,配置了OBS增量托管,所以上传后,视频文件会同步在点播服务控制台显示,转码或经过工作流处理输出的文件也会存储在配置的OBS桶中。温馨提示:   华为云在“华北-北京一”、“华北-北京四”和“华东-上海2”提供了VOD服务,VOD不支持跨区域处理OBS桶中的视频文件,因此建议将视频课程存储在这三个区域的OBS桶中。步骤五:引用到网站原始视频同步到点播服务后,点播服务会为其生成原始视频播放地址。视频若做了转码处理,点播服务会生成转码播放地址。可以通过如下方式获取视频文件的播放地址,然后引用到网站中。 登录视频点播控制台。在左侧导航栏选择“音视频管理”,进入音视频管理页面。勾选需要导出的视频文件,单击“导出”,导出视频文件信息,其中包含原始文件和转码文件的播放地址。在网站中集成web播放器,将导出的播放地址引用到播放器中。【云小课】云视频第1课《如何将一场直播录制到VOD》:https://bbs.huaweicloud.com/forum/thread-34078-1-1.html
  • 5G 2B 生态套件--业务性能评估平台ViaSLA(单机版)
      目前各类应用对业务质量的要求差别主要在帧率,分辨率,E2E总时延的要求。在视频帧级,视频流级和基于视频协议的包级上对网络传输质量,业务质量进行映射分析,通过对影响业务质量的关键指标进行建模,从而得出业务质量的综合评分。ViaSLA监测平台介绍       ViaSLA(Vertical Industry Application Service Level Agreement)监测平台是Xlabs推出的对5G 2B 行业生态解决方案中业务性能评估平台,包括对实时视频的评估和控制业务的评估,通过被合作伙伴集成的方式,对现场实时业务进行监测,并对历史数据进行分析。SLA监测评估平台分为单机版ia和平台版。单机版主要面向单应用性能可视,能满足一线项目的轻量级部署,对现场业务问题进行界定。平台版能满足多应用场景,并能进行运营分析。本次主要介绍ViaSLA监测平台单机版。  比如在云直播上,找出能评估应用质量好坏的ia关键指标有码率,时延,丢包率,丢帧率,从业务层来看,主要有码率和丢帧率,从网络层的KPI指标来看,主要有时延和丢包率。通过ViaSLA监测平台对上述关键指标进行量化直观的呈现,并对系统的可靠性进行分析得出业务质量评分,如下图所示:       而通过建立业务SLA评估模型:基于帧可靠性的直播安全区模型;来预测当前直播是否会出现卡顿和花屏。 上图实时安全区统计曲线中,红线以下为业务安全区,红线以上为业务的非安全区意味着直播业务会出现视频卡顿和花屏。SLA工具套件使用步骤  1、环境准备     一台windowsPC,最好安装有chrome浏览器;Web服务器(Apache,Lighttpd,nginx或者其它) 2、安装及配置     ViaSLA工具套件主要内容分为offlineapp和public两个目录,里面是HTML+JavaScript进行数据处理,轻量渲染和核心业务质量算法代码。首先需要把offlineapp和public放在服务器的根目录下,以lighttpd为例,放在htdocs目录中 合作伙伴需要根据“SLA监测套件接口说明”开发标准格式的数据采集SDK。启动lighttpd服务,并在浏览器中输入http://localhost/offlineapp/view/page/monitor_runtime.html,点击查询。如下图所示主要有E2E编解码时延设置,业务安全区呈现,实时KPI监测,业务质量计算,关键值统计和CDF/PDF数据统计。足够对应用进行多个方面多个维度的分析。点击‘历史数据’进行查询,会对当前任务的历史KPI数据的统计分析呈现。如下图所示ViaSLA工具套件集成方法      该套件由华为Xlabs进行开发和评分算法的维护,将会在https://developer.huaweicloud.com/resource/5gplus.html中‘5G+软件栈’版块上进行发布以及使用集成说明。欢迎大家进行关注。  大家如果对于集成SLA监测套件感兴趣,或者有相关问题和想法的欢迎交流和咨询:华为X Labs实验室,接口人:jiezhiyuan@huawei.com
  • [交流吐槽] 下面是我的移植过程,但有些地方还是不太明确是不是这样干,请大佬解读,并给予提示。
    ### 华为Liteos和物联网设备侧sdk移植到stm32F03ZE霸道板子上 ### 啥是LIteos “开源免费”的实时操作系统,集成了 LwM2M、CoAP、mbed TLS、LwIP 全套 IoT 互联协议栈,且在 LwM2M 的基础上,提供了 AgentTiny 模块,用户只需关注自身的应用,而不必关注 LwM2M 实现细节,直接使用 AgentTiny 封装的接口即可简单快速实现与云平台安全可靠的连接。属于国产的实时操作系统(RTOS) ### 基于标准库移植 下载源码,[https://github.com/LiteOS/LiteOS](https://github.com/LiteOS/LiteOS)\ ### 往裸机工程添加 LiteOS 源码 打开 LiteOS 源码文件,可以看见里面有 8 个文件夹,下面先来了解一下主要的文件夹及其子文件夹的作用,然后将 LiteOS 源码的核心文件提取出来,添加到工程根目录下的文件夹中,因为工程只需要有用的源码文件,而不是整个 LiteOS 源码, ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929165628332-715049345.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929170103804-1587161396.png) ### 添加LiteOS 系统的一些配置文件,含原厂芯片驱动 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929171305177-1794625631.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929171354402-1649263409.png) >将 OS_CONFIG 文件夹下面的一些配置文件拷贝到刚刚提取的 LiteOS 核心文件夹下面,等下在移植工程的时候大家是需要对这个文件夹下的某些文件进行修改,以适配不同的工程配置,并且可以通过修改这个文件夹下的内核配置头文件来裁剪 LiteOS 的功能。 添加 CMSIS的库,可以打开工程在mdk里面添加,也可以新建\Libraries\CMSIS\include,include文件夹从 keil 安装目录下C:\Keil_v5\ARM\Pack\ARM\CMSIS\5.3.0\CMSIS\Include,将其包含进来可以避免其它电脑 在移植过程中没有相关头文件而引起的编译错误 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929173748976-1019510793.png) ### 打开工程,添加 LiteOS 核心源码到工程组文件夹 需 要 在 开 发 环 境 里 面 新 建 LiteOS/cmsis 、 LiteOS/kernel 、 LiteOS/arch 和LiteOS/config 四个文件分组,其中 LiteOS/cmsis 用于存放 LiteOS 文件夹下 cmsis 文件夹的内容,LiteOS/kernel 用于存放 LiteOS 文件夹下 kernel 文件夹的内容,LiteOS/arch 用于存放LiteOS 文件夹下 arch 文件夹的内容。而 LiteOS/config 用于存放 LiteOS 文件夹下的OS_CONFIG 文件夹的内容。 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929180603458-355636054.png) ### 指定 LiteOS 头文件的路径 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929181731297-1104360672.png) ### 修改liteos/config文件下的target_config.h,修改自己板子对应的头文件 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190929211228476-1531035796.png) 修改LOSCFG_PLATFORM_HWI,如果是YES代表接管中断,否则不被接管 非接管中断版本的 target_config.h 文件就需要在 LiteOS 提供的 demo 中移植过来 , 比 如 : LiteOS\targets\STM32F103RB_NUCLEO\OS_CONFIG,启动文件不变,保留stm32f10_it.c但需要注释 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数 接管中断版本的target_config.h文件就需要从 LiteOS 官方写的工程文件夹下面拷贝过来的,路径为\LiteOS\targets\ STM32F429IGTx_FIRE\OS_CONFIG ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930100928785-2023022556.png) #### 启动文件内容修改(接管中断,非接管不用管) 因为 LiteOS 接管中断版本的中断向量表是由系统管理的,所以裸机的启动文件是要不得的,必须替换掉, ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104151372-1925477442.png) ### 分散加载文件修改(接管中断方式,非接管不用管) 在 LiteOS 中,中断向量表被放在运行内存里,避免影响分配内存,那么就需要将代码分散加载到不同的区域中,华为官方提供的分散加载文件就在每个具体的工程文件目录下,如 : LiteOS \targets\ STM32F429IGTx_FIRE\MDK-ARM 文 件 夹 下 的 STM32F429IGTx-LiteOS.sct 文件。首先将它拷贝到我们自己的工程中去,并且将其名字修改为“Fire-F103-LiteOS.sct”,放在工程的 user 文件夹中,然后在工程中把 “Fire-F103-LiteOS.sct”文件到工程配置中 ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104334018-556501291.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104507645-76129025.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191008104633993-793787697.png) ### 修改中断相关文件(非接管中断,接管中断不用管) 由于 LiteOS 已经处理好 PendSV 与 SysTick 中断了,就不需要用户自己处理,所以要在中断相关的源文件(stm32fxxx_it.c)中注释(删除)掉 void PendSV_Handler(void)与 SysTick_Handler(void)这两个函数。 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930101858775-1345258687.png) ### 更新core_m3.h版本到4.3,复制粘住就可以了 打开keil安装目录,把版本新的cmsis的include替换工程下的cmsis的include,防止你的工程的cmsis的include版本低于4,同时 ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930152043966-1154931939.png) ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930152212679-60855898.png) ### 修改工程配置 在 LiteOS 中,需要 C99 标准的支持,并且忽略相关的警告,选择“target”→ “C/C++”,在“Misc Controls”选项中输入--diag_suppress=1,47,177,186,223,1295,意思是忽略这些编号的警号, ![](https://img2018.cnblogs.com/blog/1252747/201909/1252747-20190930102943835-211837719.png) 经初步完成工程的移植了,LiteOS 的接管中断比非接管中断方式要麻烦很多,所以推荐在 cortex-m 系列处理器中采用非接管中断方式移植工程, ### 在main文件添加led任务 ``` #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "stm32f10x.h" #include "los_sys.h" #include "los_task.ph" UINT32 LED_Task_Handle; static UINT32 AppTaskCreate(void); static UINT32 Creat_LED_Task(void); static void LED_Task(void) int main(void) { UINT32 uwRet = LOS_OK; delay_init(); LED_Init(); /* LiteOS Äں˳õʼ»¯ */ uwRet = LOS_KernelInit(); if (uwRet != LOS_OK) { printf("LiteOS ºËÐijõʼ»¯Ê§°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet); return LOS_NOK; } uwRet = AppTaskCreate(); if (uwRet != LOS_OK) { printf("AppTaskCreate´´½¨ÈÎÎñʧ°Ü£¡Ê§°Ü´úÂë0x%X\n",uwRet); return LOS_NOK; } LOS_Start(); while(1); } //其余见下载附件 ``` ### 运行结果 ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191007210722571-1942518665.png) ![](https://img2018.cnblogs.com/blog/1252747/201910/1252747-20191007210800003-1299511617.png) 工程见网盘: ``` 非接管中断: 链接:https://pan.baidu.com/s/1UQ2L6nZfoqFaa3DL2l20TA 提取码:ikrv 复制这段内容后打开百度网盘手机App,操作更方便哦 接管中断: 链接:https://pan.baidu.com/s/1UbFJy7wRztPnQWQhLrjavg 提取码:95pf 复制这段内容后打开百度网盘手机App,操作更方便哦 ```
  • [热门活动] 【华为云•实践有礼】 挑战15分钟完成人脸识别应用开发!!!
    本期获奖用户名单如下:建赟蓝书签chendaiweiecstaticlianzai喧默buyifengxiaode888情殇贼笨_pr0d1gy以上用户将会获得《刷脸背后》书籍一本,请获奖者在7月26日前将联系方式(姓名、电话、电子邮箱、收货地址) 私信给我哈!o(* ̄︶ ̄*)o谢谢如果逾期没有提供收货地址,将视为自动放弃奖励哦~~~华为云社区实践有礼活动开始啦~近年来人脸识别凭借其自然性、便利性、友好性等特点,已经成为了人工智能领域中很火的一项技术, 在实名认证、图像编辑等功能中都有其身影。本实践将介绍如何使用华为云DevCloud基于Gradle工具,完成一个Android人脸识别App开发。本实践为初级实践,主要包含以下知识点 :● Gradle构建的生命周期                   ● Gradle功能的目录结构● build.gradle配置文件● Android API:绘图 (android.graphics包)● Android API:人脸检测(Face Detect)操作步骤1.了解Gradle2.执行编译任务3.下载构建包实践提供操作指导,按照指导步骤完成人脸识别应用开发,并按要求将截图发布到本帖子下方,有机会获得《刷脸背后》书籍1本活动时间:2019年6月14日-2019年7月14日活动参与步骤:1.  注册华为云账号,通过实名认证(已有华为云账号可忽略此步)2.  点击实践链接,接收作业,按照操作指导完成实践。3. 实践结束后将结果截图发送至本帖(包含用户名)示例如下:                                              4.  活动结束后,在所有盖楼的用户中抽取获奖楼层,获奖楼层=总楼层*中奖百分比,中奖百分比为5%、15%、25%、35%、45%、55%、65%、75%、85%、95%。例如:活动结束后总楼层为500,500*5%=25,即第25楼获奖,其他获奖楼层同理可得。如出现小数点,则四舍五入,例如:活动结束后总楼层为530,530*5%=26.5,即第27楼获奖。无效楼层不参与中奖,做顺延处理,例如:抽取获奖楼层为第5楼,但5楼为无效楼层,即顺延至第6楼获奖,若依然为无效楼层,则继续顺延,以此类推,奖品为《刷脸背后》书籍1本
  • [热门活动] 使用IntelliJ IDEA和Maven创建Java项目入门
    1. Maven简介Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。相对于传统的项目,Maven 下管理和构建的项目真的非常好用和简单,所以这里也强调下,尽量使用此类工具进行项目构建, 它可以管理项目的整个生命周期。(1)下载Maven 官方地址:http://maven.apache.org/download.cgi (2)将文件解压到某个目录  (3)配置maven环境变量    ●Maven环境测试打开命令行窗口,输入mvn -v,如果有maven 版本信息输出则证明配置成功,否则请查看自己配置路径等是否正确。注意:安装maven前请确保已安装JDK并成功配置其环境变量。显示版本信息的命令:mvn -v 在C:\Users\Administrator下创建.m2目录的命令:mvn help:system 执行该命令后将在C:\Users\Administrator下创建.m2目录。该目录将作为本次仓库的根目录,在该目录下可以放置配置文件和repository。  (4)将maven安装目录下的conf/settings.xml文件复制到C:\Users\Administrator\.m2目录下。使用国内华为云的Maven公共仓库,下载依赖构建包速度很快,否则,maven项目默认从国外的中央仓库下载。<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  <mirrors>    <mirror>      <id>huaweicloud</id>      <mirrorOf>*,!HuaweiCloudSDK</mirrorOf>      <url>https://repo.huaweicloud.com/repository/maven/</url>    </mirror>  </mirrors><profiles>    <profile>      <id>MyProfile</id>      <repositories>        <repository>          <id>HuaweiCloudSDK</id>          <url>https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/</url>          <releases>            <enabled>true</enabled>          </releases>          <snapshots>            <enabled>false</enabled>          </snapshots>        </repository>      </repositories>    </profile></settings>2、在IntelliJ IDEA中配置maven(1)打开-File-Settings (2)Importing保留其默认值1)如下图标注2所示,Import Maven projects automatically 表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件,进行项目变动设置。2)如下图标注3 所示,在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果我们需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA 支持直接从公网下载源码和文档的。3)下图标注 4所示,可以设置导入的 VM 参数。一般这个都不需要主动改,除非项目真的导入太慢了我们再增大此参数。  3、在IntelliJ IDEA中创建Java project(1)File -> New -> Project... (2)创建HelloWorld程序 (3)设置项目名称和指定项目保存的位置(工作区目录) (4)环境搭建成功点击右上角工具栏中的运行按钮(绿色三角箭头),运行编译  创建结束后,项目代码结构如下: 4、在IntelliJ IDEA中基于Maven创建 Java 项目(1)File -> New -> Project... (2)设置GroupId和ArtifactId属性值 GroupId:是一个工程在全局中的唯一标识符,一般地,它就是工程名,使用一个完全的包名将一个工程识别出来。Artifact:是工程将要产生或需要使用的文件,可以是.jar,.war,源文件等。每个Artifact由GroupId和ArtifactId组合进行唯一识别。(3)指定Maven的安装目录  (4)指定项目保存的位置(工作区目录) (5)点击Finish后,项目代码结构如下: (6)选择根目录-> src-> main-> java文件夹,右击选择new->Java class,新建一个名称为test的java类文件: (7)运行测试程序,在编辑区右击选择Run ‘test.main()’,在控制台中能看到“hello world”说明项目创建成功:    
  • [交流分享] 物联网小课堂之NB-IoT无线通信中的发射功率和接收灵敏度
    大家好,欢迎来到本期物联网技术小课堂,今天我们将给大家就蜂窝无线通信中发射功率和接收灵敏度的概念做详细讲解,若有不对!还请各位大佬及时批评指正!上图就是蜂窝通信网络的基本结构,也就是我们日常生活中使用的手机网络结构。在切入正题之前,我们先来看下目前的几种重要的无线通信技术的特点:先看LoRa,美国semtech公司创建的低功耗局域网无线标准。2015年成立的LoRa联盟在全球积极推动LoRa技术的商用。国内**通讯发起成立中国LoRa应用联盟(CLAA)。通信距离城镇2-5Km,郊区10Km左右;通信速率十到百Kbps左右;ISM工作频段 包括433、868、915 MH等。因其商用和成熟度限制,应用规模较小,现集中于企业级的私网应用。再看Sigfox,实际是Sigfox建立的一套自上而下,从芯片、终端、网络、后台数据和云服务的生态。Sigfox无线接入网利用超窄带UNB技术,实现小数据低功耗数据传输。ISM工作频段,农村地区传输距离约30-50km,城市3-10km。好了!闲话到此为止!咳!咳!咳!没抓住重点有点跑偏了,其实大陆地区还是要看NB-IoT的戏台。(样品领取微信公众号:OneMO2019)言归正传,上面表格中提到的LoRa、SigFox、NB-IoT以及eMTC都是通过电磁波进行信息传输。电磁波能量的单位是W,dBm。发射功率,就是我们喊话的时候嗓门有多大。嗓门大了声音传的就远,嗓门小声音传的就近。实际就是指发射机的发出电磁波的能量。接收灵敏度呢,就是你耳朵能识别到的最小声音。发射机发送的电磁波经过空间损耗后,达到接收机,接收机能够识别到的、最低的电磁波能量。通常来说2G物联网模组的接收灵敏度在-108dBm左右。负的越多,灵敏度也就越高,有效距离也就越远。接收灵敏度采用dBm单位而不采用W作为单位,是因为其具体数值太小。它们两者之间关系如下:按照这个公式,NB-IoT模组的接收灵敏度-130dBm,可以换算成毫瓦值为:0.0000000000001mW。0太多,有点晕,容我喝口水压压惊。。。现在设想,我们在吵杂的马路上,此时讲话对方听不见,最简单的方式就提高声音;此时吵杂的环境就相当于外部干扰,外部干扰的大小直接影响接收机的接收效果。此时可以提高发射功率(加大嗓门),也可以提高接收灵敏度(两人距离近一点)。也就是说这两个指标对于“通信”来说都极其重要。无线通信模组是物联网通信设备的核心器件,帮助物联网终端实现数据的空中传输。即上文提到的发射机或接收机的作用。发射功率和接受灵敏度对模组性能的两个重要指标,下面以中移物联网NB无线通信模组M5311为例:(热点技术讨论QQ群:123242102)M5311模组RF输出功率22.5dBm,换算成W约为178mW。这是个什么概念?某2G模组在900M Class 4条件下2W输出功率。一眼见高低。NB-IoT如此低的功耗,接收灵敏度如何?在上面其实已经啰嗦过了,传统2G终端接收灵敏度在-108dBm左右,换算为瓦特值为1.6*10-11mW,而NB-IoT模组呢,以M5311为例在-130dBm接收灵敏度情况下,约为1*10-13mW。好了,今天的课程就给各位分享到这里,下次我们再给大家分享其他小知识。感谢各位大佬收听。下期在会!小弟我初来此地,还望各位大佬多多包涵,如有不对请及时指正!文章中含有小彩蛋,各位大佬可以仔细看看哦!
  • [问题求助] 物联网小课堂之NB-IoT无线通信中的发射功率和接收灵敏度
    大家好,欢迎来到本期物联网技术小课堂,今天我们将给大家就蜂窝无线通信中发射功率和接收灵敏度的概念做详细讲解,若有不对!还请各位大佬及时批评指正!上图就是蜂窝通信网络的基本结构,也就是我们日常生活中使用的手机网络结构。在切入正题之前,我们先来看下目前的几种重要的无线通信技术的特点:先看LoRa,美国semtech公司创建的低功耗局域网无线标准。2015年成立的LoRa联盟在全球积极推动LoRa技术的商用。国内**通讯发起成立中国LoRa应用联盟(CLAA)。通信距离城镇2-5Km,郊区10Km左右;通信速率十到百Kbps左右;ISM工作频段 包括433、868、915 MH等。因其商用和成熟度限制,应用规模较小,现集中于企业级的私网应用。再看Sigfox,实际是Sigfox建立的一套自上而下,从芯片、终端、网络、后台数据和云服务的生态。Sigfox无线接入网利用超窄带UNB技术,实现小数据低功耗数据传输。ISM工作频段,农村地区传输距离约30-50km,城市3-10km。好了!闲话到此为止!咳!咳!咳!没抓住重点有点跑偏了,其实大陆地区还是要看NB-IoT的戏台。(样品领取微信公众号:OneMO2019)言归正传,上面表格中提到的LoRa、SigFox、NB-IoT以及eMTC都是通过电磁波进行信息传输。电磁波能量的单位是W,dBm。发射功率,就是我们喊话的时候嗓门有多大。嗓门大了声音传的就远,嗓门小声音传的就近。实际就是指发射机的发出电磁波的能量。接收灵敏度呢,就是你耳朵能识别到的最小声音。发射机发送的电磁波经过空间损耗后,达到接收机,接收机能够识别到的、最低的电磁波能量。通常来说2G物联网模组的接收灵敏度在-108dBm左右。负的越多,灵敏度也就越高,有效距离也就越远。接收灵敏度采用dBm单位而不采用W作为单位,是因为其具体数值太小。它们两者之间关系如下:按照这个公式,NB-IoT模组的接收灵敏度-130dBm,可以换算成毫瓦值为:0.0000000000001mW。0太多,有点晕,容我喝口水压压惊。。。现在设想,我们在吵杂的马路上,此时讲话对方听不见,最简单的方式就提高声音;此时吵杂的环境就相当于外部干扰,外部干扰的大小直接影响接收机的接收效果。此时可以提高发射功率(加大嗓门),也可以提高接收灵敏度(两人距离近一点)。也就是说这两个指标对于“通信”来说都极其重要。无线通信模组是物联网通信设备的核心器件,帮助物联网终端实现数据的空中传输。即上文提到的发射机或接收机的作用。发射功率和接受灵敏度对模组性能的两个重要指标,下面以中移物联网NB无线通信模组M5311为例:(热点技术讨论QQ群:123242102)M5311模组RF输出功率22.5dBm,换算成W约为178mW。这是个什么概念?某2G模组在900M Class 4条件下2W输出功率。一眼见高低。NB-IoT如此低的功耗,接收灵敏度如何?在上面其实已经啰嗦过了,传统2G终端接收灵敏度在-108dBm左右,换算为瓦特值为1.6*10-11mW,而NB-IoT模组呢,以M5311为例在-130dBm接收灵敏度情况下,约为1*10-13mW。好了,今天的课程就给各位分享到这里,下次我们再给大家分享其他小知识。感谢各位大佬收听。下期在会!小弟我初来此地,还望各位大佬多多包涵,如有不对请及时指正!文章中含有小彩蛋,各位大佬可以仔细看看哦!
  • [专题汇总] 【华为物联网开发从入门到精通连载1】第六课 安装及配置SoftRadio【转】
    上节课,我们一起学习了注册设备,这节课我们继续按照基于SoftRadio模拟器进行OceanConnect平台对接整体流程,学习如何安装及配置SoftRadio。希望通过本节课程,了解华为SoftRadio软件以及如何安装及配置SoftRadio。Device以及APP应用开发与调试过程中,Open Lab是最重要的锚点,连接厂家device和海思芯片/模组接入NB-IoT网络,同时连接IoT平台以及APP server。由于NB-IoT的标准协议在16年6月底冻结,NB-IoT的芯片/模组还没有规模生产,同时华为Open Lab资源紧张,给产业链合作伙伴的device以及APP应用的开发调测增加了成本,同时导致调试效率低下。在此背景下,考虑用一个软件版本,来代替NB-IoT Chipset/Module,同时屏蔽NB-IoT Air Interface,提供一条通路直接到IoT平台,合作伙伴在自己家里就可以远程连接到华为IoT平台,进行终端和APP应用的开发以及端到端调测,实现offsite模式,不受时间和空间以及硬件限制,这就是SoftRadio。SoftRadio是一款PC软件,在测试场景下,合伙伙伴在不需要芯片/模组、NB-IoT基站和核心网的情况下,借助PC端的SoftRadio软件,任何时候都可通过互联网连接到IoT平台和APP应用,用于NB-IoT设备到APP Server端到端的基本功能调试,大大提升调试效率,加速Usecase业务快速上市。更多内容,烦请点击下方图片,学习如何安装及配置SoftRadio。学习完第六课的童鞋,恭喜你,你离物联网大咖又近了一步。第六课结束后,我们成功的学习了如何安装及配置SoftRadio,下节课我们学习如何使用SoftRadio进行数据上报。【已经上线】第七课  使用SoftRadio进行数据上报
  • 使用DevCloud Maven私有依赖库,如何批量迁移本地组件和维护?
     DevCloud Maven私有依赖库批量迁移和维护工具介绍                                                                                                                                                  使用场景: 1.当你需要使用华为云DevCloud中的maven私有依赖库服务时,迁移神器可以帮助你将原来自己本地私服中的私有组件批量迁移到云上。2.当你需要对DevCloud上maven私有依赖库中的组件进行批量更新维护时,该工具也能提供帮助。必要准备条件:安装JDK1.7+以上。 JDK下载地址:https://repo.huaweicloud.com/java/    使用方法:1.登录华为云并进入DevCloud服务,从左上角目录菜单中进入私有依赖库服务,如下图:2.在Maven私有依赖库中选择"更多操作”>>“批量迁移和维护”操作下载工具包,如下图:3.双击打开工具包,展示如下页面:                                  说明:1)选择本地目录上传时,如果目录中只有jar包而没有匹配的坐标说明文件pom.xml将无法上传成功。2)同一目录下的jar包必须要和其对应的POM文件同名,否则会提示查询失败。4.在DevCloud Maven私有依赖库页面,通过选择“更多操作”>>“仓库地址”可以获取上诉工具需要填入的maven私有依赖库仓库地址,复制后填入即可。5.在DevCloud Maven私有依赖库页面,通过选择“立即使用”后弹出的提示框中可以下载maven setting.xml配置文件,setting.xml文件中<server></server>标签中的username和password的内容就是工具需要的私有依赖库的账号和密码。如下图最后,如您在使用中有任何疑问或建议,可直接在帖子中回帖或通过DevCloud页面中右上角区域的“意见反馈”找到我们获取帮助,我们将会及时响应。祝使用开心!
  • [技术干货] 【动手体验】使用Java SDK管理华为云对象存储OBS
    实验目的通过使用Java+SDK管理华为云对象存储OBS,了解对象存储的基本原理和操作,熟悉SDK的使用方法,为后续需要开发复杂功能提供入门准备。准备动作1、电脑上安装Java开发环境+Eclipse,可参考网上的教程:Java安装教程:http://www.runoob.com/java/java-environment-setup.html#win-installEclipse+汉化教程:https://blog.csdn.net/weixin_41848531/article/details/817364142、下载华为云OBS SDK,笔者编辑本文时,最小版本是OBS Java SDK 3.0.0 ,SDK安装过程如下:a.下载OBS Java SDK开发包。b. 在Eclipse中创建一个Java工程b. 将解压后的文件:esdk-obs-java-<versionId>.jar 以及third_party文件夹下所有的JAR包拷贝到您的项目中。c. 在Eclipse中选择您的工程,右击选择 Properties > Java Build Path > Add JARs。3、下载OBS的访问密钥key文件。a. 登陆华为云网站(www.huaweicloud.com),进入OBS控制台,下载访问密钥。密钥key是一个xxx.csv的表格文件,其中Access Key Id对应OBS API中的ak,Secret Access Key对应OBS API中的sk。密钥key的作用:通过网站访问对象存储OBS,需要先通过账号密码登陆网站。通过代码访问OBS,如果也需要输入账号密码,就会使得的代码变复杂。因此密钥key可以认为是经过加密的账号和密码,代码中可直接使用。 密钥key文件只在生成的时候提供下载,因此下载后需妥善保存。4、打开JDK包中的开发指南《对象存储Java SDK开发指南.doc》内含丰富的说明。操作步骤 1、在eclipse工程中左侧工具栏中找到自动生成的xxx.java,编写一个java类,输出欢迎语句。点击eclispe工具栏上的 调试或运行按钮,在结果中可看到欢迎语句。package main; import java.io.*;import java.io.IOException; public class main {public static void main(String[] args) {System.out.println("welcome to china!!!");}}2、创建一个OBS客户端。电脑是访问OBS的客户端,华为云的OBS是服务器。2.1 公有云的数据中心是分区域的,每个OBS访问地址都是通过“后缀endpoint”来指定数据是存放在哪个区域的数据中心的。“后缀endpoint”的查询地址:https://developer.huaweicloud.com/endpoint3.3 参考《对象存储服务Java SDK开发指南.doc》分别编辑创建OBS客户端、创建桶、上传对象和查看所有对象,具体代码参考后续完整代码。3.4 点击eclipse的调试或运行按钮,在控制台中显示创建桶成功,显示所有对象成功。控制台中提示日志插件和性能统计错误,不影响功能,可忽略不计。3.5 在华为云OBS 对象存储控制台中,可看到新增生成的桶和上传的文件。完整代码package main; import java.io.*;import java.io.IOException; import com.obs.services.ObsClient;import com.obs.services.exception.Ob**ception;import com.obs.services.model.*;  public class main {/* 初始化OBS客户端所需的参数 */private static final String endPoint     = "https://your endpoint";private static final String ak           = "your ak";private static final String sk           = "your sk";private static final String g_bucketName = "hello-obs-demo";private static final String g_bucketLoc  = "cn-south-1"; public static void main(String[] args) {System.out.println("welcome to china!!!");/* 创建OBS客户端 */ObsClient obsClient = new ObsClient(ak,sk,endPoint);ObsBucket obsBucket;try {/* 创建一个桶 */obsBucket = createBucket(obsClient);/* 从本地笔记本上传文件到桶里面 */uploadFile(obsClient, obsBucket);/* 列举对象(文件)的信息 */listFile(obsClient,obsBucket);/* 关闭客户端 */}catch (Ob**ception e){System.out.println("main 函数出现错误!!!");}/* 关闭obs客户端  */closeObsClient(obsClient);}/* 创建一个桶 */private static ObsBucket createBucket(ObsClient obsClient) throws Ob**ception{ObsBucket obsBucket = new ObsBucket(g_bucketName,g_bucketLoc);        obsClient.createBucket(obsBucket);        System.out.println("Create bucket:" + g_bucketName + " successfully!");        return obsBucket;}/* 创建一个对象(文件) */private static void uploadFile(ObsClient obsClient, ObsBucket obsBucket) throws Ob**ception{File newfile = new File("C:\\Users\\xiaoniu\\Desktop\\temp\\hello.txt");obsClient.putObject(obsBucket.getBucketName(), "folder/", newfile);obsClient.putObject(obsBucket.getBucketName(), "hello1", newfile);obsClient.putObject(obsBucket.getBucketName(), "hello2", newfile);}/* 列举对象(文件)的信息 */private static void listFile(ObsClient obsClient, ObsBucket obsBucket) throws Ob**ception{System.out.println("开始测试桶里面的对象信息");ObjectListing objList = obsClient.listObjects(obsBucket.getBucketName());for (ObsObject obj : objList.getObjects()){System.out.println("--:"+obj.getObjectKey()+" (size=" + obj.getMetadata().getContentLength()+")");}}/* 关闭客户端 */private static void closeObsClient(ObsClient obsClient) {try{obsClient.close();}catch (IOException e){System.out.println("close obs client error.");}}}
  • [行业前沿] 【ServiceComb最全 FAQ】 42个常见问题 大集锦1
    本帖最后由 橘色祥云楼楼主 于 2017-11-13 17:23 编辑Q: ServiceComb和SpringCloud是什么关系,具体的应用场景是什么?A: ServiceComb是华为基于内部多个大型IT系统实践提炼出来的一套微服务开发框架,在开发态基于最佳实践封装了一套微服务运行模型,这些能力对用户完全透明,可以通过配置引入功能和对其进行调整。在运维阶段充分考虑了微服务运维,提供了丰富的监控指标和动态治理能力。 B: ServiceComb的这套能力可以作为一个单独的开发框架,在需要轻量级微服务解决方案的的场景中单独使用,也可以建立在SpringCloud上,与SpringCloud提供的其他组件一起工作,在重量级场景中和SpringCloud一起产生 “1+1大于2”的效果。Q: 用IntelliJ的免费版开发,有什么问题?A: 没有问题,使用IntelliJ 开发,可参考 Setup Developer Environment 进行相应的环境配置。Q: 使用Java-Chassis这个框架时有什么需要注意的地方?A: 使用Java-Chassis有以下这些限制: (1) 0.3.0-SNAPS**之前的版本不支持类似@GetMapping这样的标注。 (2) 所用到的HTTP请求方法一样时,如GET,则方法名不能重载。这是由于生成契约时方法名会作为其Operation ID,所以要保证其唯一性。 (3) 方法和类必须是public的。Q: 使用spring-boot-starter-provider这个依赖时,在application.yml文件中声明的spring.main.web-application属性并没有生效?A: 使用starter-provider这个依赖时,如果用到了servlet这种方式时,需要在application.properties这个文件引入spring.main.web-application=true这样的属性或者在application.yml文件中声明,但是此时需要新建一个application.properties的文件,其内容可以为空。Q: 网关依赖的jar和其他微服务的一样吗? <groupId>io.servicecomb</groupId> <artifactId>spring-boot-starter-provider</artifactId> CopyA: 网关除了要依赖spring-boot-starter-provider之外还要依赖spring-boot-starter-discovery,可以参考LinuxCon-Beijing-Workshop中manager的实现。Q: 网关需要像其他微服务一样配置assembly吗?其中的/maven/gateway这个路径是docker maven plugin默认的吗?A: 需要,由于项目现在使用的是spring-boot的打包方式,docker maven plugin也是依赖打包生成的文件来生成docker镜像的。/maven这个路径是docker maven plugin指定的,而gateway这个路径是在assembly中指定的。Q: 服务接口的返回类型可以是任意类型吗?还是必须是responseEntity?A: 可以,具体可以参考java-chassis的integration-test的实现。Q: 微服务启动后,无法正确调用接口,使用的代码为: @RestController @RestSchema(schemaId = "worker") public class WorkerController { @RequestMapping(value="/count", method=RequestMethod.GET) public int getWorkerNumbers() { ... } } CopyA: 在没有指明根路径的情况下,默认会使用类名作为其根路径,即上述代码中可访问的路径应为/WorkerController/count。如果想要实现/count这样的访问,则要指明根路径: @RequestMapping(value = "/") public class WorkerController {} CopyQ: 如果没有指定RequestMapping这个标注的value时,默认的基本路径是什么?A: 假设你的Controller类名为HelloController,那么基本路径就是/HelloController。Q: 在eclipse下修改了microservice.yaml配置文件下的端口号,启动程序后,端口号没生效?A: 需要单独导入sample项目,如果导入整个ServiceComb-Java-Chassis项目,由于sample目录不在ServiceComb-Java-Chassis模块中,IDE不会对sample进行编译,eclipse下并没有提示错误信息,IDEA下会有提示信息。因此eclipse启动sample的demo会发现修改了端口没有生效。Q: 如何自定义某个Java方法对应的REST接口里的HTTP Status Code?A: 对于正常的返回值,可以通过SwaggerAnnotation实现,例如: @ApiResponse(code = 300, response = String.class, message = "") public int test(int x) { return 100; } Copy对于异常的返回值,可以通过抛出自定义的InvocationException实现,例如:、 public String testException(int code) { String strCode = String.valueOf(code); switch (code) { case 200: return strCode; case 456: throw new InvocationException(code, strCode, strCode + " error"); case 556: throw new InvocationException(code, strCode, Arrays.asList(strCode + " error")); case 557: throw new InvocationException(code, strCode, Arrays.asList(Arrays.asList(strCode + " error"))); default: break; } return "not expected"; } CopyQ: 如何定制自己微服务的日志配置?A: ServiceComb不绑定日志器,只是使用了slf4j,用户可以自由选择log4j/log4j2/logback等等。ServiceComb提供了一个log4j的扩展,在标准log4j的基础上,支持log4j的properties文件的增量配置。默认以规则:”classpath*:config/log4j.properties”加载配置文件实际会搜索出classpath中所有的config/log4j.properties和config/log4j.*.properties, 从搜索出的文件中切出\*的部分,进行alpha排序,然后按顺序加载,最后合成的文件作为log4j的配置文件。如果要使用ServiceComb的log4j扩展,则需要调用Log4jUtils.init,否则完全按标准的日志器的规则使用。Q: 当服务配置了多个transport的时候,在运行时是怎么选择使用哪个transport的?A:ServiceComb的consumer、transport、handler、producer之间是解耦的,各功能之间通过契约定义联合在一起工作的,即: consumer使用透明rpc,还是springmvc开发与使用highway,还是RESTful在网络上传输没有关系与producer是使用透明rpc,还是jaxrs,或者是springmvc开发,也没有关系handler也不感知,业务开发方式以及传输方式consumer访问producer,在运行时的transport选择上,总规则为: consumer的transport与producer的endpoint取交集,如果交集后,还有多个transport可选择,则轮流使用分解开来,存在以下场景:当一个微服务producer同时开放了highway以及RESTful的endpointconsumer进程中只部署了highway transport jar,则只会访问producer的highway endpointconsumer进程中只部署了RESTful transport jar,则只会访问producer的RESTful endpointconsumer进程中,同时部署了highway和RESTful transport jar,则会轮流访问producer的highway、RESTful endpoint如果,此时consumer想固定使用某个transport访问producer,可以在consumer进程的microservice.yaml中配置,指定transport的名称: servicecomb: references: <service_name>: transport: highwayCopy当一个微服务producer只开放了highway的endpointconsumer进程只部署了highway transport jar,则正常使用highway访问consumer进程只部署了RESTful transport jar,则无法访问consumer进程同时部署了highway和RESTful transport jar,则正常使用highway访问当一个微服务producer只开放了RESTful的endpointconsumer进程只部署了highway transport jar,则无法访问consumer进程只部署了RESTful transport jar,则正常使用RESTful访问consumer进程同时部署了highway和RESTful transport jar,则正常使用RESTful访问
总条数:162 到第
上滑加载中