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

golang-2018优秀开源框架和库

作者:承诺一时的美丽链接:https://www.jianshu.com/u/6719426bf97e來源:简书音频和音乐用于操纵音频的库。flac - Native Go FLAC解码器。flac - Native Go FLAC解码器。gaad - Native Go AAC比特流解析器。go-sox - 用于go的libsox绑定。go_mediainfo - 用于go的libmediainfo绑定。gosamplerate - 用于go的libsamplerate绑定。id3v2 - Go的快速稳定的ID3解析和编写库。malgo - 迷你音频库。minimp3 - 轻量级MP3解码器库。mix - 用于音乐应用的基于序列的Go-native音频混音器。mp3 - Native Go...阅读全文

博文 2019-01-25 15:34:48 西门厌

统计redis中某类key的数量,代替keys指令

redis使用过程中会存在查询某类key的数量问题,较简单的办法为通过redis-cli结合keys进行操作,由于keys的工作机制导致线上一般禁用该指令,以下shell脚本通过scan实现统计功能。#!/bin/bashA=$0B=${A##*/}C=${B%.*}running_file_name=$Crunning_flag="run.$running_file_name"REDIS_CLIENT='redis-cli -h 0.0.0.0 -p 6379 -x'function process { echo $0 index=-1 count=0 step=100000 while ((index!=0)) do if [ $index -le 0 ];then index=0 fi...阅读全文

博文 2018-08-17 10:52:54 hansegod

CLI:使用Go开发命令行应用

