RPC协议实践入门

RPC 是什么 RPC(Remote Procedure Call) 是一个计算机通信协议。该协议允许运行与一台计算机的程序调用另一个地址空间的程序,是一个通过发送请求-接受回应进行信息交互的系统。 RPC 的规则 RPC 方法需要为公有,同时有两个可序列化参数,第二个为引用类型(response ... »

Go语言有序遍历map的方法

问题 Go语言的Map是无序遍历的,遍历一个map代码如下 package main import ( "fmt" ) func main() { m := map[string]int{"Apple": 20, "Tomato": 12, "Banana": 18} for k, v := ran ... »

Go之发送钉钉和邮箱

smtp发送邮件 群发两个邮箱,一个163,一个QQ package main import ( "fmt" "net/smtp" "strings" ) const ( HOST = "smtp.163.com" SERVER_ADDR = "smtp.163.com:25" USER = "xx ... »

Dapr Golang HTTP 调用

Dapr Golang HTTP 调用 版本介绍 Go 版本:1.15 Dapr Go SKD 版本:0.11.1 工程结构 从上图可知,新建 3 个 Go 启动项目,cmd 为启动项目目录,其中 client/a/main.go 为客户端,用于调用服务。service/http/b、service ... »

理解内存对齐

原文地址: https://blog.fanscore.cn/p/24/ 相信大家都听说过内存对齐的概念,不过这里还是通过一个现象来引出本篇话题。 一、求一个结构体的size 猜下下面这个结构体会占用多少字节 type S struct { B byte // Go中一个byte占1字节,int32 ... »

01 . Go语言的SSH远程终端及WebSocket

Crypto/ssh简介 使用 下载 go get "github.com/mitchellh/go-homedir" go get "golang.org/x/crypto/ssh" 使用密码认证连接 连接包含了认证,可以使用password或者sshkey 两种方式认证,下面采用密码认证方式完成 ... »

Go语言中的互斥锁和读写锁(Mutex和RWMutex)

虽然Go语言提供channel来保证协程的通信,但是某些场景用锁来显示保证协程的安全更清晰易懂 Go语言中主要有两种锁,互斥锁Mutex和读写锁RWMutex,下面分别介绍一下使用方法,以及出现死锁的常见场景。 一、Mutex(互斥锁) Mutex是互斥锁的意思,也叫排他锁,同一时刻一段代码只能被一 ... »

04 . Go+Vue开发一个线上外卖应用(用户名密码和图形验证码)

图形化验证码生成和验证 功能介绍 在使用用户名和密码登录功能时,需要填写验证码,验证码是以图形化的方式进行获取和展示的。 验证码使用原理 验证码的使用流程和原理为:在服务器端负责生成图形化验证码,并以数据流的形式供前端访问获取,同时将生成的验证码存储到全局的缓存中,在本案例中,我们使用redis作为 ... »

Go语言的互斥锁Mutex

一、使用方法 Mutext是互斥锁的意思,也叫排他锁,同一时刻一段代码只能被一个线程运行,两个方法Lock(加锁)和Unlock(解锁) func main() { var count = 0 var wg sync.WaitGroup //十个协程数量 n := 10 wg.Add(n) for ... »

03 . Gin+Vue开发一个线上外卖应用(用户数据创建,插入,跨域处理)

功能和背景介绍 在项目的登录功能中,如果在登录时发现用户名和密码在用户表中不存在,会自动将用户名和密码保存在用户表中,创建一个新的用户。 因此,除了使用手机号和验证码登录以外,还支持使用用户名、密码进行登录。 如果首次使用手机号和验证码进行登录,会默认将手机号作为用户名创建新的用户,将用户结构体对象 ... »

Go--关于 goroutine、channel

Go--关于 goroutine、channel goroutine 协程是一种轻量化的线程,由Go编译器进行优化。 Go协程具有以下特点: 有独立的栈空间 共享程序堆中的空间 调度由用户控制 如果主线程main函数(主 goroutine或者main goroutine)返回或者退出时,即使所有协 ... »

02 . 02 . Go之Gin+Vue开发一个线上外卖应用(集成第三方发送短信和xorm生成存储数据库表)

集成第三方发送短信 介绍 用户登录 用户登录有两种方式: 短信登录,密码登录 短信登录是使用手机号和验证码进行登录 短信平台 很多云平台,比如阿里云,腾讯云,七牛云等云厂商,向程序开发者提供了短信验证码套餐服务。借助云平台的短信服务,程序开发者可以非常简单方便的将短信服务集成到自己的程序中。 我们以 ... »

01 . Go之Gin+Vue开发一个线上外卖应用

项目介绍 我们将开始使用Gin框架开发一个api项目,我们起名为:云餐厅。如同饿了么,美团外卖等生活服务类应用一样,云餐厅是一个线上的外卖应用,应用的用户可以在线浏览商家,商品并下单。 该项目分为客户端和服务端两端程序。 1、客户端程序通过接口从服务端获取数据,获取结果后展示数据。 2、服务端程序提 ... »

03 . Go框架之Gin框架从入门到熟悉(Cookie和Session,数据库操作)

Cookie Cookie是什么 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出 Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思 Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向 ... »

01 . Go框架之Gin框架从入门到熟悉(路由和上传文件)

Gin框架简介 Gin是使用Go/Golang语言实现的HTTP Web框架, 接口简洁, 性能极高,截止1.4.0版本,包含测试代码,仅14K, 其中测试代码9K, 也就是说测试源码仅5k左右, 具有类似Martini的API, 性能更高-快40倍. Gin特性 /* 快速: 路由不使用反射,基于 ... »

Go之NSQ简介,原理和使用

NSQ简介 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。它具有分布式和去中心化拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征 适合小型项目使用 ... »

一篇理解什么是CanSet, CanAddr?

什么是可设置( CanSet ) 首先需要先明确下,可设置是针对 reflect.Value 的。普通的变量要转变成为 reflect.Value 需要先使用 reflect.ValueOf() 来进行转化。 那么为什么要有这么一个“可设置”的方法呢?比如下面这个例子: var x float64 ... »

collection v1.3.1升级全记录

collection v1.3.1升级全记录 项目地址: https://github.com/jianfengye/collection 欢迎star。 collection 手册地址: http://collection.funaio.cn/ collection库升级到v1.3.1版本。 从v ... »