• [技术干货] ServiceComb Java Chassis SDK 设置自定义 rest 接口的 http status code
    # ServiceComb Java Chassis 如何自定义 rest 接口的 http status code 在使用 Java Chassis的时候, 有时我们需要自定义 调用返回的 状态码. 详情可参考 **[ServiceComb官方文档](https://docs.servicecomb.io/java-chassis/zh_CN/question-and-answer/faq/)** > 官方文档地址 : https://docs.servicecomb.io/java-chassis/zh_CN/question-and-answer/faq/ ### 设置正常调用自定义 HTTP 状态码 ```java @GetMapping("/userDefinedCode") public String userDefinedCode(@RequestParam(value = "code") int code) { InvocationContext invocationContext = ContextUtils.getInvocationContext(); invocationContext.setStatus(code); return "Set response code : " + code; } ``` ![statusCode_1.PNG](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202004/06/153620degjvtizkn0i5tdq.png) ### 设置异常调用 HTTP 状态码 ```java @GetMapping("/throwException") public String testThrowException(@RequestParam(value = "code") int code) { InvocationContext invocationContext = ContextUtils.getInvocationContext(); throwException(code); return "Throw exception with status code :" + code; } public String throwException(int code) { if (code == 200) { return "Success with status code: 200"; } throw new InvocationException(code, "test exception code", "user defined error code"); } ``` ![statusCode_2.PNG](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202004/06/153639msjpqdew1bnml0am.png)
  • [技术研讨] smc2.0用的什么什么语言呢?是java么,还是其他的
    smc2.0的系统用的什么什么开发语言呢?是java么,还是其他的
  • [交流吐槽] CodeLab-我要领奖-13590440714@139.com
    APP Engine平台“拖拉拽”模式开发看起来比较方便,但个人认为如果对系统理解不深,开发就会显得举步维艰。有的东西当你不知道它在哪里,但是你又不得不需要它才能实现功能,你与它的距离就会是“世界上最遥远的距离”,当你知道了它的存在,你就会觉得如此简单。学习这个系统还需要的就是转换思维,对于传统java程序员来说,很难理解和适应它背后的逻辑,因为当你做java开发的时候,你会很清楚自己的数据是如何变化,如何传递,但是当用到这个系统的时候,你就会觉得心里不踏实,很多东西别人实现了,可是你很大可能摸不透别人是如何实现的,不能从中学习到别人的思维方式,从而提高拓宽自己的思维方式,这会限制到你自己。相对来说,“拖拉拽”式开发一定是未来的趋势,希望公司在完善IDE系统的同时,同时丰富它的生态,租户可以将已有的优秀组件下载下来作为该租户的可研究组件,该租户可以修改编辑该组件来看背后具体的逻辑。对于优秀的组件应当通过技术社区进行细致的设计思路步骤分享,达到共同提高的目的。
  • [技术干货] 【深圳HDZ】王松-Spring Boot要么学?要不要先学 SSM?
          可能很多刚接触 Spring Boot 的小伙伴都会有这样的疑问,Spring Boot 要怎么学,要不要先学 SSM?今天结合自己的经验,和大家说一说我的看法,也顺便推荐几个 Spring Boot 学习资料。 1.Spring Boot 是什么       我们刚开始学习 JavaWeb 的时候,使用 Servlet/JSP 做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方式,可以减少 Servlet 的创建,但是依然不方便。      再后来,我们引入 Struts2/SpringMVC 这一类的框架,来简化我们的开发 ,和 Servlet/JSP 相比,引入框架之后,生产力确实提高了不少,但是用久了,又发现了新的问题,即配置繁琐易出错,要做一个新项目,先搭建环境,环境搭建来搭建去,就是那几行配置,不同的项目,可能就是包不同,其他大部分的配置都是一样的。      Java 总是被人诟病配置繁琐代码量巨大,这就是其中一个表现。那么怎么办?Spring Boot 应运而生,Spring Boot 是 Pivotal 团队在 2013 年开始研发的一个基于 Spring 的全新框架,试图将 Spring 中臃肿的配置进行简化,使 Java 开发更加轻量与快速,这个框架非常活跃,官方也非常重视。 Spring Boot 主要提供了如下功能:1. 为所有基于 Spring 的 Java 开发提供方便快捷的入门体验。2. 开箱即用,有自己自定义的配置就是用自己的,没有就使用官方提供的默认的。3. 提供了一系列通用的非功能性的功能,例如嵌入式服务器、安全管理、健康检测等。4. 绝对没有代码生成,也不需要XML配置。      Spring Boot 的出现让 Java 开发又回归简单,因为确确实实解决了开发中的痛点,因此这个技术得到了非常广泛的使用,大概从 2017 年年初开始,Spring Boot 基本上面试必问,现在流行的 Spring Cloud 微服务也是基于 Spring Boot,因此,所有的 Java 工程师都有必要掌握好 Spring Boot。从 Spring Boot 诞生的过程中,我们可以看到:1. Spring Boot 并非另起炉灶,而是在现有的 Spring 框架的基础上整出来的,它把 Spring 中繁琐的配置进行了简化。2. Spring Boot 降低了 Spring 家族的使用门槛,使新手更易上手 Spring 框架。      既然 Spring Boot 不是另起炉灶,那么 Spring Boot 学习要不要跳过 SSM 呢?听松哥来分析。 2.要不要跳过 SSM      这是很多人问我的一个问题,我的建议是:【不要】。      Spring Boot 基于 Spring,简单且容易上手,很多人想当然的跳过 SSM 直接上 Spring Boot。但是当我们细究 Spring Boot 中的自动化配置、条件注解、Java 配置等东西时,实在找不出太多新鲜玩意,Java 配置是 Spring3 开始提供的,条件注解 也是 Spring 中的东西,很多很多,都是 Spring 中就有的,只不过这些东西在 Spring Boot 时代大放异彩。      也就是说,即使你跳过了 SSM 直接去学习 Spring Boot,实际上还是在学习 Spring 中的东西,那既然这样,我们还不如坐下来,老老实实把 Spring 过一遍。      各个领域的开发工程师其实都会面临类似的问题,学习了一些优秀的封装框架之后,还有没有必要去学习底层?当然有必要!因为底层的东西可以让你深刻的理解你目前用的这个东西,也能让你在出问题时快速解决掉问题。      其实无论你想搞什么技术,都要有牢固的基础知识,这些牢固的基础知识就像肥沃的土壤,可以孕育出各种不同技术方向的牛人,基础掌握好了,学什么框架都快。今天你跳过 SSM 直接学了 Spring Boot,假如有一天 Spring Boot 不行了,Pivotal 团队又基于 Spring 框架搞了一个新的框架出来,那你是不是又要去学一遍?但是如果你一开始就掌握了 Spring 的各种用法,无论基于它搞出来什么样的框架,你都能快速上手。更进一步,如果你研究透了 Spring 中的 AOP、Ioc/DI,你会发现很多框架大同小异,核心思想就是这些东西,那么你在学习 Spring 之外的框架,就会容易很多。      **如果你对 SSM 还不太熟悉的话,可以在松哥公号(江南一点雨)后台分别回复 `spring`、`springmvc`、`mybatis` 获取松哥手敲 5 万余字的干货教程。** 3.都要学哪些       那么 Spring Boot 学习都要学哪些东西呢?我这里列举了一个进阶路线:1. 最基础的当然是 Spring/SpringMVC 相关的东西了。2. 搭配各种页面模版的使用,例如 Jsp/Thymeleaf/Freemarker/Groovy Templates 等。3. 和各种 SQL 数据库的整合,以及一些常见的数据持久化框架,例如 JdbcTemplate、MyBatis、Jpa 等。4. 和各种 NoSQL 数据库的整合,例如 Redis、MongoDB、Elasticsearch 等。5. 搭配安全管理相关的知识点,例如 Spring Security、Shiro 等。6. 缓存的使用,例如 JCache、Ehcache 等。7. 和消息中间件的搭配整合,如 ActiveMQ、RabbitMQ、Kafka 等。8. 数据校验/定时任务/邮件发送等。9. 各种监控的使用。10. 结合 WebSocket 的使用。11. Spring Cloud 中相关组件。12. ...      上面这些只是我列出来的一些比较常见的技术点,每个技术点都还可以延伸出很多其他的东西,大家可以结合自己的情况,按照顺序一个一个来学,这里边还涉及到很多第三方的框架,例如 Redis、MongoDB、RabbitMQ 等,Spring Boot 的出现只是让这些组件在和 Spring 家族的产品整合时变得更加方便,但是并不会简化这些组件原本的用法,所以,该学 Redis、该学 MongoDB、该学 RabbitMQ 等等,还是一个不能少。以 Redis 为例,学会了 Redis,学会了 Spring 整合 Redis,再回过头来看 Spring Boot 整合 Redis,那简直太 easy 了(**大家在公众号后台回复 redis,有松哥手敲的 redis 教程**)。      当然,学习 Spring Boot 最终我们还是奔着快速开发和微服务去的,所以,像 Docker、Spring Cloud 等技术,也是需要去了解一下的。 4.怎么学       Spring Boot 发展到今天,网上的资料和图书现在是越来越多了。在看资料学习的同时,大家也要留意以下几个点:1. 多看源码。不同于其他全新的框架源码你可能会看懵了,由于 Spring Boot 是基于 Spring 的,所以只要你 Spring 基础扎实,看 Spring Boot 源码可以说是毫无压力。如果看 Spring Boot 源码觉得有压力,那可能你 Spring 基础不牢靠,这个时候不妨放下 Spring Boot,去复习下 Spring。2. 每当学会 Spring Boot 中的一个知识点,不妨想想这个功能在 Spring 框架中要如何使用,如何配置,两边都搞懂了,互相印证,加深对一个知识点的理解。3. 多多关注 Spring Boot 的发展动态。不同于传统的框架可能一年更新一两次,Spring Boot 更新非常频繁,二次每次更新都会带来一些好玩的东西,可能会有新的 API 加入进来,也可能会有旧的 API 失效,变化大,因此多多关注,避免掉坑。      最后,我这里给大家列举几个我自己经常关注的几个资源。 4.1 官方文档       老实说,Spring Boot 的官方文档是我接触的所有官方文档中最条理清晰浅显易懂的,大家做开发,多多少少都接触过一些第三方的开放平台,很多平台的文档真是让人忍不住想吐槽,框架都做出来了,认认真真写个文档有那么难么?      不过 Spring Boot 的官方文档可以算是非常非常友好了。虽然是英文的,但是实际上对英文要求并不高,连读带猜,其实很容易明白它的含义,我一般对 Spring Boot 中某个知识点有疑问的时候,都是首选官方文档,当前最新版的官方文档地址是:- https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/html      当然,如果你嫌官方文档打开慢,松哥也帮你下载好了最新版的 pdf,公众号后台回复 `springboot2.2.4` 可以获取。 4.2 Spring 官方博客       每次 Spring 或者 Spring Boot 发新版本,松哥都会去看一下新版本有哪些好玩的东西,增加了哪些内容。我不可能把源码读一遍然后总结出来它的变化,那一般是如何获取权威的第一手信息呢?关注 Spring 官方博客即可。      打开 Spring 官网,在顶部菜单里有一个选项就是 Blog,关于 Spring 家族产品的任何更新计划,更新结果,都会在这里通知到大家。             松哥也推荐大家多多关注这个 Blog,一方面能够及时接收到一手信息,另一方面还能提高英语,一举两得。宅在家,泡一壶茶,细细的品一品这个网站,真的蛮不错。      Blog 地址:- https://spring.io/blog  4.3 中文资料       说到中文资料,就不得不说松哥自己的在线教程和离线 pdf 文档了。手敲了 274 页教程,囊括了 Spring Boot2 常见的各种用法,即有离线的 pdf 供大家下载,也有在线的学习网站,这就是满满的诚意,还没下载 pdf 的小伙伴不要错过。       在线教程地址:- http://springboot.javaboy.org      离线 pdf 下载文档,在公众号后台回复 springboot 获取百度网盘地址。 4.4 学习案例       除了这些文字性的东西之外,一些在线案例也至关重要。这里给大家推荐两个仓库,这两个仓库中的所有案例都是基于 Spring Boot2 来做的。      首先就是我公众号上文章的配套案例:      GitHub 地址:https://github.com/lenve/javaboy-code-samples      Gitee 地址:https://gitee.com/lenve/javaboy-code-samples      这个仓库中的大部分案例都是针对 Spring Boot 的,而且有一个好处就是这些案例都有对应的讲解文章,每个案例都对应一个文章,岂不美哉。       另一个仓库就是我整理的比较完善的一个仓库,但是就没有对应的讲解文章了:      GitHub 地址:https://github.com/lenve/javaboy-video-samples      Gitee 地址:https://gitee.com/lenve/javaboy-video-samples 5.小结       资料贵精不贵多,关键是要动手去学。大学时候,有的同学热衷于收集各种资料,电脑硬盘塞得满满的,但是就是不学,这些资料再多也没有用。      当然,如果大家对松哥自己录制的 Spring Boot+Vue+微人事+Spring Cloud 视频教程感兴趣,也可以看看这篇文章:[Spring Boot + Vue 视频教程喜迎大结局,西交大的老师竟然都要来一套!](https://mp.weixin.qq.com/s/8FmgtWyz6HUIbF4smXQOwQ),或者加下面的微信咨询。关于作者   王松,江湖人称“松哥”出书《Spring Boot +Vue全栈开发实战》,清华大学出版社个人公众号:“江南一点雨”,2019年产出117篇原创技术干货,包含“Spring Boot系列”、“前后端分离系列”、“系列教程等”联系作者添加好友时麻烦请备注来源、公司及名称,谢谢HDZ社区—携手全球开发者 共建开放、创新、多元的开发者社区组织       HDZ是Huawei Developers Zone的英文缩写,是华为开发者生态面向全球开发者建立开放、创新、多元的开发者社区组织。      致力于帮助开发者学习提升、互动交流、挖掘机会,推动ICT、互联网等产业生态的建立和发展。      对云计算、IoT、人工智能、5G、区块链、鲲鹏、昇腾、软件开发与运维、开源等各技术领域感兴趣的开发者、软件工程师、创业者、运营人、产品人、大学生、老师等都可以参与到HDZ。      HDZ秉承开放、创新、多元的社区文化,完全由各地HDZ组织者、志愿者自发组建和领导。华为公司不直接参与HDZ组织建设和领导,只按需对HDZ社区活动提供必要的方向指导、资源支持、活动支撑等,并为各地HDZ组织者提供与全国组织者互动交流的机会。
  • [热门活动] 【招人啦!!!】急聘Web前端开发/Java软件开发/移动客户端开发工程师,欢迎加入华为云官网团队!
    有需要的小伙伴请联系邮箱地址:weihualv@huawei.com
  • [问题求助] 北向如何用Java API Demo启动一个本地应用服务器来接收平台推送的消息
    在平台订阅已经用公网地址订阅成功,苦于无法在本地服务器接收平台推送的消息,求助各位大神,这样的接口应该怎么写
  • [热门活动] 3月10日19点听金牌讲师JAVA直播课程,更有机会获取幸运大奖!!
     3月10日19点听金牌讲师JAVA直播课程,更有机会获取幸运大奖!!课程简介:大连理工大学、华为、目睹三方携手直播JAVA线上教学:《JAVA程序设计》是软件工程专业的一门重要的核心课程,疫情当前,停课不停学,为了能够让同学们在家即可学习本课程,大连理工大学软件学院利用华为云Classroom组织在线直播授课,课程将采用基础知识讲解、在线编程、自动评分、任务闯关、项目训练等多种形式教学与实践,欢迎全国有JAVA学习和教学需求的学生和老师在线上观看教学。 授课教师:马瑞新,工学博士,大连理工大学国家示范性软件学院副教授,有十五年的软件工程授课经验,曾获得辽宁省教学成果奖、大连理工大学教学质量优秀奖、华为MVP、微软优秀教师等荣誉。 3月10日直播活动玩法:1.     参加本次直播课,课堂中将随机抽取5名,奖励5888码豆;      获奖名单将当场公布,请添加小助手微信(hwclassroom)发送华为云账号领取奖励2.     在2020.3.13 18:00之前完成本堂课全部作业,开发小哥哥将随机抽取5名,奖励25888码豆。获奖人员将在当晚收到短信通知(所以请加入课堂时填写和目睹同样的姓名哦),同时在3月10日的直播课堂会再次公示获奖名单。关于码豆:获奖名单公示后会发放至DevCloud会员中心码豆账户中,可前往当页的“兑换商城”兑换实物礼品,如华为荣耀蓝牙鼠标、华为nova mini蓝牙音箱、华为荣耀自拍杆等丰厚礼品。 关于华为云账户:子账号无法领取码豆,请获奖小伙伴必须要提供独立华为云账号(租户账号)哦!礼品展示直播时间: 2020.02.15      19:00-21:00     JAVA基础入门2020.02.20      19:00-21:00     JAVA基础知识案例训练2020.02.25      19:00-21:00     JAVA面向对象知识2020.02.29    19:00-21:00  JAVA面向对象知识案例训练2020.03.05    19:00-21:00  JAVA高级编程知识2020.03.10    19:00-21:00  JAVA高级编程知识案例训练观看直播的方式:扫描以下二维码或者点击链接加入马老师JAVA课堂,选择直播即可进入观看!https://classroom.devcloud.cn-north-4.huaweicloud.com/joinclass/1e65772e5f5b44e793ed5ec22c29d36a/1 说明:对活动如有任何问题,请联系微信小助手:hwclassroom 
  • [技术干货] 求指点,gochassis 1.7.6版本和1.8.2版本不支持跨APP调用吗?难道只有java版本支持CSE的跨APP调用?
    Java版本的调用指导https://bbs.huaweicloud.com/forum/thread-11095-1-1.html没找到go跨APP调用的指导,仿着Java的指导,用go chassis调了一下跨APP的服务。报错了,一路追代码,发现go chassis调用的 1.13.1版本的go的url包的校验函数,总不能说golang的1.13.3的url包的校验函数有问题吧?求大神指导啊
  • 【鲲鹏翱翔】大数据组件02-Spark2.3移植安装指南
    1.   简介Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。它拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。2.   部署环境Packet NameVersionDetailCentOSCentOS   7.5 64bit with ARMarm通用计算增强型   2vCPUs | 4GB | kc1.large.2Spark2.3.0GCC4.8.5Yum安装MavenApache-maven-3.3.9 JDK1.8.0_191 Protoc2.5.0 Cmake3.1.2 R3.1.1 Scala2.11.12  3.   安装部署3.1安装基本依赖库yum install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64   libgcc.aarch64yum install openssl-devel zlib-devel automake libtool cmake3.2 安装OpenJDK下载OpenJDK安装包wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz解压安装包tar -zxvf   OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz创建指定文件夹mkdir -p /opt/tools/installed将JDK移动到相应位置mv jdk8u191-b12 /opt/tools/installed/3.3 安装Mavenwget   https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gztar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9   /opt/tools/installed/下载Maven安装包配置环境变量,在/etc/profile后面加上JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport MAVEN_HOME JAVA_HOME PATH运行命令,使环境变量生效source /etc/profile3.4 安装Protocwget   https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gztar -zxvf   protobuf-2.5.0.tar.gzcd protobuf-2.5.0下载并解压源码打上补丁cp protoc.patch   ./src/google/protobuf/stubs/cd ./src/google/protobuf/stubs/patch -p1 < protoc.patch补丁可从此次获取:https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/tools/protoc.patch安装./autogen.sh &&   ./configure CFLAGS='-fsigned-char' && make && make install 3.5 安装R语言安装相关依赖yum install readline-develyum install libXt-devel下载R语言安装包wget http://cran.rstudio.com/src/base/R-3/R-3.1.1.tar.gztar -zxvf  R-3.1.1.tar.gz -C /opt/installedcd R-3.1.1./configure   --enable-R-shlib --enable-R-static-lib --with-libpng --with-jpeglib   --prefix=/opt/tools/installed/R-3.1.1make && make install配置环境变量vim /etc/profileR_HOME=/opt/tools/installed/R-3.1.1PATH=$R_HOME/bin:$PATHexport R_HOME PATH#wq退出保存source/etc/profile3.6 安装Scala下载安装包并解压wget   https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgztar -zxvf scala-2.11.12.tgz   -C /opt/tools/installed配置环境变量vim /etc/profile#修改文件最后一行export PATH=/opt/tools/installed/scala-2.11.12/bin:$PATH#wq退出保存source/etc/profile3.6 编译spark下载Spark安装包wget   https://github.com/apache/spark/archive/v2.3.0.tar.gztar -zxvf spark-2.3.0.tar.gzcd spark-2.3.0修改pom.xml,将true改为false<useZincServer>false</useZincServer>执行编译dev/make-distribution.sh   --tgz -Pyarn,hive,hive-thriftserver,sparkr4     示例测试以local的方式启动sparkcd spark-2.3.0spark-shell master local[2]运行成功。
  • 【鲲鹏翱翔】大数据组件01-Hadoop移植安装指南
    1.   简介Hadoop是一个开源的分布式存储及计算框架,被广泛用于海量数据的存储及处理,可以以可靠、高效、可伸缩的方式进行数据处理。2.   部署环境Packet NameVersionDetailCentOSCentOS 7.5 64bit with ARMarm通用计算增强型   2vCPUs | 4GB | kc1.large.2Hadoop3.1.3GCC4.8.5Yum安装MavenApache-maven-3.3.9 JDK1.8.0_191 Protoc2.5.0 Cmake3.1.2 3.   安装部署3.1安装基本依赖库yum install gcc.aarch64 gcc-c++.aarch64 gcc-gfortran.aarch64   libgcc.aarch64yum install openssl-devel zlib-devel automake libtool cmake3.2 安装OpenJDK下载OpenJDK安装包wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz解压安装包tar -zxvf   OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gz创建指定文件夹mkdir -p /opt/tools/installed将JDK移动到相应位置mv jdk8u191-b12 /opt/tools/installed/3.3 安装Mavenwget   https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gztar -zxvf apache-maven-3.3.9-bin.tar.gzmv apache-maven-3.3.9   /opt/tools/installed/下载Maven安装包配置环境变量,在/etc/profile后面加上JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.3.9PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport MAVEN_HOME JAVA_HOME PATH运行命令,使环境变量生效source /etc/profile3.4 安装Protocwget   https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gztar -zxvf   protobuf-2.5.0.tar.gzcd protobuf-2.5.0下载并解压源码打上补丁wget https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/tools/protoc.patchcp protoc.patch   ./src/google/protobuf/stubs/cd   ./src/google/protobuf/stubs/patch -p1 < protoc.patch安装./autogen.sh &&   ./configure CFLAGS='-fsigned-char' && make && make install3.5 安装cmakewget   https://cmake.org/files/v3.1/cmake-3.1.2.tar.gztar -zxvf  cmake-3.1.2.tar.gzCentOS7.5默认的cmake是2.8版本的,hadoop3.1.3要求Cmake3.1以上, 需要手动安装下载并解压安装cd cmake-3.1.2./configuremake && make install3.6 编译hadoopwget   https://www.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3-src.tar.gzcd hadoop-3.1.3-srcmvn package -DskipTests   -Pdist,native -Dtar -Dmaven.javadoc.skip=true4 .示例测试使用hadoop自带测试程序计算PI值cd hadoop-3.1.3-src/hadoop-dist/target/hadoop-3.1.3./bin/yarn jar   ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 5 10运行成功。5.FAQGCC版本不能太高,编译的时候会报错。
  • snappy-java-1.1.1.6.jar移植指南
    1简介Snappy 是一个 C++ 的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。官方链接:http://google.github.io/snappy/类别:压缩Java开发包 2编译环境安装2.1安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile2.2安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository> <!--修改成自己搭建的maven仓库,ARM使能后的jar包替换到该仓库--><mirror></mirror>2.3 其他依赖安装安装git gcc gcc-c++ make cmake libtoolsyum   install git gcc gcc-c++ make cmake libtools -y2.4 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char “$@”4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件 3组件编译安装    从github下载源码并解压wget   https://github.com/xerial/snappy-java/archive/1.1.1.6.zipmv 1.1.1.6.zip   snappy-java-1.1.1.6.zipunzip   snappy-java-1.1.1.6.zip    执行编译cd   snappy-java-1.1.1.6make编译后结果: 编译出的jar包位于:target/snappy-java-1.1.1.6.jar4 FAQ4.1 问题14.1.1 现象:提示无法下载sbt-launch.jar4.1.2 解决方案修改sbt文件中的下载地址。 如果还是下载不了,可以手动下载到如下目录,再编译:cd /root/.sbt/launchers/0.13.6/wget http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.6/sbt-launch.jar 
  • [Java] 鲲鹏aarch64系统下java线程并行同步出现问题,请问是否有人了解原因?
    在鲲鹏aarch64平台上,多线程并行使用okhttp进行文件上传,发现出现了空指针,下标越界等异常。而同样的代码在x86平台运行无异常情况。遂对调用okhttp的代码进行抽取并将问题缩小范围,得到如下的一段问题重现代码,仅包含简单的原生java代码,不涉及任何第三方包的引用。package test2; import java.util.ArrayList; import java.util.LinkedList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class RequestTest { public static void main(String[] args) { outter: for (int i = 0; i > -1; i++) { ExecutorService exs = Executors.newCachedThreadPool(); ArrayList<Future<String>> lst = new ArrayList<>(); ArrayList<HttpCall> calls = new ArrayList<HttpCall>(); for (int j = 0; j < 100; j++) { HttpCall call = new HttpCall(); calls.add(call); } for (HttpCall httpCall : calls) { Future<String> future = exs.submit(httpCall); lst.add(future); } for (Future<String> future : lst) { try { String result = future.get(); if (!"".equals(result)) { exs.shutdown(); break outter; } } catch (Exception e) { e.printStackTrace(); } } exs.shutdown(); System.out.println("No." + i + " done!"); } } } class HttpCall implements Callable<String> { public static LinkedList<Object> lst = new LinkedList<Object>(); @Override public String call() throws Exception { try { for (int i = 0; i < 200; i++) { synchronized (HttpCall.class) { if (!lst.isEmpty()) { lst.remove(0); } } Thread.sleep(1); synchronized (HttpCall.class) { if (lst.size() < 8) { lst.add(new Object()); } } } } catch (Exception e) { e.printStackTrace(); return "-"; } return ""; } }以上代码x86平台运行无异常,但是拿到鲲鹏aarch64平台下却会有小概率抛出空指针异常:系统信息和jdk版本如下:
  • snappy-java-1.1.2.jar 编译移植指导 for centos 7.6 ★★★
    1简介Snappy 是一个 C++ 的用来压缩和解压缩的开发包。其目标不是最大限度压缩或者兼容其他压缩格式,而是旨在提供高速压缩速度和合理的压缩率。官方链接:http://google.github.io/snappy/类别:压缩Java开发包2环境类别子项版本获取地址(方法) 硬件CPU鲲鹏920--网络Ethernet-10GE--存储SATA 4T--内存256G 2400MHz--OSCentOS7.4Kernel4.11.0-44 软件GCC4.8.5OpenJDK 1.8.0_191Maven3.5.4Snappy-java1.1.1.73依赖安装3.1安装OpenJDK下载并安装到指定目录(如/opt/tools/installed):wget  https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u191-b12/OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gztar   -zxf OpenJDK8U-jdk_aarch64_linux_hotspot_8u191b12.tar.gzmv jdk8u191-b12   /opt/tools/installed/配置java环境变量,在/etc/profile文件末尾处增加下面的代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12PATH=$JAVA_HOME/bin:$PATHexport   JAVA_HOME PATH运行下面命令,使修改的环境变量生效:source   /etc/profile3.2安装Maven下载并安装到指定目录(如/opt/tools/installed):wget   https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar   -zxf apache-maven-3.5.4-bin.tar.gzmv   apache-maven-3.5.4 /opt/tools/installed/修改maven环境变量,在/etc/profile文件末尾增加下面高亮代码:JAVA_HOME=/opt/tools/installed/jdk8u191-b12MAVEN_HOME=/opt/tools/installed/apache-maven-3.5.4PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATHexport   MAVEN_HOME   JAVA_HOME PATH运行下面的命令,是修改的环境变量生效:source   /etc/profile修改maven配置文件中的:本地仓路径、远程仓等:<!--默认在“~/.m2/”目录下,修改成你自己想保存的目录--><localRepository>/path/to/local/repo</localRepository> <!--修改成自己搭建的maven仓库,ARM使能后的jar包替换到该仓库--><mirror></mirror>3.3 其他依赖安装安装git gcc gcc-c++ make cmake libtoolsyum   install git gcc gcc-c++ make cmake libtools -y3.4 解决-fsigned-char问题1.使用command -v gcc命令寻找gcc所在路径(一般位于/usr/bin/gcc)2.更改gcc的名字(比如改成gcc-impl)3.在gcc所在目录执行vim gcc,并填入如下内容保存:#!   /bin/sh/usr/bin/gcc-impl   -fsigned-char “$@”4.执行chmod +x gcc给脚本添加执行权限5.使用与1-4步相似的方式给g++创建同名字的脚本文件4 组件编译安装    从github下载源码并解压wget https://github.com/xerial/snappy-java/archive/1.1.2.tar.gztar   -zxvf 1.1.2.tar.gz    进源码目录snappy-java-1.1.2执行编译cd snappy-java-1.1.2make若是编译报下载snappy源码失败的错误,则需要手动下载snappy的源码到target目录(此处是指snappy不是snappy-java)本文版本下载snappy-1.1.2.tar.gz,可使用如下链接:http://repository.timesys.com/buildsources/s/snappy/snappy-1.1.2/snappy-1.1.2.tar.gz下载完后重新make编译出的jar包位于:target/snappy-java-1.1.2.jar
  • [热门活动] Classroom开放免费高校课程内容,与您并肩战“疫”!
    众志成城,共击疫情,各高校响应国家号召纷纷延迟开学。为了帮助高校更好地实现疫期教学过渡,辅助高校老师快速实现线上远程教学,停课不停学,华为云Classroom服务继面向全国高校永久免费开放(960元/人年)后,现免费提供4门高校软件精品课程,涵盖丰富知识点课件与在线习题,真正帮助高校师生做到线上教学,线上练习,自我提升。只需登录华为云账号,扫描以下相关课堂二维码,即可轻松加入课堂,开始在线学习。1、JAVA应用程序设计(238份材料,19道作业,113道习题)该课程从基础语法学习开始学习JAVA编程,通过面向对象编程、抽象类与接口、文件操作、泛型集合、多线程和注解等Java语言的基础知识,逐步深入JDBC编程、分层架构等核心编程技术,详细探讨Java提供的各种软件开发技术和特性。本课程设置了五个综合案例,将案例从易到难逐步分解,最终完成整个案例。 授课目标 本课程采用“基础知识->核心应用->综合案例->企业实践”的结构和“由浅入深,由深到精”的学习模式进行编写。共19章,不仅介绍Java语言入门、面向对象编程、抽象类与接口、文件操作、泛型集合、多线程和注解等Java语言的基础知识,而且深入讲解Java的JDBC编程、分层架构等核心编程技术,详细探讨Java提供的各种软件开发技术和特性,并且每个部分配合一个综合案例进行演示,以便巩固学习效果。最后讲述软件开发云的企业一线生产环境的使用,把Java语言在华为云DevCloud中的各种应用做了案例展示,全面展现了软件开发云这一新的开发技术在Java学习中的使用方法。2、C语言程序设计(137份材料,13道作业,99道习题)本课程适合作为高等学校计算机专业及相关专业C语言程序设计课程的教材,也可作为计算机等级考试参考书,还可供从事计算机软件开发人员参考使用。主要包含,C语言概述,数据类型,基本语句与结构化程序设计,数组,函数和模块化程序设计,指针,预处理命令,复杂数据类型,文件。附有习题,习题覆盖知识重点,题型丰富。3、数据结构(C++)实践(653份材料,48道作业,417道习题)本课程介绍了数据结构、算法以及抽象数据类型的概念,介绍了线性表、栈、队列和串、数组、广义表、树和二叉树、图等常用数据结构,讨论了常用的查找、排序和索引技术,给出了较多的数据结构的应用实例,同时介绍了算法的分析与设计,和一些常用的算法。本课程内容丰富,层次清晰,讲解深入浅出,可作为计算机及相关专业本、专科数据结构课程的教材,也可供从事计算机软件开发和应用的工程技术人员阅读、参考。4、Web实践课(313份材料,23道作业,170道习题)本门课程涵盖:WEB基础、CSS、JS、H5等教学内容组成,学生可以逐步提升前端开发能力。
  • [中间件] 【华为云鲲鹏云服务最佳实践】【工具篇】第120期Snappy-java1.1.0.1安装配置指南
    1、简介snappy-java是snappy http://code.google.com/p/snappy/的Java端口,这是Google开发的快速C ++压缩器/解压缩器。 2、基础环境类别子项版本获取地址(方法)华为云虚拟机KC1(920)--OSCentOS7.6Kernel4.14软件包Maven3.5.4https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gzSnappy-java1.1.0.1https://github.com/xerial/snappy-java/archive/1.1.0.1.zip3、依赖安装yum安装需要的依赖yum install git gcc gcc-c++ make cmake libtool autoconf automake ant glibc-static*  libstdc++-static java-1.8.0-openjdk java-1.8.0-openjdk-devel -y安装Mavenwget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gztar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/hadoopapps/apache-maven/配置maven的环境变量vim /etc/profileexport M2_HOME=/usr/local/hadoopapps/apache-maven/apache-maven-3.5.4 export PATH=$M2_HOME/bin:$PATH使环境变量生效source /etc/profile测试是否安装完成mvn –v 4、组件编译wget https://github.com/xerial/snappy-java/archive/1.1.0.1.zipunzip 1.1.0.1.zipcd snappy-java-1.1.0.1/make若出现编译中下载超时的情况,修改下载地址vim makefile         https://src.fedoraproject.org/lookaside/pkgs/snappy/snappy-1.1.0.tar.gz/c8f3ef29b5281e78f4946b2d739cea4f/snappy-1.1.0.tar.gz可以将包下载好放在生成的target目录下,注释下载路径这行若出现在此路径下http://typesafe.artifactoryonline.com/typesafe/ivy-releases下载失败的情况修改apt文件中下载的路径 declare sbt_launch_repo="http://dl.bintray.com/typesafe/ivy-releases" 若还是失败,可以通过此链接将此jar包下载下来放在指定的/root/路径下 make执行编译 编出来的在target下 5、系统配置无6、测试无7、参考信息无8、FAQ无
总条数:2301 到第 页
上滑加载中