随笔分类 -  Golang

摘要:等待一个协程组全部正确完成则结束;但其中一个协程发生错误,这时候就会阻塞,全部停止运行(本次任务失败)以免浪费系统资源,此时可以结合通道(channel)或者 select 语句两种方式来处理。 1、考虑使用两个通道:一个用于报告错误,另一个用于通知所有协程停止。在协程内部捕获错误,并将错误信息发送 阅读全文
posted @ 2023-12-07 14:24 李若盛开 阅读(88) 评论(0) 推荐(0) 编辑
摘要:线程安全是什么 线程安全是指在多线程环境下,程序的执行能够正确地处理多个线程并发访问共享数据的情况,保证程序的正确性和可靠性。 type StringHeader struct { Data uintptr //存放指针,其指向具体的存储数据的内存区域 Len int //字符串的长度 } 并发访问 阅读全文
posted @ 2023-12-06 23:32 李若盛开 阅读(166) 评论(0) 推荐(0) 编辑
摘要:从 0 到 1 1、设计表结构2、使用 gf gen dao 生成对应的 dao/do/model3、编写 api 层:定义业务侧数据结构,提供对外接口的输入/输出数据结构4、编写 model 层:定义数据侧数据结构,提供对内的数据处理的输入/输出数据结构5、编写 logic 层,自动生成 serv 阅读全文
posted @ 2023-11-29 18:45 李若盛开 阅读(572) 评论(0) 推荐(0) 编辑
摘要:1、Go 语言的 if 语句允许在条件之前传递一个语句。 原始代码: f, contains := factory[string(token)] if contains { // Do something } 优化:(稍微提高了代码的可读性) if f, contains := factory[sT 阅读全文
posted @ 2023-11-29 17:07 李若盛开 阅读(40) 评论(0) 推荐(0) 编辑
摘要:▶︎ 后台基础(初级):掌握牢固的后台基础(go、os、http、tcp、ip...)并能熟练运用,为后面的发展打下地基。 ▶︎ 工程素养(中级):写出一手好代码,有扎实的微服务工程能力,用云原生DevOps持续提升工程效率。 ▶︎ 项目架构(高级):有扎实严谨的系统架构设计能力,独立主导大中型项目 阅读全文
posted @ 2023-11-28 22:58 李若盛开 阅读(1110) 评论(0) 推荐(1) 编辑
摘要:context.Background():上下文的默认值(创建上下文的默认起点),这个函数返回一个空context,返回值就是根节点,这只能用于最高等级(在main函数、初始化或顶级请求处理中),因为所有其他的上下文都应该从它衍生(Derived)出来 context.TODO():通常用作占位符或 阅读全文
posted @ 2023-11-28 14:07 李若盛开 阅读(696) 评论(0) 推荐(0) 编辑
摘要:查看文档:https://open.dingtalk.com/document/robots/custom-robot-access 1、在钉钉群中创建一个机器人,获取机器人的 Webhook 地址。可以参考钉钉官方文档来创建机器人并获取 Webhook 地址。 2、使用 Go 语言的 HTTP 请 阅读全文
posted @ 2023-10-07 19:38 李若盛开 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1. 多态多态是指根据类型的具体实现采取不同行为的能力。如果某个类型实现了某个接口,那么所有使用这个接口的地方,都可以支持这种类型的值。即不同的数据类型的实体实现提供统一的接口。Go中没有类的概念,它的多态是靠接口来实现的。 2.举例有这样一个场景,我们在应用开发中涉及到很多通知事件,通知的类型可以 阅读全文
posted @ 2023-09-16 23:36 李若盛开 阅读(156) 评论(0) 推荐(0) 编辑
摘要:在使用go-sql-driver/msqyl驱动过程中,偶现invalid connection错误,字面上看就是无效连接的意思。 开始以为是数据库压力问题或是网络不好,后来发现服务器和数据库是走内网的,网络出现问题几率非常小;只是在测试服务器上跑,没多少连接,不存在压力问题。 golang数据库驱 阅读全文
posted @ 2023-08-10 18:24 李若盛开 阅读(1566) 评论(0) 推荐(0) 编辑
摘要:HTTP 调用需要通过 http 包里的 Client 结构体里的 Do 方法去实现,因此需要先声明一个 Client 结构体变量,该结构体可以设置超时时间等配置。 对于一个请求里的 URL,查询参数,请求 method 等参数,需要 http 包里的 Request 结构体去封装。我们可以通过 N 阅读全文
posted @ 2023-08-04 20:18 李若盛开 阅读(3431) 评论(0) 推荐(0) 编辑
摘要:在消息队列系统中,生产者负责发送消息到消息队列中,而消费者负责从消息队列中接收并处理消息。在生产者发布消息时,为了确保消息被成功发送到消息队列,可以使用生产者发布确认模式。该模式允许生产者在消息被确认(即成功接收)或者未确认(发送失败)时得到通知,从而确保消息的可靠性。 主要步骤如下: 连接到Rab 阅读全文
posted @ 2023-08-02 10:57 李若盛开 阅读(119) 评论(0) 推荐(0) 编辑
摘要:为什么需要连接池 每个连接建立时都会申请内存用来做socket buffer 每个连接都要做三次握手四次挥手 每个连接关闭时都要释放内存空间 在高并发场景下,由于没有连接池的最大连接数限制,可以创建无数个连接,耗尽文件描述符 并发高时,会产生大量的连接,影响系统调度,会占用太多系统资源 连接池设计基 阅读全文
posted @ 2023-06-21 20:17 李若盛开 阅读(162) 评论(0) 推荐(0) 编辑
摘要:database/sql 是 Go 语言中一个标准库,用于处理关系型数据库的操作。它是一个轻量级的 SQL 数据库抽象,提供了一些基本的接口,包括连接、查询、事务等。database/sql 使用 SQL 驱动程序的方式连接不同的数据库,让我们可以使用统一的 API,而不用考虑底层数据库驱动的差异性 阅读全文
posted @ 2023-06-11 17:44 李若盛开 阅读(147) 评论(0) 推荐(0) 编辑
摘要:1) Update 更新单个字段值,使用结构体 2)Save用于保存所有字段。提示: 相当于根据主键id,更新所有模型字段值。如果记录在数据库中已经存在,Save 方法就会更新该记录。如果不存在,则会插入一条新记录。默认会更新该对象的所有字段,即使没有赋值 db.First(&user) user. 阅读全文
posted @ 2023-06-10 23:06 李若盛开 阅读(804) 评论(0) 推荐(0) 编辑
摘要:robfig/cron/v3 是一个 Golang 的定时任务库,支持 cron 表达式。低耦合高内聚,其中涉及装饰器模式,并发处理等。 依赖包 import "github.com/robfig/cron/v3" Cron 表达式 robfig/cron/v3与robfig/cron有差异,cro 阅读全文
posted @ 2023-06-10 22:23 李若盛开 阅读(1583) 评论(0) 推荐(0) 编辑
摘要:1.日期->时间戳 timestamp := time.now().Unix() //转化为时间戳 类型是int64 2.时间戳->日期 timeNow := time.Unix(time.Now().Unix(),0) 3.日期->字符串 timeLayout := "2006-01-02 15: 阅读全文
posted @ 2023-06-09 16:34 李若盛开 阅读(90) 评论(0) 推荐(0) 编辑
摘要:limit、offset对count的统计的影响 错误示例1:请注意,如下例子中,Count放在了最后面,查询时,count方法也会加上Limit和offset这两个语句: global.DB.Limit(10).Offset(2).Find(&users).Count(&total) 错误示例2: 阅读全文
posted @ 2023-06-07 16:11 李若盛开 阅读(903) 评论(0) 推荐(0) 编辑
摘要:column: 指定数据库中的字段名,例如:column:name。type: 指定数据库中的字段类型,例如:type:varchar(255)。size: 指定字段的大小,例如:size:255。primaryKey: 指定该字段为主键,例如:primaryKey。autoIncrement: 指 阅读全文
posted @ 2023-06-06 13:01 李若盛开 阅读(416) 评论(0) 推荐(0) 编辑
摘要:defer会在函数返回前执行,例如资源释放等,那把代码写到函数末尾不就行了,为什么使用defer? 在使用defer的场景中,主要有以下几个情况: 1)关闭资源:使用defer可以确保在函数执行完毕后关闭打开的文件、网络连接、数据库连接等资源。如果没有使用defer,那么可能会因为依赖外部代码调用顺 阅读全文
posted @ 2023-06-06 09:41 李若盛开 阅读(221) 评论(0) 推荐(0) 编辑
摘要:优缺点 GORM最直观的感受:程序员只需关系结构体,操作结构体,无需关注如何操作数据库。 优点:提高开发效率 缺点:使用反射牺牲性能,牺牲灵活性 两个版本 github.com/jinzhu/gorm v1.9.16 gorm.io/gorm v1.21.3 Open // jinzhu func 阅读全文
posted @ 2023-06-04 17:06 李若盛开 阅读(512) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示