【Golang利用第三方包获取本机cpu使用率以及内存使用情况】教程文章相关的互联网学习教程文章

(四十五)golang--反射【代码】【图】

反射基本介绍:(1)反射可以在运行时动态获取变量的各种信息,比如变量的类型、类别;(2)如果是结构体变量,还可以获取结构体本身的信息(包括结构体字段、方法);(3)通过反射,可以修改变量的值,可以调用关联的方法;(4)使用反射,需要Import "reflect:"变量--空接口--relect.Value之间的转换关系:int变量与反射变量之间的转换:package mainimport ("fmt""reflect" )func reflectTest(b interface{}) {rTyp := reflect...

golang build error: syntax error: nested func not allowed【代码】

在笔记本中写了一个简易web程序,但是编译失败,提示“syntax error: nested func not allowed” 。不明白什么意思,幸好代码量小,原来是方法的末尾的“}”丢了!package mainimport "fmt" import "net/http"func main() {http.HandleFunc("/", hello)err := http.ListenAndServe(":8080", nil)if err != nil {fmt.Println(err)}}func hello(rw http.ResponseWriter, r *http.Request) {fmt.Fprintf(rw, "Hello lao yu !\n") } 添...

[Go] golang的竞争状态【代码】【图】

1.goroutine在逻辑处理器的线程上进行交换2.竞争状态:两个或者多个goroutine在没有互相同步的情况下,访问某个共享的资源,并试图同时读和写这个资源,就处于互相竞争的状态对共享资源的读和写操作必须是原子化的,同一时刻只能有一个goroutine对共享资源进行读和写操作3.使用竞争检测器编译代码,执行检查竞争状态go build -race package mainimport ("fmt""runtime""sync" )//全局共享变量 var (//要读写的变量counter int//wg计数wg ...

golang Protobuf学习【代码】

protobuf是一种高效的数据传输格式(Google‘s data interchange format),且与语言无关,protobuf和json是基于http服务中最常见的两种数据格式。今天来学习基于golang的protobuf相关内容。 google protocol buffer: https://developers.google.com/protocol-buffers/golang 官方提供的protobuf支持插件:https://github.com/golang/protobuf要想使用protobuf,需要4步:下载安装google protocol buffer 编辑器:https://gith...

goLang文件遍历

package mainimport ( "fmt" "io/ioutil" "os" "path/filepath" "strings" )//获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。 func ListDir(dirPth string, suffix string) (files []string, err error) { files = make([]string, 0, 10) dir, err := ioutil.ReadDir(dirPth) if err != nil { return nil, err } PthSep := string(os.PathSeparator) suffix = strings.ToUpper(suffix) //忽略后缀...

golang之单元测试

基本介绍:  Go语言中自带的一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例。通过单元测试,可以解决以下问题:  1)确保每个函数都是可运行,并且运行结果是正确的;  2)确保写出来的代码性能是好的;  3)单元测试能及时的发现程序设计或实现的逻辑错误,使问题及...

Golang转义字符【图】

Golang常见的转义字符(escape char)\t 一个制表位,实现对齐的功能\n 换行符\\ 一个\\" 一个"\r 一个回车 fmt println("tom \r jack") 应用实例 练习要求:请使用一句输出语句,达到输入如下的效果图: 实现: 原文:https://www.cnblogs.com/zeroLJ/p/11582451.html

菜鸟系列 Golang 实战 Leetcode —— 买卖股票的最佳时机系列(121. 买卖股票的最佳时机、买卖股票的最佳时机 II【代码】

121.买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示...

Golang学习笔记(一)【代码】

一段基础的go语言代码解析package mainimport "fmt"func main(){fmt.Println("hello golang") }// 这是一段输出'hello golang'的go代码 // 一个go文件(后缀名为.go的文件),必须要在一个包(文件夹,package)里 // 代码开始必须引用一个包,main // 这段代码的入口为main()函数 // 书写一个函数的格式 func 函数名() {// 函数的逻辑代码}代码书写完毕,怎么去运行代码第一种(推荐):最开始用cmd进入到当前代码的目录下 ,执行 go bui...

【golang详解】go语言GMP(GPM)原理和调度【图】

GMPGoroutine调度是一个很复杂的机制,下面尝试用简单的语言描述一下Goroutine调度机制,想要对其有更深入的了解可以去研读一下源码。目录GMP介绍设计策略复用线程并行抢占全局goroutine队列协程经历过程M缓冲池触发调度队列轮转特殊的 M0 和 G0一个G由于调度被中断,此后如何恢复?总结介绍首先介绍一下GMP什么意思:G ----------- goroutine: 即Go协程,每个go关键字都会创建一个协程。M ---------- thread内核级线程,所有的G都...

golang依赖管理【代码】

目录使用GOPATH管理依赖临时GOPATH依赖查找路径使用GOVENDER管理依赖使用GO111MODULE管理依赖Usage常用命令列表不常用命令使用示例开启GO111MODULE使用过程升级依赖项Go 国内加速镜像使用方法使用GOPATH管理依赖go 1.6 前,GOPATH作为第三方的依赖目录。GOPATH 默认位置~/go(linux, unix, Mac)临时GOPATHexport GOPATH=/path/to/dir export GO111MODULE=off 第三方库存放位置,GOPATH目录下的src目录下,/path/to/dir/src依赖查找路...

2、golang之快速排序【代码】【图】

1、快速排序稳定性快速排序是不稳定的算法,它不满足稳定算法的定义。算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的! 2、快速排序时间复杂度快速排序的时间复杂度在最坏情况下是O(N2),平均的时间复杂度是O(N*lgN)。这句话很好理解:假设被排序的数列中有N个数。遍历一次的时间复杂度是O(N),需要遍历多少次呢?至少lg(N+1)次,最多N次。(0...

Golang Interface 解析【代码】

转自 https://zhuanlan.zhihu.com/p/27652856先看一段代码:123456789101112func(x interface{}) {if x == nil { fmt.Println("empty interface")return } fmt.Println("non-empty interface")}funcmain() {var x *int = nil Foo(x)}上面的例子的输出结果如下12$ go run test_interface.gonon-empty interface可能你会感觉奇怪,为什么会是 non-empty inerface,那么继续往下看,你就会知道答案。interface 底层结...

GoLang 中用 MongoDB Watch 监听指定字段的变化【代码】

需要 MongoDB 3.6 及以上, 需要 ReplicaSet 模式。 监听一个字段的变化:func watch(coll *mongo.Collection) {match := bson.D{{"operationType", "update"},{"updateDescription.updatedFields.name", bson.D{{"$exists", true}}}}coll.Watch(context.Background(), mongo.Pipeline{{{"$match", match}}},options.ChangeStream().SetFullDocument(options.UpdateLookup)) }监听两个字段的变化:func watch(coll *mongo.Collectio...

Golang交叉编译【代码】

Golang交叉编译1. 编译环境宿主开发平台为: Linux wanhy-ubuntu 5.3.0-62-generic #56~18.04.1-Ubuntu SMP Wed Jun 24 16:17:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux目标执行平台为: Linux pilotx-du 4.14.98+gebeb3d5 #1 SMP PREEMPT Wed Aug 21 10:17:13 UTC 2019 aarch64 GNU/Linux 2. 常规编译2.1 Go Build使用2.1.1 GOOS变量The operating system for which to compile code. Examples are linux, darwin, windows, ...