Golang标准库——compress/lzw

lzw lzw包实现了Lempel-Ziv-Welch数据压缩格式,这是一种T. A. Welch在“A Technique for High-Performance Data Compression”一文(Computer, 17(6) (June 1984), pp 8-19)提出的一种压缩格式。 本包实现了用于GIF、TIFF、PDF文件的lzw压缩格式,这是一种最长达到12位的变长码,头两个非字面码为clear和EOF码。 type Order type Order int Order指...阅读全文

简书 2020-09-20 00:32:37 DevilRoshan

VSCode配置Go插件和第三方拓展包

前言 VSCode现在已经发展的相当完善,很多语言都比较推荐使用其来编写,Go语言也一样,前提你电脑已经有了Go环境和最新版本的VSCode 插件安装 直接在拓展插件中搜索Go,就可以安装Go插件 在这里插入图片描述 安装之后vscode会弹出该插件还需安装一些扩展工具支持,但是这些工具往往会下载失败,或者仅仅成功一部分 比如: Installing github.com/nsf/gocode FAILED Installing github.com/uudashr/gopkgs/cmd/gop...阅读全文

简书 2020-09-19 23:32:40 夜空中乄最亮的星

手把手教姐姐写消息队列(golang-channel实现)

前言这周姐姐入职了新公司,老板想探探他的底,看了一眼他的简历,呦呵,精通kafka,这小姑娘有两下子,既然这样,那你写一个消息队列吧。因为要用go语言写,这可给姐姐愁坏了。赶紧来求助我,我这么坚贞不屈一人,在姐姐的软磨硬泡下还是答应他了,所以接下来我就手把手教姐姐怎么写一个消息队列。下面我们就来看一看我是怎么写的吧~~~。本代码已上传到我的github:有需要的小伙伴,可自行下载,顺便给个小星星吧~~~什么是消息队列姐姐真是把我愁坏了,自己写的精通kafka,竟然不知道什么是消息队列,于是,一向...阅读全文

Segmentfault 2020-09-22 09:32:33 asong

go开发 windows GUI界面

一、环境配置 1、使用go modules新建 一个工程。 2、开始写一个简单的GUI测试程序,新建main.go写入代码。 3、执行 >> go build -ldflags="-H windowsgui" 下载依赖,并生成可执行文件。(此处生成的文件还无法执行) 4、在工程下新建一个 test.minifest文件,内容如下: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schema...阅读全文

简书 2020-09-19 21:32:38 voidFan

Go的隐秘世界:Goroutine调度机制概览

书接上文:Go的隐秘世界:Go程序的启动和runtime初始化子曰:学而不思则罔,思而不学则殆。上文我们通过反汇编回溯了 Go 程序的启动过程如何引导 Go runtime。是为思。接下来,为了读懂 Go runtime 是如何调度 goroutines 的,最好先学习一下,从而在脑海中建立起核心概念的导图;这样,读 Go runtime 源码的时候可以沿着导图补充细节。2020年9月15日注:感谢我的同事伟忠提醒雨痕的Go源码剖析 qyuhen/book 。篇章结构和分析方法让我很受启发。只是...阅读全文

知乎专栏 2020-09-19 20:09:25 王益

Go的隐秘世界:Go程序的启动和runtime初始化

书接上文:Go的隐秘世界:一个Goroutine要几个Thread上文提到:一个 Go 程序启动的时候就会启动多个线程,而不是像一个C/C++程序那样只有一个线程用来执行 main 函数。 启动线程的是谁呢?是 Go runtime。什么是 runtime 呢?任何一种高级语言都提供给用户写程序的形式。比如 C 和 Go 的”主程序“都是一个叫 main 的函数。那么是谁调用的用户写的 main 函数呢?—— 就是这种语言的 runtime。这 runtime 为啥有机会调用用户写的 main ...阅读全文

知乎专栏 2020-09-19 20:09:17 王益

Go的隐秘世界:一个Goroutine要几个Thread

书接上文:Go的隐秘世界:有Thread为啥还要Goroutine本文从一个小问题开始:如果一个Go程序只有一个goroutine(没有用 go keyword 启动其他 goroutines),那么 Go runtime 会启动几个线程来执行这个程序呢?大家可能会说”一个“!因为 Go 的教程说它可以用寥寥几个 threads 执行几万个 goroutines。而且类比 thread 的启动方式 —— 一个进程启动时只有一个 thread,其他 thread 都是从这个 thread 分支出来...阅读全文

知乎专栏 2020-09-19 20:09:09 王益

Go的隐秘世界:有Thread为啥还要Goroutine

