-
华为云代码托管服务产品体验及评测 by 陈晓—成都—java开发 目前在市面上支持Git代码托管的平台比较多,而且都是免费的,比如几款比较火的Git代码托管平台,还有 gitee(码云)等. 我的习惯是开源代码托管在github,私有代码托管在bitbucket,但是最近因为bitbucket网络有点慢,所以了解下其他的托管平台,下面就来做下比较。 1.GitHub就不介绍了,基本上大家都会用只支持开源项目 2.Bibucket,一句话非常强大,但是国内访问,会因为网络受限,下图是Bitbucket的服务非常强大,支持私有和开源项目!我们看下免费的部分,团队上限是5个人,私有项目和公有项目都没有上线,这真是太强大了,对小团队来说已经足够了! 3.oschina,服务见下图 对比oschina和github的优势 免费版也很强大,支持私有和开源项目,只是在代码容量方面有所限制。但是为了省钱我肯定优先选择Github,忠实粉丝一枚 4.阿里云同样免费版,也很强大,支持私有和开源项目。支持团队合作,不支持代码质量分析,这块目前还没有发现华为云代码托管平台支持, 既然要开发就需要管理代码,一般的小项目托管在网上公共的代码仓库比较划算,不用花太大的维护成本,除了SourceForge和Google Code外其实还有很多好的代码托管站点,不管你是使用CVS、SVN还是Mercurial(hg)、Git,都可以在网上找到相应的支持站点。5.码市受限比较多,但是团队服务和社区,还提供了在线IDE编程(当然重型编程工作还是不能做的,起码可以做一些在线的修修改改工作还是不错的),另外它还提供了一个码市,你可以在上面要外包,也可以发布外包。汇总一下,github是刚需,bitbucket功能最强大但网络受限,oschina最适合国内项目托管,阿里云刚起步还待观察,码市特别适合app项目。下图是在博客上得到目前主流代码托管平台的数据.而通过这段时间的华为云代码托管体验我感觉华为云代码托管的整体界面风格还是十分的简洁与醒目,我比较排斥系统界面过度的冗余: 通过SSH连接华为云仓库,设置SSH密钥, 如果之前设置过github或gitee,那么系统是存在密钥的,密钥路径为~/.ssh/id_rsa.pub 但是最近发生的代码泄露事件也是给我们使用者与开发者敲响了警钟,希望华为云在代码托管安全性方面多加投入开发,保障客户的利益才能获得更多客户的信奈1. 操作体验:在各种使用场景中操作是否流畅,是否出现逻辑上的中断?我在整个体验的过程中发现整个代码托管平台在各个场景下还是十分流程的,没有出现过逻辑上的中断情况. 2. 性能:页面性能是否感受比较舒服?整体来说代码托管的平台相比其他的代码平台是比较简洁舒适的,但是建议更加突出关键功能按钮与相关页面的标记,这样才能更好的管理项目 3. 功能特性:对比体验官已用过的Code Review类的产品,是否更加方便易用,功能设置合理?对比已用过的Code Review类的产品,华为云代码托管服务,操作文档也是非常给力,有文档的帮助更加简单易用,尤其对于初学者算是非常友好了。 4. 满意度及推荐度:体验官是否愿意使用该产品作为自己企业研发过程中的Code Review工具?是否愿意推荐给其他朋友或同事? 通过这段时间的体验我还是非常愿意使用华为云代码托管服务作为自己企业研发过程中的Code Review工具,并且我也非常乐意将华为云代码托管服务推荐给周边的同事朋友,对于初学者的学习测试一定是绝佳的选择。 5. 在使用过程中的页面帮助与文档帮助,是否合理,准确,有参考价值? 因为之前经常操作其他代码托管平台,所以比较熟练.不过操作流程比较流畅。我也尝试着通过操作文档来更快的熟悉华为云代码托管服务的优点,但是文档顺序稍微有些乱,还是希望能够整理一下,让帮助文档简洁易用,帮助文档这一块真的需要大的改善。 6. 对于CodeHub产品的其他意见和建议。(1)通过本次测评,我最大的希望是可以加强对帮助文档的提升优化,让帮助文档简洁易用,可以帮助初学者更好的了解产品(2).希望加强平台的安全性,使得客户信赖直接使用的产品(3).争取可以开源,提供更多的免费产品给学生或者初学者来初步了解代码托管平台的便利 在文章的最后,感谢华为云小助手选我为本期的华为云用户体验官。非常感谢,希望自己能和华为云一同成长!以上问题,如果有什么问题可以请小伙伴和我共同探讨,一起成长! by 陈晓—成都—java开发
-
【问题类别】 vxml2.0 【问题现象描述】vxml2.0调用java接口时,当传入参数为中文时,vxml2.0为utf-8的编码方式,java接口接收到的参数乱码,怎么解决? 【日志或错误截图】
-
OpenCPU方案开发环境搭建软件安装1、编译器-gccB500编译调用的GCC编译器版本与B300SP2&B300SP5不一样,若要支持B300SP2&B300SP5和B500则需要安装两个不同版本的GCC编译器。具体的安装方法如下:1.1:B300SP2&B300SP5软件下载地址:https://launchpad.net/gcc-arm-embedded/+download1)点击软件下载地址,进入软件下载界面下载所需的软件安装包2)点击下载好的软件进行安装,需要注意的是安装完成后,确保选择了“添加环境变量的路径”选项。3)进入windows命令行输入arm-none-eabi-gcc-v 检查gcc版本,判断gccs是否安装成功。1.2:B500SP1软件下载地址:gcc-arm-none-eabi-7-2017-q4-major-win32.zip1)安装GCC编译器,只需将下载的zip文件解压放到C盘的根目录即可2)添加环境变量 C:\gcc-arm-none-eabi-7-2017-q4-major-win32\bin2、Python 2.7Scons是一个用于基于Python2.7的软件构建的工具。确保在安装Scons之前安装Python2.7。2.1、Python2.7下载地址:https://www.python.org/downloads/release/python-2710/1)点击下载地址进行Python2.7安装包下载2)点击下载好的软件进行安装,需要注意的是在安装过程中,确保选择了“添加环境变量的路径”选项2.2、pywin32安装pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/下载对应的pywin32。注意:下载的版本和Python 2.7相对应点击下载好的.exe文件安装。注意检查系统环境变量中是否添加了C:\Python27\;C:\Python27\Scripts;如果没有添加,一定要添加上去2.3、安装Python PyYAML库1)进入windows命令行输入python 检查Python是否安装成功2)安装PyYAML库,在命令行输入pip install pyyaml2.4、Scons 安装Scons 下载地址:https://sourceforge.net/projects/scons/files/scons/2.4.0/注意:Scon应该安装在Python的脚本文件夹(.\Python 27\Script)中。3、IDE – Eclipse安装安装前提:检查Java是否安装,进入命令行,输入java -version若没安装请先安装java,java下载地址:https://www.java.com/en/download/1)Eclipsec/c++版本下载地址:https://www.eclipse.org/downloads/packages/release/mars/2/eclipse-ide-cc-developers Eclipse下载返回一个zip文件。然后可以将其提取到任何位置。2)Eclipse插件安装(Scons)至此,开发环境已经搭建完成。
lierdaSupport
发表于2019-04-19 10:02:55
2019-04-19 10:02:55
最后回复
lierdaSupport
2019-04-19 10:02:55
7336 0 -
1 准备资源1.1 开发环境· Eclipse· JDK 1.81.2 Demo资源1. Agent Lite Demo:https://support.huaweicloud.com/devg-IoT/iot_02_1004.html 中的Agent Lite SDK(Java)2. Profile文件:Profile开发示例 中的以下两个3. 网关profile文件:Gateway_Huawei_AgentLite01.zip4. 子设备profile文件:Motion_Huawei_test01.zip1.3 平台资源https://bbs.huaweicloud.com/forum/thread-11864-1-1.htmlAgentLite使用的是:南向设备接入(MQTTS) 2 商用环境注册设备[r1] 在调用OceanConnect平台开放的接口前,需要先登录OceanConnect平台的SP Portal界面,创建平台上的应用映射。 2.1 登录商用环境商用环境地址:https://iot-sp.huaweicloud.com/#/使用平台提供的账号信息登录2.2 创建App1. 进入SP Portal界面,点击“开始”2. 创建应用3. 进入到应用管理界面,开发者根据实际情况自行填写和选择配置。 1) 应用名称:可以为字母、数字或其组合(如Apptest001)。不能与平台中已有的应用名称重复。2) 所属行业:应用的行业信息。在下拉框中选择即可。3) 消息跟踪数据授权:自行选择。4) 其他选项保持默认即可。 4. 创建成功之后会弹出应用的基本信息,请注意保存应用ID和应用密钥如果应用密钥丢失可在系统管理 > 应用管理 > 应用列表 > 安全 > 重置 获取 2.3 上传profile文件至IoT平台将下载的profile文件上传至IoT平台,具体方法如下:在SP Portal界面,选择“设备管理 > 设备模型 > 导入设备模型”,选择需要上传的profile文件以同样的方法完成子设备profile文件的上传2.4 注册设备在SP Portal界面,选择“设备管理 > 设备 > 设备注册 > 创建注:1. 在设备注册界面填写相关信息2. 注册类型:选择动态密码模式3. 设备识别码:与第4节中gwreginfo.json文件的mac值一致4. 设备定义:产品5. 产品选择:选择第2.3中上传的网关profile文件点击提交,会弹出注册成功之后返回的设备相关信息在左侧菜单 点击所有设备 可以看到刚刚注册的设备,此时设备处于“离线”状态。 3 开发者 中心注册设备[r2] 3.1 登录开发者中心开发者Portal访问地址:https://iot-dev.huaweicloud.com/#/login使用平台提供的账号信息登录3.2 上传profile文件至IoT平台将下载的profile文件上传至IoT平台,具体方法如下:在开发者 Portal界面,选择“产品 > 产品开发 > 添加 > 本地Profile导入创建 > 上传profile ”,选择需要上传的profile文件以同样的方法完成子设备profile文件的上传 3.3 注册设备1. 在开发者 Portal界面,选择“产品 > 设备管理 > 添加真实设备2. 选择3.2上传的网关profile3. 填写设备名称与设备标识码(测试阶段可自定义,只要在平台保持唯一即可)4. 注册成功,返回设备基本信息,以及在设备列表显示离线状态 4 Demo工程操作4.1 解压缩AgentliteWinJava.zip4.2 Eclipse导入Demo工程 Demo工程的目录结构1) libs下有AgentLite SDK2) workdir下,demo跑起来之后会产生日志文件3) conf下是证书文件,根据平台的版本不同,把文件名更改为rootcert.pem4.3 修改Demo代码1. 注释AgentLiteBase.java相关接口 2. 修改AgentLiteBind.java1) 这里的IP 是端口为8943的设备对接地址2) bindAction()方法中的nodeId和verifyCode值相同,都为 3.3注册设备 第3 点中填写的 设备标识码 的值一致 3. 修改AgentLiteLogin.java这里的IP 是端口为8943和8883的设备对接地址 4. AgentLiteDataTrans.java这个文件是数据上报的文件5.如果需要子设备,并且上报子设备的数据先添加子设备的信息,要和子设备的profile定义的一致,nodeId自己定义一个不重复的就行。 子设备数据上报5 编译与调试 修改完成后,运行 Demo中AgentLiteBase.java中的main方法 控制台打印6 结果6.1 开发者中心 显示效果设备在线如图显示:第一个设备为网关下的子设备,第二个设备为网关设备目前开发者Portal的版本,暂时只支持网关与子设备同级显示网关上报数据子设备上报数据目前开发者Portal的版本,子设备上报的数据暂时不会显示,可以查看AgentLite日志,子设备已经上报数据刷新工程,在workdir下会产生log文件即为AgentLite日志搜索Sending PUBLISH,下图中,device后面是子设备的deviceID,services后面是servicesID,后续的body体里面即为该子设备上报的数据6.2 商用环境显示效果设备在线网关上报数据添加子设备子设备上报数据备注:AgentLite设备对接一般用商用环境,因为目前的版本,网关下的子设备在商用环境上会层级显示,以及子设备的数据目前只会在商用环境上显示。 具体的接口信息请参见文档:华为IoT Agent Lite API参考(Java) 程序大致结构解析:l 调用BaseService.init()接口初始化AgentLite资源l 调用BindService.bind()接口绑定设备至IoT平台设备第一次接入IoT平台时,需要进行绑定操作,上层应用通过调用该接口传入设备序列号或者设备的MAC地址已经设备的基本信息来绑定至IoT平台。在绑定时需要调用LoginConfig.setConfig()接口来设置绑定服务器的IP和端口(IoCM服务器的地址和端口;也叫做南向设备对接地址)当调用设备绑定成功之后,会在workdir下生产一个gwbindinfo.json文件l 调用LoginService.login()接口使设备登录登录的时候,要去读取绑定成功之后产生的gwbindinfo.json文件,获取deviceID、appID、deviceSecret以及通过LoginConfig.setConfig()接口来设置服务器的IP和端口(此时涉及到两个地址HTTP[IP:8943]和MQTT[IP:8883])登录涉及到HTTP和MQTT的细节:http请求带着绑定产生的deviceID、appID、deviceSecret去建链成功之后产生一个mqttclientId,然后mqtt请求又带着mqttclientId、deviceID、deviceSecret去登录,两步才算登录成功设备在第一次绑定成功之后,或者在设备重启之后要进行登录l 调用HubService.addDevice()接口添加子设备l 调用DataTransService.dataReport()接口进行数据上报 [r1]和第三节,两种方式注册设备二选一 [r2]和第二章节注册设备二选一,注:现在19.2版本的开发者protal不支持查看子设备的上报数据注:当把设备删除之后,重新注册一个设备,然后在用AgentLiteDemo调试的时候,需要把之前绑定成功之后生成的bkp、mod、gwbindinfo.json这些文件删除,否则会报错,绑定不成功
-
首先非常感谢华为云提此次供机会参与到华为MapReduce产品体验及评测,但是由于时间紧,评测的不够仔细,只能简短的说下一周以来的测评体验(1)在开发者文档中并没有讲要创建output文件夹,后面的文档说要创建,这个地方前后不统一,需要在文档中统一路径,(2)文档中没有提及Kerberos认证关闭的方案,需要添加对应的解决方案(3).在导入数据的模块中,测试时不能正常的从”OBS”导入数据到”HDFS”中下边来回答一些标准问题:1. 操作体验:是否能够顺畅的创建集群,提交作业,跑组件的样例程序: 此次操作中的整体用户体验是非常完美的,并且在创建集群与提交作业时非常顺畅,毕竟华为在用户体验这块做的是非常的nice, 但是需要将用户的操作文档以及最新的教学视频放在醒目的位置,并且做到持续跟新,这样才能让用户初次使用时更加顺畅,最后在创建集群的时候建议添加不同集群的适用背景,以便用户更加直观的选择. 2. 性能:您在体验过程中使用了哪些组件,跟自己搭建CDH,或者用过友商的对标组件相比,性能如何?:主要使用Hadoop。对标腾讯云,在腾讯云使用Hadoop时虽然能正常访问bincoding.cn:50030,不能连接到9000端口, 需要设置core-site.xml为内网地址 ,但是在华为云上可以设置默认端口,这点做的很人性化.性能上,因为测试用例是使用最佳实践案例,数据量本来不是很大,所有性能方面很OK。3. 功能特性:对比体验官用过的其他大数据平台,是否有哪些功能需要补齐或加强?:本次体验中华为云平台给我最大的感受是界面的简洁以及图形化的监控数据性能, 对标阿里云可以发现,案阿里云在近几年的发展中以弹性计算为核心产品,拥有包括云服务器、专有网络、容器服务、弹性伸缩、负载均衡等9 项业务,都是通过先进的虚拟化技术打破物理机和虚拟机的隔阂。所以建议华为云也需要在数据处理以及弹性计算方面加强自身的优势.而与腾讯云相比,腾讯云只提供了基础的域名注册服务,只能算个及格,所以华为云可以补充这些方面的缺口,抢占市场先机.4.满意度及推荐度:当自己的项目或是公司有大数据应用的需求时,是否愿意自己使用或推荐身边的同事朋友使用华为云MRS服务?什么原因促使你做出这个结论? :我愿意将自己的项目或者公司的大数据应用部署到华为云MRS中,首先是我相信华为这个大平台对于技术的成熟度以及用户的体验有很大的保障,再着只有补足国内其他云平台的不足,才能够获得更多的用户和口碑,毕竟相信国产华为是我们程序员的福音,以上就是本人不成熟的建议,如有不足,敬请指出!
-
部分同学在执行java -jar helloworld-provider-0.0.1-SNAPSHOT.jar命令启动可执行jar包的时候,会碰到错误信息"错误: 找不到或无法加载主类 —jar"这通常是因为输入命令是,没有将输入法从中文切换为英文,输入的横杠"—"不是英文的"-"符号。仔细对比一下还是可以看出这两种横杠是有一点区别的:错误版的:正确版的:
-
【摘要】 Idea启动provider后服务契约SC无法获取,Eclipse中启动正常Provider Log:2019-03-16 23:00:57,413 [ERROR] Can not output merged.log4j.properties,because can not write to directory of file file:/Users/zhenbing/.m2/reposit...Idea启动provider后服务契约SC无法获取,Eclipse中启动正常Provider Log:2019-03-16 23:00:57,413 [ERROR] Can not output merged.log4j.properties,because can not write to directory of file file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/transport-rest-vertx/1.1.0.B036/transport-rest-vertx-1.1.0.B036.jar!/config/base/log4j.properties org.apache.servicecomb.foundation.common.utils.Log4jUtils.outputFile(Log4jUtils.java:103)2019-03-16 23:00:57,427 [INFO] Found main class "com.intellij.rt.execution.application.AppMain". org.apache.servicecomb.foundation.common.utils.JvmUtils.findMainClass(JvmUtils.java:62)2019-03-16 23:00:57,490 [INFO] Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@97e1986: startup date [Sat Mar 16 23:00:57 CST 2019]; root of context hierarchy org.springframework.context.support.AbstractApplicationContext.prepareRefresh(AbstractApplicationContext.java:583)2019-03-16 23:00:57,596 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/foundation-config/1.1.0.B036/foundation-config-1.1.0.B036.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:57,892 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/foundation-vertx/1.1.0.B036/foundation-vertx-1.1.0.B036.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:57,921 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/java-chassis-core/1.1.0.B036/java-chassis-core-1.1.0.B036.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:58,863 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/handler-bizkeeper/1.1.0.B036/handler-bizkeeper-1.1.0.B036.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:58,883 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/handler-loadbalance/1.1.0.B036/handler-loadbalance-1.1.0.B036.jar!/META-INF/spring/cse.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:58,904 [INFO] Loading XML bean definitions from URL [jar:file:/Users/zhenbing/.m2/repository/com/huawei/paas/cse/cse-handler-cloud-extension/2.3.62/cse-handler-cloud-extension-2.3.62.jar!/META-INF/spring/services.bean.xml] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:317)2019-03-16 23:00:59,296 [INFO] Environment received, will get configurations from [org.springframework.core.env.StandardEnvironment@1532554556]. org.apache.servicecomb.config.ConfigurationSpringInitializer.setEnvironment(ConfigurationSpringInitializer.java:59)2019-03-16 23:00:59,336 [WARN] No URLs will be polled as dynamic configuration sources. com.netflix.config.sources.URLConfigurationSource.<init>(URLConfigurationSource.java:121)2019-03-16 23:00:59,336 [INFO] To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath. com.netflix.config.sources.URLConfigurationSource.<init>(URLConfigurationSource.java:122)2019-03-16 23:00:59,419 [INFO] create local config: org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:114)2019-03-16 23:00:59,419 [INFO] jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/java-chassis-core/1.1.0.B036/java-chassis-core-1.1.0.B036.jar!/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,419 [INFO] jar:file:/Users/zhenbing/.m2/repository/com/huawei/paas/cse/cse-solution-service-engine/2.3.62/cse-solution-service-engine-2.3.62.jar!/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,420 [INFO] file:/Users/zhenbing/IdeaProjects/MicroService/Demo-Day4-Homework/helloworld-consumer/target/classes/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,458 [INFO] Found SPI service org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource, count=1. org.apache.servicecomb.foundation.common.utils.SPIServiceUtils.loadSortedService(SPIServiceUtils.java:79)2019-03-16 23:00:59,458 [INFO] 0. org.apache.servicecomb.config.archaius.sources.ConfigCenterConfigurationSourceImpl. org.apache.servicecomb.foundation.common.utils.SPIServiceUtils.loadSortedService(SPIServiceUtils.java:82)2019-03-16 23:00:59,467 [INFO] create local config: org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:114)2019-03-16 23:00:59,467 [INFO] jar:file:/Users/zhenbing/.m2/repository/org/apache/servicecomb/java-chassis-core/1.1.0.B036/java-chassis-core-1.1.0.B036.jar!/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,468 [INFO] jar:file:/Users/zhenbing/.m2/repository/com/huawei/paas/cse/cse-solution-service-engine/2.3.62/cse-solution-service-engine-2.3.62.jar!/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,468 [INFO] file:/Users/zhenbing/IdeaProjects/MicroService/Demo-Day4-Homework/helloworld-consumer/target/classes/microservice.yaml. org.apache.servicecomb.config.ConfigUtil.createLocalConfig(ConfigUtil.java:116)2019-03-16 23:00:59,476 [INFO] Found SPI service org.apache.servicecomb.deployment.DeploymentProvider, count=1. org.apache.servicecomb.foundation.common.utils.SPIServiceUtils.loadSortedService(SPIServiceUtils.java:79)2019-03-16 23:00:59,476 [INFO] 0. org.apache.servicecomb.deployment.DefaultDeploymentProvider. org.apache.servicecomb.foundation.common.utils.SPIServiceUtils.loadSortedService(SPIServiceUtils.java:82)缺少了产生swagger的步骤(下面是Eclipse输出的Log信息):2019-03-16 23:14:36,313 [INFO] Service startup completed! microservice.demo.training21days.provider.bootevent.CustomBootEventListener.onBootEvent(CustomBootEventListener.java:18)2019-03-16 23:14:36,313 [INFO] ============================= microservice.demo.training21days.provider.bootevent.CustomBootEventListener.onBootEvent(CustomBootEventListener.java:19)2019-03-16 23:14:36,319 [WARN] keyStore [server.p12] file not exist, please check! org.apache.servicecomb.foundation.vertx.VertxTLSBuilder.buildTCPSSLOptions(VertxTLSBuilder.java:118)2019-03-16 23:14:36,320 [WARN] trustStore [trust.jks] file not exist, please check! org.apache.servicecomb.foundation.vertx.VertxTLSBuilder.buildTCPSSLOptions(VertxTLSBuilder.java:138)2019-03-16 23:14:36,324 [INFO] Monitor data sender started. Configured data providers is {com.huawei.paas.monitor.HealthMonitorDataProvider,} com.huawei.paas.monitor.DataFactory.start(DataFactory.java:62)2019-03-16 23:14:36,325 [INFO] ServiceComb is ready. org.apache.servicecomb.core.SCBEngine$1.afterRegistryInstance(SCBEngine.java:188)2019-03-16 23:14:36,342 [INFO] Waiting for status up. timeout: 10000ms org.apache.servicecomb.core.SCBEngine.waitStatusUp(SCBEngine.java:362)2019-03-16 23:14:36,343 [INFO] Status already changed to up. org.apache.servicecomb.core.SCBEngine.waitStatusUp(SCBEngine.java:371)2019-03-16 23:15:06,343 [INFO] sc task interval changed from -1 to 30 org.apache.servicecomb.serviceregistry.task.ServiceCenterTaskMonitor.beginCycle(ServiceCenterTaskMonitor.java:39)
-
用VS code 搭建环境,已经成功安装JAVA1.8、Maven。已经在helloworld-consumer\src\main\resources\microservice.yaml文件中修改AK\SK;运行helloworld-consumer\src\main\java\microservice\demo\training21days\consumer\AppMain.java文件报错,如下图所示。
-
有些时候我们创建或导入一个maven工程,IDE(Eclipse和IDEA之类的)会提醒我们项目编译版本和jre版本不一致。Eclipse下的错误提示信息如下图所示详细错误信息为:Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment. The compiler compliance specified is 1.5 but a JRE 1.8 is used这是maven由于一些历史原因,默认是以jdk 1.5版本来编译工程项目的。但是我们的CSEJavaSDK项目现在实际上是跑在Java8环境了。此时有一个简单的解决方法,就是在maven工程的pom文件里显式指定打包插件使用的java语言版本:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <compilerArgument>-parameters</compilerArgument> <encoding>UTF-8</encoding> <!--显式指定字符集为UTF-8--> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>如下图所示:
-
昨天有两个同学碰到CSEJavaSDK开发的demo服务跑不起来的问题,错误日志如下图,报找不到javax.xml.ws.Holder:碰到找不到类的问题,我们一般下意识都认为是maven的依赖导入有问题,但是这个类不是通过maven依赖导入的,仔细检查一下可以发现它是jre里提供的,通常不可能找不到的。经过沟通后发现问题的原因是Java版本不对,当前 CSEJavaSDK/ServiceComb-Java-Chassis 支持的是Java8,而这两位同学使用的是其他版本的Java。后续如果有人碰到找不到javax.xml.ws.Holder类的问题可以参考这个检查一下。
-
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”说明项目创建成功:
-
转自https://blog.csdn.net/ywb201314/article/details/52083036package com.jst.util; /** * CRC-CCITT 算法校验类 * * @author amadowang * @version [版本号, Aug 29, 2011] * @see [相关类/方法] * @since [产品/模块版本] * @date 2012-10-24 */ public class CRCUtil { /** * CCITT标准CRC16(1021)余数表 CRC16-CCITT ISO HDLC, ITU X.25, x16+x12+x5+1 多项式 * 高位在先时生成多项式 Gm=0x11021 低位在先时生成多项式,Gm=0x8408 本例采用高位在先 */ private static int crc16_ccitt_table[] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; /** * * @param reg_init CRC校验时初值 * @param message 校验值 * @return */ private static int do_crc(int reg_init, byte[] message) { int crc_reg = reg_init; for (int i = 0; i < message.length; i++) { crc_reg = (crc_reg >> 8) ^ crc16_ccitt_table[(crc_reg ^ message[i]) & 0xff]; } return crc_reg; } /** * 根据数据生成CRC校验码 * * @param message * byte数据 * * @return int 返校验码 */ private static int do_crc(byte[] message) { // 计算CRC校验时初值从0x0000开始。 int crc_reg = 0x0000; return do_crc(crc_reg, message); } /** * db44检验方法 * * @param message 消息内容 * @param crc 检验码值 * @return */ private static boolean do_crc(byte[] message,byte[] crc) { // 计算CRC校验时初值从0x0000开始。 int crc_reg = 0x0000; int crc_value = (crc[0]&0xff)*256+(crc[1]&0xff); return crc_value ==do_crc(crc_reg, message); } /** * 供db44结构代码使用,数组后两位为CRC-校验码值 * @param messages * @return */ public static boolean do_crc_db44(byte[] messages) { // 计算CRC校验时初值从0x0000开始。 byte[] messageArray = new byte[messages.length-2]; byte[] crcArray = new byte[2]; System.arraycopy(messages, 0, messageArray, 0, messageArray.length); System.arraycopy(messages, messages.length-2, crcArray, 0, 2); return do_crc(messageArray, crcArray); } public static void main(String[] args) { // 一个db44测试样本数据 byte p[] = {71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,68,31,32,0,1,2}; int crc = do_crc(p); // 计算前两位的CRC码 // 65336 System.out.println(crc); } }最后main修改一下:public static void main(String[] args) {String test = "FFFE011300000000";byte p[] = HexParser.parseHexStr2Byte(test);int crc = do_crc(p); // 计算前两位的CRC码System.out.println("==> " + Integer.toHexString(crc));}运行后的结果是:也就是说使用“FFFE011300000000”计算出来的校验码是4C9A,把校验码替换到软件升级码流规定的位置得到:FFFE011300000000->FFFE01134C9A0000,这个就是平台下发的查询设备软件版本的码流了。
-
CSE JAVA SDK使用service_description.version定义版本号, 目前推荐支持如下规则:x.y.z或者a.b.c.d其中x/y/z/a/b/c/d都是一个int值(short),不能超过2个字节(注意不是4个字节)的数字大小。 关于版本规则的特殊说明CSE JAVA SDK的版本号必须采用数字,而不能使用字符等特殊字符。 因为这个版本号,不是传统意义上的版本管理的概念,用于表达一些版本逻辑,比如主要、次要、补丁等。 CSE的版本号主要用于表达“接口兼容”性概念, 版本号变化表示可能存在接口变更。 在处理路由规则的时候,会基于契约和版本号进行分组,将兼容的接口分为一组,从而实现多版本并存和自动基于接口兼容性进行请求转发。 这个特性是CSE JAVA SDK非常独特的特性,优雅的解决了灰度版本并存的问题,而不需要用户做任何额外的开发。 关于接口兼容性的一些推荐实践参考:https://huaweicse.github.io/cse-java-chassis-doc/question-and-answer/interface-compatibility.html
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签