Gin 支持各种响应数据类型:JSON、XML、HTML、YAML、Text 等等。响应数据需要使用到 gin.Context 类型。gin.Context 类型的作用有: 获取请求数据,包括请求头、Query 参数、Form 数据、Path 参数、请求体等。 响应管理,包括设置 HTTP 状态码、编写响应体、设置响应头等。 中间件支持。Context 可以携带当前处理函数的信息传递到下一个处理函数,直到达到最终的处理函数。在中间件中可以使用 Context 读取、修改 Context 的内容或终止请求处理流程。 Cookie 操作。 读写请求和响应体的原始字节流,以此来处理自定义协议或二进制数据传输。 错误处理。可以记录错误并中断...
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:优...
特点 Java 比较突出的特点: 面向对象:封装,继承,多态。 平台无关性(跨平台):Java 是一种 “一次编写,到处运行(Write Once,Run any Where)” 的语言。也就是说,采用 Java 语言编写的程序具有很好的可移植性。保证 Java 可移植性的正是 Java 的虚拟机机制。 多线程:Java 语言提供了多线程支持。 JIT(Just-In-Time)编译:指的是即时编译器,它可以在程序运行时将字节码转换为本地机器码来提高程序运行速度。 编译与解释并存:需要先将源代码编译成字节码,再解释执行字节码。 JVM、JDK 和 JRE JVM(Java Virtual Machine,Java 虚拟机):JVM...
Java提供了三种创建线程的方法: 重写Thread类的run(); 通过实现Runnable接口; 通过Callable和FutureTask创建线程。 通过 Thread 类创建 在Java中,每一个线程实际的创建和运行都是通过Thread类。Thread类的run()方法就是当前线程的入口点(入口方法)。 在Java中,在运行main()方法时,实际上是创建了一个名为main的线程。而main()方法则是当前应用程序main线程的入口点(入口方法)。 直接通过Thread类的无参构造函数创建Thread对象,创建出来的线程并没有任何实际的作用。也就是说它的run()方法并没有执行任何实际的任务。 通过Thread类直接创建线程...
概念 Java 并发编程中涵盖了以下这些概念: 进程 线程 并发 并行 进程 进程(Process)是指在计算机中正在运行的一个程序的实例。进程是操作系统进行资源分配和调度的基本单位(资源分配的最小单位),用于执行程序的代码和管理与该程序相关的资源。每个进程都有自己的地址空间、内存、文件句柄等资源。 进程的一些相关概念: 程序:程序是静态的,是一组指令和数据的集合;而进程是程序在执行时的一个实例,是一个动态的实体。 程序被运行时,程序的代码从硬盘被加载到内存中,此时就开启了一个进程。 程序可以同时运行多个实例进程,也可以仅运行一个实例线程。 地址空间:进程的地址空间包括代码段、数据段、堆和栈。 地址空间使得每个进程都在自己的独立内...
Vue UI 组件库 在Vue中,可以通过引入他人编写好的组件库,来构建自己的页面,提高开发效率。 Vue中常用的UI组件库有: 移动端常用UI组件库: Vant Cube UI Mint UI NutUI PC端常用UI组件库: Element UI IView UI Ant Design Vue 安装 Element-UI 1npm i element-ui 引入并应用 Element-UI 1import ElementUI from 'element-ui'; // 引入 Element-UI 2import 'element-ui/lib/theme-chalk/index.css'; // 引入 Element-UI...
