网站首页 返回列表 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
golang专有的gob序列化性能分析
为什么要分析gob序列化格式的性能我自己编的一个单向同步软件(),混合了`RPC`和`HTTP`服务器功能,利用`RPC`做控制功能,`HTTP`进行数据上传。最近我有意简化其构造,把其中的http上传功能也用`RPC`方式实现。但是我担忧会导致性能下降,因为通常对象序列化,将会导致数据量增加,例如`JSON`序列化后...
阅读全文
【golang】浅析类属性大小写区别
我们知道Golang里都是通过结构体Struct来定义类和相关属性的。这里有点需要注意的是,属性的首字母大小写表示的意义是不同的!go中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用。可以简单的理解成,首字母大...
阅读全文
golang flag包使用笔记
本文原文地址:[flag-命令行参数解析](https://link.jianshu.com?t=https%3A%2F%2Fbooks.studygolang.com%2FThe-Golang-Standard-Library-by-Example%2Fchapter13%2F13.1.html)在写命令行程序(工具...
阅读全文
Golang周期任务、定时任务
0.周期任务5秒钟后执行一个任务ticker.C是一个缓冲为1的channel,__ticker:=time.NewTicker(time.Second*5)gofunc(){for_=rangeticker.C{println("test")}}()time.Sleep(time.Minute)1.倒计时__//主线...
阅读全文
修改并编译golang源码
Go语言诞生5周年!>**友情提示:**本文使用Markdown编写,黑色背景文字可能需要横向拖动才能看清全文最近为了做HyperledgerFabric国密改造,涉及到了golang源码的改动。特将操作过程整理如下,以供参考:golang的源码安装其实比较简单,只需运行源码包中的脚本src/all.bash,等到出现...
阅读全文
golang新手容易犯的3个错误
图片发自简书App>>从golang小白到成为golang工程师快两个月了,我要分享一下新手在开发中常犯的错误,都是我亲自踩过的坑。这些错误中有些会导致无法通过编译,这种错容易发现,而有些错误在编译时不会抛出,甚至在运行时也不会panic,如果缺少相关的知识,挠破头皮都搞不清楚bug出在哪。1.对nilmap、nils...
阅读全文
手把手教你学之golang反射
图片发自简书App>>作为静态语言,golang稍显笨拙,还好go的标准包`reflect`(反射)包弥补了这点不足,它提供了一系列强大的API,能够根据执行过程中对象的类型来改变程序控制流。本文将通过设计并实现一个简易的mysql>orm来学习它,要求读者了解`mysql`基本知识,并且跟我一样至少已经接触golan...
阅读全文
golang 检测wins系统下是否安装chrome
问题1.目的:调用谷歌浏览器,打开指定的网页2.问题:用户系统没有安装chrome,会弹框报错,这样体验非常不好,如果没有安装chrome,就应该使用ie浏览器打开指定的网页调用chrome浏览器的代码__err:=exec.Command("cmd","/c","startchromehttp://www.baidu...
阅读全文
应用容器化优化指南 - Golang篇
前言随着容器技术的兴起,越来越多不同类型的应用开始使用容器的方式进行交付。Golang作为服务器端非常热门的一门语言同时也是容器技术的主要编写语言备受关注。那么将一个Golang应用进行容器化的时候,需要注意哪些事情,在出现问题时该如何进行调优和诊断呢?先谈谈Golang本身的设计Golang是谷歌发布的第二款开源编程...
阅读全文
Golang定时器陷阱
所谓陷阱,就是它不是你认为的那样,这种认知误差可能让你的软件留下隐藏Bug。刚好Timer就有3个陷阱,我们会讲1)Reset的陷阱和2)通道的陷阱,3)Stop的陷阱与Reset的陷阱类似,自己探索吧。Reset的陷阱在哪`Timer.Reset()`函数的返回值是bool类型,我们看一个问题三连:1.它的返回值代表...
阅读全文
轻松入门Golang pprof实用不忽悠
网上已搜索golangpprof,资料不少,简明高效的一个没看到,这篇文章5步教你用会pprof获取cpu和内存prof。第1步:安装易用的pprofgolang自带的prof包是runtime/pprof,这个是低级别的,需要你手动做一些设置等等周边工作,不利于我们快速上手,利用pprof帮助我们解决实际的问题。这里...
阅读全文
GoLang并发控制(下)
context的字面意思是上下文,是一个比较抽象的词,字面上理解就是上下层的传递,上会把内容传递给下,在go中程序单位一般为goroutine,这里的上下文便是在goroutine之间进行传递。>>根据现实例子来讲,最常看到context的便是web端。一个网络请求request请求服务端,每一个request都会开启...
阅读全文
一招教你无阻塞读写Golang channel
无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,教你一招再也不遇到channel阻塞的问题。这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。阻塞场景阻塞场景共4个,有缓存和无缓冲各2个。**无缓冲通道**的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:1.通道中无数据,但执行读通道...
阅读全文
GoLang并发控制(上)
GoLang并发控制(上)>>**在go程序中,最被人所熟知的便是并发特性,一方面有goroutine这类二级线程,对这种不处于用户态的go程的支持,另一方面便是对并发编程的简便化,可以快捷稳定的写出支持并发的程序。***先回顾进程or线程之间的通信方式inte-processcommunication(IPC)其中G...
阅读全文
Golang的WaitGroup陷阱
`sync.WaitGroup`是并发环境中,一个相当常用的数据结构,用来等待所有协程的结束,在写代码的时候都是按着例子的样子写的,也没用深究过它的使用。前几日想着能不能在协程中执行`Add()`函数,答案是不能,这里介绍下。陷阱在WaitGroup的3个函数的调用顺序上。先回顾下3个函数的功能:1.`Add(delt...
阅读全文