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

ishell:创建交互式cli应用程序库

ishell是一个用于创建交互式cli应用程序的交互式shell库。 最近在研究supervisor的源码,参考supervisor的架构,做公司的项目。我后面会给出supervisor的开源学习的总结。github上有一个gopher写了一个golang版的supervisor,源码,原理和python版的都类似,但是 ctl是执行命令的方式,不是很优雅。 今天这篇文章介绍一个go的包,实现交互式的CLI工具的包。 常见的cli包有:flag、cli、os...都可以实现 但是上面有一个问题,就是执行完以后,就会给出结果,并退出,不是进入一个shell中,执行所有结果都是不同的。 交互式的cli如下: 今天要介绍的库是 ishell 类似上面的gif图中效果,很容易实现 代码示例 impo...阅读全文

博文 2019-01-30 04:34:45 若与

一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要重启。所以把redis集群的状态检查放到了健康检查中,依赖statefulset的原生能力(pod实例ready后才重启下一个,ready后endpoints controller将pod信息更新到endpoints资源对象中),而没有在redis operator中写逻辑去判断。 需要用redis-cli -h {redis实例IP} ping查看redis是否正常,同时用redis-cli -c -h {redis实例IP} -a {redis密码} cluster inf...阅读全文

博文 2019-10-25 00:04:20 Liabio

手把手教你,COS公链互动操作!

作为领先的内容公链,COS公链的代码全部开源免费。开源地址:https://github.com/coschain/ 看过上一篇文章《0基础,开启COS公链本地化运行》的朋友,相信已经在本地搭建了COS公链。这次,我们开启COS公链互动模式,看看都有哪些好玩儿的互动? 区别于中心化的内容平台,Contentos内容生态里的账户系统分为“本地账户”和“链上账户”两种。 本地账户是一份 keystore 文件,放置在 ~/.coschain文件夹下。一个本地账户存储了一对 contentos 的公私钥,这个keystore 文件可以被 wallet 创建或者导入。 一份本地的 keystore 文件类似如下: { "Name":"testuser", "PubKey":"COS745h9zeER...阅读全文

博文 2019-11-20 17:02:45 内容链Contentos

The New Era of Go Package Management

Liveblog by Alan Shreve (@inconshreveable) Update: Slides for this talk have been posted here. Author Presentation by Sam Boyer @sdboyer. Sam fell into software engineering by accident, but decided to stick around. He loves complex, ecosystem-class problems, cares deeply about building healhty communities, and is always looking for ways to bring te...阅读全文

博文 2017-07-23 03:49:44 Sam Boyer

PHP 协程:Go + Chan + Defer

