自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (1)
  • 收藏
  • 关注

原创 golang的goroutine调度模型

goroutine调度

2022-09-16 00:54:48 300 1

原创 docker compose快速入门

docker compose快速入门docker compose 简单理解就是一件管理多个相关联的docker容器的工具例子使用技术golang+gin+redigo+redis拉取redis镜像docker pull redisgo web 服务端package mainimport ( "log" "net/http" "time" "github.com/gin-gonic/gin" "github.com/gomodule/redigo/redis")v

2022-03-10 12:07:16 180 1

原创 golang的dockerfile简单模板

golang的dockerfile简单模板#使用golang镜像的版本FROM golang:alpine # 环境变量,linux系统下的环境配置# 注意要设置或内代理,否则可能编译不过ENV GO111MODULE=on \ GOPROXY=https://goproxy.cn\ CGO_ENABLED=0 \ GOOS=linux \ GOARCH=amd64# 移动到工作目录:/workdirWORKDIR /workdir# 将代码复制到容器

2022-03-07 15:57:21 1094 1

原创 GRPC的golang快速入门

GRPC的golang快速入门GRPC的安装grpc的官网grpc.iogo install google.golang.org/protobuf/cmd/protoc-gen-go@v1.26go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1执行完上面两条命令后,gopath的bin目录下会出现两个执行文件protoc-gen-go.exe和protoc-gen-go-grpc.exe还需要安装proto.exe,安装地

2022-03-04 16:41:13 339

原创 个人喜欢的GORM的使用方式(mysql)

