自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 收藏
  • 关注

原创 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

git pull代码出现下面提示@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someo

2021-04-15 16:43:50 155

原创 MySQL IP地址存储和转换

存储保存IP地址到数据库,建议使用整型,首先可以节省存储空间。例如保存IP地址:255.255.255.255,如果使用字符串形式的IP,那么需要VARCHAR(15)来存放。而使用整型的话,用二进制是11111111111111111111111111111111,只需要四个字节,转化成十进制后是4294967295。其次,可以方便你后期的查询,例如你想查找IP between IP1 and IP2,直接select id, ip from 'table_name' where ip >= I

2020-12-02 14:39:04 513

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

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

2019-11-20 19:58:16 1076

原创 校正alpine镜像的时区

你可以进入到以alpine为基础镜像制作的镜像中,然后使用date -R命令可以查看当前镜像中的时间。# data -RFri, 15 Nov 2019 09:03:55 +0000由于alpine默认的时间为UTC时间(Universal Time Coordinated),这个时间比北京时间早8个小时。例如2019年1月1日,UTC时间的零点,对应的北京时间则是2019年1月1日早上的...

2019-11-15 19:25:08 2675

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

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

2019-10-27 00:27:06 2352

原创 Go Modules详解

modules是Go 1.11版本提出的一个依赖包管理系统。自己如何创建module之前在Go1.1.1新功能module的介绍及使用文中中介绍了module功能,以及如何使用别人已经制作好的module。这一节我们来看看如何自己创建module来让别人使用。首先创建一个包,命名为testmod。但是需要注意:testmod目录必须在$GOPATH目录之外。默认情况下,$GOPATH目录...

2019-09-26 14:53:42 1312

原创 Go 1.13版本介绍

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

2019-09-05 10:47:10 2591

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

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

2019-09-04 14:37:27 15933 2

原创 beego实现API自动化文档

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

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

原创 Go结构体标签用法

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

2019-09-02 17:16:02 2285

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

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

2019-08-28 18:11:18 2489

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

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

2019-08-22 18:11:44 2731

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

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

2019-08-21 11:41:36 7217

翻译 webpack开发

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

2019-07-19 17:34:44 128

原创 webpack管理资源

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

2019-07-19 11:24:31 182

原创 TypeError: CleanWebpackPlugin is not a constructor

引起错误的代码const path = require('path');const CleanWebpackPlugin = require('clean-webpack-plugin');module.exports = { entry : { app : './src/index.js', print: './src/print.js' ...

2019-07-19 11:09:19 2642

翻译 webpack入门

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

2019-07-17 13:59:30 219

原创 Missing type in composite literal

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

2019-07-09 09:39:01 7817

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

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

2019-06-27 19:12:57 3553

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

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

2019-06-19 18:41:28 812

原创 Etcd入门指南——安装

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

2019-06-19 16:35:14 5197 2

原创 Micro API使用

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

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

原创 go get命令

go get下载导入路径指定的包及其依赖项,然后安装命名包,即执行go install命令。用法:go get [-d] [-f] [-t] [-u] [-fix] [-insecure] [build flags] [packages]标记名称描述-d让命令程序只执行下载动作,而不执行安装动作。-f仅在使用-u标记时才有效。该标记会让命令程序忽略掉对已下载代码...

2019-06-14 11:07:03 23226

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

vendorvendor概念最早是由Keith提出,用来存放依赖包。在版本1.5出现。例子gb项目提供了一个名为gsftp的示例项目,它有一个gsftp程序,在标准库之外有三个依赖项。golang.org/x/crypto/ssh, golang.org/x/crypto/ssh/agent和github.com/pkg/sftp。按vendor概念调整的目录结构如下:$GOPATH| ...

2019-06-11 18:50:10 11697

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

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

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

翻译 RabbitMQ学习(一)

RabbitMQ是一个消息代理:它接收和转发消息。你可以把它看作邮局,当你把要发送的邮件放在邮箱中,你可以确定最终会将邮件发送到你的收件人手中。下面先了解下RabbitMQ中的一些术语。producer:生产者,发送消息的程序是生产者。queue:队列,就像上面例子中的邮箱。虽然消息经过RabbitMQ和你的应用程序,但它们只能存储在队列中。队列只受主机的内存和磁盘限制的约束,它本质上是一个...

2019-05-28 17:44:42 461

原创 golang rpc包使用介绍

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

2019-05-20 17:59:58 730

原创 Remote Procedure Calls(RPC)

什么是RPCRPC是进程间通信(IPC)的一种形式,它基于本地程序调用的扩展概念,调用程序和被调用的程序不需要存在于相同的地址空间中。因为不同的进程具有不同的地址空间。如果在同一主机上,即使物理地址空间相同,他们具有不同的虚拟地址空间。而如果他们在不同的主机上,则物理地址空间不同。远程过程调用和本地调用之间的一个区别是远程调用可能由于不可预测的网络问题而失败,此外,调用者通常必须处理在不知道远...

2019-05-17 15:20:45 307

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

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

2019-05-16 14:40:38 11910 2

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

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

2019-05-16 13:06:11 30717

原创 Golang单元测试

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

2019-05-13 17:33:13 669

原创 docker批量删除镜像

docker使用一段时间后,可能会存在许多无用的镜像。一个个删除比较麻烦,可以用下面的命令进行批量删除。$ docker rmi $(docker images | grep "none" | awk '{print $3}')docker images会查看所有的镜像,grep "none"命令会筛选所有名字为none以及标签为none的镜像。awk '{print $3}'会处理筛选后的...

2019-05-10 17:58:46 3529

原创 Windows下MySQL安装

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

2019-05-10 17:16:28 265

原创 golang获取命令行参数

os库package mainimport ( "fmt" "os")func main() { fmt.Println("os.Args")}os可以通过变量Args来获取命令参数,os.Args返回一个字符串数组。其中第一个参数就是执行文件的名字。flag包package mainimport ( "flag" "fmt")func main() {...

2019-05-10 10:39:18 4948

原创 Swagger Editor教程

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

2019-05-09 19:23:27 22035 2

原创 代码行数统计

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

2019-05-05 19:00:00 4715

原创 go-micro中使用consul

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

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

原创 Consul的使用

上一节是有关consul的安装,这节主要看Consul的使用。必须运行代理,代理可以在服务器或客户端模式下运行。每个数据中心必须至少有一台服务器,但建议使用3或5台服务器。由于在故障情况下数据丢失是不可避免的,因此非常不鼓励进行单个服务器部署。所有其他代理都以客户端模式运行,客户端是一个非常轻量级的进程。它注册服务,运行状态检查,并将查询转发给服务器。代理必须在作为集群一部分的每个节点上运行。...

2019-04-30 09:57:08 780

原创 Go Micro框架

Go Micro是一个微服务开发框架。Go Micro提供了分布式系统开发的核心要求,包括RPC和事件驱动的通信。特点自动服务注册与名称解析:服务发现是微服务开发中的核心,用于解析服务名与地址。consul是Go Micro默认的服务发现注册中心。发现系统可插拔,其他插件像etcd,kubernetes,zookeeper。负载均衡:在服务发现之上构建了负载均衡机制。使用随机处理过的哈希负...

2019-04-29 15:42:45 1645

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

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

2019-04-28 18:00:50 47703 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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