设置Golang的GOPATH

Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. golang安装 golang下载 sudo tar -zvxf go1.6.2.linux-amd64.tar.gz sudo mv go /usr/local/go #设置环境变量 vi /etc/profile export GOROOT=/usr/local/go #设置为go安装的路径 export GOPATH=$HOME/gocode #默认安装包的路径 e...阅读全文

阅读:41370 评论:1

从小案例学习Go语言-将Excel各部分内容分发到不同的电子邮箱

关键点: Go语言读取Excel Go语言正则表达式 Go语言发送电子邮件 案例场景 今天公司行政部小妹妹跑来问,有什么办法可以把工资条自动发送到每个员工的企业邮箱里?公司每个员工的工资条以Excel的形式放在同一个文档里,之前用OA发送,复制粘贴,操作相当简单,但是公司要求改用电子邮件发送工资条后,给行政部的同事增加了较大的工作量,而且每个月都需要做一次,这很浪费时间,于是爽快的答应帮忙解决。 情况梳理 公司工资条大概这个样子的 为了方便,行政部门会把所有人的工资条按顺序排列在同一个Excel...阅读全文

阅读:11166 评论:8

golang配置文件热更新

配置文件热更新是服务器程序的一个基本功能,通过热更新可以不停机调整程序的配置,特别是在生产环境可以提供极大的便利,比如发现log打得太多了可以动态调高日志等级,业务逻辑参数变化,甚至某个功能模块的开关等都可以动态调整。 每种语言都有自己的热更新实现方式,在golang里面我看到了有人采用了一种错误的实现方式,如下: type Config struct { Test1 string `json:"Test1"` Test2 int `json:"Test2"` } var ( config *C...阅读全文

阅读:7934 评论:1

golang中context包解读

前瞻 context 包困扰我好久,之前在 watch etcd 的时候首次上手使用这个包,当时并不理解这个包的作用,只知道可以用来关闭 watch , 后来被大牛吐槽了,决定深入探究一番。 简介 golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + select 的方式,来解决这个问题,但是有些场景实现起来比较麻烦,例如由一个请求衍生出的各个 goroutin...阅读全文

2017-03-03 10:00:40 徐学良
阅读:19918 评论:2

golang 热更新技巧

## 序言 Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢? ## 问题分析 Web应用的更新,我觉得可能需要考虑几个方面的问题: 1. 编译好的应用二进制文件、配置文件上传到服务器上; 2. 应用服务器能...阅读全文

2017-04-21 10:00:37 lancelotM
阅读:20128 评论:0

Golang发送邮件

package main import ( "bytes" "crypto/tls" "encoding/base64" "errors" "fmt" "io" "mime" "mime/multipart" "mime/quotedprintable" "net/smtp" "net/textproto" "os" "path/filepath" "strings" ) const MemMaxSize = (1 << 20) * 10 func SendMail(from, to, pw, ...阅读全文

2017-04-25 15:00:24 路人甲777
阅读:2336 评论:0

Golang 读写 Excel

Excelize 是 Golang 编写的一个用来操作 Office Excel 文档类库,基于微软的 Office OpenXML 标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片,并且在保存后不会丢失图表样式。 安装 go get github.com/Luxurioust/excelize 创建 XLSX package main import ( "fmt" "os" "github....阅读全文

2017-05-09 17:01:02 续日
阅读:24922 评论:1

GopherChina 2017 演讲实录|申砾:Go in TiDB文章

各位好,我叫申砾,来自 PingCAP。今天和大家分享一下 Go 语言在分布式数据库 TiDB 开发中的一些使用经验。 先调查一下,请问有多少人听说过 TiDB 请举手。有多少人下载并且搭建起来过 TiDB 请举手。(此处举手无数,小编很感动~~) 看来大家都或多或少有一些了解。我先会介绍一下 TiDB 是什么,有什么样的特点。然后介绍 TiDB 的整体架构特别是 SQL 层的一些东西,最后会介绍一些我们开发过程中使用 Golang 的一些实践经验。 首先介绍一下我自己,我之前在网易有道和 36...阅读全文

阅读:1891 评论:0

GO (switch 与 type)

// switch project main.go package main import ( "fmt" ) type Element interface{} type List []Element type Person struct { name string age int } func (p *Person) String() string { return fmt.Sprintf("(name: %s - age: %d)\n", p.name, p.age) } func main...阅读全文

2017-05-13 21:00:22 痞子汤
阅读:3363 评论:0

Golang 字符串拼装方式性能对比

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好? 下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。在VMWare下的Ubuntu 14.04下运行的结果如下,仅供参考: fmt.Sprintf 和 strings.Join 速度相当 string + 比上述二者快一倍 bytes.Buffer又比上者快约400-500倍 如果循环内每次都临时声明一个bytes.Buffer来使用,会比持...阅读全文

2017-05-15 20:00:43 吃一堑消化不良
阅读:1608 评论:3

Go net/http 超时指导 【已翻译100%】

当使用Go开发HTTP服务器或客户端时,超时造成的错误,常常是简单而又微妙的:很多因素都可能产生超时。一个错误可以很长一段时间没有结果,直到网络故障,进程被挂起。 HTTP是一个复杂的多层协议,所以在超时这个问题上,并没有一个通用的解决方案。想一想:流媒体终端、JSON API、Comet终端。事实上,默认值往往不是你想要的。(译注:没理解Comet endpoint是什么意思。原文给出的链接是维基百科上天文意义的彗星。译者怀疑是支持BT协议的BitComet) 在这篇文章中,我将分别介绍,在那...阅读全文

2017-06-06 20:34:04 caotj72,caotj72 等
阅读:1218 评论:0

ngrok服务器搭建步骤-测试成功

准备工作:1、准备好一台主机,带公网IP,最好上面没有其他的应用程序(对linux熟练的除外)2、准备一个一级域名,做好泛解析(二级域名的没有配置成功,汗。。。)下面是安装步骤:(安装环境:centos6.5 64bit , 阿里云主机带弹性IP)一、安装git1、安装git所需要的依赖包yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUt...阅读全文

2017.06.19 20:36* 瀋黙de魚
阅读:2955 评论:0

gRPC负载均衡库grpc-lb的使用

grpc-lb采用客户端进程内负载均衡方式,支持随机、轮询、一致性哈希三种负载均衡策略,并支持服务端权重。可采用etcd或consul作为注册中心。项目地址:https://github.com/liyue201/grpc-lb基本架构如图,服务提供者起来后向注册中心注册自己的信息,ip、端口、权重等,并保持心跳。客户端监听注册中心,获取服务器列表,一旦服务器发生变化,客户端马上更新本地的服务器列表。客户端每个请求都通过负载均衡策略选择一个合适的服务器去访问。​随机负载均衡客户端例子: pac...阅读全文

2017-08-02 18:17:31 stirlingx
阅读:3176 评论:0

用Golang处理每分钟百万级请求

翻译原文链接 转帖/转载请注明出处 原文链接@medium.com 发表于2017/08/30 我在防垃圾邮件,防病毒和防恶意软件领域已经工作了15年,前后在好几个公司任职。我知道这些系统最后都会因为要处理海量的数据而变得非常复杂。 我现在是smsjunk.com的CEO并且是KnowBe4的首席架构师。这两个公司在网络安全领域都非常活跃。 有趣的是,在过去10年里作为一个码农,所有我经历过的网站后台开发用的几乎都是用Ruby on Rails。不要误解,我很喜欢Ruby on Rails并且认...阅读全文

2017-09-07 09:34:55 曼托斯
阅读:1409 评论:0

使用Golang写出高并发代码

本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。 笔者目前处于失业状态,之前一直对Golang如何处理高并发http请求的一头雾水,这几天也查了很多相关博客,似懂非懂,不知道具体代码怎么写 下午偶然在开发者头条APP上看到一篇国外技术人员的一篇文章用Golang处理每分钟百万级请求,看完文章中的代码,自己写了一遍代码,下面自己写下自己的体会 核心要点 将请求放入队列,通过一定...阅读全文

阅读:7549 评论:0

Golang URL 解析常用代码

package main import "fmt" import "net/url" import "strings" func main() { //我们将解析这个 URL 示例,它包含了一个 scheme,认证信息,主机名,端口,路径,查询参数和片段。 s := "postgres://user:pass@host.com:5432/path?k=v#f" //解析这个 URL 并确保解析没有出错。 u, err := url.Parse(s) if err != nil { panic(e...阅读全文

2017-12-12 11:04:46 白羽明
阅读:1820 评论:0

gorose, 最像 laravel's eloquent 的go数据库操作orm, 风骚的链式调用, 让你深深陷入不能自拔

gorose(go orm), 一个小巧强悍的go语言数据库操作orm, 灵感来源于laravel的数据库操作orm, 也就是eloquent, 做php的, python的, ruby的, 都会喜欢上这个orm的操作方式, 主要是链式操作比较风骚 - [English Document](https://github.com/gohouse/gorose) - [中文文档](https://github.com/gohouse/gorose/blob/master/README...阅读全文

2018-01-10 14:24:34 fizzday
阅读:2111 评论:6

从零开始一步步构建运行在 Kubernetes 上的服务

如果你用 Go 写过程序,就会发现用 Go 来写服务是很简单的事。比如说,只要几行代码就可以跑起来一个 HTTP 服务。但是如果我们想让服务在生产环境运行,我们还需要添加什么呢?本文将通过写一个能在 Kubernetes 上运行的服务的例子,来讨论上述问题。 文中所有的例子可以在 [这里(按标签分类)](https://github.com/rumyantseva/advent-2017/tree/all-steps) ,或者 [这里(按 commit 分类)](https://githu...阅读全文

2018-01-11 15:41:37 polaris
阅读:2902 评论:0

Kubernetes学习系列

这段时间项目组内想要引入Kubernetes,作为第二代容器调度引擎,故最近在系统的学习Kubernetes。整理了一些学习笔记,心得,放到博客中,一来记录自己的学习经过,二来看能否帮到有需要的同学。详情见下: 1、Kubernetes核心概念总结——介绍基础架构、Pod、RC、Job、Service、Deployment等。 2、Centos7部署Kubernetes集群——基于Centos7,yum安装K8s,并配置集群,最后部署了容器覆盖网络——Flannel。 3、基于kubernete...阅读全文

阅读:4920 评论:0

利用阿里云ECS跳板机内网穿透- ssh

背景: 暴露私网的一台机器,公网可访问。由于坑爹的电信没有给固定的公网IP,所以没法在路由器上配置公网转发。 网上google后,发现ssh的强大,一条命令搞定。 ``` ssh -fNgR 2222:127.0.0.1:22 101.37.XX.XX ``` 命令 | 含义 ---|--- -R port:host:port | 将远程机器的端口映射到本地。第一个port是远端服务器port,第二个port是本地port,ip地址是本地IP -f | 告诉SSH客...阅读全文

阅读:7818 评论:0