自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 golang 使用 resty,重试条件无效的问题

文章目录0x01 问题描述0x02 代码片断0x03 跟踪调试0x01 问题描述在go项目中,使用 resty 。在http请求中,添加重试条件,在满足条件时才可以重试。使用中,后端所连的服务突然挂线,导致端口不存在,进而引发 connect refused 的错误。而又由于设置超时时间为 30s,导致在服务器响应前,请求方已经断开而报超时的问题。0x02 代码片断var client = resty.New()func init() { client.SetRetryCount(5) cl

2020-08-28 16:17:52 3190

原创 golang使用 resty 重试bug

这里写自定义目录标题问题描述欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入问题描述在项目中使用 resty 时,在满足特定情况下,不让它自动重试,可实际情况却事与愿违欢迎使用Markdo

2020-08-28 16:03:00 553

原创 clion打开已有的项目报“cmake project is not loaded”

文章目录待整理,参考官网

2019-09-26 16:06:58 7643

原创 gin框架出现遍历目录的bug

文章目录一、 问题描述二、代码复现一、 问题描述在使用 gin 框架的时候,出现了线上漏洞,即可以通过 url 遍历目录。添加了对权限的控制。在后续的项目中,也需要用到 ctx.File(filename string) 函数。开始时想要使用 StripPrefix 但由于其他原因放弃了。二、代码复现package mainimport ( "fmt" "github.com/gi...

2019-09-09 14:35:03 1314

原创 goproxy.cn如何设置

以往我们使用go get 时如果访问的是 golang.org之类的资源,总是会出现错误,是因为我们没有权限访问这些网站。现在七牛资助一个项目 https://goproxy.cn我们只需要在我们的环境变量设置一下就可以了。export GOPROXY=https://goproxy.cn...

2019-09-08 16:40:53 4625 2

原创 gin框架中间件的使用之Next()和Abort()

文章目录一、 `Next()` 和 `Abort()` 的含义二、示例分析一、 Next() 和 Abort() 的含义Next() 的含义语法:func (c *Context) Next()英文原文Next should be used only inside middleware. It executes the pending handlers in the chain ...

2019-09-07 17:24:33 14623 6

翻译 Part 7 包(package)

Golang系列教程第 7 部分文章目录什么是包和为什么要使用它们main 函数和 main 包创建自定义包导入自定义包可导出名字init 函数使用空白标示符什么是包和为什么要使用它们到目前为止,我们看到的程序都只有一个文件,它有一个 main 函数和一些其他函数。在真实的场景中,这种把所有源代码都放到一个文件中的途径并不适用。这样写程序让代码重用和代码维护变得不可能。这就是包出现的地方。...

2019-06-21 16:02:49 257

翻译 Part8 if else 语句

这是Golang系列教程 的第8个教程文章目录疑难杂症if 是一个条件语句,if 语句的语法是if condition {}如果 condition 为真,{ 和 } 之间的代码行被执行。和其他 C 之类的语言不一样,{ } 是强制性的,即使在 {} 之间只有一条语句。if 语句也有可选的 else if 和 else 部分if condition { } else if c...

2019-06-19 14:51:46 184

翻译 Part9:循环

欢迎来到Golang系列教程的第 9 节文章目录for 循环语法示例breakcontinue循环嵌套标签(Labels)更多例子无限循环循环语句被用来重复执行一个代码块。for 是 Go 中唯一可用的循环,Go 没有 while 或 do-while 循环,这些在出现在其他语言中,比如C。for 循环语法for initialisation; condition; post {}...

2019-05-29 18:10:21 155

原创 golang text/template笔记

文章目录1. 使用 map 的简单示例2. 循环2.1 `{{range $i, $e := pipeline }}2.2 {{range .pipeline}}引用外部变量1. 使用 map 的简单示例package mainimport ( "fmt" "text/template" "bytes")func main() { tplStr := `my name is ...

2019-05-28 18:33:05 664

翻译 Part10: Switch语句

该教程是Golang系列教程的第10个文章目录Default 分支case 的多个表达式switch 表达式Fallthroughswitch是一个条件语句,它计算表达式并将其与可能的匹配列表进行比较,并根据匹配执行代码块。它可以被认为是编写多个 if else 语句的惯用方法。例子胜千言。我们来写一个简单的例子,它使用手指数作为输出,并输出手指的名字。例如,1 是拇指, 2 是食指等等。...

2019-05-18 14:19:21 272

翻译 Part 11 :数组和切片

欢迎来到 Golang 系列教程,在本教程中我们讨论Go的数组和切片文章目录数组声明数组是值类型数组的长度使用 range 迭代数组多维数组Slices创建切片(slice)修改切片切片的长度和容量使用make创建切片附加到切片将 slice 传递给函数多维切片内存优化数组数组是属于相同类型的元素的集合。例如,整型集合 5,8,9,79 形成一个数组,不同类型的混合值,例如同时包含字符串和整...

2019-05-17 14:45:15 363

翻译 Part28 Go的面向对象 - 多态

欢迎来到Golang系列教程文章目录使用接口的多态为上面的程序增加一个新的收入流Go中多态性使用 接口实现。正如我们曾讨论的,接口在Go中可以被隐匿实现。如果类型提供了接口中声明的所有方法的定义,我们就说它实现了该接口。我们来看Go如何在接口的帮助下实现多态性的。使用接口的多态任何定义了一个接口中提供的所有方法的类型,我们就说它隐式实现了该接口。一个接口类型的变量可以包含任何实现该接口的...

2019-05-17 11:00:35 208

翻译 Part27: Go的面向对象 - 组合代替继承

欢迎继续Golang系列教程第27节文章目录通过嵌入结构体组合嵌入结构体切片Go并不支持继承,但是它支持组合。组合的通用定义是 “放到一起”。组合的一个例子是 汽车,汽车由车轮,引擎和各种其他部件组成。通过嵌入结构体组合在 Go 中,组合可以通过将一个结构体类型嵌入另一个来获得。博客文章是组合的一个完美例子。每个博客文章都有一个标题,内容和作者信息。这可以通过使用组合完美地表示。在文章的...

2019-05-17 10:15:58 528

翻译 Part 26 Go的面向对象 - 结构体代替类

欢迎来到 Golang系列教程文章目录Go是面向对象的吗?结构体代替类New() 函数代替构造函数Go是面向对象的吗?Go不是一个纯粹的面向对象的程序语言。这摘抄自Go的FAQs,回答Go是否是面向对象的语言的答案。是,也不是。尽管 Go 有类型和方法,允许面向对象风格的编程,但没有类型层次结构,Go中 “interface” 的概念提供了一种我们认为易于使用且在某些方面更为通用的不同方...

2019-05-16 18:34:53 335

翻译 Part25 Mutex

Golang 系列教程 第 25 部分 - Mutex文章目录临界区互斥锁(Mutex)含有竞态条件的程序使用互斥锁解决竞态条件使用通道解决竞态条件Mutex vs Channels在该教程,我们学习互斥锁,也学习如何使用 channels 和 互斥锁解决竞态条件。临界区在学习互斥锁之前,理解并发程序的临界区的概念是很重要的。当程序并发地运行,修改共享资源的部分代码不应该被多个 协程(Go...

2019-05-16 17:30:48 237

翻译 Part 24 Select

欢迎来到 Golang教程系列 的第24节文章目录什么是 select?示例实际使用 selectdefault case死锁(deadlock)和 default case随机选择疑难杂症 - 空 select什么是 select?select 语句被用于从多个发送/接收通道操作中选择。select 语句是阻塞的,直到一个发送/接收操作就绪。如果多个操作准备就绪,将随机选择其中的一个。语法...

2019-05-16 16:15:56 250

翻译 Part23:有缓冲的通道和工作池

目录什么是带缓冲区的通道?例子另一个例子死锁长度 vs 容量WaitGroup工作池实现欢迎来到Golang教程系列的第23节什么是带缓冲区的通道?我们在上一节所讨论的所有通道都是基本的无缓冲区的通道。正如我们在通道中详细讨论的一样,在无缓冲区上发送和接收数据是阻塞的。可以创建一个有缓冲区的通道。向有缓冲区的通道发送数据仅当缓冲区是满的时候才会阻塞。类似地,从有缓冲区通道上读取数据,仅当缓...

2019-05-07 14:51:41 292

翻译 验证密钥与证书是否匹配

[译]Certificate Key Matcher你可以使用 Certificate Key Matcher 来检验一个密钥是否与证书匹配或证书是否与证书签名请求(CSR)匹配。当你处理很多不同的证书时,很容易忘记哪个证书与哪个密钥匹配或哪个CSR被用来生成哪个证书。Certificate Key Matcher 工具 可以轻松决定私钥是否匹配 或CSR与证书匹配。Certificate K...

2019-04-23 18:16:29 6373

翻译 Part 22: 通道(channel)

欢迎来到Golang教程系列 的第22节文章目录什么是通道(channel)声明通道(channel)发送和从通道接收发送和接收默认是阻塞的Channel 示例程序通道的另一个例子死锁单向通道关闭通道和循环遍历通道在上一个教程,我们讨论了关于在Go中如何使用协程实现并发。在该教程,我们将讨论关于通道以及Goroutines 如何使用通道实现通信。什么是通道(channel)通道可以被想像为...

2019-04-22 11:23:01 11036

翻译 Part21: Goroutines

欢迎来到Go教程系列的第 21 教程文章目录什么是协程(Goroutines)?Goroutines 优于线程的优势如何启动一个协程(Goroutine)?启动多个协程在上一教程我们讨论了关于并发以及它和并行的不同,在该教程,我们将讨论关于并发在Go中是如何使用Goroutines实现的。什么是协程(Goroutines)?协程(Goroutines)是与其他函数或方法同时运行的函数或方法...

2019-04-11 16:17:33 190

翻译 Part 20:并发介绍

欢迎来到Golang教程系列 的第20部分Go 是一个并发语言而不是并行语言。讨论在 Go 中如何处理并发之前,我们必须先要理解什么是并发以及它和并行有什么不同。什么是并发?并发是一次处理多个事物的能力。最好是用一个例子来解释。我们考虑下一个人跑步。在他晨跑期间,我们说他的鞋带开发。现在这个人停止了跑步,系紧他的鞋带,然后再次开始跑步。这是一个经典的并发例子。这个人有处理跑步和系鞋带,这就...

2019-04-11 11:34:37 213

翻译 Part 19 接口II

欢迎来到Golang 系列教程的第19部分,这是我们接口教程的第2部分,以免您错过第一部分,你可点击获取第一部分内容。文章目录使用指针接收器 vs 值接收器实现接口实现多个接口嵌入接口接口的空值使用指针接收器 vs 值接收器实现接口所有在第一部分讨论接口例子都是使用值接收器实现。使用指针接收器实现也是可以的。使用指针接收器实现接口有一些细微之处需要注意,我们使用下面的程序来理解它。onte...

2019-04-10 16:37:29 176

翻译 Part 18: 接口 - I

欢迎来到Golang系列教程 的第18部分,这是接口教程 2 小部分的第 1 部分。什么是接口?在面向对象世界接口的一般定义是“接口定义一个对象的行为”。它只指定对象应该做什么。获取这个行为(实现细节)的方式是由对象决定。在Go中,接口是一组方法的签名。当类型提供了接口中所有方法的定义时,我们说实现了这个接口。这个面向对象世界很相似。接口指定类型应该有什么方法和类型决定如何实现这些方法。例...

2019-04-10 15:41:42 292

翻译 Part 17: 方法

欢迎来到Golang系列教程的第17部分什么是方法?方法只是一个具有特殊接收器类型的函数,该接收器在 func 关键字和方法名称之间编写。接收器即可以是结构体类型,也可以是非结构体类型。接收器可以在方法内部访问。下面是创建方法的语法func (t Type) methodName(parameter list) {}上面片段创建一个名为 methodName 的方法,它有一个类型为 ...

2019-04-09 15:52:49 279

翻译 Part 16:结构体

欢迎来到Go系列教程的第 16 部分什么是结构体?结构体是用户定义的类型,它代表一个字段的集合。它可以在有意义的地方被使用,将一组数据放到单一个单元中而不是维护每一个独立的类型。例如雇员有一个名字(firstName),姓(lastName),年龄(age)。将这三个属性组合到一个结构体 employee 是有意义的。声明结构体type Employee struct { f...

2019-04-09 11:36:38 256

翻译 Part 15:指针

欢迎来到Golang 系列教程的第15部分文章目录什么是指针指明指针指针的零值指针解引用传递指针给函数不要给函数的参数传递数组指针,使用切片替代。Go不支持指针运算什么是指针指针是存储另一个变量的内存地址的变量。在上面的插图中,变量 b 的值是 156 ,在地址是 0x1040a124 的内存中存储。变量 a 存储有 b 的地址。那现在 a 就被称为指向 b 的指针。指明指针T 是指...

2019-04-09 10:05:47 184

翻译 Part 14:Strings

欢迎来到Golang教程系列的第14部分文章目录什么是字符串?访问字符串的单个字节rune字符串上的 for range 循环从 bytes 切片构建字符串从 rune 切片构建字符串字符串的长度字符串是不可变的字符串在Go中值得特别提及,因为与其他语言相比,它们在实现方面有所不同什么是字符串?在 Go 中字符串是一个bytes 切片。字符串可以通过将它们的内容包含在 “” 中被创建,让我...

2019-04-04 08:52:09 171

翻译 Golang教程系列

Introduction1 - 介绍和安装2 - Hello World变量,类型和常量3 - 变量4 - 类型5 - 常量函数和包6 - 函数7 - 包条件语句和循环8 - if else 语句9 - 循环10 - Switch 语句数组,切片和变参函数11 - 数组和切片12 - 变参函数更多类型13 - Maps14 - Strings指针,结构体和...

2019-04-03 18:19:07 395

翻译 Part13 Maps

欢迎来到 Golang 教程系列的第13部分文章目录什么是 map?如何创建一个 map?给 map 增加项目访问 map 的元素删除项目map 的长度Maps是引用类型Maps 比较什么是 map?map 是 Go 的内置类型,它将一个值和key关联起来。值可以使用相应的key检索出来。如何创建一个 map?map可以通过将 key 和值的类型传递给 make 函数被创建。make(m...

2019-04-03 18:05:58 222

翻译 Part 12 变参函数

欢迎来到 Golang教程系列的第12部分文章目录什么是变参函数?语法示例和理解变参函数如何工作给变参函数传入一个切片疑难杂症什么是变参函数?变参函数是一个可以接受参数数量可变的函数。语法如果一个函数的最后一个参数是以 ...T 为标记,则该函数的最后一个参数可以接受任何数量类型为 T 的参数。请注意,一个函数仅最后一个参数允许参数可变示例和理解变参函数如何工作你是否想过被用来 a...

2019-04-03 15:00:36 194

原创 go WaitGroup

文章目录官网说明示例示例一示例二示例三 值传递 and 指针传递官网说明A WaitGroup waits for a collection of goroutines to finish. The main goroutine calls Add to set the number of goroutines to wait for. Then each of the goroutines...

2019-04-03 10:58:09 331

翻译 [译]5个switch语句模式

原文基本开关默认switch 语句运行第一种情况属于条件表达式case 从上到下被评估,在case成功时停止如果没有匹配任何 case 并且有一个默认的 case ,它的语句被执行switch time.Now().Weekday(){case time.Saturday: fmt.Println("Today is Saturday."))case time.Sunda...

2019-04-02 17:01:55 281

原创 mongo分页查询(mgo)遇到的问题

背景使用 Skip() 和 Limit() 组合查询时,发现要么查询结果为空,要么查询出全部,而没有达到想要分页显示的目的。解决办法Skip()、Limit() 与 Sort() 配合使用具体用例err := db.Find(“condition”).Skip(2).Limit(10).All(resultList) // 此处会发现,结果要么是空,要么是全部内容err := db.F...

2019-03-15 16:45:45 1417

原创 谷歌浏览器安装扩展插件

目录前言问题解决办法前言本文来自于文章chrome 67版本后无法拖拽离线安装CRX格式插件的解决方法问题由于特殊原因,国内无法打开扩展商店。离线安装是安装Chrome扩展程序的一种方法。而当我们把下载好的扩展程序.crx手动到浏览器上,呈现在面前的,却是下载。将模式调动到开发模式也毫无用处。CRX格式插件不能离线安装?本地扩展CRX无法安装怎么办?提供了3种方法,后面两种是改扩展名做修改...

2019-02-27 11:06:03 1862

原创 git报"changes not staged for commit"的错误

在执行 git add、git commit -m 、git push 时报 changes not staged for commit。这是由于在项目中引入第三方包时,第三方包中含有 .git。并且在检查上传的文件时,会发现目标文件夹是空的。在进入目标目录后,删除 .git 文件,现执行 git status 后会发现没有相关的修改。解决如下:删除 .git 文件夹rm -rf ....

2019-01-29 11:26:51 20349 2

翻译 Hyperledger Fabric &CouchDB 查询

Hyperledger Fabric(HLF) 使用一个KV数据库存储它的状态。这个对象存储包含可以使用它的键查询的二进制数据。fabric 默认使用LevelDB存储,它包含在 peer 进程中。当简单地在你的链码中使用简单的结构体,你很可能只需要通过他的键来查询数据。但是,如果你有更复杂的数据,无法通过特定的字段来获得数据。但是这有一个解决方案(在某此场合)!CouchDB… 放松Co...

2018-12-15 15:19:10 7710

翻译 golang 中,使用 sqlx 包如何使用通配符查询 -- like

在开发中需要使用到 like 语句,代码如下:sqlx.GET(&studentName,sqlx.Rebind("SELECT * FROM student WHERE name LIKE '%?'"),name)但在运行的时候,出现数据语句错误!在 stackoverflow给出了答案,此处作记录查找解决方法一:sqlx.GET(&student, sqlx.R...

2018-12-10 10:33:46 3334

原创 MySQL 常用

一、查询操作1. 合并两个列的值SELECT name,CONCAT(class,number) class FROM student;将 class 字段和 number 字段的值合并为一个2、 从一张表中查询数据插入另一张表中INSERT INTO a(...) SELECT ... FROM b;3. 多个重复列只查询出一个SELECT * FROM table_a a W...

2018-11-28 17:43:17 127

原创 golang中使用json转换结构体

两个结构体,其中一个结构体可以包含另外一个结构体,使用 json 可以使结构体字段比较多的结构体可以赋值给字体少的。package mainimport ( "encoding/json" "fmt")type KeyBasic struct { UserName string `json:"username"` Algorithm string `json:"algo"`...

2018-11-06 14:44:13 3116

Unix/Linux编程实践教程.pdf

unix/linux下的编程实践,介绍了该类操作系统下的命令实现代码,C语言实现

2013-01-15

VC++网络编程.pdf

VC下的网络编程,有想从事Windows下的C++网络编程的可以观一下

2012-05-04

操作系统概念第六版翻译版.pad

学习C++进阶必备的书籍,了解底层,了解操作系统,才能做好C++。

2012-05-04

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

TA关注的人

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