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

golang编写的数据库中间件kingshard

偶然网上看到这个kingshard,自己对golang感兴趣就试玩了一下,可以正常跑成功。 数据库中间件是什么呢?简单的说和数据库类似,不同的是当程序里发送sql给它的时候,它会根据配置对sql进行分析,而后将sql发送到指定的节点(node)上,它的后面是若干数据库运行实例。 当应用发展起来后,随着数据库的压力逐渐变大,通常都要进行分库,分表,主从分离,这些东西在应用程序里实现也可以,但是会造成应用程序过于复杂,后续难以维护。使用中间件,将分库、分表、主从分离逻辑放到中间件上就更好的分离代码。 kingshard整体架构如下: kingshard架构图 其中 client是需要连接数据库的客户端; kingshard就是数据库中间件了; node1和node2就是不同的mysql数据库节点...阅读全文

博文 2015-10-16 21:53:38 陈杰斌

开放云平台应用开发库和工具集Go Cloud

Go Cloud Project 是 Google 推出的一项计划,允许开发者在任何云提供商上无缝部署云端应用。它通过为存储和数据库等常见用途提供稳定的通用接口来实现此目的。 Go Cloud 是一个可在开放云平台上进行开发的库和工具集,旨在让 Go 语言成为开发构建可移植云端应用程序的首选语言。它提供一组用于访问 Blob 存储、MySQL 数据库和运行时配置的开放式通用云 API ,以及具有内置日志记录、跟踪和运行状况检查的 HTTP 服务器。 Go Cloud 提供通用 API: 非结构化二进制(blob)存储 在运行时更改的变量(配置) 连接 MySQL 数据库 服务器启动和诊断:请求记录、跟踪和运行状况检...阅读全文

Golang调试工具Delve安装及使用

Golang debug 推荐使用 Delve 工具,项目地址:https://github.com/derekparker/delve 一、安装 照着 github 上 delve 项目的安装说明操作,go mod模式下推荐使用第二种方式。 1.拉取最新 delve 项目代码到本地,编译安装。 # cd $GOPATH/src/ # git clone https://github.com/derekparker/delve.git # cd delve/cmd/dlv/ # go build # go install 国内环境go build会报错: go: golang.org/x/crypto@v0.0.0-20180614174826-fd5f17ee7299: unrecogni...阅读全文

博文 2018-12-25 12:34:43 野尘lxw

Go Mod对比Go Vendor

之前写Go的时候都是直接Deb或者更暴力的Go get来安装依赖包,也是因为那时候为了赶项目直接走最直接的方法,现在有点时间了,来研究一下目前大家常使用的Go包管理器。 今天我们要介绍的两种方式是Go Mod和Go Vendor。 1.Go Mod 1.11版本之后开始能支持的一个包的管理,1.12版本正式GA解决的问题是golang不再依赖gopath的设置,下载下来的包可以直接使用。 1.1 存在问题:对使用者不友好 目前已经更新到1.12版本,但是go mod还是不太友好,使用起来不太方便。 开发的时候还是需要go get提前下载包,然后再应用。 只有要打包的时候执行一套命令,类似于下面这样: go mod init ./ go build main.go 或 go build -mo...阅读全文

博文 2019-03-14 03:34:40 Lateautumn_Lin

golang mysql

我实在受不了哪些只会粘贴别人东西的东西。自己不动手实践就开始放屁!golang访问mysql数据库1)下载mysql驱动https://github.com/go-sql-driver/mysql下载zip包mysql-master.zip2)将mysql-master.zip放到redhat6.4的机器上,解压,获得文件夹mysql-master,将这个目录改名为mysql,并将mysql目录移到/usr/local/go/src/目录下。/usr/local/go目录是我的GOROOT目录。3)安装mysql,为了简单使用root用户在mysql数据库中创建表userinfo用户:root,密码:空;数据库:msyql,表userinfocreate table userinfo (ui...阅读全文

博文 2017-05-24 02:09:33 haolifengwang

golang中sublime text中配置goimports

