![](https://img-blog.csdnimg.cn/20200727223407109.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Golang
Golang专栏是我学习GoLang整理的一些常用工具类、学习教程等资料,希望能给Go社区的发展出一点绵薄之力,帮助更多的人加入Gopher大家庭。
ourLang
更多资料请点击我的个人网站www.lsdCloud.com
展开
-
数据加密方案
1 什么是数据加密1.1 数据加密的定义数据加密又称密码学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。数据加密目前仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。1.2 加密方式分类数据加密技术要求只有在指定的用户或网络下,才能解除密码而获得原来的数据,这就需要给数据发送方和接受方以一些特殊的信息用于加解密,这就是所谓的密钥。其密钥的值是从大量的随原创 2020-10-24 13:13:10 · 6205 阅读 · 4 评论 -
学习递归的一些总结
学习递归的一些总结1 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。通俗来说,递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。2 递归的基本原理每一级的函数调用都有自己的变量。每一次函数调用都会有一次返回。递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序。递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。虽然每一级递原创 2020-10-24 00:19:21 · 450 阅读 · 0 评论 -
golang中的字符串拼接
1 +拼接字符串由于golang中的字符串是不可变的类型,因此用 + 连接会产生一个新的字符串对效率有影响。这种方式实现的字符串拼接过程最简单,在实际中这种拼接方式在应对少量拼接时,效率还是不错的。s1 := "hello"s2 := "world"s3 := s1 + s2fmt.Print(s3) //s3 = "helloworld"2 sprintf函数使用sprintf函数,虽然不会像直接使用 + 那样产生临时字符串。但是效率也不高s1 := "hello"s2 := "wo原创 2020-08-16 12:19:29 · 11991 阅读 · 0 评论 -
CMD下执行Go出现中文乱码的解决方法
1、报错信息如下2、原因分析因为Go的编码是UTF-8,而CMD的活动页是cp936(GBK),因此产生乱码。在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者英文字符集。3、解决方法golang处理中文时默认是utf8,当遇到其他如GBK字符是就会出现乱码,此处介绍golang 官方golang.org/x/text/en原创 2020-07-23 16:52:59 · 19991 阅读 · 1 评论 -
go获取文件名和后缀
package mainimport ( "fmt" "path" "strings")func main() { fullFilename := "D:/software/Typora/bin/typora.exe" fmt.Println("fullFilename =", fullFilename) //获取文件名带后缀 filenameWithSuffix := path.Base(fullFilename) fmt.Println("filenameWithSuffix原创 2020-07-09 15:57:09 · 27963 阅读 · 0 评论 -
go用户中心kratos
用户中心kratoskratos介绍ORY Kratos是根据云架构最佳实践构建的API优先身份和用户管理系统。它实现了几乎每个软件应用程序都需要处理的核心用例:自助登录和注册:允许最终用户使用用户名/电子邮件和密码组合,社交登录(使用Google,GitHub登录),无密码流等创建和登录帐户(我们称其为idents)多重身份验证(MFA/2FA):支持协议,例如TOTP([RFC 6238](https://tools.ietf.org/html/rfc6238)和[ IETF RFC 42原创 2020-06-11 23:47:58 · 1954 阅读 · 0 评论 -
Ory keto
权限服务器ketoketo介绍ORY Keto是一种权限服务器,它实现最佳实践访问控制机制:今天可用:具有精确,全局和正则表达式匹配策略的ORY风格的访问控制策略即将推出:访问控制列表基于角色的访问控制具有上下文的基于角色的访问控制(Google / Kubernetes风格)Amazon Web Services身份和访问管理策略(AWS IAM策略)每种机制都由在开放策略代理之上实现的决策引擎提供动力,并提供定义明确的管理和授权端点1 代码下载keto源码地址下载官方文档原创 2020-06-11 23:42:13 · 1129 阅读 · 0 评论 -
ORY Hydra项目详解
Hydra项目介绍Hydra介绍ORY Hydra是经过强化,经过OpenID认证的OAuth 2.0服务器和OpenID Connect提供商,针对低延迟,高吞吐量和低资源消耗进行了优化。ORY Hydra 不是身份提供者(用户注册,用户登录,密码重置流程),而是通过登录和同意应用程序连接到您现有的身份提供者。以不同的语言实现登录和同意应用程序很容易,并且提供了示例性的同意应用程序(Go,Node)和 SDK。1 代码下载Hydra源码地址下载2 初始数据库2.1 编译项目成main.ex原创 2020-06-11 23:37:54 · 5582 阅读 · 1 评论 -
Go语言数组、切片去重
方法一、通过map键的唯一性去重(推荐)//通过map键的唯一性去重func RemoveRepeatedElement(s []int) []int { result := make([]int, 0) m := make(map[int]bool) //map的值不重要 for _, v := range s { if _, ok := m[v]; !ok { result = append(result, v) m[v] = true } } return resul原创 2020-05-17 16:35:13 · 26631 阅读 · 0 评论 -
Go 语言定时任务
1 安装依赖go get github.com/robfig/cron/v3@v3.0.02 定时任务HelloWorldpackage mainimport ( "fmt" "github.com/robfig/cron/v3" "time")func main() { // 新建一个定时任务对象 // 根据cron表达式进行时间调度,cron可以精确到秒,大部分表达...原创 2020-03-24 22:34:14 · 26009 阅读 · 0 评论 -
gorm时间格式化问题详解
说明在做项目时发现gorm的时间格式是带有时区输入输出的,对平常使用的2020-01-03 12:22:33格式有一定的出入,不方便前端和后端的对接,所以自己整理一下处理这个问题方法,方便大家参考代码如下//BaseModel 基础结构体 信息信息type BaseModel struct { CreateTime MyTime `gorm:"comment:'创建时间';type:ti...原创 2020-03-24 22:00:25 · 34766 阅读 · 0 评论 -
Iris框架
Iris框架介绍Iris 是基于Go编写的一个快速,简单但功能齐全且非常高效的Web框架。它为您的下一个网站或 API 提供了一个非常富有表现力且易于使用的基础,可以很高效地用于后台开发。Iris具有以下强大的特性:专注于高性能健壮的静态路由支持和通配符子域名支持视图系统支持超过5以上模板,完全兼容 html/template支持定制事件的高可扩展性Websocket API...原创 2020-02-07 14:05:36 · 24384 阅读 · 2 评论 -
go-swagger安装及使用
go-swagger安装及使用GO语言学习教程www.lsdcloud.comgo-swagger介绍go-swagger 为社区带来了一套完整的,功能齐全的高性能API组件,可与Swagger API一起使用:服务器,客户端和数据模型。根据标准规范生成服务器从摇摇欲坠的规范生成客户端支持jsonschema和swagger提供的大多数功能,包括多态从带注释的go代码中生成标准规...原创 2020-01-24 17:18:18 · 49361 阅读 · 0 评论 -
Go语言函数
Go语言函数GO语言学习教程www.lsdcloud.com1 函数定义Go语言中定义函数使用func关键字,函数的参数和返回值都是可选的,具体格式如下:func 函数名(参数)(返回值){ 函数体}函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。参数:参数由参数变量和参数变量的类型组成,多个参数之...原创 2020-01-23 17:06:59 · 22325 阅读 · 0 评论 -
Go语言指针
Go语言指针GO语言学习教程www.lsdcloud.com指针相关概念指针核心概念指针不能进行偏移和运算,是安全指针。切片,由指向起始元素的原始指针、元素数量和容量组成。内存描述我们在编程的时候,实际上就是在操作内存,除非是进行IO操作写磁盘。C语言课程是我大学的第一门编程语言课程,其中最难的部分就是指针,而指针就是直接操作内存的,所谓的C语言是最接近底层的语言,其中很重...原创 2020-01-23 17:03:58 · 22553 阅读 · 0 评论 -
Go语言基础之map
Go语言基础之mapGO语言学习教程www.lsdcloud.com概述map是基于key-value键值对的无序的集合Go语言中的map是引用类型必须初始化才能使用。map定义map[KeyType]ValueTypeKeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语...原创 2020-01-23 13:03:39 · 22323 阅读 · 0 评论 -
Go语言基础之切片
Go语言基础之切片切片(slice)它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。是对数组的一个连续片段的引用,所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型),这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。Go语言中切片的内部结构包含地址、大小和容量,切片一...原创 2020-01-23 13:02:12 · 21592 阅读 · 0 评论 -
Go语言数组
Go语言数组GO语言学习教程www.lsdcloud.com1 概述固定长度,数组声明后长度便不能再修改只能存储一种特定类型元素的序列2 语法编号方式代码示例1直接声明var arr [3]int2makearr:=make([]int,3)3字面量arr:=[3]int{1,2,3}4自动识别长度arr:=[…]int{1...原创 2020-01-23 12:57:27 · 18824 阅读 · 0 评论 -
Go语言条件语句
Go语言条件语句GO语言学习教程www.lsdcloud.com1 程序的流程结构程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。顺序结构:从上向下,逐行执行。选择结构:条件满足,某些代码才会执行。0-1次分支语句:if,switch,select循环结构:条件满足,某些代码会被反复的执行多次。0-N次循环语句:for2 条件语句2.1 If语句语法格式:...原创 2020-01-23 12:49:33 · 22285 阅读 · 0 评论 -
Go语言运算符
Go语言运算符GO语言学习教程www.lsdcloud.com运算符用于在程序运行时执行数学或逻辑运算。Go 语言内置的运算符有:算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符1 算术运算符+ - * / %(求余) ++ --下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。运算符描述实例+相加A +...原创 2020-01-23 12:48:19 · 4946 阅读 · 0 评论 -
Go语言常量
Go语言常量GO语言学习教程www.lsdcloud.com相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。声明了pi和e这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。const pi = 3.1415const e = 2.7182多个常量也可以一起声明...原创 2020-01-23 12:47:22 · 174 阅读 · 0 评论 -
Go语言变量
Go语言变量GO语言学习教程www.lsdcloud.com1 标识符与关键字标识符在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。关键字关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名...原创 2020-01-23 12:45:42 · 8977 阅读 · 1 评论 -
Go语言数据类型
Go语言数据类型Go 语言按类别有以下几种数据类型:数据类型描述布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。数字类型整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。字符串类型字符串就是一串固定长度的字符连接起来...原创 2020-01-23 12:42:53 · 22388 阅读 · 0 评论 -
第一个Go程序Hello World
第一个Go程序Hello WorldGO语言学习教程www.lsdcloud.com现在我们来创建第一个Go项目——hello。在我们的GOPATH下的src目录中创建hello目录。1 用Goland打开hello目录2 新建helloworld.go文件3 在文件输入以下代码package mainimport "fmt"func main() { fmt.Prin...原创 2020-01-23 12:40:52 · 22220 阅读 · 0 评论