自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gcaptain

我见青山多妩媚,料青山、见我应如是

  • 博客(42)
  • 收藏
  • 关注

原创 Go语言gin框架简易入门文档

文章目录安装快速入门使用[jsoniter 构建](https://github.com/json-iterator/go)API 示例快速构建RESTful风格接口GET, POST, PUT, PATCH, DELETE请求路径中的参数查询字符串参数Multipart/Urlencoded 表单query 和 post 表单Map as querystring or postform parameters文件上传单文件多文件上传路由组使用无默认中间件的gin框架使用中间件自定义恢复中间件写入日志文件自定

2020-10-09 18:00:54 2126 1

原创 Go语言 gin框架集成Casbin实现访问权限控制

文章目录1. Casbin是什么?1.1 Casbin的model1.1.1 [request_definition]1.1.2 [policy_definition]1.1.3 [role_definition]1.1.4 [policy_effect]1.1.5 [matchers]1.2 Casbin的Policy1.2.1 csv 文件存储1.2.2 适配器存储2. gin集成Casbin实现RESTful接口访问控制2.1 go mod 构建项目2.2 安装依赖包2.3 目录规划说明2.4 项目代

2020-10-09 17:57:06 5785

原创 Golang pprof 性能分析与火焰图

文章目录1. 安装graphviz1.1 下载 graphviz (windows 环境)1.2 测试graphviz是否安装成功2. 使用pprof2.1 修改代码2.2 火焰图生成3. Gin框架使用pprof3.1 安装需要包3.2 启动程序3.3 火焰图3.4 pprof命令行参考文档1. 安装graphviz1.1 下载 graphviz (windows 环境)https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38

2020-09-19 18:33:37 2729

原创 Docker安装和容器部署服务

文章目录1. Docker是什么?1.1 旧的解决方案?1.2 新的解决方案?1.3 Docker容器 VS 虚拟机技术2. 如何安装?2.1 安装步骤2.1.1 移除旧的docker版本2.1.2 安装依赖包2.1.3 设置yum源2.1.4 查看可用版本2.1.5 安装docker2.1.6 启动docker2.1.7 配置docker的源2.1.8 安装docker-compose3. docker常用命令3.0 Docker帮助命令3.1 镜像常用命令3.2 容器常用命令4. Docker使用4.

2020-09-12 21:12:44 1048

原创 Golang 之context用法

文章目录1. context2. context.go2.0 结构图2.1 Context interface2.2 emptyCtx2.3 cancelCtx2.4 valueCtx2.5 timerCtx3. 使用示例3.1 WithCancel3.2 WithDeadline3.3 WithTimeout3.4 WithValue1. contextGolang 中的context 是Go语言在 golang1.7 发布时新增的标准包目的是增强Golang开发中并发控制技术简单来讲当一个服

2020-06-24 18:33:26 8577

原创 Golang文件写入的四种方式

文章目录1. 简单覆盖式文件写入2. 常规文件写入3. 带有缓冲区的文件写入4. 复制操作的文件写入Golang 中关于文件写入的方法很多简单覆盖式文件写入常规文件写入带有缓冲区的文件写入复制操作的文件写入1. 简单覆盖式文件写入特点 :操作简单一个函数完成数据写入新内容覆盖旧的内容操作的文件不存在的时候会自动创建使用Golang的标准包 io/ioutil函数参数说明 :filename 操作的文件名data 写入的内容perm 文件不存在时创建文件并赋予的

2020-06-03 20:47:08 13883

原创 Golang读取文件和处理超大文件方案

文章目录1. 文件整体读取代码示例1代码示例22. 文件分片读取代码示例3. 文件逐行读取示例代码1代码示例24. 总结5. 参考资料Golang 操作文件的读取的方法很多,适用的场景也是各不相同,在此我们将文件的读取分为如下几种 :文件整体读取文件分片读取(块级读取)文件行级读取系统的配置不同,执行的耗时也不相同,此处给出一参考系统配置 :OS : Windows10Memory : 16GCPU (英特尔)Intel® Core™ i3-4370 CPU @ 3.80GHz

2020-06-01 22:06:54 6523 1

原创 Golang WebSocket Vue构建通信

文章目录1. 目标2. 项目目录`common\service_robot.go``server.go``myclient.go`WebSocket 客户端测试vue WebSocket 客户端前端的 WebSocket 测试1. 目标使用 Golang 编写一个WebSocker 服务端能接受客户端的WebSocket连接启动服务器时接收命令行参数能响应客户端数据模式一 : webSocket 回音模式模式二 : 图灵机器人聊天模式使用Golang 编写一个WebS

2020-05-30 18:05:24 708

原创 websocket 基础理解

文章目录websocket是什么websocket 连接示例websocket使用场景websocket和http的区别websocket是什么WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket协议在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范。Web IDL中的WebSocket API由W3C标准化。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在Web

2020-05-23 16:11:48 583

原创 Vue项目搭建与线上部署

文章目录安装node.js安装npm设置下载镜像安装webpack安装vue安装vue-clivue 项目初始化项目运行起来安装 vue-router安装 axios安装Element UIVUE项目跨域VUE项目线上部署安装node.js到 node.js 官网下载复合自己开发平台的 Node 版本nodejs中文网安装npm设置下载镜像# 修改镜像地址npm install --registry=https://registry.npm.taobao.org# 安装cnmpnpm

2020-05-17 14:27:24 1258

原创 Golang编译与Go程序部署

文章目录Go程序编译1. 交叉编译(Cross compiler)2. 交叉编译设置1.1 Windows 平台1.2 Linux 平台1.3 Mac 平台3. 编译简单示例 :Go程序部署1. 容器部署1.1 编写Dockerfile (简单示例文件)1.2 通过新建的Dockerfile创建镜像1.3 运行新镜像2. 独立部署2.1 nohup2.2 tmux2.3 Supervisor2.4 systemctl3. 代理部署Go程序编译1. 交叉编译(Cross compiler)“ 交

2020-05-17 14:14:04 1550

原创 JWT与Golang

文章目录JWT基础概念JWT使用场景JWT的结构头部载荷签名JWT工作原理Golang使用JWT代码实现服务测试JWT基础概念JWT是 json web token的简称其中的 token 是令牌的意思, 其实这个令牌实质上是服务端生成的一段有规则的字符串我们看看JWT官方自己对其的定义JSON Web Token (JWT) is an open standard (RFC 7519...

2020-04-05 18:26:29 429

原创 Golang与RabbitMQ

文章目录RabbitMQ 概述RabbitMQ 特点RabbitMQ基础概念RabbitMQ 工作流程Golang 操作RabbitMQ基础队列使用工作队列参考资料RabbitMQ 概述RabbitMQ是采用Erlang编程语言实现了高级消息队列协议AMQP (Advanced Message Queuing Protocol)的开源消息代理软件(消息队列中间件)市面上流行的消息队列中间件...

2020-02-23 23:17:16 6029

原创 golang与gRpc

gRpc文章目录gRpc1. gRpc 概述2. gRpc执行概述3. gRpc-go 安装4. gRpc使用1. gRpc 概述gRpc是什么 ?gRPC是Google开源的可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,健康检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏...

2020-01-17 18:45:10 519

原创 Golang与Protobuf

文章目录1. Protobuf 介绍2. Protobuf 特点3. Protobuf 环境配置3.1 安装protobuf 基础工具3.2 安装编程语言插件3.3 Protobuf 基础使用4. Protobuf 协议语法5. Protobuf与RPC1. Protobuf 介绍Protobuf 是 Protocol Buffers 的简称 ,是Google开源的的一种数据描述语言,其初始...

2020-01-04 17:54:45 402

原创 Golang与RPC

文章目录1. RPC 概述2. RPC 组成3. RPC 调用流程4. Go语言实现PRC4.1 HTTP PRC4.2 TCP RPC4.3 RPC 异步调用5. json rpc5.1 json rpc 服务端代码5.2 Golang json rpc 客户端5.3 PHP json rpc客户端1. RPC 概述RPC 是Remote Procedure Call Prot...

2019-12-14 19:16:30 534 1

原创 Go Modules基础

文章目录1. 简介2. 基础命令3. 基本使用3.1 go mod init3.1 下载指定版本的依赖库3.2 更新依赖库3.3 go get简介1. 简介GO Modules 也称作 go mod 是golang 官方最新的几个golang 版本中推出的 包 管理方式或者称作模块支持golang 中 modules (模块)是什么意思呢?一个模块是一系列 Go 代码包 的集合,它...

2019-12-07 16:49:07 476

原创 Golang与NSQ消息队列

文章目录1. 概述2. 基础应用场景3. 相关文档4.安装操作5. NSQ服务端基础组件介绍5.1 nsqd5.2 nsqlookupd5.3 nsqadmin6.操作NSQ6.1 安装客户端6.1 单机启动nsqd6.1.1 单NSQ的使用6.1.2 通过nsqadmin查看6.1.3 NSQ的单点结构6.3 NSQ集群6.3.1 启动NSQ各组件6.3.2 NSQ的拓扑结构6.3.3 Go语言...

2019-11-11 20:55:45 732

原创 Golang与Redis

文章目录1. 知识储备2. 安装redis客户端3. 常见的全局命令4. Redis的string类型操作5. Redis的hash类型操作6. Redis的list类型操作7. Redis的set类型操作8. Redis的zset类型操作9. Redis简单的订阅/发布1. 知识储备知道Redis是个啥?知道Redis的基础命令怎么操作测试的环境中安装了Redis的服务端(无论是w...

2019-11-02 17:04:58 399

原创 Golang操作MySql

文章目录1. 知识储备2. 安装ORM包3. 创建表4. 添加数据5. 查询 & 修改 & 删除5.1查询多条数据1. 知识储备Go语言基础知识具备一般的SQL知识测试机器上安装了数据库服务端,我们默认使用MySql2. 安装ORM包ORM:对象关系映射(Object Relational Mapping,简称ORM),目的是想像操作对象一样操作数据库.因为...

2019-11-02 17:01:59 348

原创 Golang与单元测试

文章目录1. 概述2. 基础测试2.1 提示 `build failed` ?3. 基准测试1. 概述单元测试(unit testing) 是指对软件 中的 最小可测试单元进行检查和验证Go语言自身提供了一套轻量级的单元测试和性能测试系统,符合规则的测试代码会在运行测试时被自动识别执行2. 基础测试看看一个基本的测试案例是怎么写的文件结构如下||_main.go|_...

2019-11-02 16:58:59 286

原创 Golang的http编程

文章目录1. 概述2. http服务端3. https服务端3. http客户端发送请求1. 概述我们简单的描述一下什么是web服务的工作方式,通常一个客户端(客户端可以是浏览器或者其他任何能发送http请求得工具)请求一个URL(uniform resource locator ) ,如果这个url是域名那么首先会去请求DNS(Domain Name System) 获取域名对应的真实I...

2019-11-02 16:56:39 410

原创 Golang的socket编程

文章目录1. 概述2. tcp socket示例1. 概述Socket 起源于 Unix,而 Unix 基本哲学之一就是“一切皆文件”,都可以用“打开 open –>读写 write/read –> 关闭 close”模式来操作。 Socket 就是该模式的一个实现,网络的 Socket数据传输是一种特殊的 I/O, Socket 也是一种文件描述符我们通常所说的网络编程...

2019-11-02 16:52:33 367

原创 Golang的reflect

文章目录1. 概述2. 反射类型对象3. 反射的值对象4. 反射修改值5. 综合Demo1. 概述Go语言提供了一种机制,能够在运行时更新变量和检查它们的值、调用它们的方法和它们支持的内在操作,而不需要在编译时就知道这些变量的具体类型。这种机制被称为反射。反射也可以让我们将类型本身作为第一类的值类型处理。2. 反射类型对象使用reflect.TypeOf() 函数获取任意变量的...

2019-11-02 16:49:58 297

原创 Golang并发数据同步

文章目录1. 概述2. 竞态检测3. 解决方案3.1 原子操作 atomic 包3.2 互斥锁 mutex3.3 等待组 syc.WaitGroup1. 概述Go程序可以通过channel在多个goroutine 之间进行数据交换保障了数据正确性,但是channel的内部实现也是各种锁.在并发环境中可能会出现竞争状态,简称 竞态 ,就是并发程序竞争访问和修改某个共享资源,存在竞态问题的...

2019-11-02 16:47:29 1215

原创 Golang的goroutine和channel

文章目录1. 概述1.1 并发和并行的区分1.2 Go语言的并发概述1.3 goroutine是什么?1.4 goroutine 调度模型介绍1.4.1 MPG的运行模式1.4.2 当Goroutine阻塞时1.4.3 Goroutine的并发与并行2. goroutine 的基本使用2.1 示例12.2 示例22.3 示例33. 通道channel3.1 声明通道类型3.2 实例化通道3...

2019-11-02 16:43:54 349

原创 Golang面向对象编程

文章目录1. GO语言OOP概述2. 封装的实现3. 继承的实现4. 多态的实现4.1 接口概述4.2 声明接口4.3 实现接口4.4 接口嵌套4.5 类型断言的格式4.6 空接口类型 interface{}4.7 如何实现多态1. GO语言OOP概述Go语言不是纯粹的面向对象的语言,准确是描述是,Go语言支持面向对象编程的特性.Go语言中没有传统的面向对象编程语言的 class ...

2019-11-02 16:38:35 541

原创 Golang的方法

文章目录1. 概述2. 方法的声明和调用3. 指针接收器与非指针接收器4. 比较面向对象和面向过程1. 概述Go 语言中 的方法 ( Method ) 是一种作用 于特定类型变量 的函数 。这种特定类型变量叫做接收器( Receiver ) 。如果将特定类型理解为结构体或“类”时,接收器的概念就类似于其他语言中的 this 或 者 self。在 Go 语言中,接收器的类型可以是任...

2019-11-02 16:34:43 1331

原创 Golang结构体struct

文章目录1. 结构体 `struct`1.1 概述1.2. 定义结构体1.3 实例化结构体1.4 初始化结构体成员变量1.5 结构体变量复制1.6 匿名结构体1.7 模拟构造函数1. 结构体 struct1.1 概述Go语言可以通过自定义的形式形成新的类型,结构体是类型中带有成员的复合类型,Go语言中使用结构体和结构体成员描述 真实世界 的实体和实体对应的各种属性 ,通过这个描述体...

2019-11-02 15:54:47 770

原创 Go语言入门教程-小案例-基础排序程序

文章目录程序需要实现的基础功能目录结构程序需要实现的基础功能程序能从命令行读取命令,输入的数据文件,排序之后的输出文件,使用的排序算法读取文件中的数据调用指定的排序算法将排序之后的数据写入到输出文件中计算排序耗时目录结构||__sorter|__bubbleSort|____bubbleSort.go|____bubbleSort_test.go|__quic...

2019-11-02 15:51:22 158

原创 Golang与函数

文章目录1. 概述2. 声明函数2.1 函数基本形式2.2 值传递与引用传递3. 函数变量4. 匿名函数4.1 定义形式14.2 定义形式24.3 定义形式34.4 匿名函数作为回调函数4.5 匿名函数示例5. 闭包6. 函数的可变参数7.延迟调用defer7.1 defer的执行顺序7.2 defer 使用示例8. 错误处理8.1 自定义错误8.2 异常的处理8.2.1 触发panic8.2.2...

2019-11-02 15:48:07 233

原创 Golang包 package

文章目录1.包的概述2.包的作用3. 包的导入 import4. 访问权限5. 初始化函数 init()6. Go程序执行顺序1.包的概述任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的单元以便于理解和更新,在每个单元更新的同时保持和程序中其它单元的相对独立性。这种模块化的特性允许每个包可以被其它的不同项目共享和重用,在项目范围内、甚至全球范围统...

2019-11-02 15:42:44 257

原创 Golang流程控制

文章目录1. 概述2. 条件判断分支- if2.1 单分支2.2 双分支2.3 多分支3. 条件选择分支- switch4. 循环控制-for4.1 标准的for循环4.2 for 无限循环4.3 for 循环嵌套4.4 for-range 遍历5. 循环控制5.1 break5.2 continue6. 跳转1. 概述程序中的流程控制语句,用于设置程序的执行次序,体现程序执行流程的实现部...

2019-11-02 15:36:56 321

原创 Golang映射类型map

文章目录1. map概述2. map定义2.1 map 声明2.2 map初始化3. map 基本操作3.1 增 和 改3.2 删除3.3 查找4. map遍历4.1 简单map结构的遍历4.2 复杂map结构的遍历4.3 map的比较5. 补充点5.1 并发读写1. map概述Go语言中map字典类型时散列表(hash table)的实现,因为Go语言中将map中的每个键都看作与其对应元...

2019-11-02 15:33:27 691

原创 Golang切片slice

文章目录1. 关于切片的概述2. 创建切片2.1 切片的声明2.2 基于数组创建切片2.3 直接创建2.4 make()创建2.5 基于切片创建切片3. 对切片的操作3.1 对切片添加元素3.2 遍历切片3.3 删除切片中的元素3.5 切片复制1. 关于切片的概述切片slice是一个可变长度的序列,切片中的每个元素都是相同类型,我们可以将切片看做动态数组切片是引用类型,是对数组的引用...

2019-11-02 15:28:58 214

原创 Golang与数组

文章目录1. 数组概述2. 数组声明3. 数组初始化4. 数组遍历5. 数组使用说明1. 数组概述Go语言中 字符串 数组 切片 这三种数据类型在底层原始数据有着相同的内存结构,在上层因为语法的限制而有着不同的行为表象.数组是用来存放同一类型数据的并且具有固定长度的连续内存区域,使用时可以修改数组成员,但是不能改变数组的长度.数组是一种数据类型,在Go语言是中数组是值类型.数组的...

2019-11-02 15:25:04 244

原创 Golang与运算符

文章目录1. 算术运算符2. 赋值运算符3. 关系运算符4. 逻辑运算符5. 位运算符6. 其他运算符1. 算术运算符运算符描述示例结果+正数符号+9999-负数符号-99-99+加1+99100-减99-198*乘3*39/除99/333%取模9/21++自增var i = 2 ...

2019-11-02 15:21:57 1041

原创 Golang值类型和引用类型

Go语言数据的使用可以分为值类型和引用类型值类型包括 : 所有整型,所有浮点型,bool型,string型,数组和struct类型值类型的特点是变量直接存储值,内存通常在 栈(stack) 中分配引用类型包括:指针,slice,map,chan,interface引用类型的特点,变量存储的是一个地址,这个地址对应的空间才真正存储的数据,内存分配通常在 堆(heap) 上分配,...

2019-11-02 15:19:11 1420

原创 Golang与指针

文章目录1. 指针类型1. 指针类型指针就是存储变量内存地址的变量,指针也是一种变量,我们称之为指针变量声明一个 T 类型的指针,指针声明之后默认值都是nilpackage mainimport "fmt"func main() { // 声明一个int类型指针 var p *int // 声明一个string类型指针 var s *string // 声明一个...

2019-11-02 15:15:57 316

原创 Golang的基础数据类型

文章目录1. Go语言数据类型1.1 数据类型分类2. 布尔类型3. 整数类型3.1 查询某个变量的字节大小和数据类型3.2 如何证明int和int64不是同一种类型3.3 不同的整数类型不能比较4. 浮点型4.1 浮点数 = 符号位+指数位+尾数位4.2 浮点数都是有符号的4.3 float64 比float32准确4.4 浮点是强制转换5. 字符类型6. string类型6.1 补充1:基本...

2019-11-02 15:12:09 468

空空如也

空空如也

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

TA关注的人

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