自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (4)
  • 收藏
  • 关注

原创 Git使用教程

2022-07-26 16:08:53 290 1

原创 GORM教程

2022-07-26 16:07:51 1663 1

原创 Gin_web教程

2022-07-26 16:07:01 1345

原创 websocket连接问题

2022-07-04 16:51:35 702

原创 go语言-函数自定义排序

自定义排序

2022-06-15 17:53:26 99

转载 golang泛型

1.18go泛型

2022-06-15 15:39:46 14755 2

原创 git 使用大全

git和github用法大全

2022-06-14 17:38:40 131

转载 拉取gin框架报错

今天学习gin框架时,拉取github的包失败,提示:PS E:\GoSource\src\gin_demo> go get -u github.com/gin-gonic/gingo: downloading github.com/gin-gonic/gin v1.7.7go get: github.com/gin-gonic/gin@v1.7.7: verifying module: github.com/gin-gonic/gin@v1.7.7: Get "https://sum.go

2022-05-09 11:57:02 1009

转载 TCP三次握手和四次挥手

1、三次握手根据tcp的包头字段,存在三个重要的标识ACK、SYN、FINACK:标识验证阶段SYN:位数置1,表示TCP连接FIN:位数置1,表示TCP断开连接三次握手过程说明:1、由客户端发送建立TCP连接的请求报文,其中报文中包含seq序列号,是由发送端随机生成的,并且将报文中的SYN字段置为1,表示需要建立TCP连接。(SYN=1,seq=x,x为随机生成数值)2、由服务端回复客户端发送的TCP连接请求报文,其中包含seq序列号,是由回复端随机生成的,并且将SYN置为1

2022-03-07 14:17:42 99

原创 Kafka

一、Kafka介绍1.1Kafka了解afka支持多语言客户端,目前成为apache顶级项目kafka是一个分布式的、分区化、可复制提交的日志服务Linkein使用kafka实现了公司不同应用之间的松耦合,那么作为一个可扩展、高可用的消息系统支持Throughput的应用scale out:无需停机即可扩展机器持久化:通过将数据持久化到硬盘以及replication防止数据丢失支持online和offline的场景1.2Kafka的特点Kafka是分布式的,其所有的构

2022-03-01 11:03:07 228

原创 go语言之Context

在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。官方代码:packa...

2022-02-23 22:20:18 117

原创 go语言之网络编程UDP通信

UDP协议UDP协议(User datagram protocol):用户数据报协议。是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时序的通信,但是UDP协议的实时性比较好,通常用于视频直播相关领域。UDP客户端UDP服务端...

2022-02-16 11:50:38 1398

原创 go语言之网络编程TCP通信