生态go对于import包无法自动添加或者删除,对于某些用户来说很不适应.在sublime text中利用gosublime+goimports很好的解决了这一问题. 1首先确认sublime text安装了Gosublime(安装方法这里不在赘述); 2下载goimports: go get code.google.com/p/go.tools/cmd/goimports 3配置sublime text,配制方法如下:preferences->package settings->gosublime->setting-user中添加如下内容 { "fmt_cmd": ["goimports"] } 4重启sublime text,即可看到可以自动添加程序中缺少的包或者删除程序中多余的包,而不...阅读全文

博文 2015-06-17 20:17:46 chenbaoke

130套简历免费领取

#### 最新最全的 简历模板,总有一款适合你。关注公众号(程序员的视界)免费领取,或:wx:17326070896 ![微信图片_20181016164456.png](https://static.studygolang.com/181016/d13070498d325a9a5c3ca7397c0f5576.png)![微信图片_20181016164456.png](https://static.studygolang.com/181016/d13070498d325a9a5c3ca7397c0f5576.png)![微信图片_20181016133759.png](https://static.studygolang.com/181016/a8067247a9104fc090c3a...阅读全文

用Go语言绘制Go语言地鼠吉祥物

Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。但Go语言除了擅长处理服务器端任务外,它还可以用来做图。 package main import ( "log" "github.com/fogleman/pt/pt" ) func main() { scene := pt.Scene{} wall := pt.SpecularMaterial(pt.HexColor(0xFCFAE1), 2) scene.Add(pt.NewSphere(pt.Vector{4, 7, 3}, 2, pt.LightMaterial(pt.Color{1, 1, 1}, 1, p...阅读全文

博文 2015-03-05 11:29:45 techug

QOR:基于go语言开发的电商系统、CMS工具包

QOR是首个使用Go语言开发的电商系统和CMS的软件工具开发包(SDK),开源项目,包含一系列的通用功能模块,实现快速集成、灵活配置,让开发电商网站、CMS,像搭积木一样简单快捷。 ## 目前已经上线的模块 * Admin: 快速为您的应用程序生成一个漂亮、可跨平台运行、可配置的管理后台。 * Publish: 分别设置预演和正式服务器,使用Publish,内容管理员就能在正式发布之前预览所更新的内容。 * Transition: 用Transition来体现业务流程和执行业务规则。 * Media Library: 支持上传文件至云端或其他位置;支持图像裁剪和调整尺寸。 * Worker: 运行批处理进程,进行批量数据处理或其他耗时的计算。 * Exchange: 应...阅读全文

go与python

python是最简洁的语言,没有之一。目前有很多go程序员都是python程序员,因此,对go的评价有一句很典型的话:go写起来像python一样。 用了go一段时间,感受如下: 1、写起来像python一样,但距离python还是有段距离的。尤其是,python提供了idle命令行解释器,这个可以很方便的写一些小例子来验证一些函数如何使用,go这方面就不如。 2、go语言的静态属性导致go不可能像python一样简洁,这如同硬币的两面; 3、go语言语法非常严格,在编译的时候,能够预防很多错误; 4、go语言执行效率远远高于python。这一点很重要。有些pythoner不服,总是说,想要效率的话,你可以pypy啊,你可以使用c扩展啊,等等,但是问题是,如果使用了pypy,或者使用c扩展的...阅读全文

博文 2015-10-14 15:02:42 铁哥

Go get使用代理

在vscode中使用golang时,经常会出现安装第三方工具的时候失败的问题,一般来说都是下载了golang.org/x/...下面的包或者要下载的工具依赖于golang.org/x/...的包所导致的,在国内是不会很顺利的下载和安装的。 Installing github.com/mdempsky/gocode FAILED Installing github.com/uudashr/gopkgs/cmd/gopkgs FAILED Installing github.com/ramya-rao-a/go-outline FAILED Installing github.com/acroca/go-symbols FAILED Installing golang.org/x/tools/c...阅读全文

博文 2019-06-20 17:32:54 路过麦田

golang手动管理内存

作者:John Graham-Cumming. 原文点击此处。翻译:Lubia Yang 前些天我介绍了我们对Lua的使用,implement our new Web Application Firewall. 另一种在CloudFlare (作者的公司)变得非常流行的语言是Golang。在过去,我写了一篇 how we use Go来介绍类似Railgun的网络服务的编写。 用Golang这样带GC的语言编写长期运行的网络服务有一个很大的挑战,那就是内存管理。 为了理解Golang的内存管理有必要对run-time源码进行深挖。有两个进程区分应用程序不再使用的内存,当它们看起来不会再使用,就把它们归还到操作系统(在Golang源码里称为scavenging )。 这里有一个简单的程序制造了...阅读全文

k8s与健康检查--grpc服务健康检查最佳实践

前言 GRPC正在成为云原生微服务之间通信的通用语言。如果您今天要将gRPC应用程序部署到Kubernetes,您可能想知道配置运行状况检查的最佳方法。在本文中,我们将讨论grpc-health-probe,一种Kubernetes本地健康检查gRPC应用程序的方法。 果您不熟悉,Kubernetes健康检查(liveness and readiness probes)就是让您的应用程序在您睡觉时保持可用的原因。他们检测到没有响应的pod,将它们标记为不健康,并导致这些pod重新启动或重新调度。 kubernetes本身不支持gRPC健康检查。这使得gRPC开发人员在部署到Kubernetes时有以下三种方法: httpGet probe: 不能与gRPC原生使用。您需要重构您的应用程序以同...阅读全文

博文 2019-03-02 11:34:41 iyacontrol

golang内置包管理工具go mod简明教程

go mod go buildin package manager. go mod是go语言内置的包管理工具,集成在go tool中,安装好go就可以使用。 要求: go version >= 1.11 官方文档: https://tip.golang.org/cmd/go... 环境变量 # 通过环境变量GOPROXY设置代理 export GOPROXY=https://goproxy.io # go mod功能开关,默认是auto,在gopath中不启用 # 可设置为on强制启用 export GO111MODULE=on 初始化 go mod init init报错outside gopath no import comments # 方法一 手动创建go.mod文件, 写入modu...阅读全文

golang包管理工具glide简介

golang包管理工具glide简介 前言 golang是一个十分有趣,简洁而有力的开发语言,用来开发并发/并行程序是一件很愉快的事情。在这里我感受到了其中一些好处: 没有少了许多代码格式风格的争论,强制统一的风格多好; 编译速度超快,再也不用等待许久,才能编译完工程(测试驱动开发自然更爽); 也不会出现同一个项目组中的人,在使用同一个语言的不同子集。但这种情况不论是在C#还是在Java的世界里,都还是普遍存在的; 轻松跨平台(当然Java做得不错,C#/.net还是努力中...) 这是一门非常简洁、简单、清晰的编程语言(关键字好少啊) 包依赖处理得很有趣; 错误处理机制很有趣,个人觉得比C#/Java的异常处理机制更方便,也更合理些; 对面向对象编程很有趣,非侵入性的接口实现方式,太赞了。...阅读全文

Golang使用amqp发送消息

1.为什么使用信道(channel)而不使用TCP连接发送AMQP命令? 对操作系统来说频繁的建立和销毁TCP连接开销非常昂贵,而操作系统每秒建立的连接是有上限的,性能瓶颈不可避免,而只建立一条TCP连接无疑是一个很好的方案,在这条连接当中建立多条信道与RabbitMQ进行私密通信,相当于光纤电缆一样,一条电缆有多条光束,信道是没有限制的 2.队列 1)AMQP的命令basic.consume与basic.get 如果需要消息一到达队列就自动接收的话,应该使用basic.consume basic.get会订阅消息,获得单条消息,然后取消订阅,值得注意的是不应该循环basic.get来替代basic.consume,应该理性使用basic.consume实现高吞吐量 消息如果到达无人订阅的队...阅读全文

博文 2016-10-11 08:00:18 fyxichen

专业 Golang HTTP 服务器

> 如何使用 Go 启动新的 Web 项目,使用路由,中间件和让我们加密认证。 Golang 有一个很棒的自带 http 服务器软件包,不用说就是: net/http, 它非常简单,但是功能非常强大。 定义处理路由的函数,端口是 80。 ```go package main import ( "io" "net/http" ) func main() { http.HandleFunc("/", helloWorldHandler) http.ListenAndServe(":80", nil) } func helloWorldHandler(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "Hello world!"...阅读全文

博文 2018-05-18 14:38:22 wentingrohwer

如何用Go实现一款类似滴滴优步的网络约车软件(含源码)

导读:我们经常使用打车软件出行,也经常思考其架构设计。本文作者在所在国家也负责开发一款打车软件,并且开源了其中大部分代码,可以帮助我们更好了解网络约车软件的架构体系。本文由高可用架构翻译。各位读者好,本文将给大家分享我们如何通过内存存储实现地图动画车效果。 我们公司也运营了一个类似 Uber 的软件 Namba Taxi,我们需要在客户端主屏幕上显示动画车。 这篇文章是关于功能如何完整实现的文章,主要目的不是介绍 Go 语言。开始这个故事始于2015年,我们的移动开发人员开发一款软件,工作主题是为出租车司机提供打车服务。 在应用程序中,动画汽车看起来像下面的图中动画那样 [1] 。我们的第一个挑战是缺乏地图跟踪数据。我们每 15 秒获取一次位置数据。 我们不能简单减小上报间隔,因为当司机端程...阅读全文

博文 2017-02-28 03:03:03 Andrew Minkin

快讯|阿里云•云市场爆款推荐,千款软件任您选

快讯|阿里云•云市场爆款推荐,千款软件任您选 阿里云•云市场 API服务 • 阿里云•云市场为您提供全面、可靠的一站式API服务,轻松拓展业务功能。 官网地址,1分钱起调起:http://click.aliyun.com/m/27450/ ![11.jpg](http://studygolang.qiniudn.com/170803/fa72dc6f694d42661acbcb2ea560fb8c.jpg) 阿里云•云市场 企业应用市场 • 涵盖了OA,CRM,ERP,人事管理,财务管理等海量面向企业的智能办公应用,供企业挑选 • 提供针对科技创新,新零售,教育,金融,游戏,电商等多领域的办公解决方案 • 阿里云云市场保证,客户不满意100...阅读全文

多云环境应用管理平台OpenPitrix

OpenPitrix 是一个将应用程序打包和部署到诸如 QingCloud,AWS,Kubernetes 等多个云环境中的开放平台. Pixrix [Paitriks] 是指 PaaS 和 IaaS 的矩阵,可以轻松开发,部署,管理各种应用程序,包括各种 PaaS 运行时环境,即 Pitrix = PaaS + IaaS + Matrix。 它也意味着一个包含无尽的矩阵(PI - 希腊字母“π”)应用程序。 设计: 基本思想是解耦应用程序存储库和运行时环境。 应用程序可以运行的运行时环境是通过匹配运行时环境的标签和应用程序所在的存储库的选择器。详情请查看[如何设计项目](https://github.com/openpitrix/openpitrix/blob/master/docs...阅读全文

也谈并发与并行

也谈并发与并行 六 23 bigwhite技术志 Concurrency, Go, Go1.5, Golang, Google, Gopher, goroutine, parallelism, RobPike, 并发, 并行, 线程, 编程语言, 调度 No Comments 在一般人的眼中,“并行”就是并行,即你干你的,我干我的,两个“并行”的执行过程可能是两条毫无瓜葛的平行线,也可能是有交叉,但瞬即分开的两条线。不 过在程序员的世界里,有关“并行”的概念却有两个单词:Concurrency和Parallelism,对应的比较主流的中文翻译为并发 (Concurrency)和并行(Parallelism)。 之前一直使用C、Python进行Coding,对Concrrency和Parall...阅读全文

Go语言简介

简介: Go语言是谷歌推出的一种全新的编程语言。 Go概述 Go语言是谷歌2009年发布的第二款开源编程语言,它专门针对多处理器系统应用程序的编程进行了优化,它是一种系统语言其非常有用和强大,其程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。 Go可以在不损失应用程序性能的情况下降低代码的复杂性。 发表时间: 2009年 类型: 开源编程语言 公司: 谷歌 官网:http://golang.org API文档:https://golang.org/doc/ 教程:http://www.muzhuangnet.com/ma... 下载:https://golang.org/dl/ 技...阅读全文

博文 2020-01-01 21:32:38 木庄

Go语言为什么这么流行?

这个问题很复杂,多方面原因决定了Golang的实用价值。 Go语言的背景 Go的吉祥物Gordon田鼠,是由Google公司创造一种新程序语言,并且公司为这门语言付出了极大的努力。Go语言一出现就获得业界的普遍关注和使用。为什么呢? Go具有一些多数程序语言没有的资产。首先,这是一个Google计划,它有数量庞大的服务器和技术高超的程序设计师为后盾。Google的一个实验产品可能比许多其他公司的实际产品更具商业意义。2007年,Google公司的三位核心人员 Robert Griesemer, Rob Pike, 和 Ken Thompson 设计出了Go语言,其语言定位为系统编程语言。只看Go创始人就理解Google有多么厉害,这三位创始人的简介如下。 Robert Griesemer i...阅读全文

博文 2016-04-29 13:00:01 GreatElite

Gin实践 连载十一 Cron定时任务

Cron定时任务 项目地址:https://github.com/EDDYCJY/go... 如果对你有所帮助,欢迎点个 Star 或赞 ???? 在实际的应用项目中,定时任务的使用是很常见的。你是否有过 Golang 如何做定时任务的疑问,莫非是轮询? 在本文中我们将结合我们的项目讲述 Cron 介绍 我们将使用 cron 这个包,它实现了 cron 规范解析器和任务运行器,简单来讲就是包含了定时任务所需的功能 Cron 表达式格式 字段名 是否必填 允许的值 允许的特殊字符 秒(Seconds) Yes 0-59 * / , - 分(Minutes) Yes 0-59 * / , - 时(Hours) Yes 0-23 * / , - 一个月中的某天(Day of month) Yes ...阅读全文

博文 2018-04-29 17:34:36 煎鱼

golang与C/C++的简单比较

优点: 良好的跨平台,可交叉编译 简单的工程管理,通过文件夹系统管理,没有类似Makefile的工程管理文件 静态编译,没有动态库的依赖,部署方便,编出来只有一个可执行程序 语法简单易学 天生支持并发,goroutine和channel,适合服务器编程 缺点: 损失10%左右的性...阅读全文

博文 2019-10-09 19:32:44 aside section ._1OhGeD

Go 包依赖管理工具 —— govendor

govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具。与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本、以及无相互侵入的开发和管理。 vendor 特性 最开始的时候,Go 并没有提供较为妥当的包管理工具。从 1.5 版本开始提供了 vendor 特性,但需要手动设置环境变量 GO15VENDOREXPERIMENT=1。 在执行 go build 或 go run 命令时,会按照以下顺序去查找包: 当前包下的 vendor 目录 向上级目录查找,直到找到 src 下的 vendor 目录 在 GOROOT 目录下查找 在 GOPATH 下面查找依赖包 在发布 1.6 版本时,该环境变量的值已经默认设...阅读全文

博文 2019-03-26 02:34:43 舆图易稿

GO语言简单工厂模式

简单工厂模式的特点是工厂可以根据条件产生不同功能的类,从而达到提高程序代码的可复用性。 package main import ( "fmt" ) type Operater interface { //运算接口 Operate(int, int) int } type AddOperate struct { //加法运算类,实现了运算接口 } func (this *AddOperate)Operate(rhs int, lhs int) int { return rhs + lhs } type SubOperate struct { //减法运算类,实现了运算接口 } func (this *SubOperate)Operate(rhs int, lhs int) int { retu...阅读全文

博文 2015-09-23 18:00:01 wenjianming

go build 不同系统下的可执行文件

Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。 1、Mac下编译Linux, Windows平台的64位可执行程序: $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go 2、Linux下编译Mac, Windows平台的64位可执行程序: $ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go 3、Windows下编...阅读全文

博文 2018-12-01 18:34:41 tt大眼仔

Golang学习--TOML配置处理

上一篇文章中我们学会了使用包管理工具,这样我们就可以很方便的使用包管理工具来管理我们依赖的包。 配置工具的选择 但我们又遇到了一个问题,一个项目通常是有很多配置的,比如PHP的php.ini文件、Nginx的server.conf文件,那么Golang的项目又适合使用怎样的配置文件呢? 其实现在我们有很多选择,比如 JSON文件、INI文件、YAML文件和TOML文件等等。 其中这些文件,对应的Golang处理库如下: encoding/json -- 标准库中的包,可以处理JSON配置文件,缺点是不能加注释 gcfg -- 处理INI配置文件 toml -- 处理TOML配置文件 viper -- 处理JSON, TOML, YAML, HCL以及Java properties配置文件 其...阅读全文

博文 2017-12-23 18:30:01 CraryPrimitiveMan

go语言自定义包

go语言自定义包 包是函数和数据的集合。用 package 关键字定义一个包。文件名不需要与包名 一致,但是你的文件夹必须要与包名字一致,这个很重要,所以为了简单起见,名字都是一样的。包名的约定是使用小写字符。Go 包可以由多个文件组成,但是使用相同的 package 这一行。让我们在文件 pac.go 中定义一个叫做 pac 的包。 1包的代码: package pac import ( “fmt” ) func Printt(x string) { fmt.Println(x + “爱刘翰林”) } func printtt(x string) { fmt.Println(x + “爱刘翰林”) } 调用包的程序代码 package main import ( “fmt” “pac” )...阅读全文

博文 2015-03-09 18:00:01 guoer9973

Go 程序在 macOS 上的打包功能

这篇文章简单地说明了如何在 macOS 上打包一个 Go 的程序,包括引用或者不引用外部资源。作为一个原生的 Cocoa 程序它是可以下载、安装和运行的。开发过程并不需要 XCode,cgo 或者其他特殊的库文件。 在此文章结尾处,你的 Go 程序将会被打包进一个 `.app` 文件,成为一个拖放安装的只读 DMG 文件。这也适用于其他非 Go 语言的程序。 关于这个端到端的解决方案的主题还有其他很多的指导文章,有的讲的比我想要做的内容多很多,有的又是采用不同的方式,而我想呈现给你的是如何将文件打包的过程。 **要求**:你必须要有一个 macOS。此方法不会在 Windows 或者 Linux 上生效。事实上,它也可能生效,但是你必须要手动或者借助某些疯狂的工具来制作和 macOS 相关的...阅读全文

Golang:Delve版本太低无法Debug

问题描述 最近把Golang升级到了1.14,突然发现Goland编辑器没法Debug调试程序了,会报出如下错误: Version of Go is too old for this version of Delve (minimum supported version 1.13, suppress this error with --check-go-version=false) 解决方法 首先,更新本机的delve组件(直接打开cmd操作,不要在项目内) go get github.com/go-delve/delve/cmd/dlv 如果操作有问题,可以参看作者的文档:https://github.com/derekparker/delve/blob/master/Documentat...阅读全文

博文 2020-04-13 21:32:47 youzhihua

Golang 套件管理工具 Glide

# 原文來自: [Golang 套件管理工具 Glide](https://blog.wu-boy.com/2016/05/package-management-for-golang-glide/) 套件版本管理已經是各大語言不可或缺的工具,像是 [Node.js][1] 有 [npm][2],[PHP][3] 有 [Composer][4],[Ruby][5] 有 [RVM][6] 等...,都已經發展很成熟了,但是在 [Golang][7] 語言呢,在 Go 1.5 以後的版本,可以透過 `GO15VENDOREXPERIMENT` 或 [Glide](https://glide.sh/) 來管理套件版本,在 Go 官方網站也有整理一份 [Wiki](https://github....阅读全文

Golang包管理-vendor

Vendor目录介绍 Golang 官方并没有推荐最佳的包管理方案。到了1.5版本时代,官方引入包管理的设计,加了 vendor 目录来支持本地包管理依赖。官方 wiki 推荐了多种支持这种特性的包管理工具,如:Godep、gv、gvt、glide、govendor等。即使使用vendor,也必须在GOPATH中。 查找依赖包路径的顺序 当前包下的vendor目录。 向上级目录查找,直到找到src下的vendor目录。 在GOPATH下面查找依赖包。 在GOROOT目录下查找 包管理工具govendor 需要把 $GOPATH/bin/ 加到 PATH 中。 安装 go get -u github.com/kardianos/govendor 命令 init 创建 vendor 文件夹和 v...阅读全文

博文 2019-03-08 02:34:39 clawhub

单点登录设计方案

单点登录设计方案 随着业务复杂性的增加,作为一个整体的应用程序会被划分成许多“模块”,这通常需要考虑为这些子应用程序建立一个共同的基础,或者说,一开始就选择SOA的设计方式。不管怎样,我们开始运行多个单独的应用程序,并且需要它们无缝交互时,共同的基础就是必备的。实现单点登录服务便是其中必备功能之一。 授权与认证的概念 很多人容易搞混这两个概念。最典型的就是OAuth。比如我们要建立一个集中式统一认证体系,有人就会跳出来建议使用OAuth。但实际上OAuth是一个授权系统,而不是身份认证系统。 这个很具有迷惑性。比如,你可能想某网站X通过OAuth“验证”你的QQ账户,让你能直接访问该网站。 但你真正做的是允许该网站X使用OAuth provider(服务提供方,比如-腾讯)存储的你的信息。 ...阅读全文

Go调用C/C++

cgo golang是类C的语言 支持调用C接口(不支持调用C++) Go调用C/C++的方式 : C : 直接调用C API C++ : 通过实现一层封装的C接口来调用C++接口 Go集成C/C++的方式 go的源代码中直接声明C代码 比较简单的应用情况 可以直接使用这种方法 C代码直接写在go代码的注释中 注释之后紧跟import "C" 通过C.xx来引用C的结构和函数 package main /* #include #include typedef struct { int id; }ctx; ctx *createCtx(int id) { ctx *obj = (ctx *)malloc(sizeof(ctx)); obj->id = ...阅读全文

博文 2018-11-17 12:34:39 sakura3zz

使用Sidecar搭建异构平台的微服务

本文介绍Sidecar模式的特点,及其应用的场景。熟悉Native Cloud或者微服务的童鞋应该知道,在云环境下,技术栈可以是多种多样的。那么如何能够将这些异构的服务组件串联起来,成为了服务治理的一个重大课题。而Sidecar模式为服务治理,提供了一种解决方案。将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。此模式还可以使应用程序由异构组件和技术组成。这种模式被称为Sidecar,因为它类似于连接到摩托车的边车。在该模式中,边车附加到父应用程序并为应用程序提供支持功能。 sidecar还与父应用程序共享相同的生命周期,与父项一起创建和退役。边车图案有时被称为搭接图案并且是分解图案。问题背景应用程序和服务通常需要相关的功能,例如监控、日志、集中化配置和网络服务等。这些外围任务可以...阅读全文

博文 2019-03-21 19:34:41 JAVA伯乐

令人激动的微服务2.0技术栈

作者|Christian 编辑|禚娴静 当下市场瞬息万变,新技术不断涌现,而微服务持续火热。如果说2014年是微服务的元年,那么2015年和2016年则是微服务走下神坛的时刻,越来越多的开发者、架构师们探讨着如何落地,如何解决各种实际问题,而很多技术栈和工具也纷纷涌现。构建微服务时,我们真的深深进入了分析分布式系统 - 一个已经研究了40年以上的技术主题,复杂的自适应系统理论已经深入人心有很长的时间。从技术的角度来看,我们需要解决的事情如下:部署交付API版本控制合同缩放/自动缩放服务发现负载均衡路由/自适应路由健康检查配置熔断器bulk-headsTTL / deadlining延迟跟踪服务因果跟踪分布式日志度量操作与收集Netflix和一些互联网公司作为早期微服务的采用者在这些领域做了很...阅读全文

博文 2017-03-14 11:05:54 Christian

go语言的php cgi执行程序

/* PHP FactCGI Remote Code Execute Exploit * Date: 2012-09-15 * Author: wofeiwo@80sec.com * Affected: All PHP-FPM exposed outsie, but "system" cmd only affects >=5.3.3 * !!Note: Only for research purpose!! * Usage: * First use nmap. * $nmap -sV -p 9000 --open xxx.xxx.xxx.xxx/24 * Find any open port marked as "tcpwrapped". * $go build fcgi_exp.go * ...阅读全文

博文 2014-10-04 19:26:03 yatere

Golang多平台交叉编译

Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。 Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go Wind...阅读全文

golang gorm中格式化时间的问题

本文原文地址:golang gorm中格式化时间的问题 欢迎到访我的博客。最近在开发项目时遇到了发现一个问题,gorm虽然可以自动帮你维护 created_at、updated_at、deleted_at这些关键时间字段。但是其原理与弊端需要了解一下。1.使用方法通过自定义一个localtime的结构,来控制时间的格式package utils import ( "time" //"strconv" "fmt" "database/sql/driver" "strconv" ) type LocalTime struct { time.Time } func (t LocalTime) MarshalJSON() ([]byte, error) { //格式化秒 seconds := t.U...阅读全文

博文 2019-07-09 16:17:45 yuanshuli11

从Maven,Gradle到Go

为什么要有依赖管理工具? 谈依赖管理之前,我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个“Hello World”,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传过去。依赖管理工具出现之前大多数都是这样搞的。 但如果再复杂些,依赖库本身也有依赖怎么弄呢?将依赖压缩打包,然后放个rea...阅读全文

Golang服务程序daemon化踩坑记录

之前写习惯了C/CPP,都知道可以使用Linux上的daemon函数来方便的实现守护进程。最近切换到go上,想如法炮制,第一个想到的就是基于cgo直接调用,类似如下代码: //#include import "C" func Daemon() { C.daemon(1,0) } 上面代码确实可以成功执行,可问题随之而来。测试的时候,我发现使用了上述代码片段的程序,测试时会随机出现程序无限假死的情况,google的大部分结果都说的是golang的Scheduler和Linux的fork系统调用不兼容所致,各位如有知道个中明细,还望赐教! 没办法,之后基于Stack Overflow热心网友的解答,采用类似下述方法实现daemon化,注意使用相关命令行参数控制调用: func...阅读全文

博文 2018-05-21 01:33:05 WangRichard

Swirl:Docker Swarm 集群管理的新选择

# SWIRL GitHub 地址:[https://github.com/cuigh/swirl](https://github.com/cuigh/swirl) [**Swirl**](https://github.com/cuigh/swirl) 是一个 Docker 管理工具,专注于 Swarm 集群。 ## 主要功能 * Swarm 各组件管理,包括服务、网络、任务等 * 镜像与容器管理 * Compose 管理与部署 * 服务状态监控(基于 Prometheus) * 服务自动伸缩 * 支持 LDAP 认证 * 基于 RBAC 完整的权限控制模型 * 支持横向扩展部署 * 多语言支持 * 更多功能... ## Snapshots ...阅读全文

基于 Docker 的云资源管理与调度平台OpenDCP

OpenDCP是一个基于Docker的云资源管理与调度平台,集镜像仓库、多云支持、服务编排、服务发现等功能与一身,支持服务池的扩缩容,其技术体系源于微博用于支持节假日及热点峰值流量的弹性调度DCP系统。OpenDCP允许利用公有云服务器搭建起适应互联网应用的IT基础设置,并且将运维的工作量降到最低。 特性 基于Docker容器技术进行封装,不要求使用者掌握Docker。 支持阿里云公有云平台,可根据需要随时申请和释放服务器,显著降低运营成本 涵盖虚拟机创建、镜像打包、镜像部署、服务发现各个环节,简单易用,易于组织内推...阅读全文