![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
文章平均质量分 94
一个追梦的少年
一个山里的少年,双非学校努力中
展开
-
Redis进阶之事物&持久化
Redis的基本事务(basic transaction)需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库那种可以在执行的过程中进行回滚(rollback)的事务不同,在Redis里面,被MULTI命令和EXEC命令包围的所有命令会一个接一个地执行,直到所有命令都执行完毕为止。当一个事务执行完毕之后,Redis才会处理其他客户端的命令。Redis事务在执行的中途遇到错误。原创 2023-03-05 22:33:34 · 1434 阅读 · 5 评论 -
Golang协程常见面试题
有缓冲的channel当容量没有达到上限时写入不会阻塞在这里奇数协程的channel容量为1我们提前给他写入了一个数据因此当偶数和奇数协程都开始读取数据时,首先读取到数据的是奇数协程,奇数协程打印完之后在通知偶数协程打印,偶数协程打印完成之后在通知奇数协程重复下去就实现了交替打印的效果。在这里需要注意的点是我们需要close掉这个管道当达到临界值时,主协程退出但是defer方法会执行这个时候管道一关闭所有协程都会收到退出信号,另外两个阻塞在那里的协程就会退出这样就没有这个协程泄漏了。废话不多说直接上代码。原创 2023-02-25 16:33:10 · 1038 阅读 · 2 评论 -
Go入门之Gorm 框架
gorm是Golang语言中一款性能极好的ORM库,对开发人员相对是比较友好的。当然还有另外一个xorm库也是比较出名的,感兴趣的也可以看看这个库,接下来主要介绍下gorm库的一些基本使用。下面我们一起看看如何安装这个gorm框架,然后快速的把它使用起来//安装MySQL驱动 go get - u gorm . io / driver / mysql go get - u github . com / jinzhu / gorm。原创 2023-02-19 23:46:54 · 9546 阅读 · 1 评论 -
Go语言Web入门之浅谈Gin框架
Gin 是一个用 Go (Golang) 编写的 web 框架。它是一个类似于 martini 但拥有更好性能的 API 框架,由于 httprouter,速度提高了近 40 倍。Gin在GitHub上已经有47k的star,它和Golang的语法一样简洁明了,使得初学者得以迅速入门。只需要在终端上输入以下命令就可以将使用gin框架了。原创 2023-02-19 14:45:12 · 7161 阅读 · 1 评论 -
浅谈Redis之Redis入门(初学者必备)
Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与MySQL数据库不同的是Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。原创 2023-02-06 08:33:13 · 6379 阅读 · 3 评论 -
Docker进阶(中)
docker容器在产生数据的时候,如果不通过docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除之后,数据自然而然的也会消失。所有的docker镜像都起始于一个基础镜像层,当进行修改或者增加新的内容时,就会在当前镜像层之上,创建新的镜像层。比如有多个镜像都从相同的Base镜像构建而来,那么宿主机只需要在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样就可以为所有容器提供服务了,而且镜像的每一层都可以被共享。我们上面的案例默认是这个可读可写的。原创 2023-01-02 23:22:06 · 549 阅读 · 4 评论 -
go语言并发编程(中)
再这里再次强调一下这个需要注意的是读写锁非常适合读多写少的场景,如果读和写的操作差别不大,读写锁的优势就发挥不出来。现在我们知道了,Tick,Sleep,包括time.After函数,都使用的timer结构体,都会被放在同一个协程中统一处理,这样看起来使用Tick,Sleep并没有什么区别。本文使⽤Go语⾔实现并发的协程调度池阉割版,本⽂主要介绍协程池的基本设计思路,⽬的为深⼊浅出快速了解协程池⼯作原理,与真实的企业协程池还有很⼤差距,本⽂仅供学习参考。下面我们通过一个案例演示一下这个读写锁的使用。原创 2022-12-19 18:47:00 · 702 阅读 · 6 评论 -
Go语言GC机制超详细
什么是GC?他的英文全称(英语:Garbage Collection,缩写为GC),在计算机科学中是一种自动的存储器管理机制。当一个计算机上的动态存储器不再需要时,就应该予以释放,以让出存储器,这种存储器资源管理,称为垃圾回收。垃圾回收器可以让程序员减轻许多负担,也减少程序员犯错的机会(-----来自维基百科)简单地说,垃圾回收(GC)是在后台运行一个守护线程,它的作用是在监控各个对象的状态,识别并且丢弃不再使用的对象来释放和重用资源。原创 2022-10-27 14:34:46 · 5579 阅读 · 9 评论 -
go语言并发编程(上)
下面我们来解释一下MPG模式当中的M、P、G分别代表什么意思M:操作系统当中的线程(物理线程/内核线程)P:调度器负责调度协程,其维护了一个协程队列,M从P当中获取到协程并执行G:协程每个协程都有自己的栈空间定时器其模型大致如下图所示:在这里,我们看到2个线程(M),每个线程都有一个上下文(P),每个线程都运行一个goroutine(G)。灰色的goroutine尚未运行,但已准备好进行调度。它们被排列在称为运行队列的列表中。原创 2022-10-25 20:27:00 · 568 阅读 · 3 评论 -
万字带你入门Go语言(建议收藏)
定义变量我们一般使用var关键字。具体格式为var 变量名字 变量类型。下面我们演示一个代码定义一个整型变量。var a int = 10 //注意如果定义的时候不给初始值系统会给这个默认值 fmt . Println(a) }注意在go语言当中如果定义了一个变量如果没用初始化,则变量默认为零值。所谓的零值也就是变量没有做初始化时系统默认设置的值。下面让我们看看基本数据类型不初始化系统会赋那些零值。在go语言当中如果定义变量时没有指定变量的类型,可以通过初始值推导出变量的类型。下面我看一下这个代码。原创 2022-10-21 22:59:07 · 2874 阅读 · 7 评论