文地址 CLI或者“command line interface”是用户在命令行下交互的程序。由于通过将程序编译到一个静态文件中来减少依赖,一次Go特别适合开发CLI程序。如果你编写过安装时需要各种依赖的CLI程序你就知道这个是有多重要了。   在这篇博客中我们将介绍使用Go开发CLI的基本知识。 Arguments    大多数CLI程序都需要输入一些参数。Go 语言将这些参数以字符串slice处理。 var Args []string 查找当前应用的名字。 package main import ( "fmt" "os" ) func main() { // Program Name is always the first (implicit) argument cmd := os.Ar...阅读全文

博文 2016-08-29 12:00:01 hitandrew

etcd 使用小记

咱们这不讲安装, 只讲使用. etcd,consul 都是分布式KV, 一般用于服务发现; 1 注册服务 这里使用 etcd.clientv3搞事情, GoDoc在 这, 以下是伪代码 // key 随你制定, 只要能标识是那个服务器(比如 root/game/node_1)即可. value 可以包含addr, 状态, 优先度等信息 client.OpPut(key,value) 这里的小提示: 最好实现健康检查, 再好的代码也有跑不动的一天, 好像etcd的健康检查只支持ttl(服务向etcd定时重新PUT), 所以记得设置TTL并整一个Tick定时执行以上代码吧. 不过consul支持两种健康检查, 一种是ttl, 一种是consul主动去检查服务状态(详情看最底下 ↓ 的参考), 个...阅读全文

博文 2017-06-07 06:07:03 bysir

golang的cmd包使用例子

使用案例代码: package main import ( "bytes" "fmt" "log" "os/exec" ) func main() { cmd := exec.Command("php", "D:/baiduyun/command/application/cli", "read") var out bytes.Buffer cmd.Stdout = &out err := cmd.Start() if err != nil { log.Fatal(err) } log.Printf("Waiting for command to finish...") fmt.Println(cmd.Args) err = cmd.Wait() if err != nil { log.Pri...阅读全文

博文 2014-10-04 19:27:25 chen yuwen

awesome-go

https://awesome-go.com/ Awesome Go A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python. Contributing Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock! If you see a package or project here that is no longer maintained or is not a good fit, please submit a pu...阅读全文

博文 2016-12-20 13:00:02 andylau00j

go语言开发有哪些工具

Go语言在并发编程方面比绝大多数语言要简洁不少,这一点是其最大亮点之一,也是其在未来进入高并发高性能场景的重要筹码。本篇文章主要是给大家介绍一些go语言开发的开源工具! 1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替代方案。虽然 golint 很受欢迎,但是 revive 提供了更多新功能,值得你去花时间研究,例如,它运行得更快(最高可达6x!),允许使用 TOML 文件配置 linting 规则,并提供更多规则。2、Go Callvis一定要收藏这个可视化工具,你可以使用 Go Callvis 来可视化 Go 程序的调用图。这个开发工具有一个使用HTTP服务器的交...阅读全文

博文 2019-03-28 21:34:40 QFdongdong

golang socket服务器

一、main.go该代码从项目中分离出来,自行修改后再运行) package main import ( "flag" "fmt" "log" "os" "runtime" ) var ( Port = flag.String("i", ":12345", "IP port to listen on") logFileName = flag.String("log", "cServer.log", "Log file name") configFileName = flag.String("configfile", "config.ini", "General configuration file") ) var ( configFile = flag.String("configfile"...阅读全文

博文 2014-10-04 19:27:01 liaojie

Golang 中的微服务-第 4 部分-使用 JWT 做认证

在之前的文章里,我们创建了一个用户服务,保存了一些用户。现在我们看下如何在用户服务中安全的保存用户密码,同时,通过微服务写几个功能,来验证用户,发布安全令牌。 注意,我现在已经把我们的服务拆分到几个不同的仓库里。 我觉得这样部署起来容易些。 最开始我打算做成一个单独的仓库,但是发现用 Go 的 dep 管理有点麻烦,有很多冲突。我也会说明下如何独立地运行和测试微服务。 遗憾的是,用这种方法我们就不能用 docker-compose 了。 不过目前用起来还不错。如果你在这方面有什么建议,可以[给我发邮件](ewan.valentine89@gmail.com)! 现在你要手动启动数据库: ``` $ docker run -d -p 5432:5432 postgres $ docker ru...阅读全文

博文 2018-03-03 20:17:08 ArisAries

游戏分布式服务器pitaya

Pitaya是一款易于使用,快速且轻量级的分布式游戏服务器框架 Pitaya is an simple, fast and lightweight game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. It provides a basic development framework for distributed multiplayer games and server-side applications. Getting Started Prerequisites Go >= 1.10 e...阅读全文

开源项目 2019-01-31 10:14:52 topfreegames

golang访问数据库

https://code.google.com/p/go-wiki/wiki/Projects#Databases_and_StorageMysql:github.com/ziutek/mymysql/godrv[*] Mysql:github.com/Go-SQL-Driver/MySQL[*] PostgreSQL:github.com/bmizerany/pq[*] SQLite:github.com/mattn/go-sqlite3[*] DB2: bitbucket.org/phiggins/go-db2-cli MS ADODB: github.com/mattn/go-adodb[*] ODBC: bitbucket.org/miquella/mgodbc[*] Oracle:...阅读全文

博文 2014-10-04 19:26:09 bigmouthz

Windows下Node.js多版本管理器

由于开发的要求,需要在本地配置不同的node.exe,而开发环境是Win,所以无法使用nvm,而nvmw又不是特别好使,因此索性自己写了一个。 使用GO编写,代码已经放在[github](https://github.com/kenshin/gnvm),不过没什么特别的地方,就是一个自动化的CLI工具,节省了手动下载/配置的麻烦。 文档(详细介绍) -------- https://github.com/kenshin/gnvm 下载 -------- * [32-bit](https://app.box.com/gnvm/1/2014967291) | [64-bit](https://app.box.com/gnvm/1/2014967689) **常用地址...阅读全文

部署devstack

新公司是一家数据与基础设施提供商(to B)。初来乍到,和这里的同事了解了一些云计算平台和大数据平台的技术栈。对于“新鲜”(only to me)的技术栈,自己总有一种折腾的冲动,于是就有了这一篇备忘性质的文章,记录一下自己部署devstack的步骤、遇到的问题和解决方法。 和诸多国内提供公有云的厂商一样,公司的云产品也是基于成熟的OpenStack云计算平台框架和组件搭建的,并做了一些定制。长久以来,我一直以为OpenStack等都是Java技术栈的,对Java技术栈出品的东西总有一种莫名的恐惧感,现在我才发现原来OpenStack是Python系(那个汗汗汗啊)。而OpenStack的另外一个竞争对手:CloudStack才是正经八百的Java系。 OpenStack是一堆云计算平台组件...阅读全文

博文 2016-05-28 08:37:43 bigwhite

使用gofmt格式化代码

对于一门编程语言来说,代码格式化是最容易引起争议的一个问题,不同的开发者可能会有不同的编码风格和习惯,但是如果所有开发者都能使用同一种格式来编写代码,开发者就可以将宝贵的时间专注在语言要解决的问题上。 gofmt介绍 Golang的开发团队制定了统一的官方代码风格,并且推出了gofmt工具(gofmt或go fmt)来帮助开发者格式化他们的代码到统一的风格。gofmt是一个cli程序,会优先读取标准输入,如果传入了文件路径的话,会格式化这个文件,如果传入一个目录,会格式化目录中所有.go文件,如果不传参数,会格式化当前目录下的所有.go文件。 gofmt默认不对代码进行简化,使用-s参数可以开启简化代码功能,具体来说会进行如下的转换: 去除数组、切片、Map初始化时不必要的类型声明: 如下形...阅读全文

博文 2018-07-17 13:34:43 simpleapples

WebRTC服务器搭建

前言 最近研究了几天 appr.tc 服务器的搭建,主要目的是想在本地搭建一套 webrtc 服务器环境,可以做一些webrtc相关的实验。 经过几天的折腾,得到以下几点结论: 一、最新的 appr.tc服务器是不能使用 非 https服务的。主要有两种原因:1. chrome浏览器不支持在非https方式下打开音/视频设备。2. appr.tc中的信令服务器(collider)不支持非 https 服务。 二、appr.tc服务器的搭建仅支持浏览器之间互通,移动端与浏览器之间是无法互通的,主要是ssl 证书问题。如果那位对 ssl证书比较熟悉的话,可以与我联系,咱们一起再重新做个实验。 下面我就来描述一下如何搭建 appr.tc 服务。 几个重要的库 在具体介绍 appr.tc服务如何搭建...阅读全文

博文 2018-09-12 19:34:39 音视频直播技术专家

Golang 微服务教程(二)

译文链接:wuYin/blog原文链接:ewanvalentine.io,翻译已获作者 Ewan Valentine 授权。 本节未细致介绍 Docker,更多可参考:《第一本Docker书 修订版》 前言 在上一篇中,我们使用 gRPC 初步实现了我们的微服务,本节将 Docker 化该微服务并引入 go-micro 框架代替 gRPC 简化服务的实现。 Docker 背景 占据着云计算的优势,微服务架构越来越流行,同时它的云端分布式的运行环境也对我们的开发、测试和部署提出了很高的要求,容器(container)便是一项解决方案。 在传统软件开发中,应用直接部署在环境和依赖都准备好的系统上,或在一台物理服务器上部署在由 Chef 或 Puppet 管理的虚拟集群里。这种部署方案不利于横向扩...阅读全文

博文 2018-06-01 17:34:37 wuYin

统一配置管理工具confd

confd Github: https://github.com/sumory/confdconfd是一个统一配置管理工具,目前仍在开发中,基于本地文件存储的部署方式已经可以用于生产环境中。 你可以用它: 统一管理各种配置文件,配置文件模板和数据是分离的,可各自单独管理 动态修改配置属性,然后重新生成相关的配置文件 提供cli方式修改数据 Features [x] 基础解析:配置文件使用toml格式,模板数据分离 [x] 多种存储支持:local file、redis、zookeeper [x] 两种运行模式:Debug或Daemon [x] cli工具:修改store,批量更新配置 [ ] 更友好的交互方式,比如通过web界面 [ ] 分离server和client,提供客户端cli或AP...阅读全文

博文 2017-02-09 08:08:04 sumory

HTTP接口 Micro_SideCar

# Micro SideCar SideCar 提供了一个 集成应用程序到微型 生态系统 的HTTP接口 。 它类似于 Netflix 称为Prana 的SideCar。 ** 特性 ** * 登记 发现系统 * 主机 的 其他 服务发现 * 健康检查服务 * HTTP API 和负载平衡 要求 * 通过 PubSub的 的WebSockets ** 入门 ** **安装**

go get github.com/micro/micro
**运行** ...阅读全文

使用 ReJSON 在 Redis 中保存 Go 结构体

![image](https://raw.githubusercontent.com/studygolang/gctt-images/master/rejson/1_w3hPEpsPFtHs36dJMUdl7w.jpeg) > 图像授权 https://Redislabs.com/blog/Redis-go-designed-improve-performance/ 大部分人可能对 Redis 都很熟悉了。对于外行人来说,Redis 是最广为人知并广泛应用的数据库/缓存产品,起码也是之一。 官方文档是这么描述 Redis 的: > Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持的数据结构有字符串(strings),散列(has...阅读全文

博文 2018-06-21 17:40:11 MoodWu

cli - 构建强大命令行程序的工具箱 (1)

cli 简介 ======== `cli` 是一个简单易用的命令行程序开发工具。和标准库的flag相比,`cli` 提供了更加优雅的参数定义方式。`cli` 将参数定义放在一个结构体,每个字段代表一个flag,每个flag通过golang的tag来描述。支持的tag包括: * cli - flag名 * usage - flag的使用说明 * dft - flag的默认值 * name - flag的引用显示名 举个栗子: ![cli-1.PNG](http://studygolang.qiniudn.com/160313/9549f7dc11f8bac98632...阅读全文

centos下安装UPX+压缩golang可执行程序

centos安装upx wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/ucl-1.03-2.el7.rf.x86_64.rpm rpm -Uvh ucl-1.03-2.el7.rf.x86_64.rpm yum install ucl wget -c http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el7/en/x86_64/rpmforge/RPMS/upx-3.91-1.el7.rf.x86_64.rpm rpm -Uvh upx-3.91-1.el7.rf.x86_64.rpm yum install upx #upx压缩...阅读全文

博文 2017-08-25 09:03:27 雨花

简单客户端服务器模型(C++、python和go语言示例)

工作中用到了C/S模型,所做的也无非是给服务器发数据,但开发阶段会遇到程序自身的回环测试,需要用到简单的服务端以便验证数据发送的正确性。 写软件用C++,跑测试用python,这段时间也刚好看go语言,所以都要有demo。以下三组程序实现的功能相同,这里一起做下总结。 一、C++实现 Boost.Asio是一个跨平台的C++库,它用现代C++方法为网络和底层I/O程序提供了一致的异步I/O模型。 为了跨平台,我用boost库实现,具体如下。 服务端代码: 1 /* 2 File : svr.cpp 3 Author : Mike 4 E-Mail : Mike_Zhang@live.com 5 */ 6 7 #include 8 #include 阅读全文

博文 2014-10-04 19:26:40 MikeZhang

Docker源码分析(二):Docker Client创建与命令执行

【编者按】在《深入浅出Docker》系列文章的基础上,InfoQ推出了《Docker源码分析》系列文章。《深入浅出Docker》系列文章更多的是从使用角度出发,帮助读者了解Docker的来龙去脉,而《Docker源码分析》系列文章通过分析解读Docker源码,来让读者了解Docker的内部实现,以更好的使用Docker。总之,我们的目标是促进Docker在国内的发展以及传播。另外,欢迎加入InfoQ Docker技术交流群,QQ群号:272489193。 1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖、便捷的软件集成测试与部署之道。在团队开发软件时,Docker可以提供可复用的运行环境、灵活的资源配置、便捷的集成测试方法以及一键式的部署方式。...阅读全文

博文 2015-03-29 19:59:55 孙宏亮

将 Node.js 换成 Go

In looking back on the past year, the biggest difference we made in our tech stack was moving from Node.js to Go. Our co-founder, Steve Kaliski, made the switch from Node.js to Go at Poptip, but he didn’t learn his lesson there. After building the first iteration of Bowery in Node.js, we made the switch to Go in February 2014 and it’s helped us spe...阅读全文

博文 2015-01-30 08:00:00 水母干, lj_april

存储组织协调引擎 REX-Ray

REX-Ray 是一个 EMC {code} 团队领导的开源项目,为 Docker、Mesos 及其他容器运行环境提供持续的存储访问。其设计旨在囊括通用存储、虚拟化和云平台,提供高级的存储功能。 当前支持的系统: * Ubuntu * Debian * RedHat * CentOS * CoreOS * OSX 运行时 CLI:

$ export REXRAY_STORAGEDRIVERS=ec2
$ export AWS_ACCESSKEY=access_key
$ export AWS_SECRETKEY=secret_key
$ rexray vol...阅读全文

Deis logo 开源PaaS系统 Deis

Deis 是一个 Django/Celery API 服务器、Python CLI 和一组 Chef cookbooks 合并起来提供一个类似 Heroku 的应用平台,用于公有云和私有云。Deis 的口号是:Your PaaS. Your Rules. Deis 是一个开源的 PaaS 系统,简化和 LXC 容器和 Chef 节点的发布和伸缩。可用于托管应用、数据库、中间件和其他服务。Deis 利用 Chef、Docker 和 Heroku Buildpacks 来提供的私有 PaaS 是非常轻量级和灵活的。 Deis 提供开箱即用的 Ruby, Python, Node.js, Java, Clojure, Scala, Play, PHP, Perl, Dart 和 Go 语言的支持。...阅读全文

博文 2014-10-04 19:26:50 shihao

命令行程序示例集

[**CLI**](https://github.com/mkideal/cli)是一个非常小巧,便于使用且功能丰富的用于构建命令行程序的库。为了让大家更加容易上手,特此撰写了二十几个程序示例。每个示例都非常简单,通常只用来阐明一个特性的使用方法。 * [Example 1: Hello world](http://www.mkideal.com/golang/cli-examples.html#example-1-hello) * [Example 2: How to use **flag**](http://www.mkideal.com/golang/cli-examples.html#example-2-flag) * [Example 3: How to use **requ...阅读全文

cli - 构建强大命令行程序的工具箱 (4)

获取 cli ======== cli 开源在 [github](https://github.com/mkideal/cli) 上,欢迎大家前去 star :-) 使用go get获取 ```shell go get github.com/mkideal/cli ``` [上一篇](http://studygolang.com/topics/1520)介绍了`Command`和`Context`对象,以及构建多层子命令的方法.本片将介绍一个构建http服务的栗子。本篇示例代码由 [**goplus**](https://github.com/mkideal/goplus) 生成 ```shell goplus new -t http httpd ``` ...阅读全文

cli - 构建强大命令行程序的工具箱 (3)

获取 cli ======== cli 开源在 [github](https://github.com/mkideal/cli) 上,欢迎大家前去 star :-) 使用go get获取 ```shell go get github.com/mkideal/cli ``` [上一篇](http://studygolang.com/topics/1504)以一个示例讲解了`cli`库的`Command`对象和`Context`对象。本篇将以实例分析讲解`cli`构建复杂多命令的应用程序。 本实例代码使用[goplus](https://github.com/mkideal/goplus)生成 ```shell goplus new -t tree tree `...阅读全文

地理定位数据存储 tile38

Tile38是一个开源(MIT许可),内存地理定位数据存储,空间索引,实时地理围栏的软件。它支持各种对象类型比如纬度/经度,边镜框,XYZ tiles, Geohashes和GeoJSON。 特性: * Spatial index with [search](https://github.com/tidwall/tile38#searching) methods such as Nearby, Within, and Intersects. * Realtime [geofencing](https://github.com/tidwall/tile38#geofencing). * Variety of client protocols, including [http](ht...阅读全文

开源项目 2016-03-06 16:00:00 tidwall

本地开发工具Nanobox

Nanobox 是本地开发工具,可以消除环境的复杂性,在部署和生产环境之间,进行自动化环境配置,通过虚拟化使得开发环境更简洁。 Nanobox 在轻量级 VM 中启动应用,使得本地保持与生产环境一样的配置。 主要特性: 应用源代码:专注于编码,而不需要过多关注配置一个本地开发环境。 语言引擎:此引擎可以检测你的应用类型和指定应用需要的服务,还有如何配置。 Docker 容器:配置好和安装好的容器。 Vagrant / Virtual Box:服务在统一的轻量级 Linux 虚拟机 (30mb RAM) 中运行。 Nanobox 检测你的应用类型,自动配置环境,安装应用所需的所有应用和服务: 使用 Usage: nanobox [flags] nanobox [comm...阅读全文

开源项目 2015-11-20 00:00:01 nanobox-io

基于 go 语言的数据库操作工具集Gendry

Gendry是一个用于辅助操作数据库的Go包。基于`go-sql-driver/mysql`,它提供了一系列的方法来为你调用标准库`database/sql`中的方法准备参数。 **Gendery**主要分为3个独立的部分,你可以单独使用任何一个部分: [manager](https://github.com/didi/gendry/blob/master/translation/zhcn/README.md#manager) [builder](https://github.com/didi/gendry/blob/master/translation/zhcn/README.md#builder) [scanner](https://github.com/didi/gendry/...阅读全文

开源项目 2018-04-19 12:30:01 网友

cli - 构建强大命令行程序的工具箱 (2)

获取 cli ======== cli 开源在 [github](https://github.com/mkideal/cli) 上,欢迎大家前去 star :-) 使用go get获取 ```shell go get github.com/mkideal/cli ``` [上一篇](http://studygolang.com/topics/1498)介绍了`cli` 是什么以及最简单的使用方法。本篇将开始一实例分析讲解`cli`的其他特性。 实例代码 ======= ```go 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/mkideal/...阅读全文

用 Golang 处理数据库迁移

最近在 `r/reddit` 中不断出现 ***我如何使用 Go 来完成数据库迁移?*** 对于我和大多数人这种从其他语言例如 PHP 或是 Ruby 转到 Go 的人来说,数据库迁移在这些语言上已经不是什么问题了。例如 Ruby 的 Rails 和 PHP 的 Laravel。但我如何在 Go 中复制这种功能呢?同时考虑到框架是 Go 中的反模式这一事实。 举个例子,在在 Rails 和 Laravel 中可以非常轻松的使用 `bin/rails db:migrate` 或者 `php artisan migrate` 命令作为部署流水线的一个步骤来运行。但是同样的功能如何在 Go 应用中实现呢? 已经有许多的库被创建来解决 Go 的这一问题 , 但是目前来说 [migrate libra...阅读全文

博文 2019-01-27 10:53:37 polaris

Go命令行应用gcli

Golang下的简洁易用的命令行应用,工具库。包含运行命令,颜色风格,数据展示,进度显示,交互方法等 ## 功能特色 - 使用简单方便,轻量级,无额外依赖 - 支持添加多个命令,并且支持给命令添加别名 - 输入的命令错误时,将会提示相似命令(包含别名提示) - 快速方便的添加选项绑定 `--long`,支持添加短选项 `-s` - 支持绑定参数到指定名称, 支持必须`required`,可选,数组`isArray` 三种设定 - 运行命令时将会自动检测,并按对应关系收集参数 - 支持丰富的颜色渲染输出, 由[gookit/color](https://github.com/gookit/color)提供 - 同时支持html标签式的颜色渲染,兼容Window...阅读全文

开源项目 2019-03-12 12:24:00 inhere

Go 网络编程示例

示例:并发时钟服务器 本节介绍 net 包,它提供构建客户端和服务器程序的组件,这些程序通过 TCP、UDP 或者 UNIX 套接字进行通信。网络服务 net/http 包是在 net 包的基础上构建的。 时钟服务器 这个示例是一个时钟服务器,它以每秒一次的频率向客户端发送当前时间: package main import ( "io" "log" "net" "time" ) func main() { listener, err := net.Listen("tcp", "localhost:8000") if err != nil { log.Fatal(err) } for { conn, err := listener.Accept() if err != nil { log.Pr...阅读全文

博文 2019-05-12 23:35:18 骑士救兵