TCP协议TCP/IP即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层通信协议,会存在黏包问题。TCP服务端一个服务端可以连接多个客户端,当有一个客户端访问服务端时,我们就建立一个goroutine去处理请求。TCP服务端处理流程:1、监听端口2、接收客户端请求并建立连接3、创建goroutine处理TCP客户端代码:package mainimport ( "bufio" "fmt" "net" "os" "string

2022-02-16 10:58:36 1431

原创 go语言之并发安全和锁

前言有时候在go语言中存在多个goroutine去竞争同一个资源(临界区)。这种情况会发生竞态问题(数据竞态)。比如:飞机上火车上、人就好比goroutine,去争夺同一个厕所资源,最好的情况就是一个一个来,但是着急的时候两个人一起上就发生数据竞态。代码:package mainimport ( "fmt" "sync")var x int64var wg sync.WaitGroupfunc add() { defer wg.Done() for i := 0;

2022-02-15 10:25:58 3316

原创 go语言之通道

channel定义:通道也是一种引用类型,通道类型的空值是nil格式如下:var 变量 chan 元素类型var a chan intvar b chan stringvar c chan bool通道申明后需要使用make函数初始化后才能使用。创建channel的格式如下:make(chan 元素类型,[缓冲大小])ch1:=make(chan int,1)通道操作发送、接收、关闭三种操作;发送和接收都用<-符号发送ch1<-1

2022-02-13 21:43:29 192

原创 go语言之并发

前言之前我博客里介绍的都是基础编程,从今天开始才算正式的接触真正的go语言了,这也是go语言的魅力。并发在编程历时一个很重要的概念,go语言天生支持并发。定义并发:同一时间段内执行多个任务,比如13:00—15:00,我在和我的女朋用微信聊天,并且我也在打游戏。并行:同一时刻执行多个任务,比如13:00我在用微信和女朋友聊天,我女朋友的妈妈也在用微信和他聊天。Go语言的并发是通过goroutine实现的。goroutine是由go语言在运行时调度完成,而线程是由操作系统调度完成。go

2022-01-25 11:14:29 876

原创 go语言之strconv标准库

Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换。strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi()、Itoa()、parse系列、format系列、append系列。package mainimport ( "fmt" "strconv")func main() { //字符串转换成int str := "100" fmt.Printf("%#v\n", str) retInt, _ := strconv.Atoi

2022-01-25 10:16:56 1707

原创 go语言之反射

1、定义反射:指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在程序运行时无法获取自身信息。1.1reflect包在go语言的反射机制中,任何接口值都是由一个`具体类型`和`具体类型的值`两部分组成。在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分组成,并且reflect包提供了reflect.TypeOf和reflect.Va

2022-01-24 10:55:51 686

原创 go语言之log标准库

1、logGo语言内置的log包实现了简单的日志服务。1.1使用loggerlog包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Panic|Panicf|Panicln)来使用,比自行创建一个logger对象更容易使用。代码展示:调用log包实现上面的方法,默认会将日志打印在终

2022-01-21 14:04:08 478

原创 go 语言之time标准库

time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。package mainimport ( "fmt" "time")//时间func main() { now := time.Now() fmt.Println(now) fmt.Println(now.Date()) fmt.Println(now.Year()) fmt.Println(now.Month()) fmt.Println(now.Day()) fmt.Println(now.Hour()

2022-01-19 11:16:07 299

原创 go语言之二进制用途

package mainimport "fmt"//二进制实际用途const ( eat int = 4 sleep int = 2 da int = 1)//111//左边1表示吃饭 100//中间1表示睡觉 010//右边1表示打豆豆 001func f(arg int) { fmt.Printf("%b\n", arg)}func main() { f(eat | sleep | da) f(eat | sleep) f(eat | da)}.

2022-01-19 11:01:24 109

原创 go语言之文件写入

os.OpenFile()函数能够以指定模式打开文件,从而实现文件写入相关功能。三种方法实现:Write和WriteString、budio.NewWriter、ioutil.WriterFile代码实现:package mainimport ( "bufio" "fmt" "io/ioutil" "os")//打开文件写内容func writeDemo1() { file, err := os.OpenFile("./dd.txt", os.O_WRONLY|os.O_

2022-01-19 10:58:38 494

原创 go语言之读取文件

1、定义计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。2、打开和关闭文件os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。代码展示:package mainimport ( "fmt" "os")func readFromFile1() { //只读方式打开当前目录main.go文件 file, err := os.Open("./main.go")

2022-01-19 10:25:27 619

原创 go语言之package

1、关于包包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt、os、io等。2、包定义我们还可以根据自己的需要创建自己的包。一个包可以简单理解为一个存放.go文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包。package 包名3、包的可见性如果想在一个包中引用另外一个包里的标识符(如变量、常量、类型、函数等)时,该标识符必须是对外可见的(public)。在Go语言中只需要将标识

2022-01-19 09:46:14 999

原创 go语言之接口

1、定义interface(接口)定义了一个对象的规范,只定义规范不实现,由具体的对象来实现规范的细节。接口是一种类型。go语言提倡面向对象接口编程接口做的事情就像是定义了一个规则,不关心对方是什么类型,只关心对方能做什么。只要一个物体能像鸭子一样叫那我们就可以称它为鸭子;只要一个软件能存储和查询数据我们就可以称它为数据库;只要一台机器有洗衣服和甩干的功能我们就可以称它为洗衣机。实例1代码实现:我们定义了一个speaker的接口,只要任何函数符合speak()这个方法我就称他为speak

2022-01-12 10:00:58 269

原创 go 语言之结构体标签

Tag是结构体元信息,可以在运行的时候通过反射的机制独取出来,Tag在结构体字段的后方定义,由一对反引号包裹起来,具体格式如下;`key1:"value1" key2:"value2"`结构体tag由一个或多个键值对组成。键与值使用冒号分隔,值用双引号括起来。同一个结构体字段可以设置多个键值对tag,不同的键值对之间使用空格分隔。注意事项: 为结构体编写Tag时,必须严格遵守键值对的规则。结构体标签的解析代码的容错能力很差,一旦格式写错,编译和运行时都不会提示任何错误,通过反射也无法正确取值

2022-01-11 16:42:20 672

原创 go语言之“结构体与JSON序列化”

1、结构体字段可见性结构体中字段大写开头表示可公开访问,小写表示私有(仅在定义当前结构体的包中可访问)。2.结构体与JSON序列化JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON键值对是用来保存JS对象的一种方式,键/值对组合中的键名写在前面并用双引号""包裹,使用冒号:分隔,然后紧接着值;多个键值之间使用英文,分隔。1.序列化:go语言中的结构体变量 -->json格式的字符串2.反

2022-01-11 16:29:38 921

原创 go语言之“递归乘法”

题目:递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例一:输入:A = 1, B = 10输出:10示例二:输入:A = 3, B = 4输出:12写一下multiply()函数func multiply(A int, B int) int {}代码实现:package mainimport "fmt"func multiply(A, B int) int { if B ==

2022-01-11 15:22:37 230

原创 go语言之“继承”

go语言没有本质上的“继承”;但是可以通过结构体来实现继承。package mainimport "fmt"type animal struct { name string age int}type cat struct { feet int an animal}func (a animal) move() { fmt.Printf("%s会动\n", a.name)}func (c cat) miao() { fmt.Printf("%s会瞄\n", c.an

2022-01-11 14:39:03 933

原创 go语言之嵌套结构体

嵌套结构体:可想而知就是在结构体里面在调用其他的结构体;具体实现方法如下:package mainimport "fmt"type address struct { city string country string}type person struct { name string age int address //匿名字段}type company struct { name string age int addr address}

2022-01-11 14:23:14 565

原创 go语言之结构体匿名字段

定义:结构体允许其成员字段在声明时没有字段名而只有类型,这种没有名字的字段就称为匿名字段。package mainimport "fmt"//匿名字段type person struct { string int}func main() { p1 := person{ "dudu", 3, } fmt.Println(p1) fmt.Printf("%#v\n", p1) fmt.Println(p1.string, p1.int)}注意:这里匿名字段的说

2022-01-11 13:59:25 401

原创 go语言之构造函数

package mainimport "fmt"type person struct { name string age int}type dog struct { name string}//构造函数:约定成俗用new开头//返回的是结构体还是结构体指针//当结构体比较大的时候尽量使用结构体指针,减少程序的运行内存开销func newPerson(name string, age int) person { return person{ name: name, .

2022-01-10 19:29:27 1026

原创 go语言之结构体

package mainimport "fmt"//结构体type person struct { name string age int gender string hobby []string}func main() { //声明一个person类型的变量 var cat person //通过字段赋值 cat.name = "嘟嘟" cat.age = 3 cat.gender = "女" cat.hobby = []string{"舔毛", "打架".

2022-01-10 19:27:54 315

原创 go语言之类型别名和自定义类型

package mainimport "fmt"//自定义类型和类型别名//type后面跟的是类型type myInt int //声明自定义类型type yourInt = int //类型别名func main() { var n myInt = 100 var m yourInt = 100 fmt.Println(n) fmt.Printf("%T\n", n) fmt.Println(m) fmt.Printf("%T\n", m) var c rune =.

2022-01-10 19:27:21 196

原创 go语言之“递归+动态规划”

题目一:求n!分析:本题递归求解1!=12!=2*1=2*1!3!=3*2*1=3*2!4!=4*3*2*1=4*3!5!=5*4*3*2**1=5*4!...n!=n*(n-1)*(n-2)*(n-3)*...*2*1=n(n-1)!代码实现:package mainimport "fmt"func jiecheng(n uint) uint { if n <= 2 { return n } else { return n * jiech

2022-01-07 11:49:47 226

原创 go语言之“分金币问题”

题目:/*你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。分配规则如下:a. 名字中每包含1个'e'或'E'分1枚金币b. 名字中每包含1个'i'或'I'分2枚金币c. 名字中每包含1个'o'或'O'分3枚金币d: 名字中每包含1个'u'或'U'分4枚金币写一个程序,计算每个用户分到多少金币,以及最后剩余多少金币?程序结构如下,请实现 ‘dispatch

2022-01-06 15:49:39 210

原创 go语言之函数类型

package mainimport "fmt"//函数类型func f1() { fmt.Println("hello,嘟嘟")}func f2() int { return 10}func f4(x, y int) int { return x + y}//函数也可以作为参数类型func f3(x func() int) { ret := x() fmt.Println(ret)}func ff(a, b int) int { return a + b}.

2022-01-04 14:05:22 1001

原创 go语言之作用域

package mainimport "fmt"//三种作用域:1、全局作用域 2、函数内部作用域 3、语句块作用域//变量的作用域var x int = 100 //全局变量//定义一个函数func f1() { x := 10 //局部变量 name := "dudu" //函数中查找一个变量的顺序 //1、先在函数内部查找 //2、找不到就往函数的外面查找,一直找到全局 fmt.Println(x, name)}func main() { f1() // fmt..

2022-01-04 14:04:40 267

原创 go语言之defer

代码如下:package mainimport "fmt"//defer//defer语句多用于函数结束之前释放资源(文件句柄、数据库连接、socket连接)func deferDemo() { fmt.Println("start") defer fmt.Println("嘟嘟") //defer把它后面的语句延迟到函数即将返回时候在执行 defer fmt.Println("一一") //一个函数中可以有多个defer语句 defer fmt.Println("8号") //多

2022-01-04 14:01:05 180

原创 go语言之回文算法

题目:判断“黄山叶落松叶落山黄”是不是回文?回文判断:字符串从左往右读和从右往左读是一样的,那么就是回文。思路:黄 ss[0] ss(len(ss)-1)山 ss[1] ss(len(ss)-1-1)叶 ss[2] ss(len(ss)-1-2)...c ss[i] ss(len(ss)-1-i)黄山叶落松叶落山黄 s[0]是不是等于s[len(s)-1]代码如下:package mainimport "fmt"func main() { ss := ".

2022-01-04 13:57:06 230

chat gpt windows安装

chat gpt windows安装

2023-05-07

go总结学习方案帮助更快学习

go总结学习方案帮助更快学习

2022-02-28

学生管理系统.tar.gz

使用go语言做的学生管理系统, 学生:学号、姓名、分数 功能:查看学生列表,添加学生,修改学生,删除学生

2022-01-13

Windows-ZYJ网线直连Smb传输数据.pdf

Windows-ZYJ网线直连Smb传输数据.pdf

2021-12-17

Windows-ZYJ网线直连FTP传输数据.pdf

Windows-ZYJ网线直连FTP传输数据.pdf

2021-12-17

空空如也

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

TA关注的人

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