Go
姚家湾
做研究和帮助他人是我的热情所在
展开
-
Go 在STM32MP157C 上跑起来!
现代嵌入式系统中免不了需要网络功能,因此,开发诸如web server,websocket ,json 等网络程序是必不可少的。虽然C/C++是开发嵌入式程序主要的程序设计语言,不过C/C++ 开发现代网络应用程序显得有点老态龙钟,力不从心。被Go ,java,python 甩几条大街。2019年,我们花费了整整一年的时间,将嵌入式网络软件的开发工具从C++ 迁移到了Go,软件开发的效率大幅度提升,我们的做法是在目标计算机(比如全志H6,瑞芯微RK3399 上安装Go 编译器。直接在目标机上开发程序。对于S原创 2020-11-23 19:20:31 · 3156 阅读 · 1 评论 -
GO 和C 的相互调用(1)
爱上了Golang,C/C++ 又不想放弃。好在Go 语言提供了和C语言相互调用的机制(CGO )。包括下面机构问题 C/C++ 调用Go 程序编写的库。 go 语言调用C/C++ 动态和静态库。 go 语言调用 C语言的回调程序(Callback) 函数之间传递参数本文先讨论前面两个问题。C/C++ 调用 Go首先写一个go 程序package mainimport "C"import ( "fmt")//export Foofunc ...原创 2020-10-10 11:11:27 · 2501 阅读 · 0 评论 -
测试Go语言的regexp包
为了编写go 语言下控制NB iot 的AT 命令解释程序,使用了GO 语言功能强大的regexp 包。本博文记录了有关学习笔记。测试程序package mainimport ( "fmt" "regexp")func main(){ match, _ := regexp.MatchString("Hello.*", "Hello The World") fmt.Println(match) // match, _ = regexp.MatchString("Hello.原创 2020-06-20 07:39:56 · 288 阅读 · 0 评论 -
ZeroMQ 评估
作为一种微服务消息系统,zeroMQ 被经常提到,于是评估一下。安装libzmqzmq 是C++编写的,其它语言使用zmq时,需要安装libzmq库。安装libczmq-devapt-get install libczmq-devgo 程序go 语言包地址:https://github.com/pebbe/zmq4使用了examples 中的两个例子se...原创 2020-01-07 20:37:46 · 456 阅读 · 1 评论 -
从微软的Azure IoT Edge看边缘计算的架构
往往从大公司的产品可以看出技术的趋势。周末抽空看了看微软的Azure 的IoT Hub和西门子的edge computing 。虽然微软的Azure IoT Hub 是开源,跨平台的边缘计算架构,但是它基本上还是为自己家的Azure 云平台开发的。国外云平台在国内不太受待见。技术支持和推广也不太给力。两年前曾经使用mbed 设备接入azure 云平台,结果国内azure合作方世纪...原创 2020-01-06 09:45:15 · 2234 阅读 · 0 评论 -
为什么使用Golang?
Golang,也称为Go,是一种开源编译程序语言。它于2009年由Google开源,由Robert Griesemer,Rob Pike和Ken Thompson于2007年左右设计。Go在语法上与C类似,并且在2011年首次发布稳定版本。但是,作为C的补充,Go提供垃圾回收,内存安全,结构化类型和CSP样式并发。根据TIOBE的Go指数,Go在过去一年中发展最快,“几乎没有竞争对手”,人气上...翻译 2020-01-05 07:34:48 · 890 阅读 · 1 评论 -
微服务 session 管理
微服务体系结构是服务器应用程序体系结构中的新热点,它具有多种优势,包括易于扩展和在一个应用程序中使用多种编程语言的能力。但是我们知道,没有免费的午餐!这种灵活性会带来成本,并带来一些传统“整体式”应用程序所没有的挑战。在本文中,我们将研究一个挑战:跨服务共享会话。传统单体软件的session管理传统session 管理采用cookie和session 技术来实现网站的安全访问的...原创 2020-01-03 19:33:47 · 800 阅读 · 0 评论 -
爱上 GO 语言
爱上一个程序设计语言和爱上一个人差不多,主要是凭感觉。 在开发物联网边缘设备的过程中,使用C++ 编写了各种装载在docker 容器中的微服务App。其过程是一段痛苦的经历,不断地尝试各种C++库。感觉自己大多数时候都是在下载,cmake ,填坑。而不是在思考和编写自己的代码。就拿json 的编解码来说吧,不断地测试,最终选择了国内大公司腾讯难度的开源代码库rapidjson 库。结果...原创 2020-01-02 12:54:56 · 475 阅读 · 0 评论 -
ubuntu 安装openCV 和gocv的方法
想评估一下使用go 语言和opencv 来做图像处理,需要安装opencv和gocv。网上搜了一些介绍都好像比较麻烦,后来还是看gocv官网比较简单一点https://gocv.io/getting-started/linux/ 于是照着一步步做,云里雾里。总算成功了。1 安装GoCV 包go get -u -d gocv.io/x/gocv2 进入安装目录我发现是安装在这...原创 2019-12-19 10:03:43 · 2155 阅读 · 0 评论 -
protobuf 消息的分层序列化/反序列化
google 的protobuf 的序列化效率高,但是也有诸多不便。最大的问题是消息需要预先定义,反序列化需要使用序列化时相同的protobuf 定义。当传输多个格式的消息时,接收端收到一个序列化数据时,并不知道这个消息是什么样的proto 定义。搜索了网络,有大量转发的《Protobuf消息设计原则》中介绍的方式只是将将所以的消息格式,打包成为一个大的消息。我也是这样做的但是总觉得不爽。...原创 2019-12-07 22:28:15 · 886 阅读 · 0 评论 -
go 程序在 alpine 容器中运行
只要在 go build 时增加 --tags netgo 编译出来的二进制文件就可以在alpine 容器中运行例如yao@yao-dc:~/linux2019/gpio$ go build --tags netgo -o gpio *.goyao@yao-dc:~/linux2019/gpio$ 对应的dockerfile 可以是FROM docker.io/alpine...原创 2019-12-05 21:36:52 · 1069 阅读 · 1 评论 -
Modular IoT 物联网架构(2)
App的部署App 的开发是在安装了Docker 系统的开发计算机上完成的。当你完成了App 的调试以后,有几种方式上传到云端平台,或者是边缘设备中。 1 使用save/load 命令方式 save 命令是将docker 中的image 打成一个包 导出到docker的外面。而load 是对应的导入命令。 2 使用export/import 命令方式export 是将...原创 2019-12-02 15:53:45 · 528 阅读 · 0 评论 -
docker 容器管理
在云端搭建微服务架构的系统,容器管理非常的重要,虽然docker 提供了大量的工具来实现容器管理,他们包括 portainer -一个web 容器管理工具docker command line 命令工具daemon Restfull 工具公共仓库 Docker Hub - 包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接...原创 2019-11-22 19:58:21 · 224 阅读 · 0 评论 -
初学Go(2)本地模块
为了测试一下go 语言下的grpc。使用proto 产生的hello.pb.go 是一个模块,放置在哪里呢?如果放置项目的里面,好像不行。 一个下午被Go 的模块位置搞混了头。从网上下载的模块自动放在$GOPATH/pkg/mod下,又说要放置$GOPATH/src,好像放在哪里都不行。终于找到一个方法本地模块,使用 go mod initgolang 提...原创 2019-11-04 20:49:36 · 398 阅读 · 0 评论 -
初学GO笔记(1)-Arm64 /linux上的安装
使用下面的方法安装的Go 版本只有 1.6.0 版本太低了sudo apt-get install golang要安装高版本的 Go 需要使用下面的方式。下载wget https://dl.google.com/go/go1.12.6.linux-arm64.tar.gz解压tar -xzvf go1.12.6.linux-arm64.tar.gz复制go目...原创 2019-10-31 10:46:43 · 2090 阅读 · 0 评论