• KUNPENG平台http_load_09Mar2016移植自动安装脚本
    1 http_load简介http_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服务器的吞吐量与负载,web页面的性能。2 环境信息2.1 环境信息类别子项版本获取地址OSCentOS7.5 Aarch64href="https://www.centos.org/download/" https://www.centos.org/download/服务器配置16U16GB40GB软件http_load09Mar2016http://www.acme.com/software/http_load/http_load-09Mar2016.tar.gz3 软件移植3.1 环境准备OS安装类型:CentOS-7.5-aarch64-1804。 注:操作系统安装使用最小简化版安装(如上图),其余步骤安装一般安装操作系统步骤即可。 3.1.1 网络1、 测试http_load需能ping通用来测试的地址,需为服务器开通外网权限。3.1.2 相关软件下载上传1、上传CentOS 7.5系统ISO镜像文件至服务器2、 下载并上传2.1环境信息表格中软件一栏中的所有源码包至服务器任意目录下,如/opt:3.2 安装http_load    1、 安装http_load    上传以下脚本至要安装http_load的服务器上的任意目录,如/opt。    (http_load_install.sh)    添加执行权限:    chmod +x /opt/http_load_install.sh    执行脚本    sh /opt/http_load_install.sh    2、 提示http_load install success表示安装成功。3.3 验证执行1. 进入http_load安装目录cd /usr/local/src/http_load-09Mar2016/,创建一个测试文件,命名urls。 2.执行测试命令./http_load -rate 5 -seconds 10 urls,如下图则表示安装成功。 4 参考信息https://www.huaweicloud.com/kunpeng/software.html
  • [技术干货] Edge Service转发http请求时QueryString丢失
    通过Edge Service转发请求,当前请求method=Get,请求包含queryString和header,转发到后端服务后,发现queryString和header均已丢失。PS: 直接调用后端服务数据正常。1、通过queryString2、通过header3、直接调用
  • [ManageOne二...] 【华为云Stack ManageOne运维侧北向对接】 RESTful接口调用准备工作
    1 前言本文档指导适用于华为云Stack ManageOne 6.3.X 6.5.X、8.X 版本ManageOne运维侧作为华为云Stack的统一监控平台,对外提供了开放的RESTful API,支持第三方系统定时、实时获得云资源池中的资源、性能、告警数据,具体的有:物理设备(服务器、存储、交换机、路由器等)、虚拟化资源(虚拟机、云磁盘、VPC、vFW等)等资源的配置信息;物理设备、虚拟化资源的实时性能监控数据和历史性能监控数据;云平台中产生的历史告警和实时告警。2 准备工作第三方运维系统调用ManageOne运维面RESTful接口前,需要做一些准备工作,才能完成与ManageOne运维面进行对接。准备工作主要有以下几部分:获取接口文档,接口文档中有对运维侧接口的详细说明,您可以通过接口文档了解到我们ManageOne运维侧支持监控的资源类型,以及监控指标。创建对接用户,调用ManageOne运维侧北向接口时需要鉴权,我们会提供一种特定角色的用户给您用来获取权限,从而调用ManageOne运维侧的业务接口。配置证书(可选),ManageOne运维侧提供的RESTful接口均使用HTTPS协议,您在进行对接时,可以选择校验ManageOne运维侧(服务提供者)的证书,来确保该服务端是可信的,此时您需要获得ManageOne运维侧提供的证书,并在您的代码里进行处理,即建立HTTPS链接时校验证书;您也可以选择信任ManageOne运维侧,此时不需要处理证书。证书获取方法可参考此链接。调用ManageOne运维侧接口时,需要使用ManageOne运维侧在APIG上注册的域名(没有外部DNS情况,需要在您本机hosts文件中,配置APIG的浮动IP与ManageOne运维面访问域名的映射关系)。2.1 获取接口文档各版本接口文档下载地址:cid:link_2如果您没有下载权限,您可以联系现网华为工程师,获取所需文档请结合现网具体交付的版本下载接口文档,若需要英文版接口文档,点击浏览器右上角切换语言,即可获得。下载得到的为华为云Stack解决方案的完整接口文档,我们打开压缩包,提取ManageOne API参考文档包,然后打开该文档包,找出下图红框标注的文档(以6.5.1接口文档接口为例):各文档作用说明如下:《ManageOne 6.5.1 运维面API参考 03.doc》:ManageOne运维侧接口文档说明,主要说明ManageOne运维侧所提供的北向接口列表,并详细说明每个接口的能力,参数与响应,使用时请按照文档提示,结合资源、性能模型表格进行查阅;《ManageOne 6.5.1 系统资源北向模型 02.xlsx》:ManageOne运维侧系统资源模型表,主要对ManageOne运维侧支持监控的系统类资源、指标进行说明,系统资源主要包含:物理设备(如服务器、存储、网络设备等)、管理节点虚拟机(如ManageOne平台、云服务节点等,区别于租户申请的虚拟机)、虚拟化物理主机(宿主机)、逻辑位置等;《ManageOne 6.5.1 租户资源北向模型 02.xlsx》:ManageOne运维侧租户资源模型表,主要对ManageOne运维侧支持监控的租户类资源、指标进行说明,租户资源主要包含:租户申请的计算、存储、网络资源,以及资源间的关系等;《ManageOne 6.5.1 性能指标统一模型 02.xlsx》:ManageOne运维侧支持监控的资源的性能指标说明,针对每种资源,给出了ManageOne运维侧支持监控的指标。2.2 创建对接账户第三方系统调用ManageOne运维侧RESTful API时,需要使用特定类型的账户,用这个账户作为机机账户鉴权。8.2.0及之前的版本,参考以下步骤创建用户:联系华为技术技术人员,获得ManageOne运维面访问链接,如:https://oc.hcs.com:31943使用管理员账户登录ManageOne运维侧页面,依次点击“系统管理”-->“安全管理”-->"用户管理"菜单,进入到用户管理页面,如下图所示:点击“创建”按钮,类型选择“三方系统接入”,输入用户名、密码之后,点击“下一步”,如下图所示:所属角色,选择“北向用户组”,选择完毕后,点击下一步,如下图所示:“访问控制”选项选择默认策略,然后点击“完成”按钮,即可完成用户创建,如下图:8.2.1-8.3.0版本,参考以下步骤创建用户:联系华为技术技术人员,获得ManageOne运维面访问链接,如:https://oc.hcs.com:31943使用管理员账户登录ManageOne运维侧页面,依次点击“系统管理”->“系统集成”->“北向用户管理”菜单,进入到北向用户管理页面,如下图所示:​填写用户信息,然后单击“完成”,即可完成用户创建。8.3.1及以上版本,参考此链接创建对接用户:cid:link_02.3 获取APIGateway对外访问IP及运维侧对外访问域名华为云Stack解决方案对外开放的北向接口,均通过APIGateway提供,故而第三方调用ManageOne运维侧接口前,需要先获取APIGateway的对外访问IP,以及ManageOne运维侧在APIGateway上注册的服务域名,然后将二者的映射关系配置在本地hosts文件中,如果现网有DNS服务器,则可将该映射关系配置在DNS服务器中。2.3.1 华为云Stack 6.3.X版本华为云Stack版本中,由于ManageOne接口并未注册至API Gateway,故而只能通过ManageOne运维面浮动IP+端口的方式进行调用,ManageOne运维面浮动IP查找方式如下:联系华为现场工程师,获取从华为云Stack安装部署工具中导出的环境LLD文件;在LLD的“2.1 工具生成的IP参数”sheet页中搜索参数名为“ManageOne-OM-Float-IP”的部件,该部件的IP即为ManageOne运维面浮动IP;调用接口使用的端口固定为263352.3.2 华为云Stack 6.5.X版本API Gateway IP及ManageOne运维侧北向接口调用域名获取方法如下:联系华为现场工程师,获取从华为云Stack安装部署工具中导出的环境LLD文件;在LLD的“2.1 工具生成的IP参数”sheet页中搜索参数名为“AGW-LB-Float-IP”的部件,该部件的IP即为API Gateway IP;在LLD的“1.2 基本参数”sheet页,获取external_global_domain_name参数(非oc_external_global_domain_name),通过以下规则拼接得到运维侧对外访问域名:oc.{external_global_domain_name}参数值,如external_global_domain_name的值为:demo.com,则对应的ManageOne运维侧对外访问域名为:oc.demo.com将API Gateway IP与运维侧对外访问域名的关系追加到本地hosts文件中,若为windows系统,则在C:\Windows\System32\drivers\etc\hosts(若为linux系统,则一般在/etc/hosts中配置),示例如下:192.168.49.63 oc.demo.com注意:北向接口使用的域名与ManageOne页面不相同,请勿使用形如“https://xx.xxx.xxx.xxx:31943/” 这样的域名进行接口调用!!!2.3.3 华为云Stack 8.X版本APIgateway IP及ManageOne运维侧北向接口调用域名获取方法如下:联系华为现场工程师,获取从华为云Stack安装部署工具中导出的环境LLD文件;在LLD的“2.1 工具生成的IP参数”sheet页中搜索参数名为“AGW-LB-Float-IP”的部件,该部件的IP即为API Gateway IP;在LLD的“1.2 基本参数”sheet页,获取参数external_global_domain_name(非oc_external_global_domain_name)和region0_id的值,通过以下规则拼接得到运维侧对外访问域名:oc.{region_id}.{external_global_domain_name}参数值,如external_global_domain_name的值为:demo.com,region_id的值为sa-fb-1,则对应的ManageOne运维侧对外访问域名为:oc.sa-fb-1.demo.com将API Gateway IP与运维侧对外访问域名的关系追加到本地hosts文件中,若为windows系统,则在C:\Windows\System32\drivers\etc\hosts(若为linux系统,则一般在/etc/hosts中配置),示例如下:192.168.49.63 oc.sa-fb-1.demo.com注意:北向接口使用的域名与ManageOne页面不相同,请勿使用形如“https://xx.xxx.xxx.xxx:31943/” 这样的域名进行接口调用!!!说明:如果现网中,第三方系统与APIGateway的对外IP所在的网络平面有防火墙隔离,需要做网络策略,则需要打通第三方系统与APIGateway的对外IP的443端口,可采用telnet测试防火墙策略是否成功(命令格式:telnet {网关的对外IP} 443),如果能够访问,页面会弹出连接建立的提示,表明策略成功,如下图(此处已22号端口为例):如出现下面的现象,则防火墙策略未成功,需要进一步排查网络配置:至此,我们就完成了对接ManageOne运维侧的所有准备工作,接下来就可以调用ManageOne运维侧接口,获取您需要的数据了,详情参考后续帖子。
  • [互动交流] 使用obsfs并行文件系统挂载不能配置跨域,挂载正常,但是http请求时跨域了无法访问,请问应如何解决?
    使用obsfs并行文件系统挂载,不能配置跨域;挂载正常,但是http请求时跨域了,无法正常使用,请问有什么方法可以解决吗?谢谢,错误信息如下:
  • [问题求助] 请教:如何通过http访问开启sslEnabled的服务
    请教:如何通过http访问开启sslEnabled的服务A服务开启sslEnabled,如下所示:cse:  service:    registry:      address: https://xx.xx.xx.xx:xxxxx  rest:    address: 0.0.0.0:8080?sslEnabled=true ssl设置如下所示: ssl:  protocols: TLSv1.2  authPeer: true  checkCN.host: false  trustStore: trust.jks  trustStoreType: JKS  trustStoreValue: xxx  keyStore: server.p12  keyStoreType: PKCS12  keyStoreValue: xxx  crl: revoke.crl  sslCustomClass: xxx请问,如何不通过cse方式,而是通过http访问A服务?
  • [技术干货] 怎样使用花生壳将内网映射至外网?
    1. 前言最近很多客户在调试订阅推送的时候,会发现一个问题,本地启动了一个应用服务器,映射出来的回调地址是一个内网地址,当把这个地址设置给平台时,平台无法把消息推送到内网来,那么这时候就需要把内网地址映射到外网去,让外网能够访问。简单来说就是你在局域网启动的服务,外网访问不到,需要通过内网穿透来实现外网访问内网服务1.1相关概念订阅:北向应用服务器调用平台订阅接口,将回调地址设置给平台;推送:平台调用北向应用服务器的restful接口将数据主动发给北向应用;restful接口:是平台在北向接口文档的推送通知(https://support.huaweicloud.com/api-IoT/iot_06_0032.html)章节提前定好,由北向应用服务器实现的;回调地址:北向应用实现消息推送的restful接口时,可以自定义接口的URL,这些URL就是回调地址;注意:这个回调地址需要公网能够访问2. 花生壳内网穿透目前网上支持内网穿透的工具有很多,包括 Ngrok,Natapp,小米球,echosite等这里介绍下花生壳的内网穿透功能 花生壳官网: https://hsk.oray.com 2.1 注册用户获取免费域名 图.注册账号图个人用户还是企业用户,请按需注册 图.获取免费域名图2.2 开通内网穿透服务注意,目前花生壳需要实名认证,才能使用后面的功能,实名认证步骤根据提示来操作就好了 点击购买,免费版不用付费即可开通2.3 安装花生壳    官网下载花生壳最新版, 安装后打开登录, 账号密码同上面注册的账号密码. 图.花生壳客户端登录页面图2.4 添加内网穿透服务    登录后可以看到主页面的三个功能    我的域名:目前就一个, 注册账号时获取的免费花生壳域名,也可以购买,如果你需要的话;内网穿透:就是支持外网访问内网的功能;自诊断:检查域名可用情况, 检查内网穿透服务可用情况。    选择内网穿透,双击打开 2.4 内网穿透配置开通内网穿透服务后进入内网穿透可查看内网穿透列表,目前还是没有的,添加一条映射 配置,这里只需要注意 内网主机如下下图,端口自行设置你服务启动的端口。填写完毕后点击确定内外主机地址:如下图IPV4对应的地址 如图添加成功 自诊断成功,使用图中的映射地址在浏览器中即可访问 3. postman测试,只是post的地址不同,返回的内容是相同的本地IP映射出去的外网地址如果没有返回正确的内容,请检查你自己的本地服务是否启动正常本地启动一个服务在之前的帖子已经说过了https://bbs.huaweicloud.com/forum/thread-24891-1-1.html
  • [云上求助] SCE流程中直接调用http接口方法
    需要SCE流程中直接调用http接口进行查询,**数据等功能请问在流程中如何实现,web请求cell是否可以直接使用?是否有客户已经在用此cell,是否有案例提供参考?外接java接口cell是否可以正常使用,有什么要求和限制没有
  • [入驻式求助] HTTP请求返回值
    【问题简要】HTTP请求返回值是否有字符限制,现在在流程中只能显示15个字,超过15个,就显示为?。【问题类别】      可选问题类别:IVR【IPCC解决方案版本】【期望解决时间】今天【问题现象描述】HTTP请求返回值是否有字符限制,现在在流程中只能显示15个字,超过15个,就显示为?。 【日志或错误截图】 【附件】【可选】
  • [交流分享] #化鲲为鹏,我有话说# 解决http://ddebs.ubuntu.com源下各类架构包太慢的问题
    #化鲲为鹏,我有话说#ARM(鲲鹏),给您不一样的感觉。解决http://ddebs.ubuntu.com源下各类架构包太慢的问题。这个源貌似国内没有镜像,apt-get国内用户有些一秒20k甚至1000b,^_^!那要用到上面的各种接近1g的架构包怎么办呢?现在以ubuntu x64为例,arm64作为习题请自行推理练习。比如800m的debuginfo kernel xx架构 ddeb包apt-get非常慢,那么可以选择自己编译源码来生成。    $ cd $HOME     $ sudo apt-get install dpkg-dev debhelper gawk     $ mkdir tmp     $ cd tmp     $ sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r)     $ apt-get source linux-image-$(uname -r)cd linux-signed-hwe-5.0.0/上面是我这次实际生成的目录,请根据实际情况进入自己的目录。sudo apt-get install pkg-config-dbgsym fakeroot debian/rules clean AUTOBUILD=1 fakeroot debian/rules binary skipdbg=false sudo dpkg -i ../linux-image-5.0.0-27-generic-dbgsym_5.0.0-27.28~18.04.1_amd64.ddeb提示依赖linux-image-unsigned-5.0.0-27-generic-dbgsym这...已经做了一个包,再做一个就不符合这篇文章炫酷装逼的风格了...所以必须用另一外一条路子来展现拉风,就是shell拼命刷新那种(先假装不知道apt-fast,哈哈哈)这时候不要去百度,去bing搜索linux-image-unsigned-5.0.0-27-generic-dbgsym就能获得下载链接http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddebsudo dpkg -r linux-image-5.0.0-27-generic-dbgsym sudo apt-get install axel cd ~ mkdir axel axel -n 1024 -o axel/ http://ddebs.ubuntu.com/pool/main/l/linux/linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddeb已下载 834.4 兆字节,用时 1 分 34 秒。(9018.85 KB/s)cd axel/ sudo dpkg -i linux-image-unsigned-5.0.0-27-generic-dbgsym_5.0.0-27.28_amd64.ddeb cd ~ sudo dpkg -i tmp/linux-signed-hwe-5.0.0/linux-image-5.0.0-27-generic-dbgsym_5.0.0-27.28~18.04.1_amd64.ddeb解决依赖关系~
  • [交流分享] Android studio3.4 Unable to resolve dependency问题解决方法
    化鲲为鹏,我有话说超级小白刚入门安卓开发,用的是ecplise,但是听了听一些老师的课程以及翻了些Android入门的书,突然觉得:这都什么年代了,还用ecplise学安卓,太落后了吧。于是我去下载了Android studio比较新的一个版本,3.4版本,并根据网上的教程,一点点安装好,结果没想到,我的噩梦就此来了。不管我以什么方式新建一个新的工程,一编译就出错,困扰了我两天Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0.新人小白啥也不懂,就只能到处去百度,去CSDN,结果网上的解决办法一大堆,终究是没有能解决我的问题。最后终于又找到了一篇帖子。https://www.jianshu.com/p/0d0ebb86dd17?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq步骤一:在AndroidStudio打开setting,可以从下图的地址中找到自己本地的.gradle文件的路径,然后在该路径下找到gradle.properties文件,并打开步骤二:在gradle.properties中把最后四句用#注释掉,然后重启AS 3.4,终于通过编译了最后,我的问题就终于解决了,哈哈,真开心!落款:云南大学
  • [分享交流] 【Java TCP/IP Socket】TCP Socket
    TCP的Java支持     协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构、交换方式、包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP协议族有IP协议、TCP协议和UDP协议。现在TCP/IP协议族中的主要socket类型为流套接字(使用TCP协议)和数据报套接字(使用UDP协议)。    TCP协议提供面向连接的服务,通过它建立的是可靠地连接。Java为TCP协议提供了两个类:Socket类和ServerSocket类。一个Socket实例代表了TCP连接的一个客户端,而一个ServerSocket实例代表了TCP连接的一个服务器端,一般在TCP Socket编程中,客户端有多个,而服务器端只有一个,客户端TCP向服务器端TCP发送连接请求,服务器端的ServerSocket实例则**来自客户端的TCP连接请求,并为每个请求创建新的Socket实例,由于服务端在调用accept()等待客户端的连接请求时会阻塞,直到收到客户端发送的连接请求才会继续往下执行代码,因此要为每个Socket连接开启一个线程。服务器端要同时处理ServerSocket实例和Socket实例,而客户端只需要使用Socket实例。另外,每个Socket实例会关联一个InputStream和OutputStream对象,我们通过将字节写入套接字的OutputStream来发送数据,并通过从InputStream来接收数据。 TCP连接的建立步骤  客户端向服务器端发送连接请求后,就被动地等待服务器的响应。典型的TCP客户端要经过下面三步操作:     1、创建一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接;   2.通过套接字的I/O流与服务端通信;   3、使用Socket类的close方法关闭连接。   服务端的工作是建立一个通信终端,并被动地等待客户端的连接。典型的TCP服务端执行如下两步操作:     1、创建一个ServerSocket实例并指定本地端口,用来**客户端在该端口发送的TCP连接请求;     2、重复执行:           1)调用ServerSocket的accept()方法以获取客户端连接,并通过其返回值创建一个Socket实例;           2)为返回的Socket实例开启新的线程,并使用返回的Socket实例的I/O流与客户端通信;           3)通信完成后,使用Socket类的close()方法关闭该客户端的套接字连接。 TCP Socket Demo     下面给出一个客户端服务端TCP通信的Demo,该客户端在20006端口请求与服务端建立TCP连接,客户端不断接收键盘输入,并将其发送到服务端,服务端在接收到的数据前面加上“echo”字符串,并将组合后的字符串发回给客户端,如此循环,直到客户端接收到键盘输入“bye”为止。     客户端代码如下:  package zyb.org.client; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.SocketTimeoutException; public class Client1 {        public static void main(String[] args) throws IOException {               //客户端请求与本机在20006端口建立TCP连接               Socket client = new Socket("127.0.0.1", 20006);               client.setSoTimeout(10000);               //获取键盘输入               BufferedReader input = new BufferedReader(new InputStreamReader(System.in));               //获取Socket的输出流,用来发送数据到服务端               PrintStream out = new PrintStream(client.getOutputStream());               //获取Socket的输入流,用来接收从服务端发送过来的数据               BufferedReader buf =  new BufferedReader(new InputStreamReader(client.getInputStream()));               boolean flag = true;               while(flag){                       System.out.print("输入信息:");                       String str = input.readLine();                       //发送数据到服务端                       out.println(str);                       if("bye".equals(str)){                               flag = false;                       }else{                               try{                                      //从服务器端接收数据有个时间限制(系统自设,也可以自己设置),超过了这个时间,便会抛出该异常                                      String echo = buf.readLine();                                      System.out.println(echo);                               }catch(SocketTimeoutException e){                                      System.out.println("Time out, No response");                               }                       }               }               input.close();               if(client != null){                //如果构造函数建立起了连接,则关闭套接字,如果没有建立起连接,自然不用关闭                       client.close(); //只关闭socket,其关联的输入输出流也会被关闭               }        }}     服务端需要用到多线程,这里单独写了一个多线程类,代码如下: package zyb.org.server; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket; /** * 该类为多线程类,用于服务端 */public class ServerThread implements Runnable {         private Socket client = null;        public ServerThread(Socket client){               this.client = client;        }                @Override        public void run() {               try{                       //获取Socket的输出流,用来向客户端发送数据                       PrintStream out = new PrintStream(client.getOutputStream());                       //获取Socket的输入流,用来接收从客户端发送过来的数据                       BufferedReader buf = new BufferedReader(new InputStreamReader(client.getInputStream()));                       boolean flag =true;                       while(flag){                               //接收从客户端发送过来的数据                               String str =  buf.readLine();                               if(str == null || "".equals(str)){                                       flag = false;                               }else{                                      if("bye".equals(str)){                                              flag = false;                                      }else{                                              //将接收到的字符串前面加上echo,发送到对应的客户端                                              out.println("echo:" + str);                                      }                               }                       }                       out.close();                       client.close();               }catch(Exception e){                       e.printStackTrace();               }        } }    服务端处理TCP连接请求的代码如下:package zyb.org.server; import java.net.ServerSocket;import java.net.Socket; public class Server1 {        public static void main(String[] args) throws Exception{               //服务端在20006端口**客户端请求的TCP连接               ServerSocket server = new ServerSocket(20006);               Socket client = null;               boolean f = true;               while(f){                       //等待客户端的连接,如果没有获取连接                       client = server.accept();                       System.out.println("与客户端连接成功!");                       //为每个客户端连接开启一个线程                       new Thread(new ServerThread(client)).start();               }               server.close();        }}     执行结果截图如下:(转载自http://3ms.huawei.com/km/blogs/details/6038177)
  • [产品体验官] 体验华为云GES图引擎服务——ghc
     前言由于本人确实没有接触过图引擎服务相关的产品,自己对于图引擎的了解也不是很多,所以自己的定位只能是小白用户。再者说,我使用华为云服务平台的次数也很少,我的定位就是小白中的小白。下面就我本人一步一步的操作过程简单描述一下此次体验。一、      操作流程1、创建资源步骤按照操作文档先进行obs资源的购买和创建。https://www.huaweicloud.com/product/obs.html点击上述地址,进入官网后,按照以下步骤创建资源桶区域可以使用的不多,我这边选择的事华北-北京四。(这个区域要记住,后面会用到)选择完毕后,点击立即创建。 创建完毕后,可以尝试在桶中上传一些文件测试一下。按照操作文档购买创建图引擎服务。https://www.huaweicloud.com/product/ges.html先购买资源。创建桶,这里选择开发学习。在创建元数据的时候,先将元数据的各个模板下载下来放在本地文件中,然后在上传到之前创建的obs桶资源中。然后点击创建元数据,这里直接导入下载好的模板。在创建边数据、点数据的时候选择obs资源中上传的对应文件。选择文件完毕后,点击立即购买。至此,创建过程基本结束了。我自己在创建过程有点小坎坷,最终慢慢在摸索中创建完成了。在这里我个人觉得需要注意的就是,自己的资源库区域要和服务区域地址一致,否则总是找不到资源地址。如下图,我在这里是有一点感触的。2、体验资源在元数据管理界面就可以看到自己创建的数据列表了。在更多选项中可以启动自己的图引擎服务。启动是需要一定时间的,耐心等待一下,就可以体验服务啦。服务启动后,点击操作栏中的访问按钮,来到以下页面。左侧边栏是图分析算法栏,每种算法的参数大同小异,变更参数输入来测试不同的场景。运行PageRank算法后,得到以下结果。 可以在搜索框中输入节点名称来查询某个具体的节点信息。在节点上单击右键来查询节点的属性以及其连线信息其他的算法在参数和页面展示上会有不同。有需要填写的参数的时候,页面也会给出相应的参数提示信息。由于我在图算法这方面的研究不多,所以其他的算法我只是简单地测试了一下效果,并没有深入的探究。二、      需求建议在体验过程中并没有和其他平台的相关模块进行对比,所以只针对本平台提出一些我个人的意见。1.         资源在启动的时候等待的时间还是有点长的,不知道是网络影响,还是本身资源比较大?2.         在有些算法中节点是带有名称,有便于搜索框进行搜索,而有些算法中并没有,不知道是设计如此还是我没有找到相应技巧。3.         在放大或缩小某个具体节点时,会有一定程度的卡顿。这种卡顿虽然在某种层次上可以接受,但是应该是可以优化的,毕竟才只有几百个点几千个边的数量级。4.         在创建资源的时候提示信息还是不够明确,我个人看着操作文档都试了两三次才成功。5.         在算法栏中是否可以加上一些算法的描述信息,因为不是经常用的人还是不了解的。三、      总结整体的体验效果还是比较满意的。虽然不是自己涉及的领域,但是上手还是比较容易的。至于深层次的东西,那就留给大佬们去探究吧!    高会淳华为云账号:ghc123456微信昵称:淳2019年8月27日
  • 【鲲鹏翱翔】鲲鹏服务器GCC交叉编译环境搭建指南
    1、简介交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码。本指南主要内容为在非ARM架构服务器环境下搭建ARM的GCC编译环境,编译基于ARM架构的应用软件。交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的GCC相同。搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出ARM架构下Linux系统所需的操作系统、应用程序等,然后再上传到ARM服务器执行。2、环境类别版本配置备注ARM测试服务器CentOS7.5ARM通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB华为云官网正在公测x86编译服务器CentOS7.52vCPUs|4GB|s3.large.2 1.在华为云官网购买https://www.huaweicloud.com/product/ecs.html2.本地服务器部署Centos7.5x86编译服务器Ubuntu16.042vCPUs|4GB|s3.large.21.在华为云官网购买https://www.huaweicloud.com/product/ecs.html2.本地服务器部署Ubuntu16.04交叉编译器arm-linux-gcc 5.5.0https://releases.linaro.org/components/toolchain/binaries/5.5-2017.10/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz3、交叉编译器安装(x86服务器)3.1.安装标准的C开发环境执行以下命令:Ubuntu: apt-get install build-essentialCentOS: yum groupinstall Development Tools3.2.在/usr/local下建立名为ARM-toolchain的文件夹mkdir   /usr/local/ARM-toolchain3.3 下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz    可以通过wget的形式下载cd   /usr/local/ARM-toolchainwget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz     也可以从网页上下载后上传到/usr/local/ARM-toolchain目录下。交叉编译工具链的地址在https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/      下载gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz下载完成后,解压tar包tar -xvf   gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz3.4.配置环境变量修改配置文件,在配置文件的最后一行加入路径配置:Ubuntu:vim /etc/bash.bashrc # Add ARM toolschain pathPATH= /usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin:"${PATH}"CentOS: vim /etc/profile# Add ARM toolschain pathexport   PATH=$PATH:/usr/local/ARM-toolchain/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin3.5.环境变量生效与测试执行以下命令:Ubuntu:source /etc/bash.bashrc          aarch64-linux-gnu-gcc  -v执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本CentOS: source /etc/profile         aarch64-linux-gnu-gcc  -v执行上面的命令,显示arm-linux-gnueabi-gcc -v信息和版本4、测试4.1.在x86服务器交叉编译1、创建hello.c执行:vim hello.c#include <stdio.h>int main(void){            printf("hello linux\n");          return   0;}2.交叉编译执行:aarch64-linux-gnu-gcc -o arm-hello hello.c4.2.测试执行1、在x86服务器上测试执行:chmod +x arm-hello执行:./arm-hello页面显示:-bash: ./arm-hello: cannot   execute binary file 2. 拷贝执行文件至ARM服务器执行:chmod +x arm-hello执行:./arm-hello页面显示:hello linux 5、参考信息     交叉编译指导: https://releases.linaro.org/components/toolchain/binaries/https://blog.csdn.net/mars1743/article/details/20492285 6、FAQ     待补充
  • 【鲲鹏翱翔】应用中间件05-solr移植安装指南
    1、简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。Solr可以支持在arm环境下运行,无需重新编译。但需要配合Tomcat 8以上版本使用。可以从官网下载最新的Solr包进行解压缩、配置、运行。2、环境类别版本配置备注ARM测试服务器CentOS7.4arm通用计算增强型 | rc3.xlarge.4 | 4vCPUs | 14GB华为云公测可申请ARM服务器3、Tomcat安装(详细见tomcat指导安装文档)4、Solr安装(arm服务器)4.1.下载安装包wget http://mirror.bit.edu.cn/apache/lucene/solr/8.1.1/solr-8.1.1.zip4.2.解压缩包unzip solr-8.1.1.zip4.3.复制文件夹到目录1.拷贝solr-8.1.1/server/solr-webapp/webapp目录到tomcat/webapp/,改名叫solrcp -r solr-8.1.1/server/solr-webapp/webapp tomcat8/webapps/solr2.拷贝solr-8.1.1/server/lib/ext下的jar包到tomcat下的webapps/solr/WEB-INF/lib路径下cp solr-8.1.1/server/lib/ext/*.jar tomcat8/webapps/solr/WEB-INF/lib/3. 拷贝solr-8.1.1/dist 下的solr-dataimporthandler-8.1.1.jar、solr-dataimporthandler-extras-8.1.1.jar 包到tomcat下的webapps/solr/WEB-INF/lib路径cp solr-8.1.1/dist/solr-dataimporthandler*.jar   tomcat8/webapps/solr/WEB-INF/lib4.拷贝solr-8.1.1/server/lib下的metrics开头的5个jar到tomcat下的webapps/solr/WEB-INF/lib路径下(metrics-core-3.2.2.jar、metrics-ganglia-3.2.2.jar、metrics-graphite-3.2.2.jar、metrics-jetty9-3.2.2.jar、metrics-jvm-3.2.2.jar)5.新建一个文件夹solr-home,并将solr-8.1.1/server/路径下solr文件夹中的内容拷贝过来mkdir solr-homecp -r solr-8.1.1/server/solr/* solr-home  (复制到刚刚新建的solr-home里)4.4.环境配置1.进入tomcat8下的webapps/solr/WEB-INF下修改web.xmlcd tomcat8/webapps/solr/WEB-INFvi web.xml2. //记得打开此处的注释(如果没有手动输入)<env-entry>    <env-entry-name>solr/home</env-entry-name>  <env-entry-value>/usr/local/solr/solr-home</env-entry-value>//自己solr-home的位置    <env-entry-type>java.lang.String</env-entry-type></env-entry> //中间省略...//下面这段注释掉<!--  <security-constraint>    <web-resource-collection>        <web-resource-name>Disable TRACE</web-resource-name>        <url-pattern>/</url-pattern>        <http-method>TRACE</http-method>      </web-resource-collection>    <auth-constraint/>  </security-constraint>  <security-constraint>      <web-resource-collection>        <web-resource-name>Enable everything but   TRACE</web-resource-name>        <url-pattern>/</url-pattern>        <http-method-omission>TRACE</http-method-omission>      </web-resource-collection>  </security-constraint>  -->5、测试5.1.测试执行1.运行tomcat2.访问http://ip:port/solr/index.html(ip端口根据tomcat配置来填) 6、参考信息     solr安装指导: https://blog.csdn.net/qq_40524941/article/details/815122937、FAQ     待补充来源: 【鲲鹏翱翔】应用中间件05-solr移植安装指南
  • [热门活动] 这个七夕节,程序员的花式表白是?
    【摘要】 今天是七夕节,中国传统的情人节。 今天我把我的表白方式传送给大家,请注意查收!今天是七夕节,中国传统的情人节。可预期到的是,估计有很多年轻的情侣们,已经为这个节日提前准备好久了吧?烂大街的套路无非就是送花、吃饭、电影院,看完电影找酒店。作为一个引爆消费的特别日子,程序猿们如何过节呢?今天公司博客举行了一个投票活动,七夕怎么过!结果多数人的投票都是闭门思过、一觉而过,难怪你们找不到女朋友啊!今天我就教你们如何不花钱,还能为心仪的她送去特别的礼物!这个骚操作不知道诱惑了多少人去学python,其实怎么说,如果真的代码写成那个样子,下班走夜路最好自带三级头,不然很容易挨闷棍。代码如下:print('\n'.join([''.join([('LovePython'[(x-y)%10]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)]))效果:技术是不错,但是如果你把这个当做礼物送给女朋友,除非你是不想见到明天的太阳了…今天要教大家更犀利的骚操作!现在不说妹子的手机有没有美图秀秀之类的美化软件了,连很多爷们儿的手机都有这些软件你敢信?美图秀秀有一个拼图的功能,你可以手动选择心形拼图,然后把你喜欢的图片一张一张的贴到对应的方框内,最终做出一个心形的图片…那么今天,我就教大家使用Python,绘制一个心形的女友照片墙!美图秀秀上,存在了大小图的分类,我们为了降低难度,都是用等比例的图片,进行心形绘图。首先我们需要先画出来一个心形的图片,然后按照小格子进行分类。我拿html配合css简单做了一个心形的图,大家先来看看效果。因为是边想边做的格子,所以拿ul标签一点一点拼出来的,没有使用js去动态生成…怕前端大神嘲讽,就不贴代码了太占内容(文末会随python代码一起提供下载路径…)这是一个9X9的div排列框体,我们只需要将红色的方框填充上女友的图片,即可完成心形照片墙的效果。你说自己没有女友?没关系啊,你给心仪的妹子做一个心形照片墙,说不定今天你就有了!当然你也可以为你的基 友做一个,我这人很开明,不鼓励不排斥,哈哈…准备图片首先你需要整理一些女友的图片,这个是大前提!我从微信找了12张媳妇儿的照片,先保存到一个文件夹内:随机选填这里有人要问了,数了一下上面红色的方格一共有52个,你只有12章图片,怎么做?照你这么说,如果你直接从相册取1000张图片,是不是还得给你画个花心大萝卜出来?我们需要引入random模块,并且使用random.choice将图片的list进行动态选择并填充。这样就解决了大家图片数量不固定的问题,你可以放几千张选也可以只放一张!图片合成昨天写到的python图片转素描画中使用到了pillow库,今天我们一样用它就能实现!def mark_pictures(self):        heart_image = Image.new('RGB', (128 * SideLength, 128 * SideLength))        row = col = 0        for side in range(SideLength * SideLength):            if images_side_calc(col, row):                img = Image.open(random.choice(self.image_list))                img = img.resize((128, 128), Image.ANTIALIAS)            else:                img = Image.new("RGB", (128, 128), (255, 255, 255))            heart_image.paste(img, (row * 128, col * 128))            col += 1            if col == SideLength:                col = 0                row += 1            if row == col == SideLength:                break        heart_image.save("heart_image.jpg")我们先创建一个空的画布,然后规定每张图片的固定尺寸为128X128,然后我们按照红框的计算,动态填充图片或者白色的幕布。至于如何计算心形,除了最后的三角形有规律可循,上面的几行,只能每行去单独判断了images_side_calc方法如下:def images_side_calc(row, col):    if row == 0 and col in [1, 2, 6, 7]:        return True    elif row == 1 and col not in [3, 4, 5]:        return True    elif row == 2 and col != 4:        return True    elif row in [3, 4]:        return True    elif row >= 5 and (row - 5) < col < (13 - row):        return True最终效果如下:大家可以看到,由于我只使用了12张图片,所以会出现一些随机重复的图片,大家使用的话,可以多选择一些照片,效果会更好一些!在这里,把这份七夕礼物,送给远在重庆姐姐家避暑的媳妇儿,祝你七夕快乐!♥既然工具写好了,当然要方便那些没有python环境的人们使用啊,使用pyinstaller打包工具,无需依赖python环境,双击exe输入图片存储地址,皆可完成心形照片墙的绘制:当然,由于没有像昨天的素描画一样配置tkinter的GUI,只能在cmd下手动输入路径,完成照片墙的制作,如果大家喜欢可以照着昨天的内容,手写一个GUI界面。OK,今天的内容就到这里,欢迎大家关注清风Python公众号----------------------------------------------本文转自王翔的清风Python微信公众号
总条数:327 到第
上滑加载中