Go语言中文网 为您找到相关结果 158

Go 语言中Select与for结合使用时可能会遇到的坑

作为一个刚接触go编程的新鸟,是不是被它的某些新特性给吓到,尤其是之前已经习惯了C++的编程。对于Go语言,网上褒贬不一,有极力推崇的,如七牛的许式伟,其对go的评价极高,并预言Go的市场占有率会一直逐步上升,取代java,成为第一。也有极力贬低的,他们一般会网络上有各种博客帖子,详细的剖析了go的不妥之处。而我接触go这段时间之后,不得不说,它真的是一门很有意思的语言,为什么用有意思形容呢,借用一句装逼的话,存在即合理。go能够慢慢被国内国外的各大互联网公司用于服务器架构,它自有它的闪光之处,而至于有意思呢,就需要对它有兴趣的人慢慢去发现,(呃。。。。这个情景导入有点长,貌似有点跑偏) 好,言归正传,最近在用go开发项目的过程中突然发现一个坑,尤其是对于其它传统语言转来的人来说一不住注意就...阅读全文

博文 2015-11-13 15:00:00 u010511236

使用go语言复制文件

怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子。 //////////// package main import ( "fmt" "io" "os" ) func main() { CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件 fmt.Println("复制完成",) } func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } defer src.Cl...阅读全文

博文 2014-10-24 12:00:01 学思

golang 图片处理,剪切,base64数据转换,文件存储

