自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

无风的雨

坚持但不盲目

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

原创 开源后台管理系统 (go-vue-admin)

前端采用vue3、RuoYi-Vue3后端采用gofrome 框架、mysql、redis、Jwt实现了一键生成前后端代码,高效开发。

2023-10-01 20:50:06 1590

原创 Go channel 实现原理分析

前言channel一个类型管道,通过它可以在goroutine之间发送和接收消息。它是Golang在语言层面提供的goroutine间的通信方式。众所周知,Go依赖于称为CSP(Communicating Sequential Processes)的并发模型,通过Channel实现这种同步模式。Go并发的核心哲学是不要通过共享内存进行通信; 相反,通过沟通分享记忆。下面以简单的示例来演示Go...

2019-05-14 10:31:48 8834 3

原创 golang开发笔记

golang 开发笔记1.Go环境配置1.1 go安装1.2 目录结构1.3 Go命令1.4 工具2 语言基础2.1 hello word!项目地址:https://github.com/guyan0319/golang_development_notes参考资料:https://golang.org/doc/...

2018-11-23 11:13:11 787

原创 Go切片排序

Go 语言标准库提供了sort包,用于对切片和用户定义的集合进行排序。

2022-11-04 14:58:53 2409 1

原创 Go语言sync.Map

Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。

2022-10-27 21:09:50 1801

原创 Go-map、切片、数组循环常见问题总结

开发人员在日常开发中经常会遇到for range循环需求,因其类型的特殊性,用起来有别于其他语言,需要注意,这里对map、切片、数组循环遇到常见问题进行整理。### map1、for range map 在开始执行循环的时候,底层做了随机种子,故其循环是随机的。

2022-10-26 16:09:07 817

原创 Go xml文件处理