个人喜欢的GORM的使用方式(mysql)准备工作导包go get -u github.com/jinzhu/gormimport( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")连接MySQL//用户名:密码@(连接地址)/数据库名?连接设置db, err := gorm.Open("mysql", "root:123456@(192.168.56.129:3307)/docker3

2021-12-31 17:06:15 586

原创 golang实现MySQL操作

golang实现MySQL操作golang有操作sql语句的标准库database/sql,但是蛋疼的是它没有MySQL相关的数据库驱动。要连接MySQL数据库,需要引入MySQL数据库驱动引入数据库驱动$ go get -u github.com/go-sql-driver/mysql//引用MySQL驱动improt _"github.com/go-sql-driver/mysql"连接MySQL数据库import ( "database/sql" "time" _ "githu

2021-10-29 17:02:24 192

原创 goalng学习-embed包

goalng学习-embed包embed包是go1.16版本中新增加的包。通过//go:embed指令,快速将静态文件打包进编译好的程序中。impor ( _"embed" "fmt")//go:embed readme.txtvar readmestring stringfunc main(){ fmt.Println(readmestring)}注意第一行的//go:embed readme.txt不是注释,而是指令//go:embed,不能删除注意:rea

2021-10-18 11:14:16 134

原创 docker学习笔记

docker学习笔记CentOs安装docker官方安装教程照着步骤复制粘贴命令即可菜鸟教程安装教程官网安装教程可能较慢,菜鸟教程有国内镜像源安装教程docker镜像加速由于国内网络环境,docker连接官网速度较慢,可以选择国内镜像加速菜鸟教程镜像加速教程启动docker服务CentOS7下启动systemctl start dockerdocker命令使用镜像获取镜像docker pull 容器名一般默认拉取最新版本的镜像,向拉取指定版本的镜像,可以登录docker官

2021-09-03 17:31:55 74

原创 golang哈希加密加盐

golang哈希加密加盐func HashSalt(str,salt string)string{ //md5加密 m := md5.New() io.WriterString(m,str) //加盐 io.WriterString(m,salt) return fmt.Sprintf("%x",m.Sum(nil))}

2021-08-14 12:22:26 1253 1

原创 goalng 实现base64编码

goalng 实现base64编码Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法golang中有专门实现base64编码解码的标准包:encoding/base64encoding/base64包的常用变量://RFC 4648定义的标准base64编码字符集。var StdEncoding = NewEncoding(encodeStd) //RFC 4648定义的另一base64编码字符集,用于URL和文件名。

2021-08-06 17:10:38 294

原创 Linux学习笔记

Linux学习笔记shell基本命令显示当前路径:pwd查看文本文件:cat more两者区别:cat一次性显示完所有内容,more一页一页显示查看文件:less与more类似,更像文本编辑器(没有文本编辑功能)查找文件指定内容:grep格式:grep 指定内容 查找的文件注意查找的内容有空格的话,需要单引号查找文件:find格式:find 路径 表达式文件目录管理创建目录:mkdir创建文件:touch移动、重命名:mv (默认覆盖同名文件)

2021-07-06 23:31:24 83 1

原创 个人笔记-MySQL

个人笔记-MySQL学生表:student字段名字段类型备注idint学生idnamevarchar(8)学生姓名sexvarchar(2)学生性别classint学生班级scoreint学生分数教师表:teacher字段名字段类型备注idint教师idnamevarchar(8)教师姓名classint教师班级班级表:class字段名字段类型备注idi

2021-06-21 14:03:26 90

原创 个人笔记-golang读取ini配置文件

读取ini文件这里采用第三方包来实现 go get gopkg.in/ini.v1GitHub源码ini文件格式[myini]key1 = "value"key2 = 10读取ini文件内容func readini(){ conf, err := ini.Load("./readme.ini") if err != nil { fmt.Println(err) return } key1 := conf.Section("myini").Key("key1").V

2021-06-17 12:24:57 169

原创 个人笔记-判断字符串是否为纯数字

判断字符串是否为纯数字//方法一,将字符串转为int64类型,不能成功则不是纯数字func isNum1(s string)bool{ _,err := strconv.ParseFloat(s,64) if err != nil{ return false } return true}//方法二,利用正则匹配进行判断func isNum(s string)bool{ //正则匹配 \D+匹配非数字 //这里不能使用 \d+匹配数字

2021-06-17 09:52:20 2730

原创 golang排序字符串的内容

golang排序字符串的内容有字符串 s=“2531”,将其按照升序排列成s1 = “1,2,3,5”我想到的解决办法是先将字符串s转换为rune切片,再通过ASCII码值进行排序在golang中rune为int32的别名func buf(s tring)string{ ss := make([]string, 0) w := []rune(s) //冒泡排序,升序降序都可以 for i := 0;i<len(w)-1; i++{ for j :

2021-06-09 09:17:22 902

原创 Redigo简单实现Redis订阅发布

var wg sync.WaitGroupfunc Subscribe (){ defer wg.Done() conn,err := Redis.Dail("tcp","127.0.0.1;6379") if err!= nil{ fmt.Println("Redis.Dail err:",err) return } defer conn.Close() //实例化一个redigo中的PubSubConn结构体 c := Redis.PubSubConn{ Conn:

2021-03-19 17:00:58 223

原创 gin学习笔记-基础1

HTTP常见请求:GET:客户端向服务端发起获取数据的请求POST:客户端向服务端提交数据,文件PUT:类似POST,不同的是PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定DELECT:向服务器请求删除数据HEAD:本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否可以可达、检查网页是否被串改或更新,获取头信息等,特别适用在有限的速度和带宽下func main(){ r := gin.Defaul

2021-01-30 21:38:45 111

原创 Redis学习笔记-常用命令

全局命令:删除keydel key序列化keydump key检查key是否存在exists key设置key过期时间expire key second查看key的类型type key修改key名字rename key仅当newkey不存在时,将key改为newkeyrenamenx key newkeystring字符串命令8. 设置key的值set key value同时设置多个key的值mset key1 value

2021-01-25 20:57:36 99

原创 redis学习笔记-Linux版安装与配置

Redis:完全开源的。遵守BSD协议、高性能的key-value数据库,远程字典服务。Redis的优势:性能极高,读写速度极高。有丰富的数据类型。操作原子性,即要么成功执行,要么失败完全不执行。丰富的特性,支持pubish/subscribe通知,key过期等特性Redis默认有16个数据库Redis的Linux安装:Redis官方下载网址准备工作,如果Linux没有安装有wget,先下载安装wgetyum -y install wgetredis是由C语言编写的,Linux中

2021-01-24 19:53:11 52

原创 Mysql学习笔记-常用命令行

mysql命令大全简单总结连接本地MySQLmysql -u root -p连接远程主机MySQLmysql -h 192.1.1.1 -u root -p改root密码mysqladmin -u root -p 旧密码 password 新密码;新增用户create user newuser identified by 密码;创建数据库craete database newdt;显示数据库show databases;删除数据库drop

2020-12-18 15:41:49 91

原创 Git学习笔记-Git简单命令及Gitee简单使用

Git:是是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git和SVN的区别1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。4、Git 没有一个全局的版本

2020-12-17 17:30:07 204 1

原创 Go语言学习笔记-网络编程

TCP:一种面向连接的,科考的,基于字节流的传输层通信协议UDP:用户数据协议,不需要建立连接进行数据发送和接收,属于不可靠的,没有时序的通信Go语言TCP服务端程序处理流程:监听端口接受客户端请求,建立链接创建goroutine处理链接监听端口listen , err := net.List...

2020-12-02 15:56:27 88

原创 Go语言GO111MODULE的值设置错误的处理

Go语言中GO111MODULE的有三个auto:当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持on:启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖off:禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包我不小心把值设置错了go env -w GO111MODULE=ON提示错误unknown environment setting GO111MODULE=ON根据网上的方法:set GO111M

2020-12-02 15:43:50 3928

原创 Go语言学习笔记-并发,并行,goroutine,channel

程序:一组二进制数据,不占用系统资源进程:程序在操作系统上的一次执行过程。系统进行资源分配和调度的独立单位。线程:进程的一个执行实体,CPU调度分派的基本单位。个人理解:程序、进程和线程的关系。程序则是生产资料,进程则为工厂,线程就是工厂里的车间。生产资料不经过工厂加工,则无法得出实际产品。工厂的运作实际上就是靠车间的运作,工厂至少要有一个车间才能运作起来,大型工厂可以有多个车间。并发:同一时间内执行多个任务(同时用微信和两个人聊天)并行:同一时刻执行多个任务(两个人同时用微信和人聊天)goro

2020-12-02 14:14:02 192 1

原创 Go语言学习笔记-接口

Go语言的接口是一种抽象的类型。不用去理解那么复杂抽象的解释,就记住Go语言的接口是一种类型就行。Go语言的接口是一种类型就行Go语言的接口是一种类型就行Go语言的接口是一种类型就行接口定义格式type 接口名称 interface{方法名1( 参数列表1 ) 返回值列表1方法名2( 参数列表2 ) 返回值列表2…}接口名称一般会在后面加上er,如writer。接口名最好要能突出该接口的类型含义。方法名首字母大写可被其他包调用。参数类表和返回值裂变的名称可以省略。//接口定义

2020-12-01 17:12:01 90

原创 Go语言学习笔记-第三方包的引入,gin

Go语言一些命令行:go version : 查询Go语言开发环境的版本go env :查询Go语言的基本信息go build : 编译Go语言程序,得到可运行的文件vscode配置Go语言开发环境Ctrl+shift+X打开扩展,搜索go,并安装go插件。Ctrl+shift+P,输入install update/tools,全选所有的包下载。但是由于特殊情况,这些包在国内无法下载成功,所以需要进行相应设置。在自己的GOPATH下的src目录下创建golang.org/x目录打开终端

2020-11-29 17:42:08 2214

原创 Go语言学习笔记-结构体与JSON

JSON:基于JavaScript的一种轻量化的数据交换格式。JSON键值对是用来保存JS对象的方式。“键名称” :“值”多个键值对之间用英文逗号“,”隔开。JSON解析网站序列化:将对象转化为可通过网络传输或者可以存储到本地磁盘的数据格式。即将数据结构或者对象转化为二进制串。与之相反的就是反序列化。即将二进制串转化为数据格式或者对象。Go语言JSON序列化方法:data, err := json.Marshal()data为[]byte类型err为错误警告type student s

2020-11-29 16:05:36 309

原创 Go语言学习笔记-方法和接收者

方法和接收者:Go语言中的方法是一种作用于特定类型变量的函数。这种特定类型变量就叫接收者,类似于其他语言中的this或者self。方法与函数的区别:函数不属于任何类型方法属于特定类型方法的定义格式:func (接收者变量名 接收者type) 方法名称 (参数列表) (返回参数){函数体}接收者变量名:官方建议使用接收者type的首字母小写接收者type:与参数类似,指针或非指针方法名称:一般首字母大写type people struct{ name string ag

2020-11-29 14:08:42 188

原创 Go语言学习笔记-struct结构体

struct结构体:Go语言提供的自定义的数据类型,可以封装多个基本数据类型。struc结构体定义:type 结构体名称 struct{成员名 成员type…}struct结构体实例化:struct结构体只有实例化后,系统才会分配内存。var 实例化名 struct类型type Student struct{ name string age int score int}func main(){ var S student // struct结构体的

2020-11-28 11:26:21 147

原创 Go语言学习笔记-new和make

new和make的区别两者都是用来做内存分配的make只用于切片(slice),map,通道(channel)的初始化。返回的还是这三个引用类型。new用于类型的内存分配1)内存对应的值为类型零值2)返回的是只想类型的指针...

2020-11-13 17:01:16 54

原创 Go语言学习笔记-指针理解

指针:任何数据载入内存后,在内存都有他们的地址,这些地址就是指针。定义一个变量,来存放这些内存地址,这个变量就是指针变量。个人理解:指针就类似文档的目录。目录名就是数据,页码就是内存地址,合起来就是指针变量。指针操作:& :与地址*:根据地址取值...

2020-11-13 16:50:33 69

原创 Go语言学习笔记-函数

函数:函数是各个语句指令的集合,可以实现指定的功能,可以重复使用定义:func 函数名 (参数名 参数类型) (返回值名 返回值类型){具体语句}匿名函数:没有函数名的函数,多用于实现回调和闭包定义:func (参数) (返回值){} func(x, y int) { fmt.Println(x + y) }(10, 20)//匿名函数自调用,在后面加上括号闭包:一个函数(主要是匿名函数)和其相关的应用环境组合而成的实体简单来说就是:闭包 = 函数 (匿名函数)+ 引用环

2020-11-13 16:23:37 48

原创 Go语言学习笔记-数组、切片、map

Go语言学习笔记-数组、切片、map数组:同一数据类型元素的集合。是值类型,长度固定无法修改声明格式:var 数组名字 [元素数量] 数据类型var arr [3] int //声明定义了一个长度为3的int类型数组数组初始化:var a = [3] int {1,2,3}b := [...]string {"北京","上海","广州"} //三个点有解释器自己判断数组长度数组遍历: for index, value := range 数组名index:索引,下标value:

2020-11-13 15:37:21 107

空空如也

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

TA关注的人

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