书接上文:Go的隐秘世界:从 Cgo 到 Goroutine 调度我们深入 Go 的隐秘世界的旅程就是解释清楚以下几个核心概念之间的逻辑关系的过程。CPU corethreadOS schedulergoroutineGo schedulerCgo calls很多读者会说”我知道!“ —— Go 程序的高性能来自对 CPU cores 的充分利用。得益于 goroutine。Go runtime 里的 Go scheduler 负责把 goroutine 调度到 thread 上执行。OS sc...阅读全文

知乎专栏 2020-09-19 20:08:53 王益

Go的隐秘世界:从 Cgo 到 Goroutine 调度

我曾经以为 Go 程序能调用 C 函数是天经地义的,就像 C++ 程序可以调用 C。我也曾经以为 C 函数在 goroutine 里的执行,就如同 Go 函数被 goroutine 执行一样,没有什么差别。这些幻想在开发 GoTorch https://github.com/wangkuiyi/gotorch 的过程里彻底破灭了。作为一个深度学习库,GoTorch 调用 PyTorch 的 C++ 内核 libtorch —— 即使 GoTorch 不依赖 libtorch,也得依赖 Tenso...阅读全文

知乎专栏 2020-09-19 20:08:27 王益

go代理设置

在Go 1.13版本中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。 设置GOPROXY代理: go env -w GOPROXY=https://goproxy.cn,direct 设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔: go env -w GOPRIVATE=*.gitlab.com,*.gitee.com 如果在运行go mod vendor时,提示Get https://sum.golang.or...阅读全文

简书 2020-09-19 18:32:39 王宣成

Ziven Tian博客正式开篇

2020年9月19日,周六,青岛, 晴。 工作了也挺多年了,但是回顾一下自己的输出还是非常少。无论是文字、音视频抑或开源代码都比较少。之前也在CSDN-ziven tech断断续续地写过博客。今天又重新看了一下自己在CSDN博客开篇时候的文字,发现自己还是没有坚持当时的目标。最少有3年没再更新过博客了。 为了便于自己后续的提升也算是对自己的一个鞭策吧,从今天开始换个环境再次出发。希望这次可以坚持下去。从今天开始也避免之前的多平台帐号不统一的问题,不出意外的话,会在如下平台都使用相同的帐号发布文章...阅读全文

简书 2020-09-19 16:32:39 ZivenTian

在一场“死亡游戏”中,如何活下来

约瑟夫环-链表解法 之前遇到一个面试题,大意是:电梯里一拥而上一群人,导致电梯超重,于是大家约定,站成一圈,任选一人开始报数,数到3的那个人出电梯,圈内的下一个人重新从1开始报数,数到3的人再出电梯,一直这样,直到电梯不超重。 现给一串有序的数字,电梯超重需出去M个人,数到K的人出电梯,让列出出电梯的人的序号。 当时第一反应是约瑟夫环,然后用循环链表解决了。 什么是约瑟夫环?百度了一下,原来还有这么一个故事: 在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个...阅读全文

简书 2020-09-19 15:32:44 NothingLeft了

linux服务器性能调优之tcp/ip性能调优

TCP状态转移图一、TCP状态介绍:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,...阅读全文

简书 2020-09-19 15:32:44 linux大本营

2021年GO语言就业班(Golang)

课程:2021年GO语言就业班全系列讲师:小龙,在职Golang后端开发工程师,利用业余时间录制精品视频,不为任何机构站台,热爱分享技术及编程经验2021年GO语言就业班笔记,讲课笔记全部放在github仓库,拉取仓库、以后的所有更新到本地请看本合集下的视频:环境安装,github笔记同步更新仓库地址,:https://github.com/xiaolongtalkgo/2021-Go-Golang 视频地址:B站(小龙in武汉),其它平台后续会同步更新学GO语言请关注微信公众号:小龙说GO语言...阅读全文

51CTO博客 2020-09-17 14:15:52 xiaolongtalkgo

部署Prometheus监控平台,6个不可少的因素

当需要进行云监控时,IT团队越来越多地倾向于Prometheus,它是由云原生计算基金会开源的项目。 企业在采用容器的同时,也将容器的监控问题放在了比较优先的位置上,不少企业使用普罗米修斯(Prometheus)监控容器和微服务,对于规模企业通常会更加激进,所以当他们规模部署时将面临扩展的挑战。 容器使情况复杂化 监控整体环境过去相对简单,企业具有一定数量的静态物理服务器和虚拟机,以及数量有限的指标。现在由于容器以及向微服务架构的迁移,要跟踪的实体数量激增。 容器的数量不断增加,有时每台机器上有...阅读全文