
Go语言学习
文章平均质量分 95
go
knoci
Hello World!
展开
-
【Go】-调度器简介
调度器中的处理器 P 是线程和 Goroutine 的中间层,它能提供线程需要的上下文环境,也会负责调度线程上的等待队列,通过处理器 P 的调度,每一个内核线程都能够执行多个 Goroutine,它能在 Goroutine 进行一些 I/O 操作时及时让出计算资源,提高线程的利用率。在大多数情况下,我们都会使用 Go 的默认设置,也就是线程数等于 CPU 数,默认的设置不会频繁触发操作系统的线程调度和上下文切换,所有的调度都会发生在用户态,由 Go 语言调度器触发,能够减少很多额外开销。原创 2024-12-01 12:53:09 · 976 阅读 · 0 评论 -
【Go】-go中的锁机制
简单的说方法内联就是将被调用方函数代码“复制”到调用方函数中,减少函数调用开销,在2018年之前的go版本中,所有的逻辑都在Lock函数中,并没有拆出来,2018年之后Go开发者将slow path拆出来,当lock方法被频繁调用的时候,有两种情况,如果直接获得锁走的是fast path,这个时候内联就只有fast path 的代码,这样会减少方法调用的堆栈空间和时间的消耗 ,如果处于自旋,锁竞争的情况下,走的是slow path,这个时候才会把lock slow 的方法内联进来,这样方便了编译器做内联。原创 2024-11-24 12:15:17 · 1240 阅读 · 0 评论 -
【Go】-基于Gin框架的博客项目
这是Gin框架的Blog小demo,基本实现了登录注册,社区,发帖,投票功能,一些拓展的功能没有实现,但是其核心对于入门Gin来说,是不错的练习。原创 2024-10-30 21:31:30 · 908 阅读 · 0 评论 -
【Go】-基于Gin框架的IM通信项目
基于Gin框架的IM即时通讯小demo,实现了用户注册,添加好友,创建和加入群聊;好友聊天,群聊天;可以自定义个人信息,群信息;在聊天中可以发送文字、图片、表情、语音。这是Gin框架的IM小demo,基本实现了聊天功能,一些拓展的功能没有实现,但是其核心对于入门Gin和Websocket通信来说,是不错的练习。原创 2024-09-26 22:30:23 · 1317 阅读 · 1 评论 -
【Go】-viper库的使用
配置管理解析库,是由大神开发,他在google领导着golang的产品开发,他也是gohugo.io的创始人之一,命令行解析库cobra开发者。总之,他在golang领域是专家,很牛的一个人。viper是一个配置管理的解决方案,它能够从 json,toml,ini,yaml,hcl,env 等多种格式文件中,读取配置内容,它还能从一些远程配置中心读取配置文件,如consul,etcd等;它还能够监听文件的内容变化。功能介绍读取 json,toml,ini,yaml,hcl,env 等格式的文件内容。原创 2024-09-25 20:53:42 · 1626 阅读 · 0 评论 -
【Go】-Websocket的使用
可以理解为实现这样一种功能:服务器端可以即时地将数据的更新或变化反应到客户端,例如消息推送等功能都是通过这种技术实现的。但是在Web中,由于浏览器的限制,实现即时通讯需要借助一些方法。这种限制出现的主要原因是,一般的Web通信都是浏览器先发送请求到服务器,服务器再进行响应完成数据的现实更新。轮询、长轮询(comet)、长连接(SSE)、WebSocket。它们大体可以分为两类,一种是在HTTP基础上实现的,包括短轮询、长轮询(comet)、长连接(SSE);原创 2024-09-25 20:17:13 · 2356 阅读 · 0 评论 -
【Go】-log库的使用
Go语言内置的log包实现了简单的日志服务。本文介绍了标准库log的基本使用。Go内置的log库功能有限,例如无法满足记录不同级别日志的情况,我们在实际的项目中根据自己的需要选择使用第三方的日志库,如logruszap等。原创 2024-09-19 21:14:45 · 890 阅读 · 0 评论 -
【Go】-context库的使用
当截止日过期时,当调用返回的cancel函数时,或者当父上下文的Done通道关闭时,返回上下文的Done通道将被关闭,以最先发生的情况为准。取消此上下文将释放与其相关的资源,因此代码应该在此上下文中运行的操作完成后立即调用cancel,通常用于数据库或者网络连接的超时控制。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。取消此上下文将释放与其关联的资源,因此代码应该在此上下文中运行的操作完成后立即调用cancel。原创 2024-09-13 20:40:29 · 1097 阅读 · 0 评论 -
【Go】-go-redis库的使用
Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。原创 2024-09-12 22:16:01 · 1763 阅读 · 0 评论 -
【Go】-sqlx库的使用
在项目中我们通常可能会使用连接MySQL数据库。sqlx可以认为是Go语言内置的超集,它在优秀的内置基础上提供了一组扩展。这些扩展中除了大家常用来查询的和外还有很多其他强大的功能。原创 2024-09-11 21:35:19 · 1782 阅读 · 0 评论 -
【Go】-基于Gin和GORM的小清单项目
knoci/list: 基于Gin的待办清单小项目 (github.com)一个仿照github/Q1mi/bubble 做的一个gin框架练习这个项目是Gin和GORM的非常非常简单的小项目,适合新手入门。原创 2024-09-11 19:58:28 · 1313 阅读 · 0 评论 -
【Go】-Gin框架
Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。如果你是性能和高效的追求者, 你会爱上Gin。在Gin框架中,SetFuncMap方法用于为模板渲染设置自定义的函数映射。这允许你在模板中使用自定义的函数,这些函数可以执行复杂的逻辑或操作,从而增强模板的灵活性和功能。:这是一个映射,键是字符串(函数名),值是可调用的函数func。这些函数可以在模板中被调用。定义一个不转义相应内容的safe},})原创 2024-09-10 21:37:16 · 3382 阅读 · 0 评论