Swoole4提供了强大的PHP CSP协程编程模式。底层提供了3个关键词,可以方便地实现各类功能。 关键词 go :创建一个协程 chan :创建一个通道 defer :延迟任务,在协程退出时执行,先进后出 这3个功能底层实现全部为内存操作,没有任何IO资源消耗。就像PHP的Array一样是非常廉价的。如果有需要就可以直接使用。这与socket和file操作不同,后者需要向操作系统申请端口和文件描述符,读写可能会产生阻塞的IO等待。 协程并发 使用go函数可以让一个函数并发地去执行。在编程过程中,如果某一段逻辑可以并发执行,就可以将它放置到go协程中执行。 顺序执行 function test1() { sleep(1); echo "b"; } function test2() { sl...阅读全文

博文 2018-12-04 09:35:38 韩天峰

golang

一、go基础 二、go应用 1 初级应用 1.1. 反射reflection 1.2. server服务 1.3. 文件操作 1.4. 终端读取 1.5. json协议 1.6. web模板 1.7. 时间处理 1.8. 锁机制 1.9. 原子操作 1.10. 加密解密 1.11. 日志包 1.12. 随机数验证码 1.13. 编码格式的转换 1.14. 常用算法 1.15. 限流器 2 高级应用 2.1. rpc 2.2. pprof 2.3. goim 2..4. gopush 2.5. cgo 2.6. Golang GC 2.7. 封装websocket 3 第三方应用库 3.1. cli应用 Cobra 3.2. 图标库 3.3. 开源IM 3.4. 机器学习库 3.5. 生成二维...阅读全文

博文 2019-06-13 22:32:41 yongfutian

Swoft 2.0.6 正式版本发布

什么是 Swoft ? Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-FPM。有类似 Go 语言的协程操作方式,有类似 Spring Cloud 框架灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等。 Swoft 通过长达三年的积累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud, 它是 PHP 高性能框架和微服务治理的最佳选择。 Swoft v2.0.6 Swoft 2.0 经过几个版本的打磨和优化,已在大量的生产业务中使用,得到很多用户的肯定和支持。正式版本我们做了许多改进和优化,拥...阅读全文

博文 2019-09-25 09:32:49 stelin

Kubernetes 基于GlusterFS+heketi的高可用动态存储管理StorageClass

说明: Kubernetes中使用GlusterFS作为持久化存储,要提供storageClass使用需要依赖Heketi工具。Heketi是一个具有resetful接口的glusterfs管理程序,作为kubernetes的Storage存储的external provisioner。 “Heketi提供了一个RESTful管理界面,可用于管理GlusterFS卷的生命周期。借助Heketi,像OpenStack Manila,Kubernetes和OpenShift这样的云服务可以动态地配置GlusterFS卷和任何支持的持久性类型。Heketi将自动确定整个集群的brick位置,确保将brick及其副本放置在不同的故障域中。Heketi还支持任意数量的GlusterFS集群,允许云服务...阅读全文

博文 2020-05-15 19:32:46 Felix_Shang

GoLang实现google authenticator的CLI工具

两步认证在很多验证中都要使用。如果在手机客户端上,如果使用电脑,每次都要拿出手机,手动输入。还要担心会过时。效率不是很高。 我现在的处理方式以下方式: MAC上alfred workflow支持 Chrom扩展支持 手机客户端 CLI记录工具 今天主要介绍CLI工具,我现在在golang,找一些练手的项目. 先上代码 package main import ( "fmt" "os" "log" "sort" "github.com/urfave/cli" "gopkg.in/ini.v1" "crypto/hmac" "crypto/sha1" "strings" "encoding/base32" "time" "github.com/atotto/clipboard" "strconv"...阅读全文

博文 2018-08-01 15:34:52 若与

兄弟连区块链入门教程以太坊源码分析geth启动流程分析

兄弟连区块链入门教程以太坊源码分析geth启动流程分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 geth是我们的go-ethereum最主要的一个命令行工具。 也是我们的各种网络的接入点(主网络main-net 测试网络test-net 和私有网络)。支持运行在全节点模式或者轻量级节点模式。 其他程序可以通过它暴露的JSON RPC调用来访问以太坊网络的功能。如果什么命令都不输入直接运行geth。 就会默认启动一个全节点模式的节点。 连接到主网络。 我们看看启动的主要流程是什么,涉及到了那些组件。## 启动的main函数 cmd/geth/main.g...阅读全文

博文 2018-10-23 16:34:49 兄弟连区块链培训

etcd实现服务发现

### 前言 [etcd环境安装与使用](https://bingjian-zhu.github.io/2020/05/09/etcd%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E4%B8%8E%E4%BD%BF%E7%94%A8/)文章中介绍了etcd的安装及`v3 API`使用,本篇将介绍如何使用etcd实现服务发现功能。 ### 服务发现介绍 服务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp 或 tcp 端口,并且通过名字就可以查找和连接。 ![](https://img2020.cnblogs.com/blog/1508611...阅读全文

博文 2020-05-15 15:21:19 939496716

golang练手小项目系列(4)-网络聊天室

问题描述:实现一个网络聊天室服务端。完成之后你将熟悉select、net库、time定时器的用法。要点:用户发来的消息广播给所有接入聊天室的用户。新用户进入的时候能收到聊天室所有其他用户的名字列表。使用netcat工具作为客户端。拓展:当用户不活跃的时间超过指定时间后,断开用户的连接。代码:import ( "bufio" "fmt" "log" "net" "time")type client struct { Out chan<- string Name string}var ( entering = make(chan client) leaving = make(chan client) messages = make(chan string))var timeout = 10 * ...阅读全文

博文 2019-06-29 01:32:42 李说的对

【Redis源码研究】Redis的RESP协议

作者:张仕华 resp协议 redis客户端和服务端交互使用的是redis作者制定的一个协议,叫resp(REdis Serialization Protocol)。 具体分如下几个层次 基于tcp 请求响应模式,但在两种情况下不再是简单的请求和响应模式(下文介绍) 支持五种类型的数据,分别是简单字符串,错误,整型,bulk strings ,数组 客户端发给服务端的命令都会序列化为array,而服务端返回给客户端的可以为如上任意一种类型,各简单举例如下 简单字符串,第一个byte为 '+',例如 "+OKrn" 错误,第一个byte为'-',例如 "-Error messagern" 整型, 第一个byte为':",例如 ":10rn" bulk strings,第一个byte为"&dol...阅读全文

博文 2019-01-31 23:34:42 LNMPR源码研究

Hyperledger Fabric 命令详解之“ generate ”

sudo ./byfn.sh -m generate a@ubuntu:~/hyfa/fabric-samples/first-network$ sudo ./byfn.sh -m generate Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10' seconds and CLI delay of '3' seconds Continue? [Y/n] y proceeding ... /home/a/hyfa/fabric-samples/first-network/../bin/cryptogen > 利用cryptogen tool 生成证书 Generate ...阅读全文

博文 2018-08-06 11:34:50 kakushao

gRPC负载均衡(客户端负载均衡)

### 前言 [上篇](https://bingjian-zhu.github.io/2020/05/14/etcd%E5%AE%9E%E7%8E%B0%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0/)介绍了如何使用`etcd`实现服务发现,本篇将基于etcd的服务发现前提下,介绍如何实现gRPC客户端负载均衡。 ### gRPC负载均衡 gRPC官方文档提供了关于gRPC负载均衡方案[Load Balancing in gRPC](https://github.com/grpc/grpc/blob/master/doc/load-balancing.md),此方案是为gRPC设计的,下面我们对此进行分析。 #### 1、对每次调用进行负载均衡 gRPC中的负载平衡...阅读全文

博文 2020-05-18 20:44:54 939496716

用 golang 实现区块链系列三 | 持久化与命令行

简介 到现在为止,我们已经搞了一个带有工作量证明的区块链,它使得挖矿成为可能。我们的实现已经离一个功能全面的区块链更近了一步,但仍然缺少一些重要的功能。今天我们会开始吧区块链存在一个数据库里,然后做一个简单的命令行接口投操作区块链。本质上,区块链是一个分布式的数据库。我们先省略“分布式”这个部分,集中处理“数据库”这部分。 数据库选择 当前,我们的视线中没有数据库;作为替代,我们每次运行程序会创建区块并存在内存里。我们不能重复使用区块链,我们不能和其他人共享数据,所以我们需要把它存在硬盘上。 我们需要哪种数据库?事实上,一个都不需要。在 比特币论文的原文 中,从来没说过要用哪种依存数据库,所以开发者高兴用哪个就用哪个。 比特币核心,就那个中本聪最初发布的版本,也是目前比特币实现的参考版本,使...阅读全文

博文 2018-11-19 20:34:51 小马哥_Magical

Go 语言 2019 调查报告发布

Go 官方博客昨日公布了[ 2019 年 Go 语言调查报告]。本次调查收到的回复达到 10,975 份,约为去年的两倍。 这些受访者的反馈意见将被选取用于改进 Go 语言的发展。 以下是 2019 年度的调查报告摘要: 此调查中,受访者的受众特征与 Stack Overflow 的受访者相似,因此这些结果在某种程度上可以代表更广泛的 Go 开发人员。 大多数受访者每天都要用到 Go 语言,并且该数字在逐年上升。 Go 的使用仍集中在技术公司,但它同时也被用于越来越多的行业,例如金融和媒体。 Go 最常见的用途仍然是编写 API/RPC 服务和 CLI 工具。 模块在 Go 生态系统中的使用率很高,与此同时,围绕软件包管理的一些问题仍然存在。 有待改进的重点领域包括 debug、模块和云服务...阅读全文

博文 2020-04-27 10:32:58 阿俊

「goz」开源库,在Go中快速发起HTTP请求

goz 是一个用于在Go代码中快速发起HTTP请求的开源库, 部分实现参考了PHP流行请求库: guzzle 安装 go get -u github.com/idoubi/goz 复制代码文档 API 文档地址: godoc.org/github.com/… 基本使用 package main import ( "github.com/idoubi/goz" ) func main() { cli := goz.NewClient() resp, err := cli.Get("http://127.0.0.1:8091/get") if err != nil { log.Fatalln(err) } fmt.Printf("%T", resp) // Output: *goz.Respon...阅读全文

博文 2020-02-16 11:34:16 艾逗笔

golang对etcd存取和数值监测

测试代码如下 package main import ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 2 * time.Second endpoints = []string{"192.168.99.106:2379", "192.168.99.107:2379", "192.168.99.108:2379"} ) func main() { cli, err := clientv3.New(clientv3.Config{ Endpoints: endpoints, DialTim...阅读全文

博文 2019-09-12 17:02:42 麦穗儿

Ponzu: a CMS like Wordpress + dev experience like Rails, for "thick-client" apps and sites. HTTP/2 Server Push, Let's Encrypt certs, automatic JSON API, embedded DB. (Go 1.8+)

<p><a href="https://github.com/ponzu-cms/ponzu">https://github.com/ponzu-cms/ponzu</a></p> <p>With more and more sites / apps built with the &#34;thick-client&#34; mindset (SPAs, React/React Native, etc) I found that I needed something like Wordpress for a great CMS, but for JSON clients, not HTML page...阅读全文

如何在Ubuntu 16.04 LTS中安装Hyperledger Fabric 1.2

注: 这里使用的是全新安装的ubuntu 16.04 LTS 操作系统。 更新package: sudo apt-get update 安装curl和软件包以设置Docker存储库 sudo apt-get install curl apt-transport-https ca-certificates software-properties-common 添加Docker gpg key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 校验gpg key sudo apt-key fingerprint 0EBFCD88 添加Docker 的存储(repository) sudo ad...阅读全文

博文 2019-01-22 20:34:42 SeanC52111

forgetful: Small note/cheat sheet application for your shell. Roast me?

<p>So, there are a couple of these around but had some extra time on my hands so I wrote my own to learn more about go (Im coming from a python-background and haven&#39;t had lots of experience with go). You can check it out here: <a href="https://github.com/gummiboll/forgetful">forgetful</a> and any suggestions are gr...阅读全文

Docker Swarm代码分析笔记(14)——strategy

Docker Swarm manage命令的flStrategy选项用来指定scheduler调度的strategy的过滤项,其变量定义如下(cli/flags.go): flStrategy = cli.StringFlag{ Name: "strategy", Usage: "placement strategy to use [" + strings.Join(strategy.List(), ", ") + "]", Value: strategy.List()[0], } strategy的默认值是SpreadPlacementStrategy。 strategy在代码中的实际定义是PlacementStrategy,一个interface: // PlacementStrateg...阅读全文

博文 2017-06-25 14:02:29 肖楠

Jenkins 喊你参加 Hacktoberfest

本文首发于:Jenkins 中文社区 作者:Zhao Xiaojie Jenkins 喊你参加 Hacktoberfest 第六届黑客十月庆典 hacktoberfest 2019 Hacktoberfest 是一场为期一个月的开源软件庆祝活动,该活动由 DigitalOcean 和 DEV 共同组织。 Hacktoberfest 面向全球社区的每一位贡献者 至少须要向公开的 GitHub 仓库提交四个正式的 Pull Request 你可以在十月一日到三十日之前的任意时间注册 如何开始? 在 https://hacktoberfest.digitalocean.com/ 注册账号,并提交 PR 到 GitHub 的公共仓库。推荐提交高质量的 PR。 而作为 Jenkins 的用户,我们的首...阅读全文

博文 2019-11-01 09:33:42 aside section._1OhGeD

docker笔记(14)——docker swarm功能代码分析(1)

Docker 1.12集成了docker swarm功能,其client的相关代码位于api/client/swarm文件夹下。以docker swarm init命令的代码(api/client/swarm/init.go)为例: const ( generatedSecretEntropyBytes = 16 generatedSecretBase = 36 // floor(log(2^128-1, 36)) + 1 maxGeneratedSecretLength = 25 ) type initOptions struct { swarmOptions listenAddr NodeAddrOption // Not a NodeAddrOption because it has ...阅读全文

博文 2017-06-25 14:08:36 肖楠

chaincode安装失败:Error getting chaincode code chaincode: : failed with error: "exec: not ...

Chaincode安装失败,碰到如下错误: 2018-09-06 10:00:43.959 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc 2018-09-06 10:00:43.959 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc Error: Error getting chaincode code chaincode: : failed with error: "exec: not started" Usage: peer chaincode install [fl...阅读全文

博文 2018-11-06 12:34:40 CodingCode

Golang | 使用 Cobra 构建命令行工具

文章首发于个人公众号:阿拉平平 最近折腾了下命令行库 Cobra,和大家分享下。本文演示环境为 CentOS 7.5,Golang 1.11。 文章目录: Cobra 介绍 1.1 概念 1.2 安装 1.3 初始化 1.4 代码分析 Cobra 实践 2.1 子命令 2.2 子命令嵌套 2.3 参数 2.4 标志 2.5 读取配置 2.6 编译运行 1. Cobra 介绍 Cobra 是一个用来创建命令行的 golang 库,同时也是一个用于生成应用和命令行文件的程序。 1.1 概念 Cobra 结构由三部分组成:命令 (commands)、参数 (arguments)、标志 (flags)。基本模型如下: APPNAME VERB NOUN --ADJECTIVE 或者 APPNAME ...阅读全文

博文 2019-08-19 02:32:45 Xpitz