自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 MongoDB的skip,limit和sort的执行顺序

首先在数据库里面添加了10条如下结构的测试数据,其中age字段的值从0依次递增。 当同时使用skip和limit的时候 从上面两幅图中可以看到,同时使用skip和limit的时候,不管如何调用,默认都是先进行skip操作,然后再limit。 当skip,limit和sort同时存在的时候 ...

2019-11-20 19:58:16 205 0

原创 校正alpine镜像的时区

你可以进入到以alpine为基础镜像制作的镜像中,然后使用date -R命令可以查看当前镜像中的时间。 # data -R Fri, 15 Nov 2019 09:03:55 +0000 由于alpine默认的时间为UTC时间(Universal Time Coordinated),这个时间比北...

2019-11-15 19:25:08 417 0

原创 git删除远程仓库的某个标签或分支

例如你远程仓库有标签v1.0,你现在想在本地删除它,怎么做呢?很简单,只需要下面两个命令: git tag -d v1.0 git push origin :refs/tags/v1.0 这两条命令分别的作用是:先在本地删除想删除的标签,然后再将其推送到关联的远程仓库。 Git相关原理——Ref...

2019-10-27 00:27:06 450 0

原创 Go Modules详解

modules是Go 1.11版本提出的一个依赖包管理系统。 自己如何创建module 之前在Go1.1.1新功能module的介绍及使用文中中介绍了module功能,以及如何使用别人已经制作好的module。这一节我们来看看如何自己创建module来让别人使用。 首先创建一个包,命名为tes...

2019-09-26 14:53:42 421 0

原创 Go 1.13版本介绍

在Go1.12版本发布了六个月之后,Go最新的版本1.13这个月发布了。相对于之前的版本,这个版本的变化主要体现在:工具链、运行时和标准库。维持Go第一版时的兼容承诺,所以这次发布更新不会影响到之前版本的使用。下面就捡一些常用内容的变化做简单介绍,如果想了解更详细的内容,请访问golang官网。 ...

2019-09-05 10:47:10 1442 0

原创 使用go-swagger为Go工程生成自动化接口文档

文章主要介绍一些常用语法、属性及其示例,如果需要了解详细的goswagger介绍,可以访问官方文档。你可以通过在代码中增加注释,来自动生成接口文档。文档的格式支持两种:一种是json,另外一种是yaml。要想通过代码注释生成接口文档,那么你的Go工程必须放在$GOPATH/src目录下。 使用sw...

2019-09-04 14:37:27 2980 1

原创 beego实现API自动化文档

beego的API自动化文档其实质就是使用swagger,但是功能还不是很完善。在使用时还有很多写法限制,否则自动化文档不会解析。例如:在配置接口路由必须按下面的写法。 // @APIVersion 1.0.0 // @Title beego Test API // @Description be...

2019-09-03 14:48:34 559 1

原创 Go结构体标签用法

结构体标签根据传统,它是由空格分隔的键值对,每个key不能是空的字符串。由于包含的是键值对,所以一般字符串是以语义字符串的形式出现。例如: package main import ( "fmt" "reflect" ) func main...

2019-09-02 17:16:02 547 0

原创 go实现文件的创建、编译及运行

