在线客服系统源码开发实战总结:Golang的Gin框架整合实现session
在我的客服系统项目中,我使用的gin框架没有自带session功能,需要经过下面的整合处理 使用的是 github.com/gin-contrib/sessions 在我的tools包下 package tools import ( "github.com/gin-contrib/sessions" ...
Golang反射获取变量类型和值
1. 什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf 能获取类型信息reflect.Type; reflect.ValueOf 能获取数据的运行时表示reflect.Val ...
golang的jsonrpc客户端通用写法
服务端 package main import ( "errors" "fmt" "log" "net" "net/rpc" "net/rpc/jsonrpc" "os" ) // 算数运算结构体 type Arith struct { } // 算数运算请求结构体 type ArithReques ...
「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!
Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。 ...
一文带你快速入门 Go 语言微服务开发 - Dubbo Go 入门实践总结
更多详细示例可直接访问 Dubbo 官网 或搜索关注官方微信公众号:Apache Dubbo 1. 安装Go语言环境 建议使用最新版 go 1.17 go version >= go 1.15 【Go 语言官网下载地址】 将 $GOPATH/bin 加入环境变量 2. 安装序列化工具protoc 【 ...
《Go 语言并发之道》读书笔记(七)
今天这篇笔记我们来学习Go 限流 限流是分布式系统中经常需要用到的技术,因为我们让请求没有限制,很容易就出现某个用户开很多线程把我们的服务拉跨,进而影响到别的用户。 限流 我们来看下Go语言层面可以怎么做到限流,先看一段不限流的代码, type APIConnection struct{} func ...
《Go 语言并发之道》读书笔记(六)
今天这篇笔记我们来学习一下context包 context包的一个应用场景是可以通过它控制goroutine的取消,超时等。 我们先来看一个取消的例子 context.WithCancel func doSomething(ctx context.Context) { ctx, cancelctx ...
《Go 语言并发之道》读书笔记(五)
今天这篇笔记我们来记录Channel 和 Select, Go语言并发中Channel是goroutine传递数据的桥梁,是非常重要的一个工具。 定义Channel 双向Channel 要定义一个channel很简单,只需要在类型前面加上chan就可以了, stringStream := make( ...
Go语言SQL语句到结构体的转换命令行工具
学习:SQL 语句到结构体的转换 | Go 语言编程之旅 (eddycjy.com) 目标:SQL表转换为Go语言结构体 可以在线体验这个过程:SQL生成GO语言结构体 - 支持批量处理 (tl.beer) MySQL数据库中的表结构,本质上是SQL语句。 CREATE TABLE `USER`( ...
《Go 语言并发之道》读书笔记(四)
今天这篇笔记我们记录sync包下面的Cond,Once和Pool Cond cond就是条件,当条件不满足的时候等待Wait(),条件满足后,继续执行。 通过Signal()和Broadcast()来通知wait结束,继续执行。我们先来看一个Signal通知的例子 func main() { c : ...
OpenGL ES google angle
目录 一.google angle 简介 1.ANGLE 支持跨平台 2.ANGLE 支持渲染器 3.ANGLE 下载地址 二.EGL 坐标系 三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路 ...
《Go 语言并发之道》读书笔记(三)
今天这篇笔记我们来学习锁:互斥锁(Mutex) 和 读写锁(RWMutex) 互斥锁(Mutex) 首先我们来看一段代码,没有加锁的情况下,两个goroutine同时修改一个变量,会发生什么 func main() { var count int increment := func() { coun ...