![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
FZH_SYU
在这个时代,每个人怀揣着梦想,坚持地迈着步子走。这个时代,正因如此,才会愈发精彩。
展开
-
Golang批量更新数据操作
基础知识在现实的开发场景中,有许许多多的数据在入库之前,我们并不知道到数据库是否已经存在该数据,其实都会先查询一遍,若存在,则执行更新语句,否则执行插入语句。但是在SQL标准语句中,对于批量插入数据若存在则更新的语句实现方式有insert ... on duplicate key update ...针对批量插入或者更新的业务,我们可以实现拼接SQL语句来提高数据入库的效率。适用数据库类型 MySQL PostgresSQL SQLite 数据库适用框架原创 2021-10-11 19:01:04 · 3192 阅读 · 0 评论 -
Go语言分布式微服务系统
简介baby-fried-rice(宝宝煎米果,以下简称baby)是一套由Go语言开发,以用户中心、即时通信、用户空间三个模块为主的分布式微服务后台系统。使用了Gin作为Web框架,Gorm为连接数据库的ORM框架,JWT实现Token验证。服务之间的调用通过gRPC的方式进行,为了方便每个微服务的横向扩展,引入了ETCD作为服务注册中心。使用了NSQ作为消息队列转发消息,引入Redis做热点数据缓存。使用了七牛云云存储服务存储照片、文件等内容。业务内容如下图所示,服务整体包含六个部分,每个部分原创 2021-06-25 15:11:52 · 497 阅读 · 0 评论 -
Golang网络编程(一)Websocket编程
背景 在服务端与前端或者sdk端通过http进行数据交互的时候,常常会面临一些问题:比如在im场景下,前端需要主动push数据给服务端;比如在高并发场景下,sdk端请求服务端压力过大导致服务器文件句柄数不够前端无法继续请求、服务端开启goroutine过多内存消耗过大等问题;websocket是一种应用层通信协议,建立在TCP协议之上,具有数据格式轻量、通信双方均可以推送消息等特点。使用package ma原创 2021-05-19 10:17:23 · 400 阅读 · 0 评论 -
Golang库解析之mapstructure
mapstructure传送门package mainimport ( "encoding/json" "fmt" "github.com/mitchellh/mapstructure")type Demo struct { ID int `json:"id"` Name string `json:"name"`}func main() { var value = make(map[string]Demo) value["1"] = Demo{ ID: 1,原创 2021-05-12 14:18:40 · 1601 阅读 · 2 评论 -
Golang操作etcd实现服务发现
简介etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。etcd作为服务发现系统,有以下的特点:简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单安全:支持SSL证书验证快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作可靠:采用raft算法,实现分布式系统数据的可用性和一致性etcd项目地址:https://g原创 2020-08-20 15:52:23 · 2321 阅读 · 0 评论 -
Golang使用zipkin进行链路监控
准备工作docker运行zipkin服务一、对grpc服务进行监控关于Golang使用grpc的内容请转移到这边文章https://blog.csdn.net/feizaoSYUACM/article/details/106024127代码改造服务端const ( serviceName = "simple_zipkin_server" zipkinAddr = "http://127.0.0.1:9411/api/v1/spans" zipkinRec原创 2020-08-19 14:09:38 · 3380 阅读 · 0 评论 -
Golang使用grpc实战
1、准备工作获取google.golang.org/grpc包go get -u google.golang.org/grpc安装protobuf工具brew install protobuf获取github.com/golang/protobuf/protoc-gen-go包go get -u github.com/golang/protobuf/protoc-gen-go安装consulbrew install consul后台启动consulnohup原创 2020-05-09 17:28:25 · 1474 阅读 · 0 评论 -
Golang对Redis的常用操作
Redis操作package redisimport ( "fmt" "github.com/go-redis/redis" "time")type clientRedis struct { *redis.Client}/* 获取一个*redis.Client */func NewRds(addr, password string, DB, poolSize int...原创 2019-07-17 14:58:02 · 301 阅读 · 0 评论 -
Golang编写规范
Go语言编写规范声明空的slice应使用下面的格式var t []string/* 原因: var t []string 声明了一个nil slice t := []string{} 声明的是一个长度为0的非nil slice*/打印输出//错误字符串不应该大写,应该写成:fmt.Errorf("failed to write data")//而...原创 2019-07-17 14:56:01 · 265 阅读 · 0 评论 -
Go语言Web知识(一) 认识Gin框架
入门代码package mainimport "github.com/gin-gonic/gin"func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200,gin.H{ "message":"pong", }) }) r.Run(":8080")}...原创 2018-11-29 19:40:59 · 536 阅读 · 0 评论 -
Go语言基础知识(五) 函数 function
package mainimport ( "fmt")//单返回值func plus(a, b int) int { return a + b}//多返回值func multi() (string, int) { return "age is: ", 18}//定义变量多返回值func nameReturnValue() (name string, height...原创 2018-11-18 22:34:43 · 397 阅读 · 0 评论 -
Go语言基础知识(四) Map
package mainimport ( "fmt" "sync")/* Map实现的注意点 1、必须制定key, value的类型,插入的记录类型必须匹配; 2、key具有唯一性,插入记录的key不能重复; 3、KeyType可以为基础数据类型(例如bool,数字类型,字符串),不能为数组、切片、map,它的取值必须是能够使用==进行比较; 4、ValueTyp...原创 2018-11-18 22:32:24 · 241 阅读 · 0 评论 -
Go语言基础知识(三) 数组Array 切片 Slice
数组package mainimport "fmt"/* 数组的四种定义方法 1、 先声明 再循环赋值 2、 声明的同时赋值 并且指定数组大小 3、 声明的同时赋值 但用...来表示数组大小 4、 声明的同时只给某个位置赋值 其他部分值为初始值(即为0) 注意: 数组的长度大小必须固定,因为数组的长度也是数组比较的一部分,若数组的...原创 2018-11-18 22:30:37 · 332 阅读 · 0 评论 -
Go语言基础知识(二)基本知识梳理
Go简单介绍(补充)Go是编译型语言,Go的工具链将程序的源文件转变成机器相关的原生二进制指令,这些工具可以通过单一的go命令配合其子命令进行使用,Go原生支持Unicode,所以它可以处理所有国家的语言;包的认识(补充)fmt 包 其中的函数用来格式化输出和扫描输入,gofmt工具将代码以标准格式重写;os包 提供一些函数和变量,以与平台的方式和操作系统打交道;(接上)...原创 2018-11-04 23:36:29 · 426 阅读 · 0 评论 -
Go语言基础知识(一)简单入门
package main //第一行 定义了包名 必须在源文件中非注释的第一行指明这个文件属于哪个包;//注意:每个Go应用程序都包含一个名为main的包 import "fmt" //告诉Go编译器这个程序需要使用fmt包(的函数,或其他元素),其中fmt包实现了格式化IO的函数 /* func main()是程序开始执行的函数,main函数是每一个可执行程序所必须包含的;...原创 2018-10-28 18:27:19 · 515 阅读 · 0 评论