
Golang
文章平均质量分 74
Climber47
这个作者很懒,什么都没留下…
展开
-
Golang-MAP源码学习、扩容机制等
map是golang中常用的一个基本数据结构,继上篇的之后,本文学习map的源码相关。原创 2024-03-26 10:45:15 · 1414 阅读 · 0 评论 -
Golang切片扩容机制(新旧版本不同)
切片扩容机制,面试的一个高频考点了算是,并且经历过一次版本更新(1.17–1.18)。所以可能八股有所变动。本文参考自:https://juejin.cn/post/7101928883280150558。原创 2024-03-25 12:08:42 · 743 阅读 · 0 评论 -
Golang-channel合集——源码阅读、工作流程、实现原理、已关闭channel收发操作、优雅的关闭等面试常见问题。
面试被问到好几次“channel是如何实现的”,我只会说“啊,就一块内存空间传递数据呗”…所以这篇文章来深入学习一下Channel相关。从源码开始学习其组成、工作流程及一些常见考点。原创 2024-03-06 16:31:39 · 1948 阅读 · 0 评论 -
Golang-如何优雅的关闭一个Channel?
这部分主要参考自:https://qcrao91.gitbook.io/go/channel/ru-he-you-ya-di-guan-bi-channel。原创 2024-03-06 16:29:42 · 848 阅读 · 0 评论 -
Golang的Channel源码阅读、工作流程分析。
位于下的chan.go中。原创 2024-03-06 16:03:32 · 628 阅读 · 0 评论 -
关于Golang的nil channel(一个莫名其妙的东西,但如果没有make初始化就会遇到)
我的确不太明白这个东西有啥用,但给我的警示就是:一定记得初始化。原创 2024-03-06 16:01:32 · 602 阅读 · 0 评论 -
Golang中defer与return的执行顺序——不易混淆
defer和return是常用的一个点,面试高频,也是实战容易踩坑。先前对他进行过一次学习,理解起来略拗口,但好歹也算是学会了。昨天面IEG时候被面试官拷打,并给出了一些提示,让我对个知识点有了新的认识,于是决定对其进行再一次的学习。原创 2024-03-05 09:49:42 · 854 阅读 · 1 评论 -
Golang单例模式学习笔记
单例模式是常用的一种设计模式,一般用于比如客户端、连接的创建等,防止创建多个导致性能消耗。所以我认为单例模式的核心,就是“防止重复”。本文将在Golang中进行单例模式的实现。原创 2024-03-04 17:40:03 · 555 阅读 · 0 评论 -
Golang Copy()方法学习
这个没什么多的内容,但就是说,官方文档比来回cv的那些教程高大上一万倍。。。官方文档:https://golangbyexample.com/copy-function-in-golang/原创 2024-03-04 14:37:06 · 906 阅读 · 1 评论 -
Golang反射学习
反射,当初学到的时候,发现是一个比较高深的概念。网上搜索出来的资料中,动辄就是对其的三法则等大篇讲述,开头只是一个TypeOf和一个ValueOf,展开来便是那么大一堆…看的莫名其妙,一脸懵逼。所以找了些资料重新学了一遍,从熟悉的地方入手,更加容易的去看一下。并此文以记录。原创 2024-02-26 16:52:34 · 535 阅读 · 0 评论 -
Golang-Map有序输出——使用orderedmap库实现
Golang内置的Map是无需的,而OrderedMap则是提供了一个有顺序的Map。其顺序是插入时的顺序。import ("sort"})其主要用法如下:通过新建一个Map。通过设置Map中的元素内容。(注意:key必须是string)通过o.Get("a")获取map内容。通过keys达到for range效果。通过进行元素删除。通过SortKeys和Sort进行排序。1、通过OrderedMap。原创 2024-02-05 23:45:59 · 3581 阅读 · 0 评论 -
在Golang中导入GPT——这一定是你见过最简短的屎山!
近年来,GPT爆火。在我的毕设中(Golang开发),需要加一个GPT接口。因此参考网上的资源,有许多这样提供接入功能的包。但其有的是定死在了openai的官网,对于国内用户不太友好。因此我需求是可以使用镜像api。同样,由于我的毕设宗旨是“能用就行”,而网上的包中主打一个啥都有的全面,其中繁琐的功能对我并没有什么用处,目前来看可能仅需一个最基本的问答即可,模型设置通通达咩。因此计划自己在开源项目的基础上删减一个。在openai的提供了这样的教程。本文将主要参考此文档和其他开源库进行开发。原创 2024-01-24 02:41:04 · 689 阅读 · 0 评论 -
Golang通过Gorm操作Mysql时遇到的datetime时区问题
golang使用Gorm操作MySQL,MySQL中数据类型是datetime,Golang中用的是time.now。但是会导致存储的时间与北京时间有8h误差, 显然是没有初始化时区导致。原创 2024-01-18 02:17:31 · 2542 阅读 · 1 评论 -
Go语言Context (ctx)的基础概念与用法
ctx字面意思上下文,是golang中特有的一种语法,几乎每一个程序中都会通篇传递着一个ctx。而一些框架又对其进行二次封装,诸如Gin框架中的。因此此次进行ctx的学习并记录。原创 2024-01-17 15:12:05 · 1696 阅读 · 0 评论 -
GMP模型学习笔记:概念、流程概述、设计机制及部分场景
GMP模型学习笔记:概念、流程概述、设计机制及部分场景原创 2024-01-16 17:14:16 · 1069 阅读 · 0 评论 -
Golang+Gorm库使用踩坑——未标识primarykey导致创建后无法返回修改
做毕设ing,基本的增删改查。我在外层调用时候,是需要返回新增记录的ID。但是无法符合预期。通过打印发现,我这里返回的id就是0。原创 2024-01-15 02:34:45 · 849 阅读 · 0 评论 -
Golang defer 使用及面试常见的坑
defer是Golang中一个常用的关键字,通常用来做一些收尾工作。比如开启了一个东西,就顺手defer中关闭。对于面试,defer也算一个高频考点,尤其是他的许多个坑,因此本文主要复习一下defer的用法。原创 2024-01-11 17:19:22 · 1103 阅读 · 3 评论 -
Golang三色标记法面试复习
垃圾回收是指对不再使用的内存资源进行自动回收的功能。C++等语言中使用的是手动管理,而Go中则是自动管理。Go的垃圾回收机制主要是三色标记法,可以减少因垃圾回收导致程序暂停的影响。本文主要是学习这个机制。原创 2024-01-11 15:13:05 · 891 阅读 · 0 评论 -
Goroutine泄露的概念及常见原因汇总
Go的并发是以goroutine和channel的形式实现的。协程泄露是指goroutine创建后,由于一些错误,长时间得不到释放。继续不断创建新的goroutine协程,最终导致内存耗尽,程序崩溃。简单来说,协程泄露就是指创建的goroutine炸了导致无法释放,所以一直卡的占内存,长期以往让整个系统直接挂掉。Goroutine泄露是Golang中常见的一种错误,网上有话说“Go 10次内存泄漏,8次goroutine泄漏,1次是真正内存泄漏,还有1次是cgo导致的内存泄漏”。因此一定不可掉以轻心。原创 2024-01-11 10:52:02 · 1331 阅读 · 0 评论 -
Golang,Gin框架使用ShouldBindJSON时出现EOF报错
定义时候注意细节…Go的反引号标签要用好。原创 2024-01-11 02:30:59 · 1468 阅读 · 0 评论 -
Golang协程池ants库的学习、使用及源码阅读,协程池与GMP模型关系的理解
在工作时遇到了一个需要使用ants协程池的地方,因此顺带来学习一下他的原理。原创 2024-01-10 11:49:05 · 3394 阅读 · 0 评论 -
golang 记录一次协程和协程池的使用,利用ants协程池来处理定时器导致服务全部阻塞
主要是记录了一次自己对协程池的使用,在此过程中,从仅使用协程处理定时器,到使用协程处理整个方法实现并发,再到使用协程池。后续会进行ants库底层源码的学习。原创 2024-01-09 16:51:49 · 1138 阅读 · 1 评论 -
Golang中for和for range语句的使用技巧、对比及常见的避坑
基础语法不再赘述,写这个原因是之前的某次面试被问道了,我知道会导致问题但具体答下来不是很通顺。再回想自己开发过程中,很多地方都是使用到了for/for range,但是却从没注意过一些细节,因此专门学习一下进行记录。对一个数组循环,for range,使用kv时候有什么要注意的吗?这个是当时面经记录的问题。因此顺着这里开始进行学习。原创 2024-01-08 16:11:15 · 2924 阅读 · 5 评论 -
Go语言学习记录——用正则表达式(regexp包)来校验参数
下面是菜鸟教程中给出的定义正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。正则表达式可以在文本中查找、替换、提取和验证特定的模式。简单来说,他就是一个文字处理的工具,对文字进行一系列的处理。在Golang中,可以使用内置的regexp包来进行使用。原创 2024-01-07 23:53:01 · 792 阅读 · 0 评论 -
Golang中的深浅拷贝、结构体的拷贝、或可能的深拷贝失败原因
深拷贝:创建一个一样的新对象,新分配一块内存。新旧对象的修改操作互不影响。浅拷贝:只复制指向对象的指针,新旧对象依旧是同一块内存,修改时一起修改。原创 2024-01-05 14:44:15 · 2044 阅读 · 0 评论 -
Go语言常用类型互转方法归纳
Go基本数据类型有如下这些布尔:bool字符串:string整数:字节:byte ,uint8 的别名Unicode:rune ,int32 的别名浮点:float32 float64复数:complex64 complex128日常使用中,除此之外还会涉及到如Json-Struct、string-time等情况的转换,因此本文将对日常使用中所用到的类型转换做一个归纳。原创 2024-01-04 17:10:43 · 626 阅读 · 0 评论 -
Golang-strconv库学习笔记
strconv库是go官方提供的一个标准包,主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具,进行学习记录。学习重点是其中的内置方法。本文分为AtoiFormat系列,Parse系列,Append系列,Quote系列进行学习。Atoi。原创 2024-01-04 12:11:05 · 920 阅读 · 0 评论 -
Go语言的几种类型转换
个人认为日常使用中用的最多的是强制类型转换,亦可通过函数诸如AtoiItoa等。隐式类型转换主要发生在使用接口时,尤其需要注意看得懂。断言使用在一些附带有判断的场景。诸如一个kafka消息接收时候断言为[]byte类型。原创 2024-01-03 23:55:11 · 729 阅读 · 0 评论 -
解析为什么Go语言要使用[]rune而不是string来表示中文字符
众所周知,Go语言中有以下这些数据类型。但rune32这个go语言特有的数据类型,比较有意思却经常遭到忽视。所以今天探索学习一下这个数据类型的功能、用法。。原创 2024-01-03 14:56:12 · 896 阅读 · 0 评论 -
go语言``反引号用法归纳——多行输出和Tag标签(指定json名称、MySQL名称))
归纳了go语言中常见的``反引号用法原创 2024-01-02 17:47:01 · 1688 阅读 · 0 评论 -
go语言,ent库与gorm库,插入一条null值的time数据
使用go语言,我需要保存xxxTime的字段至数据库中,这个字段可能为空,也可能是一段时间。我采取的是统一先赋值为空,若有需要,则再进行插入(需要根据另一个字段判断是否插入)在我的数据库中,使用的是DATETIME类型字段,代码中,采用的是time.Time类型(这里有几个修改)。原创 2023-12-27 15:29:37 · 3311 阅读 · 0 评论