分类 后端 中的文章

Golang实现HTTP请求限流

在高并发应用场景中,为保证业务高峰期系统的稳定性或抵御CC攻击,最有效的方案为(缓存、降级、限流) 本文以限流为例,在Golang中示例如何通过中间件实现httpserver限流。 依赖 首先安装一个基本的限流算法包,然后为了方便,直接使用gin作为httprouter(后面会用到它的……

阅读全文

Golang实现有序遍历Map

Go的map元素遍历顺序(使用range关键字)是随机的,而不是遵循元素的添加顺序,为解决这一问题,可使用下面的遍历方式。 package main import ( "fmt" "sort" ) func main() { map1 := map[int]string{ 0: "java", 1: "golang", 2: "python", } var keys []int for key := range map1 { keys = append(keys, name) } sort.Ints(keys) for _, key := range keys { fmt.Printf("%st%dn", key, map1[key]) } } 可以看到,其关键思路就是先把所有Key拿出来排序,再按照排序后的……

阅读全文

Golang-Modules包管理之道

golang原始的包管理方式非常low,然终于在go version 1.1.1之后,官方推出了模块概念,但是目前该功能还在试验阶段,有些地方还需要不断的进行完善。在官方正式宣布之前,打算不断修正这种支持。到时候就可以移除对GOPATH和go get命令的支持。 初始化 目前modules机制仍在早期……

阅读全文

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=amd64 go build main.go ### linux上编译mac和windows二进制 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go ### windows上编译mac和linux二进制……

阅读全文

Golang二叉树遍历实现

二叉树的几种遍历方式 1)先序遍历 1)访问根节点;2)采用先序递归遍历左子树;3)采用先序递归遍历右子树; (注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”) 2)中序遍历 1)采用中序遍历左子树;2)访问根节点;3)采用中序遍历右子树; 3)后序遍历 1)采用后序递归遍历左子树;……

阅读全文

Golang开发环境配置

现如今Go语言的开发阵容可以说是空前强大,且背靠Google这棵大树,又不乏牛人坐镇,是名副其实的“牛二代”。 有关Go语言特性优缺点本文就不再赘述了,百度上一大堆。 下载SDK 本文使用macOS操作系统为例,其他系统操作大同小异 下载地址:https://golang.org/dl/……

阅读全文

Swagger2在SpringBoot中的集成指南

引入依赖Swagger2及Swagger2 UI <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <!-- swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency> 构建配置文件(基于JavaConfig) package com.wuwenze.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; /** * @author wuwenze * @date 2019/1/28 */ @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.wuwenze.api")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("某电商平台在线API文档&q……

阅读全文

将JAR包发布到Maven中央仓库

将JAR包发布到Maven中央仓库https://search.maven.org供广大开发者使用,流程比较繁琐,遂成此文记录。 Maven中央仓库并不支持直接上传Jar包。因此需要将jar包发布到一些指定的第三方Maven仓库,然后该仓库再将Jar包同步到Maven中央仓库。 本文……

阅读全文

SpringBoot Admin 集成指南(v2.1.1)

SpringBoot Admin用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 其常见的功能如下: 显示健康状况 显示详细信息,例如 JVM和……

阅读全文

Spring5响应式WEB编程-Webflux示例

Spring WebFlux简介 Spring WebFlux是随Spring 5推出的响应式Web框架: (左侧为基于spring-webmvc的技术栈,右侧为基于spring-webflux的技术栈) 服务端技术栈 Spring WebFlux是基于响应式流的,因此可以用来建立异步的、非阻塞的、事件驱动的服务。它采用Re……

阅读全文