thumbnail
Golang实现HTTP请求限流
在高并发应用场景中,为保证业务高峰期系统的稳定性或抵御CC攻击,最有效的方案为(缓存、降级、限流)本文以限流为例,在Golang中示例如何通过中间件实现httpserver限流。 依赖 首先安装一个基本的限流算法包,然后为了方便,直接使用gin作为httprouter(后面会用到它的中间件) $ go get -u golang.org/x/tim…
thumbnail
macOS自动化神器Hammerspoon
Hammerspoon 是 macOS 上一个强大的自动化工具,是一款开源软件,但安装之后 Hammerspoon 默认什么功能也没有,所有的功能都在 Lua 脚本中,需要用户自己编写。Hammerspoon 可以让用户通过 Lua 脚本直接调用 macOS 提供的 API,能做的事情既有自定义快捷键这种简单操作,也能实现连上家里 Wi-Fi 后自…
thumbnail
GraphQL::为API而生的查询语言
概述 GraphQL是Facebook开源的API查询语言,类似于数据库中的SQL。作为比较,RESTful API依赖于后端隐式的被动的数据约定,GraphQL更加显式,在获取数据和更新数据时更加主动,所见即所得。详见官网:http://graphql.cn/ 谁在使用? Github早就开放了一套基于GraphQL的api,可以试试。https…
thumbnail
Golang实现有序遍历Map
Go的map元素遍历顺序(使用range关键字)是随机的,而不是遵循元素的添加顺序,为解决这一问题,可使用下面的遍历方式。 package main import ( "fmt" "sort" ) func main() { map1 := map[int]string{ 0: "java", 1: "golang", 2: "python…
thumbnail
Golang-Modules包管理之道
golang原始的包管理方式非常low,然终于在go version 1.1.1之后,官方推出了模块概念,但是目前该功能还在试验阶段,有些地方还需要不断的进行完善。在官方正式宣布之前,打算不断修正这种支持。到时候就可以移除对GOPATH和go get命令的支持。 初始化 目前modules机制仍在早期阶段,golang提供了一个环境变量“GO111…
Golang-全平台交叉编译
Golang的交叉编译要保证golang版本在1.5以上,我的环境是go1.11.5 darwin/amd64 交叉编译 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=…
thumbnail
Golang二叉树遍历实现
二叉树的几种遍历方式 1)先序遍历 1)访问根节点;2)采用先序递归遍历左子树;3)采用先序递归遍历右子树; (注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”) 2)中序遍历 1)采用中序遍历左子树;2)访问根节点;3)采用中序遍历右子树; 3)后序遍历 1)采用后序递归遍历左子树;2)采用后序递归遍历右子树;3)访问根节点; 三种方法遍…
thumbnail
必先利其器之IntelliJ IDEA代码调试技巧
Debug 设置 一般来说,保持默认即可,如果在Windows环境下,建议将图中标记的地方(Debug连接的方式)选择为 Shared memory,该选项是Windows下才有的特性,相比Socket的方式来说,要快不少。 常用快捷键 快捷键介绍F7在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有…
thumbnail
使用qrsctl批量下载七牛云存储文件
由于Markdown文档图床需要,之前选用了七牛作为云存储,但是前几天突然发现我所有的图片外链全部失效了,原来是七牛将测试域名回收了,同时我自己的已备案域名也已经过期,导致我存储在七牛中的所有图片既不能预览,也不能下载,甚是恶心,在七牛的官网翻了一圈,总算是找到了把所有文件下载下来的解决方案。 安装命令行辅助工具(qrsctl) 下载地址:http…
thumbnail
Golang开发环境配置
现如今Go语言的开发阵容可以说是空前强大,且背靠Google这棵大树,又不乏牛人坐镇,是名副其实的“牛二代”。 有关Go语言特性优缺点本文就不再赘述了,百度上一大堆。  下载SDK 本文使用macOS操作系统为例,其他系统操作大同小异 下载地址:https://golang.org/dl/ 安装SDK 双击下载后的pkg进行安装,安装成功后,打开终…