author avatar

Roamverse · Lin

互联网后端开发工程师
总共 106 篇文章

Cookie 在 Gin 中,使用 Cookie 涉及到两个方法,Context.Cookie() 和 Context.SetCookie(): 1func SetCookie(c *gin.Context) { 2 // 设置 Cookie 3 c.SetCookie("gin-cookie", "test", 3600, "/", "localhost", false, false) 4 c.JSON(http.StatusOK, gin.H{ 5 "code": http.StatusOK, 6 "data": value, 7 }) 8} 9func GetCookie(c *gin.Context) { 10 // 获取...

Gin 中间件的配置方式有许多种,大致为: 在 Handle()、Any()、Match()、GET() 等基本路由方法中配置 HandlerFunc。 在 RouterGroup 的 Group() 方法中配置 HandlerFunc。 使用 Use() 方法配置 HandlerFunc。 特定请求的中间件 为特定请求配置中间件,可以直接在请求路由的 HandlerFunc 参数中配置。例如: controllers/user: 1type userController struct{} 2 3var UserController userController 4 5func (userController)...

Gin 中许多类型都可以认为它是一个路由(IRoutes)类型,这包括了 RouterGroup、Engine等。并且 IRoutes 接口中定义的方法都会有一个 IRoutes 类型的返回值,使得 Gin Routers 可以支持链式调用,让代码更加简洁。 路由分组 RouterGroup 是一种路由组对象(Engine 继承自 RouterGroup,所以也可以认为是一个路由组)。通过 Group() 方法可以创建一个新的 RouterGroup。Group() 方法的定义如下: 1func (group *RouterGroup) Group(relativePath string, handlers...

Gin 请求在 Gin 介绍 中做了简单的介绍。 Gin 请求与 RouterGroup 和 IRoutes 息息相关。IRoutes是一个接口类型,它定义了一系列用于配置路由处理的方法: 1type IRoutes interface { 2 // 用于配置路由中间件 3 Use(...HandlerFunc) IRoutes 4 5 // 路由处理方法 6 Handle(string, string, ...HandlerFunc) IRoutes 7 Any(string, ...HandlerFunc) IRoutes 8 GET(string, ...HandlerFunc) IRoutes 9 POST(string,...

Gin 支持各种响应数据类型:JSON、XML、HTML、YAML、Text 等等。响应数据需要使用到 gin.Context 类型。gin.Context 类型的作用有: 获取请求数据,包括请求头、Query 参数、Form 数据、Path 参数、请求体等。 响应管理,包括设置 HTTP 状态码、编写响应体、设置响应头等。 中间件支持。Context 可以携带当前处理函数的信息传递到下一个处理函数,直到达到最终的处理函数。在中间件中可以使用 Context 读取、修改 Context 的内容或终止请求处理流程。 Cookie 操作。 读写请求和响应体的原始字节流,以此来处理自定义协议或二进制数据传输。 错误处理。可以记录错误并中断...

Gin

Gin 是一个用 Golang 编写的 Web 框架。具有速度快、内存占用小等特点。 使用 Gin 下载并安装 Gin: 1$ go get -u github.com/gin-gonic/gin 引入 Gin: 1import "github.com/gin-gonic/gin" 如果需要使用诸如 http.StatusOK 之类的 HTTP 状态码常量,可以引入 net/http 包: 1import "net/http" 开始使用 Gin。 main.go: 1package main 2 3import "github.com/gin-gonic/gin" 4 5func main() { 6 // 获取...

Go Path 在 Golang 1.11 之前,Go 采用的是手动依赖管理,也就是使用 Go Path 的方式管理依赖。 使用 Go Path 会有以下问题: 代码开发必须在 Go Path 的 src 目录下。 依赖手动管理。 依赖包没有版本可言。 Go Modules Go Modules 是 Golang 1.11 新加的特性。Go Modules 的特点如下: 模块是相关 Go 包的集合。 Modules 是源代码交换和版本控制的单元。 Go 命令直接支持使用 Modules,包括记录和解析对其他模块的依赖性。 Modules 替换了旧的 Go Path 方法。 在使用 Go Modules 之前需要对环境变量进行一些设...

概述 Map 是 Java 中的一种键值对集合类型的接口,它还提供了一些对数组进行排序、打印、和对 List 进行转换的静态方法。 常用的实现类有: HashMap:哈希图。 LinkedHashMap:链哈希图。 TreeMap:树形哈希图。 HashMap Java 中最常用的 Map 实现就是 HashMap。 数据结构 JDK8 中 HashMap 的数据结构是数组+链表+红黑树。 数组(Node[] table):HashMap 的核心是一个动态数组,用于存储键值对。这个数组被称为桶数组,其每个元素称为一个“桶”(Bucket),每个桶的索引是对键的哈希码通过哈希函数处理得到的。 链表/红黑树:为了解决哈希冲突(两个不同...

概述 List 是 Java 中的一种有序、可重复的集合接口类型。其常用的实现类有: ArrayList:动态数组。 LinkedList:链表。 ArrayList 和 LinkedList 的区别 ArrayList 和 LinkedList 的区别主要体现在数据结构、用途、是否支持随机访问、内存占用等方面。 数据结构 ArrayList 基于数组实现。 LinkedList 基于(双向)链表实现。 适用性 查找访问:ArrayList 在使用下标进行查找时更有优势。 ArrayList 调用 get(int index) 方法时可以直接通过数组下标获取元素,查找的时间复杂度是 $O(1)$; LinkedList 调用...

概述 Java 集合框架可以分类两大类型: Collection:最基本的集合类型的接口,提供了添加、删除、清空等基本操作,还提供了一些对集合进行排序、二分查找、同步的静态方法。 其主要的子接口有: List:有序、可重复的集合。常用的实现类有: ArrayList:动态数组。 LinkedList:链表。 Set:无序、不可重复的集合。常用的实现类有: HashSet:哈希集合。实际上是通过一个 HashMap 来实现。 LinkedHashSet:链哈希集合。 TreeSet:属性集合。是在 TreeMap 的基础上进行实现。 Queue:队列。常用的实现类有: ArrayDeque:双端队列。 PriorityQueue:优...