
GO
Snoring cat
这个作者很懒,什么都没留下…
展开
-
sync.Once原理与源码分析
go 为我们提供了 `sync.Once` 对象,它保证了某个动作只被执行一次。原创 2024-11-27 09:28:53 · 334 阅读 · 0 评论 -
beego之配置文件使用
beego之配置文件使用http://www.manongjc.com/detail/51-qwfpscyzomrnsyg.html转载 2023-04-23 15:58:33 · 272 阅读 · 1 评论 -
golang中的类型比较
golang类型比较原创 2022-11-16 23:45:24 · 535 阅读 · 0 评论 -
go - rune类型
go编程之rune类型解析原创 2022-11-15 10:08:17 · 1577 阅读 · 0 评论 -
使用go mod模式进行开发安装第三方包冲突失败解决
关于gomod安装第三方包提示:"module declares it's path as: but was required as"解决办法原创 2022-11-14 10:23:54 · 1204 阅读 · 0 评论 -
go语言字符类型byte与rune
go语言字符类型byte与rune入门原创 2022-10-13 12:28:04 · 640 阅读 · 0 评论 -
go - flag包(处理命令行参数小能手)
golang标准库提供了 flag包 来专门处理命令行参数,灵活、方便、还实用!原创 2022-08-09 11:23:28 · 806 阅读 · 0 评论 -
gorm - database操作利器
ORM利器之GORM入门指南 [golang]原创 2022-02-18 19:09:22 · 1304 阅读 · 0 评论 -
go - map
golang中的map原创 2021-08-02 15:23:39 · 118 阅读 · 0 评论 -
go - 空结构体
参考资料https://zhuanlan.zhihu.com/p/351176221原创 2021-07-31 19:47:41 · 555 阅读 · 0 评论 -
go - 第三方库 go-sql-driver 源码浅析
参考资料http://adkx.net/wm4uu转载 2021-07-30 18:22:28 · 121 阅读 · 0 评论 -
go - Go函数与C函数底层探究
前言无论是什么语言,函数都是最常被使用到的东西。我们对比一下 Golang 和 C 这两种语言的函数实现,进而我们能真正理解以下问题:(1)为什么 C 语言只能有一个返回值,而 Golang 中可以返回多个?正文在C语言中:① 主要通过寄存器传递参数所以,C 语言函数的性能杠杠的。寄存器是整个计算机体系结构中访问最最快的存储了。只有当参数数量大于 6 的时候,才开始使用栈。② 固定 eax 寄存器返回数据因为固定使用 eax 寄存器做返...原创 2021-07-30 18:19:26 · 145 阅读 · 0 评论 -
go - 汇编
使用.go使用 go tool 生成汇编// 为了方便查看,使用 -N -l 参数,能阻止编译器对汇编代码的优化> go tool compile -S -N -l main.go > main.s参考资料http://adkx.net/wm4we原创 2021-07-30 18:11:40 · 264 阅读 · 0 评论 -
go - new与make
new描述 new()是Go的内置函数。其作用是初始化一个指向类型的指针(*T),使用new()来分配内存空间,返回值是一个指向新分配类型零值的指针。注意 ① new()的参数是一个类型而不是一个值。 ② new创建的内存空间位于heap上。 ③ new(T) 和&T{}是等效的。语法func new(Type) *Type使用示例p := new(int) //p is '*int'make...原创 2021-07-30 16:16:03 · 110 阅读 · 0 评论 -
algorithm - 二分查找
简介 当我们要从一个序列中查找一个元素的时候,二分查找是一种非常快速的查找算法,二分查找又叫二分搜索或折半查找。 二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。 它对要查找的序列有两个要求:一是该序列必须是有序的(即该序列中的所有元素都是按照大小关系排好序的,升序和降序都可以,本文假设是升序排列的);二是该序列必须是顺...原创 2021-07-21 23:30:00 · 290 阅读 · 1 评论 -
go - channel初探
无缓冲channel特点若只有读端没有写端,那么读端阻塞;反之亦然。无缓冲 channel,发送者会阻塞直到接收者接收了发送的值,所以是“同步”的。声明无缓冲channel的方式:不设置缓冲大小或者设置为 0。// 举例c := make(chan string)// <==>c := make(chan string, 0)内部结构channel 的结构体hchan被定义在runtime包中的chan.go文件中(忽略了hchan结构体中和缓冲相关的属性原创 2021-07-21 18:35:05 · 658 阅读 · 0 评论 -
vscode 内置terminal终端在执行编译语句时闪退解决方法
在Settings.json中最后一行添加如下: "terminal.integrated.shell.osx": "/bin/bash"原创 2021-07-04 23:25:25 · 1311 阅读 · 0 评论 -
Go - vscode配置go开发环境 | go.mod go.sum | launch.json
一、下载安装golang1.1 下载官网下载:点击跳转csdn资源下载:点击跳转1.2 安装配置go在1.6版本以后直接静默安装即可,不需要再额外配置系统环境变量。安装完成后可 WIN + R 输入 cmd 打开命令行终端,输入 go version 查看go版本;输入 go env 查看go相关环境配置情况。# 设置gomodgo env -wGO111MODULE=on# 设置goproxygo env -wGOPROXY=https://goproxy...原创 2021-03-25 12:24:10 · 1299 阅读 · 0 评论 -
GoLang - HTTP服务搭建服务端与客户端(Server - Client)
前言 前面已经介绍了如何基于HTTP协议搭建服务端和客户端。但是明显发现Server与Client是彼此独立的,不能产生交互。本文就主要介绍一下如何通过客户端访问api时传入不同的请求参数,服务端响应得到不同的内容。正文 HTTP常用的请求方式分别为GET请求和POST请求。下面分别展开介绍: (1)带参数的GET请求示例/// ===== Server =====package mainimport ( "encoding/...原创 2020-11-25 09:41:17 · 671 阅读 · 0 评论 -
GoLang - HTTP搭建一个简单的Client端
前言 Go语言内置的net/http包提供了HTTP客户端和服务端的实现。 上面的代码保存之后编译成可执行文件,执行之后就能在终端打印出www.baidu.com网站首页的内容了。 浏览器其实就是一个发送和接收HTTP协议数据的客户端,我们平时通过浏览器访问网页其实就是从网站的服务器接收HTTP数据,然后浏览器会按照HTML、CSS等规则将网页渲染展示出来。实例 下面以一个简单的实例来展示如何搭建一个简单的HTTP服务...原创 2020-11-24 16:26:53 · 581 阅读 · 0 评论 -
GoLang - HTTP搭建一个简单的Server端,可通过网页访问
前言 Go语言内置的net/http包非常优秀,提供了HTTP的Client和Server实现。 ListenAndServe函数使用指定的监听地址和处理器去启动一个HTTP服务端。处理器的参数通常是nil,表示采用默认的包变量DefaultServeMux作为处理器。 HandleFunc函数可以向DefaultServeMux添加处理器(即绑定api和对应的处理函数)。实例 下面就以一个简单的实例去介绍如何使用Go...原创 2020-11-24 15:56:04 · 1206 阅读 · 0 评论 -
GoLang - 编解码JSON数据/读写JSON数据
前言 Go语言内建对 JSON 的支持,使用内置的 encoding/json 标准库,开发人员可以轻松使用Go程序生成和解析 JSON 格式的数据。干货(1)将json串写入文件package mainimport ( "encoding/json" . "fmt" "os")type Website struct { Name string `json:"name"` Url string Course []string}fu...原创 2020-11-19 14:06:44 · 496 阅读 · 0 评论 -
GoLang - 设置死信队列
Well not many said, show my code:package main// 设置过期队列和死信队列import ( "fmt" "time" "github.com/streadway/amqp")const ( host1 = "192.168.5.62" port1 = 5672)func main() { conn, err := amqp.Dial(fmt.Sprintf("amqp://trkj:trkj@%s:%d/test", hos原创 2020-11-19 11:06:18 · 385 阅读 · 0 评论 -
GoLang - “invalid identifier character U+3000“
问题背景: 在网上copy了一段代码放到本地进行测试,在编译的时候提示: “.\deadQueue.go:44:2:invalid identifier character U+3000” “.\deadQueue.go:44:2:undefined:”问题解决: 跳转到对应的行,发现程序逻辑并没有什么问题,那就应该是含有中文字符的问题了。 删除该行并重新手动敲出该行代码,...原创 2020-11-19 10:51:43 · 1635 阅读 · 0 评论 -
RabbitMQ - 消息超时设置/设置消息的生存(过期)时间TTL
背景: 当消息发布方一直在推送消息,而消息的订阅方一直未订阅,且恰巧接收消息的队列未设置deletewhenunused。则消息会一直堆积在队列里面,长此以往难免会出现问题。那么有什么方法可以避免这种问题发生呢?解决方案: 两种方法: (1)在创建队列的时候,为队列进行“当没有消费者的时候,自动删除队列,即:auto-delete”。 (2)为存入队列的消息设置一个过期时间,即若消息超过...原创 2020-11-18 19:03:06 · 6413 阅读 · 0 评论 -
Go - 切片(Slice)的简单介绍与使用
1)简介Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。2)定义切片声明一个未指定大小的数组来定义切片:// 声明一个未指定大小的数组来定义切片var slice []type// 使用make函数来创建切片var slice1 []type = make([]type, len) //len是.原创 2020-10-27 16:37:24 · 1415 阅读 · 0 评论 -
Go - unsafe.Sizeof()
因先举个栗子1:package mainimport ( "fmt" "unsafe")func main() { var str string = "abc" fmt.Println(unsafe.Sizeof(str))}//运行结果//16再举个栗子2:package mainimport ( "fmt" "unsafe")func main() { slice_test := []int{1, 2翻译 2020-10-27 16:17:23 · 376 阅读 · 2 评论 -
Go - struct内存分配 | unsafe.Sizeof, Alignof 和 Offsetof
参考博文:https://go.wuhaolin.cn/gopl/ch13/ch13-01.html转载 2020-10-27 15:44:17 · 327 阅读 · 0 评论 -
Go - 结构体的简单介绍与使用
1)简介结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。2)定义结构体结构体定义需要使用 type 和 struct 语句。举个栗子:type Books struct { Title string Auther string Subject string Id string Price float64}3)结构体变量声明variable_name := structure_variable_type {value1, va..原创 2020-10-23 17:00:53 · 257 阅读 · 0 评论 -
GoLang 使用goconfig读取配置文件(.ini、.json、.yaml)
一、goconfig读取.ini类型配置文件1、配置文件(config.ini)如下:[RabbitMQ]MQUrl = amqp://trkj:trkj@192.168.5.62:5672/testExchange = EX.WALLDATAExchangeType = fanoutRoutingKey = RK.WALLDATA[Base]messageFrequency = 52、解析配置文件:package mainimport (原创 2020-10-21 18:16:27 · 2000 阅读 · 1 评论 -
GoLang获取RabbitMQ的官方依赖库
WIN + R 输入 “cmd”,打开命令行窗口。输入如下命令并执行:> go get github.com/streadway/amqp而后,在GOPATH中即可以看到创建了如下目录“github.com\streadway\amqp”。在.go文件中使用如下语句,即可以引入mq的相关依赖包进行使用。import ( "github.com/streadway/amqp")...原创 2020-10-21 18:02:44 · 407 阅读 · 1 评论