AUTH:PHILO VERSION:2 本文主要介绍: 图片文件的读写。 图片在go缓存中如何与base64互相转换 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file 12ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffererr2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) datasource base64 string base64 -> buffer 12ddd, _ := base64.StdEncoding.DecodeString(datas...阅读全文

博文 2015-03-15 15:56:04 jianyingLi

go语言 自定义 error

package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 func test1() error { var val error = errors.New("XXX") return val } func main() { var e error = test() if e == nil { ...阅读全文

博文 2014-10-04 19:26:43 elick

Golang初级系列教程-常见错误

知行易,知其不行难。首先,在这片文章中指出常见的一些错误,避免你在之后的编程中无所谓的调试工作。 多余的 Imports 命名区分大小写 分号分行 无效的分号 语法和其它问题 多余的 Imports 新建文件,将如下内容拷贝并执行 ErrProg1.go package main import "fmt" import "os" //excessive - we are not using any function in this package func main() { fmt.Println("Hello world") } 输出为: prog.go:4: imported and not used: os Go编译器对Go程序非常严格,如果你不使用,就不要有多余的请求。在上面的代码中...阅读全文

博文 2016-04-17 17:00:02 DowntownGuy

百度云虚拟主机做网站有哪些优势?

众所周知百度是国内最大的搜索引擎、最大的中文网站。百度推出的云服务器、云虚拟主机、域名服务等质量可靠,对于客户的网站来说,能够保证访问的速度、稳定和安全。 百度云虚拟主机是最新的的容器技术、热迁移技术和百度生态能力提供的新一代网站主机服务,能够保证高性能、高可靠性、高安全性和高易用性等,即使是零基础的站长也可以轻松搞定网站的部署、发布、运维、推广,这无论是对企业还是个人网站来说都有非常大的作用。 ![虚拟主机.jpg](https://static.studygolang.com/180420/59974fa5a2ba4eec783545b7a6caebd8.jpg) 那么百度云虚拟主机的优势又有哪些? 高稳定 基于百度云的核心技术,故障服务方面可秒级热迁移...阅读全文

记一次线上Giao(go)服务内存占用率过高问题排查

本文作者: 保护我方李元芳 商业转载请联系作者获得授权,非商业转载请注明出处。 故障现象 某线上埋点上报机器偶尔触发内存占用过多的报警。ssh到机器top发现主要内存被埋点服务占用。之前重启过几次,但是过段时间仍然会发生内存占用过多的警报。下面是报警详情。 [P1][PROBLEM][ali-e-xxx-service03.bj][][ all(#3) mem.memfree.percent 4.19575<5][O3 >2019-10-28 10:20:00] 问题推断 埋点服务主要接收客户端压缩过的上报请求,并对请求数据做解压,投递到kafka,逻辑功能相对简单。初步怀疑是某些资源没有释放导致的内存泄露或Groutine泄露。 问题排查 由于代码不是由我们业务方维护的,首先向相关部门索要...阅读全文

博文 2020-01-19 16:34:17 保护我方李元芳

golang 中打印函数问题

/** * Created with IntelliJ IDEA. * User: zhangjian * Date: 13-5-13 * Time: 下午1:51 * To change this template use File | Settings | File Templates. */ package main import "fmt" import "unsafe" func main() { a_int := []int{1,2,3,4,5} ai:=reverse(a_int) for aa := range ai{ //1.这个地方"%d "中%d后面一定要加空格,不然golang会认为是字符串%d,直接输出 //fmt.Printf这个函数要求()括号里面的必须是字符串...阅读全文

博文 2015-06-17 20:04:03 zj360202

golang 图片处理,剪切,base64数据转换,文件存储

本文主要介绍: 1. 图片文件的读写。 2. 图片在go缓存中如何与base64互相转换 3. 图片裁剪 本文中,为了方便查看,去掉所有错误判断 base64 -> file ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并把文件写入到buffer err2 := ioutil.WriteFile("./output.jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件) datasource base64 string base64 -> buffer ddd, _ := base64.StdEncoding.DecodeString(datasource) //成图片文件并...阅读全文

博文 2016-06-15 09:00:00 satng

golang 中的内嵌(embeded)

内嵌与聚合: 外部类型只包含了内部类型的类型名, 而没有field 名, 则是内嵌。 外部类型包含了内部类型的类型名,还有filed名,则是聚合。聚合的在JAVA和C++都是常见的方式。而内嵌则是GO 的特有方式。 type Base struct { basename string } type Derive struct { ---内嵌 Base } type Derive struct { 内嵌, 这种内嵌与上面内嵌的区别是什么,后面详细介绍 *Base } type Derive struct{ 聚合 base Base } 内嵌的方式: 主要是通过结构体和接口的组合,有四种。 接口中内嵌接口 : 这里的做为内嵌接口的含义实际上还是指的一个定义,而不是接口的一个实例,相当于合并了两个...阅读全文

博文 2016-04-27 18:00:25 abccheng

佣金百万so easy!阿里云推广联盟喊你来赚钱

佣金百万so easy!阿里云推广联盟喊你来赚钱 阿里云CPS推广阶梯返佣活动火热升级! 坐享15%佣金!一笔成交即有奖励!最高奖励2000元! 超高客单价、高转化率、高佣金! 招募淘客推广,获取超高佣金,速来! 活动详情:迅速点击阿里云cps推广:http://click.aliyun.com/m/1783/ 除15%佣金外,淘客现在参加活动还可以获得额外2000元奖励。 欢迎加入阿里云推广联盟旺旺交流群:1212510604 活动详情:迅速点击阿里云cps推广:http://click.aliyun.com/m/1783...阅读全文

golang for,range的坑

for,range 的k,v变量在整个遍历过程中共用,不能直接进行引用传递,即地址传递,但循环内定义的变量只能为当前循环所使用。 错误代码: package main import ( "encoding/json" "log" "time" ) type test struct { Name string `bson:"name" json:"name" yaml:"name"` // Command name (unique on the profile) } func (test test) String() string { out, err := json.Marshal(test) if err != nil { return err.Error() } return strin...阅读全文

ubuntu 安装 gccgo 并编译go

1,安装gccgo apt-get install gccgo 2,gccgo编译go源码 gccgo -o method2 method1.go 结果:method1是go build , method2 是 gccgo 编译的,发现method2比method1小很多啊,差不多三倍。可能是因为go build编译的是Debug,而gccgo 编译的是Release吧。 -rwxr-xr-x 1 root root 1286708 Jan 24 11:10 method1 -rwxr-xr-x 1 root root 40931 Jan 24 11:14 method2 错误: #/usr/bin/ld: cannot find -lgcc_s locate libgcc_s.so.1 l...阅读全文

博文 2015-06-18 09:02:45 leonpengweicn

一分钟生成上百个电影混剪视频

3.5-1.png 新增多次合成和自定义分段 下面是两个功能的演示 如何一分钟生成上百个影视混剪视频 10秒种完成多个视频有序或随机合成 关注公众号 golang实战应用,不定期分享密钥 软件地址:https://github.com/suifengqjn/videoWater 软件还包含以下功能 [视频格式转换] [帧率设置] [比特率设置] [剪掉片头] [剪掉片尾] [视频剪裁] [去除水印] [视频旋转] [视频镜像] [调整视频分辨率] [视频压缩] [添加文字水印] [添加跑马灯文字水印] [添加图片水印] [画中画] [添加随机背景音乐] [倍速播放(加速减速)] [添加片头] [添加片尾] [视频分段] [视频合成] [插入背景图片] 打包程序下载 支持 mac win32 ...阅读全文

博文 2020-03-08 00:32:43 夜千寻墨

GO语言练习:构建json 和 解析JSON 实例

本文介绍如何使用Go语言自带的库把对象转换为JSON格式,并在channel中进行传输后,并把JSON格式的信息转换回对象。 1、Go语言的JSON 库 Go语言自带的JSON转换库为 encoding/json 1.1)其中把对象转换为JSON的方法(函数)为 json.Marshal(),其函数原型如下 func Marshal(v interface{}) ([]byte, error) 也就是说,这个函数接收任意类型的数据 v,并转换为字节数组类型,返回值就是我们想要的JSON数据和一个错误代码。当转换成功的时候,这个错误代码为nil 在进行对象转换为 JSON 的过程中,会遵循如下几条规则: • 布尔型转换为 JSON 后仍是布尔型 , 如true -> true • 浮点型和整数...阅读全文

博文 2015-07-22 03:00:00 fengbohello

Golang实现大数乘法

大数乘法,简单的说,就是把小学学的列竖式计算的方法进行了实现。这其实也就是个乘法分配率的变形。 5 * 12 = 5 * (2 + 10) = 5 * 2 + 5 * 10 所以第二行竖式,12的十位1与5相乘的时候,需要再最后空一位,其实是在最后省略了一个0。十位就是省略一个0,也就是左移一位,那么百位就是左移两位。以此类推。 通过代码实现,相乘的两个数就不能用整形表示了,因为存不了很大的整数。需要用字符串表示。按位相乘,最后把结果错位相加就行。乘法的结果等于乘数的位数,所以可以申请一个和乘数位数相同的数组,然后错位相加即可。但是这样太麻烦了。 乘法是从个位开始,但是遍历字符串是从最高为开始的,所以要首先将输入字符串反转。用i表示被乘数的遍历索引,j表示乘数的索引。前面说了左移的位数和乘数...阅读全文

[有奖调研] 美团云开发者调查问卷

![云云众生_美团云给你想要的自由 2.png](http://studygolang.qiniudn.com/161228/5cfc48b8cd6996ba354bb2f2208cf6a6.png) 美团云针对客户业务弹性变化特点,推出按需付费的灵活计费方式。冲击云计算市场价格底线,为企业提供高性价比的云服务解决方案。 本次调研将收集开发者在云服务使用过程中遇到的主要问题,以及新需求,借此完善美团云产品及解决方案,实现我们更好的服务于客户的宗旨。 [调研问卷地址] http://survey.meituan.com/?r=survey/index/sid/457371/lang/zh-Hans [奖励机制] 请准确并完整地填写调查问卷,我们将根据问卷的真实性、...阅读全文

阿里云助力创业者从零开启视频之路,史上最低门槛,299元打造视频点播平台

摘要: 为了扶持众多创业者,降低入行门槛,阿里云推出了全新的视频点播创业版套餐,只需299元,即可获得960GB/年的流量包、60GB/年的存储包和24小时/年的转码包,可供个人、小微企业门户网站使用。 近年来,互联网的内容形态快速演变,从最原始的文字博客。到微博时代的图文混合,再到早已主流普及的长视频与近期如火如荼的短视频模式,一直是趋于更具互动性、丰富性的迭代。据公开数据显示,截至2016年12月,中国网络视频用户规模达5.45亿,这个数字足以证明视频已经成为当下最为主流的内容形态。 作为平台方或内容提供方,迎合主流的用户消费习惯,更新迭代内容形态载体,才能留住用户。打个比方,大多数在线教育网站都已经支持视频授课,那些只沉迷于图文课件的教育网站也被市场竞争慢慢淘汰。所以,越来...阅读全文

Gogland EAP 163.10615发布

#新鲜出炉Gogland 1.0EAP 163.10615。6发布,修复之前的部分bug,做简单工程可使用。 问题修复清单,可在通过官方页面查看:https://youtrack.jetbrains.com/issues/GO 以下为官网下载链接: + [Mac OS X 163.10615.6](http://download.jetbrains.com/go/gogland-163.10615.6.dmg ) + [Windows 163.10615.6](http://download.jetbrains.com/go/gogland-163.10615.6.exe) + [Linux 163.10615.6](http://download.jetbrains.co...阅读全文

MongoDB 最佳实践及2.8版本特性与功能

主要流程 MongoDB 2.8 版本特性与功能 MongoDB 在赶集网的应用 MongoDB 最佳实践 MongoDB 2.8 版本特性与功能 TJ MongoDB 开发者 TJ 强调 MongoDB 没有实际意义上的锁,只有 Latch,门栓。 2.6 库级锁 Latch,没有 Lock,写内存的一刹那锁住内存 2.8 无锁的 MVCC 并发,WIREDTIGER,snapshot isolation 2.6 MMAP 内存映射,库级锁 2.8 MMAP 集合级锁 2.8 WIREDTIGER 无锁 WIREDTIGER 存储模式 LSM(HBASE, Cassandra) - Log Structured Merge B-TREE LSM 数据写内存,异步写硬盘 读性能有问题,性能一...阅读全文

博文 2015-04-18 22:00:00 灰仔

【功能盘点】升级后的媒体处理MPS有哪些能力?

摘要: 不同于其他云服务厂商的媒体转码产品,阿里云将更多的技术赋能给用户,通过媒体处理,用户可以基于海量数据深度学习,对媒体的内容、文字、语音、场景多模态分析,实现智能审核、内容理解、智能编辑等视频平台不可或缺的能力。 近日,阿里云媒体转码(MTS)升级为媒体处理(MPS),原音视频转码功能不受影响,除此之外,媒体处理新增智能审核、编辑等功能。 image 自建转码与采用阿里云媒体处理的区别 阿里云媒体处理服务是基于阿里云庞大基础设施体系和计算能力而构建的,它改变了传统的购买、搭建、管理转码软硬件的高昂投入以及配置优化、转码参数适配等复杂性问题。同时,借助云计算服务的弹性伸缩的特性,可以按需提供转码能力,从而最大限度的满足业务转码需求、避免资源浪费。 采用阿里云媒体处理...阅读全文

Google:12 条 Golang 最佳实践

这是直接总结好的 12 条: 1. 先处理错误避免嵌套 2. 尽量避免重复 3. 先写最重要的代码 4. 给代码写文档注释 5. 命名尽可能简洁 6. 使用多文件包 7. 使用 `go get` 可获取你的包 8. 了解自己的需求 9. 保持包的独立性 10. 避免在内部使用并发 11. 使用 Goroutine 管理状态 12. 避免 Goroutine 泄露 ## 最佳实践 这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。 来在维基百科: ``` "A best practice is a method or technique that has consistently shown resu...阅读全文

golang实现Ringbuf

Ring buffer算法优点:高内存使用率,在缓冲buffer内存模型中,不太容易发生内存越界、悬空指针等 bug ,出了问题也容易在内存级别分析调试。做出来的系统容易保持健壮。 package main import ( "bytes" "fmt" ) type Ringbuf struct { buf []byte start, size int } func New(size int) *Ringbuf { return &Ringbuf{make([]byte, size), 0, 0} } func (r *Ringbuf) Write(b []byte) { for len(b) > 0 { start := (r.start + r.size) % len(r.buf) n ...阅读全文

博文 2015-10-20 23:00:12 webyh

优雅的处理错误,而不仅仅只是检查错误

这篇文章摘取至我在日本东京举办的 [GoCon spring conference](https://gocon.connpass.com/event/27521/) 上的演讲稿。 ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/error-handle/ba5a9ada.png) ## 错误只是一些值 我花了很多时间来思考如何在 Go 中处理错误是最好的。我真希望能有一种简单直接的方式来处理错误,一些我们只要让 Go 程序员记住就能使用的规则,就像教数学或字母表一样。 然而,我得到的结论是:处理错误不止有一种方式。我认为 Go 处理错误的方式可以划分为 3 种主要的策略。 ## 标记错误策略 第一种错...阅读全文

博文 2018-03-03 20:02:30 polaris

golang json

1、Go语言的JSON 库 Go语言自带的JSON转换库为 encoding/json 1.1)其中把对象转换为JSON的方法(函数)为 json.Marshal(),其函数原型如下 func Marshal(v interface{}) ([]byte, error) 也就是说,这个函数接收任意类型的数据 v,并转换为字节数组类型,返回值就是我们想要的JSON数据和一个错误代码。当转换成功的时候,这个错误代码为nil 在进行对象转换为 JSON 的过程中,会遵循如下几条规则: • 布尔型转换为 JSON 后仍是布尔型 , 如true -> true • 浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23 • 字符串将以UTF-8编码转化输出为Unicode字符集的字...阅读全文

博文 2016-07-06 00:00:00 zhangym

02-GoLang定义变量

变量的常规定义 1、1定义一个变量,先定义再初始化 var num int num = 666 fmt.Printf("%d\n",num) 1.2定义的同时初始化 var num2 int =888 fmt.Printf("%d\n",num2) 1.3定义的同时初始化并省略数据类型 var num3 = 222 fmt.Printf("%d\n",num3) // 在Go语言中, 可以利用%T输出变量的数据类型 fmt.Printf("%T\n",num3) 1.4定义的同时初始化, 并省略数据类型和var 注意点 1、 :=做了两件事情 , 1.会先定义一个变量 2.给定义的变量赋值 2、:=在Go语言开发中非常非常非常常用 num4:=333 fmt.Printf("%d\n",nu...阅读全文

博文 2018-10-07 11:34:43 箩篼

基于 GMM-UBM 说话人识别引擎(声纹识别) govpr

## 简介 govpr是golang 实现的基于 GMM-UBM 说话人识别引擎(声纹识别),可用于语音验证,身份识别的场景. 目前暂时仅支持汉语数字的语音,语音格式为wav格式(比特率16000,16bits,单声道) 安装 go get github.com/liuxp0827/govpr 示例 如下是一个简单的示例. 可跳转至 [example](https://github.com/liuxp0827/govpr/blob/master/example) 查看详细的例子,示例中的语音为纯数字8位数字.语音验证后得到一个得分,可设置阈值来判断验证语音是否为注册训练者本人.

阅读全文

govpr,golang实现的gmm-ubm声纹识别引擎

## 简介 govpr是golang 实现的基于 GMM-UBM 说话人识别引擎(声纹识别),可用于语音验证,身份识别的场景. 目前暂时仅支持汉语数字的语音,语音格式为wav格式(比特率16000,16bits,单声道) ## 安装 go get github.com/liuxp0827/govpr ## 示例 如下是一个简单的示例. 可跳转至 [example](https://github.com/liuxp0827/govpr/blob/master/example) 查看详细的例子,示例中的语音为纯数字8位数字.语音验证后得到一个得分,可设置阈值来判断验证语音是否为注册训练者本人. ```go package main import (...阅读全文

go - 内置基础类型

Go 语言中包括以下内置基础类型: 布尔型:bool 整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint 浮点型:float32 float64 复数型:complex64 complex128 字符串:string 字符型:rune 错误型:error 1. bool类型 关键字: bool 可定义为: true 或者 false 或者 逻辑表达式 var bool1 bool = true var bool2 bool = (2 == 2) 注:不能接受其他类型的赋值,包括(0, 1),也不支持自动或强制类型转换 2. 整型 分为有符号与无符号两种 值范围,如: int8 2^8 -128~127, ui...阅读全文

博文 2014-10-04 19:26:54 dyllove98

响应式网站定制到底有什么好

很多人对于响应式网站定制会有很大的疑问,响应式网站定制是什么?响应式网站定制投入大吗?其实说起定制网站,简单的说就是找人或者公司按照你的意思来为你做一个网站。很多公司为了跻身进入互联网,实现“互联网+”,所以急需做一个网站,让自己能够开启互联网经营之路。他们更多面对的问题是自己缺乏技术和专业的团队为他们打开这扇互联网大门。对于公司而言,他们最关注的点莫非于:做一个响应式网站要多长时间?网站建设的费用能不能低一些?网站做出来能不能马上有成效? ![u=2607373067,307514015&fm=23&gp=0_副本.jpg](http://studygolang.qiniudn.com/170208/77e1929e7ae593e8f2cd2235b6d31bc0.jpg) 对...阅读全文

关于json转struct struct中有map

有这么一个json,我想直接转成struct struct ``` type whatBean struct { action string control string } ............... tmp := "{\"这个key好多\":{\"action\":\"123\",\"control\":\"456\"},\"这个key真的好多所以用map\":{\"action\":\"/roamApi/getAuthStatus.action\",\"control\":\"https://sosona.com:8443\"}}" var grid map[string]whatBean json.Unmarshal([]byte(tmp), &g...阅读全文

Golang net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"

简述今日用golang开发微信小程序 请求wechat服务接口碰到一个问题记录一下 请求发生了错误 用golang 标准库请求发生了错误 胡乱猜想协议不对 服务器挂了???之后用了postman 工具模拟请求了一下如下 并没有网络错误 此时之前猜想的微信服务器出了问题排除了。最后我仔细看了下请求的日志终于发现了问题 参数之间有了空格 原因参数之间有空格所以才会报net/http: HTTP/1.x transport connection broken: malformed HTTP status code "HTTP/1.1"总结犯错误到是没什么,低级错误真是害死人,太耽误时间了!!...阅读全文

博文 2019-10-18 19:32:48 aside section ._1OhGeD

mongodb 最佳实践

MongoDB功能预览:http://pan.baidu.com/s/1k2UfW MongoDB在赶集网的应用:http://pan.baidu.com/s/1bngxgLp MongoDB在京东的使用:http://pan.baidu.com/s/1qWkawv6 MongoDB 在赶集网的应用 赶集网 DBA 选型失败的案例 选型成功的案例 服务化与运维 失败案例 不支持 join,数据库支持反范式 过多内联数据,索引庞大,性能过低 过多聚合及计算功能,数据库不堪重负 基于地理位置, mongodb 二级索引 schema free,无传统 DB DDL 负担 document 丰富的数据结构类型 mongodb 1.8 全局锁,读写超时非常严重 直到 2.0 DB 级锁,才有单库单表...阅读全文

博文 2016-01-25 03:00:01 jifeng

Dapper,大规模分布式系统的跟踪系统 by bigbully

概述 当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。 Dapper--Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的跟踪系统,它是如何满足一个低损耗、应用透明的、大范围部署这三个需求的。当然Dapper设计之初,参考了一些其他分布式系统的理念,尤其是Magpie和X-Trace,但是我们之所以能成功应用在生产环境上,还需要一些画龙点睛之笔,例如采样率的使用以及把代码植入限制在一小部分公共库的改造上。 自从Dapper发展成为...阅读全文

博文 2017-12-13 05:59:06 bigbully.github.io

用golang实现一个简单的监控工具

背景是这样的,有一次我的服务器突然挂掉了,是由于cpu占用过高,但是我又不知道是哪个进程造成的。于是便想找一个监控工具来监控我的机器,我希望这个工具足够简单,没有复杂的配置,开箱即用,能够监控到当cpu负载过高时,发生的时间以及当时是什么进程造成这样的问题。很可惜,我并没有找到这样的工具(若有这样方便的工具请告知我),但我实在不想因此而给服务器上一套很重的监控系统。于是乎,我决定自己写一个工具。思路如下: 每隔一段时间就查看cpu占用率,当超过了设置的百分比,就触发记录; 调用top命令,按照cpu占用率从高到低排列,将输出记录到文件中,文件以时间命令; 程序能后台运行。 针对第一点,我用了一个库:github.com/shirou/gopsutil,里面有关于cpu使用率以及内存使用率的相...阅读全文

博文 2020-04-22 16:33:38 wx5e1abbbb0a5e5

[翻译]我其实没办法学 Erlang,因为它不存在,所以我发明了它

这是 Joe Armstrong,Erlang 之父在昨天(2013-01-24)发表在 Erlang 邮件列表里的内容。详细解说了他自己从开始学习编码到发明 Erlang 的整个历史。并且,对如何学习编程;如何成为大牛等一系列热门问题提出了自己的看法。当然,文中槽点无数(包括坚定不移的黑我大PHP)。这也是我觉得有必要翻译出来的原因之一。 由于是发在邮件列表的,所以原文是没有正式的标题的。我从 HN 上抄了这个标题回来。 整体上,虽然是和 Erlang 相关的话题。但是读过之后,会突然领会到 Golang Team 一直以来坚持的一些东西的更深层次的含义。 ————翻译分隔线———— 回到过去…… 当我开始学习编程的时候(1967),我可以在 FORTRAN 和(传说中的)Algol 之间...阅读全文