Golang
leonpengweicn
这个作者很懒,什么都没留下…
展开
-
Docker alpine部署go项目失败分析
https://yryz.net/post/golang-docker-alpine-start-panic.html用docker基于alpine微型镜像部署go的项目,启动时报错 panic: standard_init_linux.go:175: exec user process caused "no such file or directory",去年测试docker时遇到过,没去深...转载 2018-11-09 15:43:56 · 2293 阅读 · 1 评论 -
Go Benchmarks
http://lk4d4.darth.io/posts/bench/BenchmarksBenchmarks are tests for performance. It’s pretty useful to have them in project and compare results from commit to commit. Go has very good too转载 2016-05-23 18:25:36 · 943 阅读 · 0 评论 -
听说,你想让自己的Go程序运行的更快?
http://studygolang.com/articles/6914到现在为止,我已经忘记了我在写什么,但我确定这篇文章是关于Go语言的。这主要是一篇,关于运行速度,而不是开发速度的文章——这两种速度是有区别的。我曾经和很多聪明的人一起工作。我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能)的极限。应用引擎有一些非常严格的性能要求,转载 2016-05-06 11:49:31 · 1209 阅读 · 0 评论 -
go语言scan空值报错
http://xmarker.blog.163.com/blog/static/22648405720144743531420/今天使用go语言时,如果数据库里有空值,扫描出来报错,其中环境是这样的,数据库为postgresql9.3.2(其实和数据库无关),数据库里的数据如下:db_public=> \d t_tmp Table "usr_publ转载 2016-04-19 17:41:13 · 7586 阅读 · 0 评论 -
golang tcp heartbeat
package mainimport "log"import "time"const TIMEOUT_NS = int64(30e9) // 30 secondstype Msg struct { Header uint8 // == 1 SeqNo uint32 Data uint8 // the real case is complex}type Reply st转载 2016-03-20 18:01:56 · 1427 阅读 · 0 评论 -
Using TCP keepalive with Go
http://felixge.de/2014/08/26/tcp-keepalive-with-golang.htmlIf you have ever written some TCP socket code, you may have wondered: "What will happen to my connection if the network cable is un转载 2016-03-20 17:59:28 · 861 阅读 · 0 评论 -
golang 快捷付值需要注意的地方
http://bbs.studygolang.com/thread-29-1-1.html看这段代码的输出是:package mainimport "fmt"var name stringfunc main() { name, err := getString()转载 2016-03-18 16:51:36 · 572 阅读 · 0 评论 -
Using TCP keepalive with Go
http://felixge.de/2014/08/26/tcp-keepalive-with-golang.htmlIf you have ever written some TCP socket code, you may have wondered: "What will happen to my connection if the network cable is un转载 2016-03-17 13:48:07 · 533 阅读 · 0 评论 -
Go语言黑魔法
http://zhuanlan.zhihu.com/idada/20010926今天我要教大家一些无用技能,也可以叫它奇技淫巧或者黑魔法。用得好可以提升性能,用得不好就会招来恶魔,嘿嘿。黑魔法导论为了让大家在学习了基础黑魔法之后能有所悟,在必要的时候能创造出本文传授之外的属于自己的魔法,这里需要先给大家打好基础。学习Go语言黑魔法之前,需要先看清Go转载 2015-09-23 11:51:08 · 700 阅读 · 0 评论 -
golang 二进制操作
http://blog.guoqiangti.com/?p=538以前很少对二进制进行操作,在看effective go的时候,好像没有看到关于二进制操作符的说明.今天在看其他源码的时候,看到一些二进制操作符,不知道他的意思,所以就查查资料,温习一下. 按位或 |.| (按位或):【解义】对两个整数的二进制形式逐位进行逻辑或运算,原理为:1|0=1,0|0=转载 2015-08-26 12:05:01 · 5139 阅读 · 0 评论 -
golang 位运算
http://blog.opskumu.com/golang-bitwise.html位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算). 位操作符一、简介关于位运算的操作,维基转载 2015-08-26 12:05:36 · 1854 阅读 · 0 评论 -
GOLANG笔记-04-ARRAY/SLICE/MAP
http://www.wklken.me/posts/2014/03/02/04-data-structure.htmlGolang笔记-04-array/slice/map一.Array1.声明&赋值2.元素访问二.Slice1.声明&赋值2.元素访问3.其他操作三.Map1.声明&赋值2.元素访问3.基本操作四.其他一转载 2015-08-26 18:50:44 · 439 阅读 · 0 评论 -
深入学习golang(4)—new与make
http://www.cnblogs.com/hustcat/p/4004889.htmlGo语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new这是一个用来分转载 2016-06-06 16:55:05 · 474 阅读 · 0 评论 -
golang交叉编译
GOROOT_BOOTSTRAP=/usr/local/go CGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash --no-cleanGOOS = linux, darwin, freebsd, windowsGOARCH = amd64, 386CGO_ENABLED=1,0GOROOT_BOOTSTRAP=/usr/l原创 2016-04-22 15:46:48 · 1719 阅读 · 0 评论 -
Linux Signal及Golang中的信号处理
http://colobu.com/2015/10/09/Linux-Signals/信号(Signal)是Linux, 类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成转载 2016-08-05 17:43:51 · 6441 阅读 · 0 评论 -
dep waiting for lockfile /go/pkg/dep/sm.lock: Lockfile created, but doesn't exist
waiting for lockfile /go/pkg/dep/sm.lock: Lockfile created, but doesn't existenv DEPNOLOCK=1 dep ensure -v原创 2018-01-26 11:21:51 · 2524 阅读 · 0 评论 -
gRPC服务发现&负载均衡
https://segmentfault.com/a/1190000008672912构建高可用、高性能的通信服务,通常采用服务注册与发现、负载均衡和容错处理等机制实现。根据负载均衡实现所在的位置不同,通常可分为以下三种解决方案:1、集中式LB(Proxy Model)在服务消费者和服务提供者之间有一个独立的LB,通常是专门的硬件设备如 F5,或转载 2017-05-26 18:05:15 · 4159 阅读 · 0 评论 -
空结构体struct{}解析
http://www.golangtc.com/t/575442b8b09ecc02f7000057本篇文章转自David的”The empty struct”一文,原文地址链接是http://dave.cheney.net/2014/03/25/the-empty-struct 。欢迎大家访问我的博客,代码可以在<a href="https://github.com/Zu转载 2017-04-10 11:27:03 · 9191 阅读 · 0 评论 -
how to listen to N channels? (dynamic select statement)
http://stackoverflow.com/questions/19992334/how-to-listen-to-n-channels-dynamic-select-statement// Process1 calls `fn` for each value received from any of the `chans`// channels. The arguments转载 2017-03-14 19:35:50 · 1088 阅读 · 0 评论 -
使用Grafana监控Go应用
http://lihaoquan.me/2017/2/2/monitor-go-with-influxdb-and-grafana.html互联网企业背后,依靠的是成千上万台服务器日夜不停运转,以支撑其业务的运转,宕机对于互联网企业来说,代价是 沉重的,轻则影响用户体验,重则直接影响交易,特别给我们这些做电商的造成不可挽回的损失。对于这些机器队友的 开发和运维人员来说,依靠人力转载 2017-03-28 08:54:36 · 5579 阅读 · 0 评论 -
php函数ftok的坑
最近在做一个go和php之间进程通信的项目,想利用 共享内存来实现数据共享。技术本身并不复杂,GO利用cgo绑定c的shm函数,PHP本身就有这个扩展,只要编译的时候--enable-shmop即可。但在实际过程中发现总是没办法获取到共享内存,后面仔细检查了一下发现是 ftok的实现不同。C 里面ftok第二个参数是int, 而php里面是字符串。最后在网上原创 2017-02-03 16:46:28 · 2484 阅读 · 0 评论 -
Go项目的目录结构
http://blog.studygolang.com/2012/12/go%E9%A1%B9%E7%9B%AE%E7%9A%84%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84/项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性1、一般的,一个Go项目在GOPATH下,会有如下三个目录:转载 2017-02-23 11:42:24 · 2328 阅读 · 0 评论 -
深入学习golang(4)—new与make
http://www.cnblogs.com/hustcat/p/4004889.htmlGo语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new这是一个用来分转载 2016-12-27 21:02:10 · 649 阅读 · 0 评论 -
nginx 配置 http proxy 和fastcgi
http proxy:#列出所有服务器地址,nginx 自动均衡分发请求到各个服务器。 upstream frontends { ip_hash; server 192.168.199.1:8088; server 192.168.199.2:8089;}server { listen 80; server_nam原创 2016-10-08 17:09:44 · 6348 阅读 · 0 评论 -
Go语言的RPC介绍(含Protobuf-RPC)
http://my.oschina.net/chai2010/blog/191484标准库的RPCRPC是远程调用的简称, 简单的说就是要像调用本地函数一样调用服务器的函数.Go语言的标准库已经提供了RPC框架和不同的RPC实现.下面是一个服务器的例子:type Echo intfunc (t *Echo) Hi(args string, reply *string转载 2016-08-12 16:51:32 · 2118 阅读 · 0 评论 -
HTTP协议头部与Keep-Alive模式详解
https://www.byvoid.com/blog/http-keep-alive-header1、什么是Keep-Alive模式?我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成 之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连转载 2016-08-11 16:48:20 · 560 阅读 · 0 评论 -
理解Go 1.5 vendor
Import comments are ignored in vendored packages.go 1.4引入了canonical imports机制,如:package pdf // import "rsc.io/pdf"如果你引用的pdf不是来自rsc.io/pdf,那么编译器会报错。但由于vendor机制的存在,go tool不会校验vendor中package的转载 2016-08-23 11:55:57 · 3888 阅读 · 0 评论 -
使用vendor管理Golang项目依赖
http://www.tuicool.com/articles/NjMzIbJ我们在项目中除了大量的使用Python外,也大量的使用了Golang构建高效基础运行服务。在使用Golang过程中,我们发现Golang程序缺少依赖库版本功能是一个非常令人头大的问题:某些依赖在某个commit之后发生了API变更之后,如果不修改代码很难兼容,然而开发者之间很有可能因为参与的时间不同,转载 2016-08-23 11:50:39 · 5509 阅读 · 1 评论 -
How to Wait for All Goroutines to Finish Executing Before Continuing
http://nathanleclaire.com/blog/2014/02/15/how-to-wait-for-all-goroutines-to-finish-executing-before-continuing/EDIT: As pointed out by effenn in this Reddit comment, a lot of information in转载 2015-05-15 10:01:38 · 738 阅读 · 0 评论 -
Go 语言中的 Array,Slice,Map 和 Set
http://se77en.cc/2014/06/30/array-slice-map-and-set-in-golang/#MapArray(数组)内部机制在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从 0 开始。数组是很有价值的数据结构,因为它的内存转载 2015-04-17 11:53:10 · 827 阅读 · 0 评论 -
生成随机字符串
package mainimport ( "rand" "fmt" "time")const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 abcdefghijklmnopqrstuvwxyz" + "~!@#$%^&*()-_+={}[]\\|.?/\"';:`"const Maxlen = 10func RandStri转载 2015-04-15 17:28:16 · 533 阅读 · 0 评论 -
A Recap of Request Handling in Go
http://www.alexedwards.net/blog/a-recap-of-request-handlingProcessing HTTP requests with Go is primarily about two things: ServeMuxes and Handlers.A ServeMux is essentially a HTTP request ro转载 2014-06-19 14:54:42 · 1019 阅读 · 0 评论 -
How to test only one benchmark function?
http://stackoverflow.com/questions/16161142/how-to-test-only-one-benchmark-functionDescription of testing flags-test.bench pattern Run benchmarks matching the regular expression. By转载 2014-06-19 16:55:39 · 941 阅读 · 0 评论 -
go语言的new和make
http://1.guotie.sinaapp.com/?p=407golang的new和make主要区别如下:1、make只能用来分配及初始化类型为slice,map,chan的数据;new可以分配任意类型的数据2、new分配返回的是指针,即类型*T;make返回引用,即T;3、new分配的空间被清零,make分配后,会进行初始化。effective go举了转载 2014-06-19 12:58:39 · 1255 阅读 · 0 评论 -
c# 数据类型占用的字节数
bool -> System.Boolean (布尔型,其值为 true 或者 false)byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)char -> System.Char (字符型,占有两个转载 2014-07-02 17:34:39 · 923 阅读 · 0 评论 -
MAC OS 10.9 编译ZEROMQ3
1,下载ZEROMQ3 wgethttp://download.zeromq.org/zeromq-3.2.4.tar.gztar -zxvf zeromq-3.2.4.tar.gzcd zeromq-3.2.4./configuremakesudo make install2,安装gozmpcd $GOPATH/srcgo get -tags zmq_3_x github转载 2014-03-26 14:45:29 · 2161 阅读 · 0 评论 -
Ubuntu下使用Sublime Text 2搭建Go开发环境
http://www.cnblogs.com/yourihua/archive/2012/06/04/2529333.html大家好,这几天捣鼓了下 golang 的环境,今天跟大家分享下心得。 Go is an open source programming environment that makes it easy to build simple, reli转载 2014-03-24 13:05:35 · 743 阅读 · 0 评论 -
ubuntu 配置golang环境
1,下载golang二进制包原创 2014-05-04 15:07:01 · 1094 阅读 · 0 评论 -
Replacing container/vector in Go programs
/AppendVectora = append(a, b...)//Copyb = make([]T, len(a))copy(b, a)//Cuta = append(a[:i], a[j:]...)//Deletea = append(a[:i], a[i+1:]...)//Expanda = append(a[:i], append(make([]T, j), a原创 2014-03-18 17:24:49 · 1015 阅读 · 0 评论 -
Ubuntu 下 nginx , php , mysql 和 golang 的简单安装
http://fuxiaohei.me/article/15/ubuntu-lnmp-golang-installation.html我是搞php出身,自然安装lnmp是常规技能。以前的手段还是lnmp安装包,比如军哥的lnmp1.0。随着php和mysql的更新,大多数一键安装都开始版本老化,更新困难的问题。因此,重新研究了一下Ubuntu下lnmp的安装,发现现在简单的多,转载 2014-02-21 12:37:14 · 1226 阅读 · 0 评论