在开发中会常遇到xml数据序列化和反序列化,这里我们介绍go语言处理xml数据。encoding/xml 包实现了一个简单的xml 1.0解析器,可以理解xml名称空间。读取xml示例:package mainimport ( "encoding/xml" "fmt")type Note struct { XMLName xml.Name `xml:"note"` To string `xml:"to"` From string `xml:"from"` Heading st

2022-03-15 13:46:58 1011

原创 go操作elasticsearch示例

这里我使用elasticsearch官方给的go语言包(go-elasticsearch)go-elasticsearch向前兼容,这意味着客户端支持与更大或同等次要版本的 Elasticsearch 通信。Elasticsearch 语言客户端仅向后兼容默认发行版,不提供任何保证。包:https://github.com/elastic/go-elasticsearchElasticsearch: 权威指南:https://www.elastic.co/guide/cn/elasticsea

2021-10-28 17:03:16 2030

原创 Go 操作kafka包sarama

概述sarama 是一个纯 Go 客户端库,用于处理 Apache Kafka(0.8 及更高版本)。它包括一个用于轻松生成和使用消息的高级 API,以及一个用于在高级 API 不足时控制线路上的字节的低级 API。在github上stars上比较多(推荐)。开源包:https://github.com/Shopify/sarama文档地址:https://pkg.go.dev/github.com/shopify/sarama闲话少叙,上示例package mainimport (

2021-10-16 14:23:56 2144

原创 Go之time包用法

time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。time 类型type Time struct {// wall and ext encode the wall time seconds, wall time nanoseconds,// and optional monotonic clock reading in nanoseconds.//// From high to low bit position, wall encodes a 1-bit flag (hasMon

2021-09-23 15:32:48 328

原创 go-websocket 分布式IM

基于golang实现的分布式聊天系统,支持一对一聊天,聊天室等功能。为了测试方便发送消息数据暂未存入数据库,后期会加入数据库,也可自行加入数据库,方便永久存储聊天内容,以及支持消息必达等功能。依赖包github.com/go-redis/redisgithub.com/gin-gonic/gingithub.com/gorilla/websocketgithub.com/smallnest/rpcx包说明:redis :用于缓存ws服务器信息,用心跳形式维护ws服务器信息。gin:实现we

2021-05-26 16:41:53 777

原创 Go语言 orm库之gorm

5.3 Go语言 orm库之gormGORM是一个比较流行且功能齐全的orm库,主要有以下特性全功能 ORM关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)Create,Save,Update,Delete,Find 中钩子方法支持 Preload、Joins 的预加载事务,嵌套事务,Save Point,Rollback To Saved PointContext,预编译模式,DryRun 模式批量插入,FindInBatche

2020-12-02 14:29:12 3022

原创 Golang 操作Excel文件

日常开发中会遇到处理Excel文件的相关操作,这里推荐一款应用比较广泛的操作Excel的开源工具Excelize。Excelize是一个用Go语言编写的库,提供了一组允许您写入和读取XLSX / XLSM / XLTM文件的功能。支持读写由Microsoft Excel™2007和更高版本生成的电子表格文档。通过高度兼容性支持复杂的组件,并提供了流式API,用于从工作表中生成或读取包含大量数据的数据。该库需要Go版本1.10或更高版本。可以使用go的内置文档工具查看完整的API文档,也可以在go.dev和

2020-10-23 22:51:35 2085

原创 Go 加密解密算法总结

前言加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式”和”数字签名“。对称式:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。具体算法主要有DES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。具体算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。数字签名:数字签名是非对称密钥加密技术与数字摘要技术的应用。主要算

2020-09-23 14:53:39 2891 2

原创 Go 中文和unicode字符之间转换

Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。在实际应用有很多需要中文和unicode转换的场景,这里主要介绍通过golang实现中文和unicode互相转换。1、中文转unicode这一步比较简单示例 sText := "hello 你好" textQuoted := strconv.QuoteToASCII(sText) textUnquoted := textQuoted[1

2020-09-18 10:47:02 7412

原创 解决github下载慢的问题

前言github对于从事技术的同学并不陌生,在日常使用的过程中经常遇到众所周知的原因,一些优秀项目无法下载或下载奇慢无比。这里给大家几个比较靠谱的解决办法:1、通过国内的开源项目平台码云(https://gitee.com/)码云镜像了很多github上的优秀项目,大家可以通过在码云上搜索你想下载项目的关键词找到,再通过码云clone。这里以opencv为例解决github下载慢的问题2、GitHub代下载服务(http://gitd.cc/)解决github下载慢的问题输入你想下载项

2020-08-22 22:13:49 365

原创 gin websocket 一对一聊天

依赖包github.com/gin-gonic/gingithub.com/gorilla/websocket代码创建ws/ws.gopackage wsimport ( "encoding/json" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "log" "net/http")// ClientManager is a websocket managertype ClientManager stru

2020-08-11 16:06:57 3395

原创 Golang之rpc框架rpcx

前言远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。通过该协议程序员可以实现像调取本地函数一样,调取远程服务的函数。这里介绍一个高效的rpc库(rpcx)。rpcx 是一个分布式的Go语言的 RPC 框架,支持Zookepper、etcd、consul多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一。官方资料:https://books.studygolang.com/go-rpc-programming-guide/项目:ht

2020-07-21 18:29:30 5306

原创 Centos8 下安装最新 OpenCV4.3

前言OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。安装centos8可以通过两种方式安装opencvdnf方式安装一种通过dnf方式安装,这种方式安装简单,版本为3.4.1,版本较低但稳定。dnf inst

2020-07-11 16:26:11 2832 5

原创 golang image: unknown format 错误解决

当使用image.Decode处理图片文件时,如报image: unknown format 错误。示例package mainimport ( "fmt" "image" "os")func main() { imagePath := "./mm.jpg" file, _ := os.Open(imagePath) defer file.Close() img, _, err := image.Decode(file) if err != nil { fmt.Print

2020-07-07 15:24:06 9948 4

原创 Go1.14版本 新特性

简介最新的 Go 版本 1.14 在 Go 1.13 之后六个月到达。它的主要更改是工具链、运行时和库的实现。该版本一如既往保持 Go 1的兼容性承诺。我们预计几乎所有的 Go 程序都能够继续编译和运行。Go Module已经具备生产环境中使用条件了,我们鼓励所有用户迁移到Go Module进行依赖项管理。如果您由于 Go 工具链中的问题而无法迁移,请确保问题已提交 open issue(如果问题不在go``Go1.15,请让我们知道为什么它阻止您迁移,以便我们可以适当地确定其优先级。语言更改根据重

2020-07-03 14:15:19 1937

原创 vue-element-admin 上传upload图片慢问题处理

前言vue-element-admin自带上传图片组件,在使用的过程中发现上传速度很慢,尤其是上传一些大图需要耗时几十秒不能忍受。出现这种情况,是因为upload组件会将图片上传到action="https://httpbin.org/post" ,并返回转换成base64编码格式的数据。格式类似:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYG

2020-06-20 16:35:59 6022 1

原创 nginx优化https(ocsp)

当用户使用客户端或其他的设备访问https网站时,需要先验证https证书,验证方式有两种:1.证书颁发机构(ca)的证书吊销列表(CRL),CRL列出被认为不能再使用的证书的序列号。客户端通过访问CRL来验证网站证书是否有效。2.在线证书状态协议(ocsp),其OCSP查询地址是http://ocsp.int-x3.letsencrypt.org/,浏览器需要发送请求到这个地址来验证证书状态。在线证书状态协议(OCSP)克服了证书注销列表(CRL)的主要缺陷:必须经常在客户端下载以确保列表的更新。当

2020-06-18 15:49:34 2163

原创 golang 单点登录系统(go-sso)

这是一个基于Go语言开发的单点登录系统,实现手机号注册、手机号+验证码登录、手机号+密码登录、账号登出等功能,用户认证采用cookie和jwt两种方式。收发短信相关方法已提供,仅需根据短信通道提供商提供的接口做相应的参数配置即可使用。环境介绍golang语言:go1.13.3+ 、数据库:mysql5.7缓存:redis3.0项目地址https://github.com/guyan0319/go-sso依赖包:github.com/dgrijalva/jwt-gogithub.com/gi

2020-06-11 22:00:49 6867 1

原创 golang之JWT实现

什么是JSON Web Token?JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON方式安全地传输信息。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对对JWT进行签名。直白的讲jwt就是一种用户认证(区别于session、cookie)的解决方案。出现的背景众所周知,在jwt出现之前,我们已经有session、cookie来解决用户登录等认证问题

2020-05-30 23:53:22 2054

原创 golang之数据验证validator

前言在web应用中经常会遇到数据验证问题,普通的验证方法比较繁琐,这里介绍一个使用比较多的包validator。原理将验证规则写在struct对字段tag里,再通过反射(reflect)获取struct的tag,实现数据验证。安装go get github.com/go-playground/validator/v10示例package mainimport ( "fmt"...

2020-05-04 15:50:44 22294 7

原创 vue-element-admin 后台动态加载菜单

前言做后台项目,权限验证与安全性是非常重要的,vue-element-admin官方主要介绍了前端控制用户菜单加载显示,以及权限控制。这就带来一些不便,服务端无法(这里可能说的绝对了,起码实现起来不太友好)控制菜单的动态展示,用户权限跟菜单相互关系的绑定。这里我们通过分析go-admin 代码来让大家一步步了解如何实现服务端控制前端菜单的展示的。项目地址:github:https://g...

2020-03-03 14:47:43 25330 14

原创 go-admin 开源后台管理系统

go-admin是一个go语言开发的后台管理系统,该系统以角色为基础的权限管理设计(RBAC),完成了系统管理模块功能的开发(其他示例模块后续加上),采用前后端分离实现方式,服务端基于go开源gin框架,前端开源框架vue-element-admin。设计原则采用比较流行开源框架gin、vue-element-admin,这些项目维护和更新比较好。尽量少修改vue-element-admi...

2020-01-23 09:27:04 20194 8

原创 gin集成swagger构建api文档

官方文档gin-swaggerswagger-doc具体步骤如下:安装 swaggo get github.com/swaggo/swag/cmd/swag一般安装比较慢,这里我先安装了go mod 借助https://goproxy.cn 代理,安装很快。当然,你会科学上网也可以。安装gin-swaggergo get -u github.com/swaggo/gin-sw...

2019-11-27 20:46:29 2115

原创 Golang 跨域

跨域指的是浏览器不能执行其他网站或域名下的脚本。之所以形成跨域,是因为浏览器的同源策略造成的,是浏览器对javascript程序做的安全限制,现在所有支持JavaScript 的浏览器都会使用这个策略。在实际应用中会遇到需要跨域的场景,比如前后端分离,前后端不在同域(这里的同域指的是同一协议,同一域名,同一端口),那么,它们之间相互通信如何解决呢?跨域解决有以下几种方法:jsonp跨域这里...

2019-10-31 14:28:56 1721

原创 Go 三个点(...)用法

众所周知,Go语言是严格类型语言,而开发的时候又遇到传入参数不定的情况,怎么办?这里的三个点(…),就给我们编程人员带来很大的灵活性,具体如下函数可变数量参数可参考https://github.com/guyan0319/golang_development_notes/blob/master/zh/9.1.md示例package mainimport "fmt"func mai...

2019-10-10 14:18:27 3596

原创 Go 之 interface接口理解

go语言并没有面向对象的相关概念,go语言提到的接口和java、c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。interface是go语言的一大特性,主要有以下几个特点:interface 是方法或行为声明的集合interface接口方式实现比较隐性,任何类型的对象实现interfac...

2019-10-08 17:33:42 345

原创 GO 依赖管理工具go Modules(官方推荐)

以前写过一篇关于go管理依赖包工具 dep的文章,当时认为dep将会成为官方依赖工具,现在看来是自己图样图斯内幕破了,正如官方一直提到dep是“official experiment”官方实验项目的那样,随着go modules 在go1.11版推出,go1.12版功能不断改进,再到go1.13版完善优化,正式扶正。预计dep将来也只能定格在“official experiment”了。Go M...

2019-09-30 17:54:43 17196 2

原创 layui省市区三级联动插件

这个是一个layui省市区三级联动插件,近来使用layui后台模板框架开发后台系统,要用到省市县/区三级联动,本想从网上找个现成的轮子,然没有自己想要的需求,就自己造了个。本插件实现省市区相应数据通过ajax动态从服务端加载数据,省市区数据结构key-value形式。html示例:<html> <head> <meta http-equiv="Conten...

2019-09-04 10:34:18 4621

原创 Golang 下载文件

7.11 Golang 下载文件这里使用net/http下载文件,可以设置Content-Type(具体参考)告诉客户端返回的内容类型实际上是什么,实现不同方式的文件的下载。示例package mainimport ( "fmt" "io/ioutil" "net/http" "net/url" "os")func main() { http.HandleFunc("/...

2019-08-27 15:50:09 2716

原创 微信小程序发送模板消息

微信小程序还提供了给客服发送模板消息的功能,以便商家给客户发送通知。官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html使用效果具体步骤1、设置模板登录 https://mp.weixin.qq.com/“功能”-“模板消息”-“模板库”这...

2019-08-27 10:34:13 1023

原创 微信小程序客服消息功能 php

项目说明:本项目是一个简单微信小程序客服消息类,实现客服消息相关功能。官方给的php示例有误,这里就不再吐槽了。本示例是采用开发者服务器,没有采用云调用的形式。官方文档:客服消息指南客服消息服务端适用场景[外链图片转存失败(img-h5s090a6-1565421543066)(https://raw.githubusercontent.com/guyan0319/xcx-msg/m...

2019-08-10 15:20:53 2087

原创 导出mysql表结构生成grpc需要的proto文件工具

使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具。工具的使用很简单,需要简单的配置,即可运行生成proto文件。项目地址:https://github.com/guyan0319/mysql-to-proto使用说明:func main() { //模板文件存放路径 tpl...

2019-08-03 18:39:36 930

原创 Golang不同类型比较

在日常开发过程中难免会遇到各个类型的变量的比较以及运算操作,这里我们做了一些简单的汇总,希望能给各位同学在开发中带来帮助。这里先上一波关系运算符==,!=,<,<=,> 和 >=。float浮点数比较golang 支持两种浮点float32和float64,众所众知,涉及浮点数比较或运算是会遇到精度问题,具体要根据golang实现IEEE 754的情况定。默认情况下...

2019-07-29 16:03:37 3220

原创 Go socket实现多语言间通信

前言socket提供了在传输层进行网络编程的方法,它比基于http协议的接口传输更高效,RPC(Remote Procedure Call)是远程过程调用,常用于分布式系统等,而rpc很多是基于socket实现的。不了解socket、http等协议请阅读https://blog.csdn.net/guyan0319/article/details/79404216。Socket 都可以用“打...

2019-06-27 22:08:11 1011

空空如也

空空如也

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

TA关注的人

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