
golang学习及开发笔记
文章平均质量分 62
本笔记主要记录一个10年C++ coder学习golang的点点滴滴,及今后在开发过程中的难点、经典等
SunkingYang
C++资深工程师,拥有14年C++实战开发经验。
期间从事Windows客户端及Linux服务端开发。客户端有ActiveX、MFC、QT,医疗虚拟与现实(Ogre、QT、OpenCV等),三维人脸识别。
拥有4年天网视频监控开发经验,包含ocx插件开发、国标解码库:软解码和硬解码开发等(Windows平台),2年雪亮工程国标服务开发经验,包含国标28181级联服务、国标流媒体等(Linux平台)。
目前在从事半导体行业,负责应用程序、驱动开发。
展开
-
微服务详细介绍(什么是微服务)
提高可伸缩性:每个服务可以独立扩展,可以根据需求动态地调整服务实例数,从而实现更好的性能和可伸缩性。更好的可靠性:当某个服务出现故障时,只会影响到该服务,其他服务不受影响,从而提高整个应用的可靠性。提高可维护性:每个服务都是独立的,可以更容易地进行修改、测试和部署,从而提高整个应用的可维护性。总之,微服务架构是一种可伸缩、灵活、可靠和可维护的架构风格,但同时也具有一定的复杂性和资源成本。复杂性增加:微服务架构的复杂性较高,需要更多的部署、监控和测试工具,以及更多的管理和维护工作。原创 2023-11-30 09:04:51 · 754 阅读 · 0 评论 -
Go语言简要介绍
Golang在语法结构上类似于C语言,但是通过引入新的概念和语法,比如goroutines(轻量级线程)和channels(通道),使得程序开发更加简单和高效。Golang还支持垃圾回收机制,自带工具链和包管理器,可以方便地实现代码编译、测试和部署。Golang是一种编程语言,也称为Go或者Go语言。它是由Google开发的一种编译型、静态类型的语言。Golang的目标是提高程序开发的效率,同时保证程序的性能和安全。总之,Golang是一种高效、安全、易读易写的编程语言,逐渐被越来越多的开发者使用和推广。原创 2023-11-28 15:10:18 · 782 阅读 · 0 评论 -
windows下使用GoLand生成proto文件
下载编译器protoc两种方式:1、使用google官方protoc下载地址:https://github.com/google/protobuf/releases2、使用三方protoc,比如我使用的gogo的protoc下载地址:https://github.com/gogo/protobuf设置环境变量1、把bin目录下的protoc.exe及编译插件复制到xxx/bin下,xxxx/bin加入环境变量,当然也可放在其他目录。2、需加入环境变量,能让系统找到protoc.exe原创 2022-04-02 11:55:48 · 1877 阅读 · 0 评论 -
golang程序中grpc收发数据,提示code = Unavailable desc = transport is closing
问题描述:有两个服务:我们分别称他们为:serverClient、serverSvrserverSvr端作为GRPC服务端serverClient端作为GRPC客户端serverClient发现serverSvr后,正常发送数据,发送一段时间后,发现grpc 报错解决 code = Unavailable desc = transport is closing。通过排查,发现所有端口都是正常的,包括GPRC端口,MQ端口,Redis端口,保活也正常。问题处理:发现是serverSvr死锁导致.原创 2021-11-02 15:41:52 · 2140 阅读 · 0 评论 -
协程间的信道
协程可以是独立执行的,他们之间没有通信。但实际上,他们必须通信才会变得更有用:彼此之间发送和接收信息并且协调/同步他们的工作。协程可以使用共享变量来通信,但是很不提倡这样做,因为这种方式给所有的共享内存的多线程都带来了困难。 而 Go 有一种特殊的类型,通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种通过通道进行通信的方式保证了同步性。数据在通道中进行传递:在任何给定时间,一个数据被设计为只有一个协程可以对其访问,所以不会发生数原创 2021-08-12 15:23:48 · 182 阅读 · 0 评论 -
并发、并行和协程
概念什么是并发在介绍什么是并发之前,我们先说一说 进程 和 线程进程一个应用程序是运行在机器上的一个进程;操作系统线程进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个操作系统线程组成,这些线程其实是共享同一个内存地址空间的一起工作的执行体。几乎所有’正式’的程序都是多线程的,以便让用户或计算机不必等待,或者能够同时服务多个请求(如 Web 服务器),或增加性能和吞吐量(例如,通过对不同的数据集并行执行代码)。并发一个并发程序可以在一个处理器或者内核上使用多个线程来执行任务原创 2021-08-12 14:29:37 · 439 阅读 · 0 评论 -
go 1.16,go help environment后的环境变量含义
含义go 命令及其调用的工具会参考环境变量进行配置。如果未设置环境变量,则 go 命令使用合理的默认设置。要查看变量 的有效设置,请运行“go env ”。要更改默认设置,请运行“go env -w =”。使用“go env -w”更改的默认值记录在存储在每个用户配置目录中的 Go 环境配置文件中,如 os.UserConfigDir 报告的那样。可以通过设置环境变量GOENV来改变配置文件的位置,'go env GOENV’打印有效位置,但’go env -w’不能改变默认位置。有关详细信息,请参阅原创 2021-08-04 15:48:08 · 945 阅读 · 0 评论 -
go 1.16版本,go get用法介绍
用法:go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]Get 将其命令行参数解析为特定模块版本的包,更新 go.mod 以要求这些版本,将源代码下载到模块缓存中,然后构建并安装指定的包。要为包添加依赖项或将其升级到最新版本: go get example.com/pkg要将软件包升级或降级到特定版本: go get example.com/pkg@v1.2.3要删除对模块的依赖并降级需要它的模块:go ge原创 2021-08-04 10:55:33 · 2116 阅读 · 0 评论 -
go语言‘protoc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
问题'protoc' 不是内部或外部命令,也不是可运行的程序或批处理文件。goland环境变量设置在windows10上,通过goland设置protobuf的环境变量GOPATH,如图,我的protobuf相关执行文件目录:在goland命令段设置环境变量GOPATH:go env -w GOPATH=D:\xxx\go;D:\xxx\go\bin使用:go env查看环境变量GOPATH:错误发现环境变量已经设置成功,在命令段使用 protoc命令,提示错误'protoc'原创 2021-08-02 16:59:24 · 8214 阅读 · 0 评论 -
golang中使用GOPATH模式和GoModule(gomod)模式的区别
参考:一文搞懂 Go Modules 前世今生及入门使用前言在说他们之间的区别时,我们需要先了解了解GoMoudle的前世今生。以前,Go 语言的的包依赖管理一直都被大家所诟病,Go官方也在一直在努力为开发者提供更方便易用的包管理方案,从最初的 GOPATH 到 GO VENDOR,再到最新的 GO Modules,虽然走了不少的弯路,但最终还是拿出了 Go Modules 这样像样的解决方案。目前最主流的包依赖管理方式是使用官方推荐的 Go Modules ,在版本 Go 1.14 发布后,官方正原创 2021-07-22 09:19:25 · 6511 阅读 · 8 评论 -
golang使用go Modules相关命令时报错
go版本为go 1.16在使用命令:go mod init 时,报如下错误go: cannot determine module path for source directory D:\go\code\SipSvrProxy\src\Common (outside GOPATH, module path must be specified)之前网上查询了好多方式,都不管用了,最终在 https://golang.google.cn/project 找到相关文档进来后,我们找到Tools-&g原创 2021-07-21 17:36:13 · 4860 阅读 · 3 评论 -
golang使用http发送带有自定义参数的POST请求
需求如图:我们需要使用golang调用一个获取token的http接口,并返回token其中:关键字grant_type为字符串“password”关键字username为分配的用户名关键字password为分配的密码,需进行AES的CBC加密,填充方式为:ZEROS_PADDING关键字Authorization为头内容具体实现代码如下:package mainimport ( "bytes" "crypto/aes" "crypto/cipher" "encoding/.原创 2021-07-20 15:51:05 · 2877 阅读 · 0 评论