之前在go实现文件的创建、删除和读取中介绍了Go包提供的操作文件的一些函数,现在用一个例子来完整介绍。 下面会从文件夹的创建、文件的创建、文件内容的写入、编译以及删除等操作。 package main import ( "fmt" "io/ioutil"...

2019-08-28 18:11:18 581 0

原创 Go分布式集群中生成全局唯一ID

使用UUID UUID是通用唯一识别码(Universally Unique Identifier)的缩写,其目的是让分布式系统中的所有元素,都能有唯一的辨识信息。UUID是由一组32位数的16进制数字构成,所以UUID理论上总数为16^32=2^128。 UUID有五个版本: 版本1:基于时间...

2019-08-22 18:11:44 637 0

原创 golang使用os\exec执行高级命令

下面的例子都是使用Go来执行ls -lah命令。首先来看最简单的 func main() { cmd := exec.Command("ls", "-lah") if runtime.GOOS == "windows" {...

2019-08-21 11:41:36 1449 0

翻译 webpack开发

当webpack打包源代码后,可能很难追踪错误和警告。例如三个源文件a.js,b.js和c.js打包到一个bundle(bundle.js)中,而其中一个源文件包含错误,那么错误只会简单指向到bundle.js。这对于分析原因没有太大帮助。 以上节的src/print.js文件为例,如果将代码改成...

2019-07-19 17:34:44 69 0

原创 webpack管理资源

上一节webpack入门中只是打包了JavaScript,这一节看webpack如何引入其他类型的文件。 加载css文件 首先从css文件开始,为了从JavaScript模块中import一个css文件,需要在module配置中安装并添加style-loader和css-loader: npm i...

2019-07-19 11:24:31 96 0

原创 TypeError: CleanWebpackPlugin is not a constructor

引起错误的代码 const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = { entry :...

2019-07-19 11:09:19 1232 0

翻译 webpack入门

webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当webpack处理应用程序时,它会递归的构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。 未使用webpack管理项目 首先创建一个目录,初始...

2019-07-17 13:59:30 138 0

原创 Missing type in composite literal

首先来看一个示例,它在idea中会直接提示错误。 package main import ( "fmt" ) type Person struct { Name string Age int Favourite []string } func...

2019-07-09 09:39:01 2268 0

原创 micro入门指南——核心功能介绍

Micro是一套微服务构建工具库。对于微服务架构的应用,Micro提供平台层面、高度弹性的工具组件,让服务开发者们可以把复杂的分布式系统以简单的方式构建起来,并且尽可能让开发者使用最少的时间完成基础架构的构建。 Go-micro是独立的RPC框架,它是micro工具集的核心。下面通过常用方法看下其...

2019-06-27 19:12:57 1957 0

原创 Kubernetes入门指南——环境配置

配置开发环境 安装Go,Kubernetes对Go的版本有要求,需要是go1.12.1或之后的版本。安装步骤查看Linux下go的安装及版本升级。 安装etcd,安装步骤查看Etcd入门指南——安装。 安装docker,可以查看CentOS下Docker的安装教程。 下载Kubernetes代码...

2019-06-19 18:41:28 456 0

原创 Etcd入门指南——安装

Etcd是CoreOS基于Raft开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障。如果你需要一个分布式存储仓库来存储配置信息,并且希望这个仓库读写速度快,支持高可用,部署简单,支持http接口,那么就可以使用etcd。通过play.etcd.io/play,你可以了解e...

2019-06-19 16:35:14 1445 0

原创 Micro API使用

微服务架构是把应用解耦成逻辑上的相对隔离的服务,API网关则是提供单一的入口把服务的API统一起来。通过服务发现,Micro API以http方式,将请求动态路由到具体的后台服务接口。 Micro API是基于go-micro开发,所以它天然具备服务发现、负载均衡、编码及RPC通信的能力。因此,...

2019-06-17 18:51:17 2563 2

原创 go get命令

go get 下载导入路径指定的包及其依赖项,然后安装命名包,即执行go install命令。 用法:go get [-d] [-f] [-t] [-u] [-fix] [-insecure] [build flags] [packages] 标记名称 描述 -d 让命令程序只执行...

2019-06-14 11:07:03 6822 0

原创 Go外部依赖包从vendor、$GOPATH和$GOPATH/pkg/mod下的查找顺序

vendor vendor概念最早是由Keith提出,用来存放依赖包。在版本1.5出现。 例子 gb项目提供了一个名为gsftp的示例项目,它有一个gsftp程序,在标准库之外有三个依赖项。golang.org/x/crypto/ssh, golang.org/x/crypto/ssh/agent...

2019-06-11 18:50:10 5178 0

原创 git删除远程仓库的.idea文件

操作目的: 删除远程仓库的.idea文件,但本地的文件保留。每次提交,不需要push此文件。 要实现上面的目标很简单,只需几个命令就行。不过为了清楚命令的具体作用,还是从下面的几个概念了解开始。 上图中的专用名词含义为: workspace:工作区,idea里写的代码,保存了就在workspa...

2019-06-04 19:34:17 3246 2

翻译 RabbitMQ学习(一)

RabbitMQ是一个消息代理:它接收和转发消息。你可以把它看作邮局,当你把要发送的邮件放在邮箱中,你可以确定最终会将邮件发送到你的收件人手中。下面先了解下RabbitMQ中的一些术语。 producer:生产者,发送消息的程序是生产者。 queue:队列,就像上面例子中的邮箱。虽然消息经过Ra...

2019-05-28 17:44:42 294 0

原创 golang rpc包使用介绍

rpc包提供通过网络或其他I/0连接的对象的导出方法的访问。服务器注册一个对象,使其作为具有对象类型名称的可见服务。注册后,可以远程访问对象的导出方法。服务器可以注册不同类型的多个对象服务,但是注册相同类型的多个对象是错误的。而且对象上的方法只有满足下面的条件时,远程调用才能可用,否则方法会被忽略...

2019-05-20 17:59:58 211 0

原创 Remote Procedure Calls(RPC)

什么是RPC RPC是进程间通信(IPC)的一种形式,它基于本地程序调用的扩展概念,调用程序和被调用的程序不需要存在于相同的地址空间中。因为不同的进程具有不同的地址空间。如果在同一主机上,即使物理地址空间相同,他们具有不同的虚拟地址空间。而如果他们在不同的主机上,则物理地址空间不同。 远程过程调用...

2019-05-17 15:20:45 102 0

原创 Golang比较两个字符串切片是否相等

方法 DeepEqual方法 官方的reflect包中有个DeepEqual方法,可以用来判断任意x和y是否相等。相同类型的两个值可能相等,不同类型的值永远不会相等。 func ReflectSlice(a, b []string) bool { return reflect.DeepEqual...

2019-05-16 14:40:38 4364 0

原创 微信invalid credential, access_token is invalid or not latest hint

微信access_token分为两种,一种是网页授权access_token,一种是全局接口调用凭证。有关这两个区别,可以查看微信网页授权access_token和普通access_token区别。今天主要来说获取全局接口调用凭证access_token的坑,下面是官方文档的一些内容,其中非常重要...

2019-05-16 13:06:11 17982 0

原创 Golang单元测试

Go的testing包为自动测试提供支持,它与go test命令一起使用。测试文件和测试函数需要满足下面的条件: 测试代码必须保存在*_test.go文件 测试函数命名符合TestName格式,Name以大写字母开头 测试文件和被测试文件位于同一包中 在feibo.go文件中定义了一个生成斐波...

2019-05-13 17:33:13 255 0

原创 docker批量删除镜像

docker使用一段时间后,可能会存在许多无用的镜像。一个个删除比较麻烦,可以用下面的命令进行批量删除。 $ docker rmi $(docker images | grep "none" | awk '{print $3}') docker image...

2019-05-10 17:58:46 1118 0

原创 Windows下MySQL安装

1、去官网下载压缩包,将安装包解压后,假设解压到D:\mysql\mysql-8.0.16-winx64目录。然后在该文件下创建my.ini配置文件。编辑my.ini配置的基本信息。 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [m...

2019-05-10 17:16:28 165 0

原创 golang获取命令行参数

os库 package main import ( "fmt" "os" ) func main() { fmt.Println("os.Args") } os可以通过变量Args来获取命令参数,os.Args返回一个字符串数...

2019-05-10 10:39:18 2679 0

原创 Swagger Editor教程

Swagger是一个简单但功能强大的API表达工具,是目前现有的最大API工具生态系统。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。 安装 Windows上的安装 1、首先需要安装node和npm。你可以在cmd命令行看到你的安装信息。使用命令...

2019-05-09 19:23:27 6910 0

原创 代码行数统计

使用gocloc工具进行统计 先介绍一款工具,gocloc。它是用Go语言写的一个快速的代码行数统计工具。使用方式很简单,首先通过命令安装gocloc。$ go get -u github.com/hhatto/gocloc/cmd/gocloc,接着使用命令$ gocloc [目录路径或文件路径...

2019-05-05 19:00:00 1456 0

原创 go-micro中使用consul

上节我们在启动go-micro服务时,可以看到使用的服务注册是mdns。这节来了解下如何使用consul。默认的服务发现是在同一台机器上,在生产环境下,服务与服务发现部署到同一机器,这不是个很好的实践。所以把consul机器独立出来就很有必要。 下面以Go Micro框架文章中的服务为例,编写一个...

2019-04-30 15:26:25 6227 4

原创 Consul的使用

上一节是有关consul的安装,这节主要看Consul的使用。必须运行代理,代理可以在服务器或客户端模式下运行。每个数据中心必须至少有一台服务器,但建议使用3或5台服务器。由于在故障情况下数据丢失是不可避免的,因此非常不鼓励进行单个服务器部署。 所有其他代理都以客户端模式运行,客户端是一个非常轻量...

2019-04-30 09:57:08 233 0

原创 Go Micro框架

Go Micro是一个微服务开发框架。Go Micro提供了分布式系统开发的核心要求,包括RPC和事件驱动的通信。 特点 自动服务注册与名称解析:服务发现是微服务开发中的核心,用于解析服务名与地址。consul是Go Micro默认的服务发现注册中心。发现系统可插拔,其他插件像etcd,kube...

2019-04-29 15:42:45 1055 0

原创 Go静态代码检查工具GolangCI-Lint

GolangCI-Lint是一个lint聚合器,它的速度很快,平均速度是gometalinter的5倍。它易于集成和使用,具有良好的输出并且具有最小数量的误报。而且它还支持go modules。最重要的是免费开源。 下面公司或者产品都使用了golangci-lint,例如:Google、Face...

2019-04-28 18:00:50 16158 2

原创 gRPC使用简介

概览 gRPC是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。在gRPC里,客户端应用程序可以像调用本地对象一样直接调用另一台不同机器上,服务端应用的方法,使得你能够更容易的创建分布式应用和服务。与许多RPC系统类似,gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(...

2019-04-26 10:56:48 233 0

原创 执行go run出现.\main.go:6:10: undefined: Test

复现问题 首先来看问题是怎么出现的。在gotest目录下,有testundefined.go和main.go文件。其中main.go文件引用了testundefined.go中的结构体Test。编写没有语法错误,但是在运行go run命令时,却报错: # command-line-argument...

2019-04-23 19:31:04 3071 0

提示
确定要删除当前文章?
取消 删除