• [技术干货] 2020-10-24:go中channel的recv流程是什么?
    2020-10-24:go中channel的recv流程是什么?#福大大架构师每日一题#
  • [技术干货] 2020-10-23:go中channel的创建流程是什么?
    2020-10-23:go中channel的创建流程是什么?#福大大架构师每日一题#
  • [技术干货] 2020-10-21:go中channel的send流程是什么?
    2020-10-21:go中channel的send流程是什么?#福大大架构师每日一题#
  • [问题求助] 集成go-chassis 的各个微服务模块之间可以通过https交互吗?
    go-chassis 自身在华为云上是以https的服务提供给各个微服务的。 CSE支持各个微服务之间通过https相互访问吗?go-chassis日志里面都是看到 微服务之间都是通过  CSE://{模块}:{端口号}  方式相互通信的微服务模块间通信本质是走http消息 附加额外的CSE消息头标识, 我们的CSE支持走https消息  附加CSE消息头标识吗?
  • [互动交流] go 版sdk 可以实现获取文件夹下面的文件夹列表吗?
    文件夹在obs里面是以对象的形式存在的,以/结尾我目前的实现形式是获取到对象列表 然后过滤出以/为结尾的对象有个问题是:       obs 一次性最大的传输对象列表只有一千个  maxKeys 为一千问题已解决 感谢
  • [互动交流] 为什么调用go 版obs sdk下载速度很慢
    同一张图片在浏览器上下载大概在300 ms的样子,而在我们提供的go例子中却需要约2-3s耗时10倍以上采用的例子是examples中的download_sample.go的getobs函数
  • [专题汇总] 2020-08-20:GO语言中的协程与Python中的协程的区别?
    2020-08-20:GO语言中的协程与Python中的协程的区别?
  • [问题求助] 求个 go-fastdfs 的arm版本
    go-fastdfs
  • [分享交流] xmake v2.3.6 发布, 新增 fortran 编译支持
    文章转载自 OSCHINA 社区 [http://www.oschina.net]这个版本重点对其他语言的支持做了一些改进,比如新增了fortran的编译支持,zig语言的实验性支持,另外对golang/dlang增加了第三方依赖包支持以及交叉编译支持。虽然,xmake重点关注c/c++的构建支持,但是其他语言的支持xmake也会不定期做一些改进,其主要目的并不是替代它们官方自身的构建系统,仅仅只是为了支持与c/c++的混合编译,更好的为c/c++项目服务, 毕竟有些c/c++项目中,还是会偶尔调用其他语言的代码接口,比如与cuda, dlang, objc,swift, asm等语言的混合调用,所以xmake还是会对他们做一些基础性的编译支持。另外,关于c/c++方面,我们也对vs预览版中新的/sourceDependencies xxx.json输出的头文件依赖格式也做了支持(这对于多语言下,头文件依赖检测会更加的可靠稳定)。项目源码官方文档新特性介绍Fortran语言编译支持这个版本开始,我们已经完全支持使用gfortran编译器来编译fortran项目,我们可以通过下面的命令,快速创建一个基于fortran的空工程:$ xmake create -l fortran -t console test它的xmake.lua内容如下:add_rules("mode.debug", "mode.release")target("test")     set_kind("binary")     add_files("src/*.f90")更多代码例子可以到这里查看:Fortran ExamplesZig语言实验性支持注:目前这个语言xmake还在试验性支持阶段,还很不完善,比如:windows上不支持,linux/macOS下动态库编译还不支持,请自行评估使用。我们可以通过下面的配置方式,尝试性体验下,至少linux/macOS下console和static library程序还是可以跑的。add_rules("mode.debug", "mode.release")target("test")     set_kind("binary")     add_files("src/*.zig")至于为啥windows不支持呢,详情见我之前提给zig的issues,#5825而动态库不支持,也是因为我躺了一些坑(zig生成的动态库会自动追加.0.0.0),详情见:issue 5827另外还躺了下其他坑,个人感觉坑有点多,所以我暂时还是试验阶段,等过段时间再看看。更多例子见:Zig ExamplesGo依赖包和交叉编译支持新版本xmake对go构建支持继续做了一些改进,比如对go的交叉编译也进行了支持,例如我们可以在macOS和linux上编译windows程序:$ xmake f -p windows -a x86另外,新版本对go的第三方依赖包管理也进行了初步支持:add_rules("mode.debug", "mode.release")add_requires("go::github.com/sirupsen/logrus", {alias = "logrus"})add_requires("go::golang.org/x/sys/internal/unsafeheader", {alias = "unsafeheader"})if is_plat("windows") then     add_requires("go::golang.org/x/sys/windows", {alias = "syshost"})else     add_requires("go::golang.org/x/sys/unix", {alias = "syshost"})endtarget("test")     set_kind("binary")     add_files("src/*.go")     add_packages("logrus", "syshost", "unsafeheader")不过还有一些不完善的地方,比如目前必须手动配置所有级联依赖包,会稍微繁琐些,后续有待改进。更多例子见:Go ExamplesDlang/Dub依赖包支持xmake对dlang的dub包管理也进行了支持,可以快速集成dlang的第三方依赖包:add_rules("mode.debug", "mode.release")add_requires("dub::log 0.4.3", {alias = "log"})add_requires("dub::dateparser", {alias = "dateparser"})add_requires("dub::emsi_containers", {alias = "emsi_containers"})add_requires("dub::stdx-allocator", {alias = "stdx-allocator"})add_requires("dub::mir-core", {alias = "mir-core"})target("test")     set_kind("binary")     add_files("src/*.d")     add_packages("log", "dateparser", "emsi_containers", "stdx-allocator", "mir-core")cl.exe新的头文件依赖文件支持msvc的头文件依赖通常需要解析/showIncludes的输出内容,提取里面的includes文件列表来处理依赖编译问题,但是呢,cl.exe对这个的输出做的很不好,includes信息和编译输出是混在一起的。对构建工具处理依赖解析非常不友好,尤其是多语言环境下,如何判断是includes,需要通过前置的Note: including file: 字符串来判断提取,但中文下,又是注意: 包含文件: , 如果换成日语环境,又是日文的前缀字符串,编码格式问题、硬编码问题导致解析处理上,总归不是很完美。关于这一点,最新的vs2019预览版中,微软终于对齐做了改进,通过新的/sourceDependencies xxx.json编译选项,可以更好的输出includes依赖信息,方便多语言环境下的解析提取。另外,这个新选项的输出是独立到单独的json文件中去的,终于不是跟编译输出混一起了,也终于不用痛苦地解析分离编译错误、警告信息、includes列表信息了。输出内容大概长这样:{     "Version": "1.0",     "Data": {         "Source": "z:\\personal\\tbox\\src\\tbox\\tbox.c",         "Includes": [             "z:\\personal\\tbox\\src\\tbox\\tbox.h",             "z:\\personal\\tbox\\src\\tbox\\prefix.h",             "z:\\personal\\tbox\\src\\tbox\\prefix\\prefix.h",             "z:\\personal\\tbox\\src\\tbox\\prefix\\config.h",             "z:\\personal\\tbox\\src\\tbox\\config.h",             ...而新版本中,xmake通过新增内置的core.base.json模块处理json解析,很方便地对新的头文件依赖数据进行解析和支持,优先使用此模式(如果cl是新版本支持的话,老版本cl还是使用/showIncludes)。Xcode插件生成支持目前,我们还没有时间去自己实现xcode工程的生成,但不代表不支持,因为xmake支持生成cmakelists.txt文件,而cmake是支持xcode工程文件生成的,在官方还没有实现之前, 我们也可以通过cmake变相支持它,xmake会自动内部调用cmake中转下生成结果,对用户而言使用上没啥区别,只需要确保cmake已经安装即可:$ xmake project -k xcode!> 等之后有时间,我们会重新自己实现各更加完善的xcode输出插件,也欢迎大家帮忙贡献。xmake-vscode插件intellisense支持近期,我们也更新了下xmake-vscode插件,通过自动生成compile_commands.json到当前项目的.vscode目录下,然后我们只需要配置.vscode/c_cpp_properties.json在里面关联上这个.vscode/compile_commands.json路径 就能实现intellisense自动提示,同步xmake.lua里面的includedirs等配置信息。至于,具体怎么生成c_cpp_properties,官方文档里面有详细说明:https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation里面的主要配置项:  "configurations": [     {      "compileCommands": ".vscode/compile_commands.json",     }   ],更新内容新特性添加xcode工程生成器插件,xmake project -k cmake (当前采用cmake生成)#870: 支持gfortran编译器#887: 支持zig编译器#893: 添加json模块#898: 改进golang项目构建,支持交叉编译#275: 支持go包管理器去集成第三方go依赖包#581: 支持dub包管理器去集成第三方dlang依赖包改进#868: 支持新的cl.exe的头文件依赖输出文件格式,/sourceDependencies xxx.json#902: 改进交叉编译工具链
  • go依赖应该怎么安装?
    我想安装gin按https://support.huaweicloud.com/usermanual-cloudide/go_get.html操作,但不行。
  • 使用go语言:MRS安全集群使用sarama连接Kafka报错
    MRS日志如下:May 27 09:47:40 node-master2PcvL krb5kdc[12479](info): TGS_REQ (3 etypes {18 17 23}) 192.168.16.211: LOOKING_UP_SERVER: authtime 0,  admin@4330C96C_A232_4DC5_B805_5CC19312339F.COM for kafka/192.168.16.108@4330C96C_A232_4DC5_B805_5CC19312339F.COM, Server not found in Kerberos database看起来应该是这个不对:kafka/192.168.16.108@4330C96C_A232_4DC5_B805_5CC19312339F.COM这个主机IP地址是不是不对,怎么修改?有没有go语言的样例?
  • [其他语言] go 如何 banchmark?
    # 执行结果 图1 go test -bench . # 安装图形工具, 用于绘制图形 brew install graphviz # 生成 cpu.out 文件 go test -bench . -cpuprofile cpu.out #  见图2, 输入 web 后生成 图3 go tool pprof cpu.out因为论坛编辑器不支持 golang, 就不贴代码了 根据图中显示, 哪一块最消耗性能, 针对修改, 使用 pprof 继续进行测试, 以完成性能优化
  • [其他语言] Go语言安装参考(CentOS 7.6)
    1、挂载系统ISO镜像并配置本地yum源(无法访问互联网时需要执行此步骤,可以访问互联网直接跳过)挂载OS镜像:mount -o loop /home/CentOS-7-aarch64-Everything-1810.iso   /mnt/CentOS/修改/etc/yum.repos.d/CentOS-Base.repo文件,配置yum本地源:[base]name=CentOS-$releasever   - Base#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infrabaseurl=   file:///mnt/CentOSgpgcheck=1gpgkey=   file:///mnt/CentOS/RPM-GPG-KEY-CentOS-7file:///mnt/CentOS/RPM-GPG-KEY-CentOS-7-aarch64运行下面的命令,使yum源配置生效:yum clean allyum makecacheyum安装GCC等相关依赖:sudo yum install -y snappy snappy-devel autoconf automake libtool   git gcc gcc-c++ make cmake openssl openssl-devel ncurses-devel zlib   zlib-devel bzip2 bzip2-devel bzip2-libs readline readline-devel bison zip   unzip tar tcl java-1.8.0* bison* ncurses*2、配置epel源(安装go默认需要访问互联网,无法访问互联网情况下需要将对应go的rpm包从在线epel源获取并传到服务器手动使用rpm -ivh命令安装)创建/etc/yum.repos.d/epel.repo文件,配置epel源:[epel]name=Extra Packages for Enterprise Linux 7 - $basearchbaseurl=https://mirrors.huaweicloud.com/epel/7/$basearch#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-7&arch=$basearchfailovermethod=priorityenabled=1gpgcheck=0#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7[epel-debuginfo]name=Extra Packages for Enterprise Linux 7 - $basearch - Debugbaseurl=https://mirrors.huaweicloud.com/epel/7/$basearch/debug#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-debug-7&arch=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=0[epel-source]name=Extra Packages for Enterprise Linux 7 - $basearch - Sourcebaseurl=https://mirrors.huaweicloud.com/epel/7/SRPMS#metalink=https://mirrors.fedoraproject.org/#metalink?repo=epel-source-7&arch=$basearchfailovermethod=priorityenabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7gpgcheck=0运行下面的命令,使yum源配置生效:yum clean allyum makecache手动获取rpm包可用如下链接:https://mirrors.huaweicloud.com/epel/7/aarch64/Packages/g/golang-1.13-1.el7.aarch64.rpmhttps://mirrors.huaweicloud.com/epel/7/aarch64/Packages/g/golang-bin-1.13-1.el7.aarch64.rpmhttps://mirrors.huaweicloud.com/epel/7/aarch64/Packages/g/golang-src-1.13-1.el7.noarch.rpm3、执行yum命令直接安装yum -y  install golang4、查看go语言版本go version5、配置环境变量执行go evn查看当前go环境变量$ GOROOT、$ GOPATH的设置:运行下面的命令,使yum源配置生效:[root@cluster1   ~]# go env | egrep -i 'GOROOT|GOPATH'GOPATH="/root/go"GOROOT="/usr/lib/golang"根据上述信息设置当前bash的环境变量export GOROOT="/usr/lib/golang"export GOPATH="/root/go"或者写入到.bash_profile中,并执行source .bash_profile生效
  • 如何基于Go编译器编译ARM二进制
    在linux上编译arm64平台的二进制sudo apt-get install gcc-aarch64-linux-gnuCGO_ENABLED=1 GOOS=linux GOARCH=arm64 go build
  • [其他语言] 鲲鹏服务器上部署golang环境
    在有幸参与鲲鹏训练营的过程中,发现关于go语言环境部署的帖子较少且很多都存在一定问题,没有较为详细的部署描述。特此摸索了关于鲲鹏上部署golang环境的方法,亲身实践过,且补上较为清楚的描述,在这分享给大家,希望有哪里错误的大家也可以指出来,互相学习。1.执行uname -m  查询本机CPU架构  AArch64是ARMv8 架构的一种执行状态。             2.根据CPU架构状态下载对应的安装包推荐的golang国内网址:https://studygolang.com/dl 下载想要的版本如果是aarch64架构的且64位的  建议下载go1.11.5.linux-arm64.tar.gz版本亲测在aarch64架构下,下载go1.9.2.linux-arm64.tar.gz在正常安装后查询版本会变成1.11.5版本,并且编译会出错go tool: no such tool "compile"。其余版本可以自行测试如果是x86的且64位的 可以下载go1.11.5.linux-amd64.tar.gz版本注意一个是arm一个是amd3.本处示例将下载完的安装包放在opt下,其余可以自行参考cd /opttar -C /usr/local -zxvf go1.11.5.linux-amd64.tar.gz将go包解压到/usr/local下进入local目录,查询到已经生成一个go的目录文件夹4.创建go的工作空间mkdir -p /opt/goWorkSpace/{src,bin,pkg}说明:src   存放go源代码的目录,存放golang项目的目录,所有项目都放到gopath的src目录下bin        在go install后生成的可执行文件的目录pkg        编译后生成的,源码文件5.修改系统环境变量vim /etc/profile 在结尾添加export GOROOT=/usr/local/go    #Golang源代码目录,安装目录export GOPATH=/opt/goWorkSpace    #Golang项目代码目录export GOBIN=$GOPATH/bin       #go install后生成的可执行命令存放路径export PATH=$PATH:$GOPATH/bin     #Linux环境变量6.让环境变量生效source /etc/profile 7.go version 查看版本,这样则安装成功     
总条数:152 到第
上滑加载中