随笔分类 -  golang

摘要:golang开发 gorilla websocket的使用很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的、也是最简单的socket服务就是gorilla/websocket,它有21.1K的star,足以说明它的受欢迎程度, 它的git 阅读全文
posted @ 2024-05-30 16:45 飞翔码农 阅读(364) 评论(0) 推荐(0) 编辑
摘要:context的历史 context包在Go 1.7版本正式加入Go标准库。在加入之前我们看看Go团队核心成员Sameer Ajmani在2014年发表的一篇关于context介绍博客,地址:https://go.dev/blog/context 下面是介绍的翻译。 在Go服务器中,每个传入的请求都 阅读全文
posted @ 2024-04-18 16:53 飞翔码农 阅读(237) 评论(0) 推荐(0) 编辑
摘要:很多初级的Gopher在学习了goroutine之后,在项目中其实使用率不高,尤其一些跨语言过来的人,对并发编程理解不深入,可能很多人只知道go func(),或者掌控不够,谨慎一些,尽量少使用或者不使用,用的话就是go func(),主要列一下我们这边的主要使用方法。 goroutine在项目中的 阅读全文
posted @ 2024-03-10 15:01 飞翔码农 阅读(176) 评论(0) 推荐(1) 编辑
摘要:上次说了一下Go语言布道师 Dave Cheney对Go并发的建议,个人觉得最重要的一条,这次主要想说一下这个。 8.3. Never start a goroutine without knowning when it will stop(永远不要在不知道何时停止的情况下启动 goroutine) 阅读全文
posted @ 2022-10-10 06:57 飞翔码农 阅读(706) 评论(0) 推荐(0) 编辑
摘要:这个是前段时间看到Go语言的贡献者与布道师 Dave Cheney对Go并发的建议或者叫使用的陷阱(不是我自己的建议),结合自己最近几年对gorotine的使用,再回头看这几条建议,真的会茅塞顿开,觉得特别重要。这篇文章对并发的建议的章节地址 https://dave.cheney.net/prac 阅读全文
posted @ 2022-04-05 07:31 飞翔码农 阅读(571) 评论(0) 推荐(2) 编辑
摘要:Error是Go语言开发中最基础也是最重要的部分,跟其他语言的try catch的作用基本一致,想想在PHP JAVA开发中,try catch 不会使用,或者使用不灵活,就无法感知到程序运行中出现了什么错误,是特别可怕的一件事。 Error 基础 Golang中 error类型就是一个最基本int 阅读全文
posted @ 2021-07-20 06:50 飞翔码农 阅读(2076) 评论(0) 推荐(0) 编辑
摘要:这两天在开发项目的时候遇到了一个问题,请求了一个URL,它会302到另一个地址,本意上只是想检查这个URL是否会做3XX的redirect跳转,结果每次reqeust都会返回最后一跳的结果。后来就看了下源码,了解下请求跳转的机制 实现代码 看下实现的简单代码 func main() { client 阅读全文
posted @ 2020-10-27 07:43 飞翔码农 阅读(1657) 评论(0) 推荐(0) 编辑
摘要:channel主要是用于多个goroutine之间通信 channel语法 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) chan Type 通道的类型 buffer 是可选参数,代表通道缓冲区的大小(省略则代表无缓冲) 向 阅读全文
posted @ 2020-09-27 06:29 飞翔码农 阅读(735) 评论(1) 推荐(0) 编辑
摘要:select 是 Golang 中的一个控制结构,语法上类似于switch 语句,只不过select是用于 goroutine 间通信的 ,每个 case 必须是一个通信操作,要么是发送要么是接收,select 会随机执行一个可运行的 case。如果没有 case 可运行,goroutine 将阻塞 阅读全文
posted @ 2020-09-26 08:18 飞翔码农 阅读(1986) 评论(0) 推荐(0) 编辑
摘要:CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,最初于Tony Hoare的1977年的论文中被描述,影响了许多编程语言的设计。 golang CSP模型 golang语言并没有完全实现了CSP模型的所有理论,仅仅是 阅读全文
posted @ 2020-09-15 07:23 飞翔码农 阅读(436) 评论(0) 推荐(0) 编辑
摘要:Glide用的好好的,为什么要使用Modules 在 Go 1.11 中 ,官方加入package management tool,称为Go Modules。Go mod 没有出现之前,用的最多的包管理器就是 govendor、glide等,这些工具都未达到Go对包管理的预期,比如每次下载,比如墙外 阅读全文
posted @ 2020-04-15 22:47 飞翔码农 阅读(9308) 评论(0) 推荐(0) 编辑
摘要:前言 谈这个话题,没有任何语言之争,只是个人开发的经历。 适合 开发语言的选择只是当时条件下适合每个项目或者每个团队乃至每个公司的最佳选择,并不是说XXX公司也用这个我们用这个肯定没问题。 当时还在某手机公司,有次跟某公司后端leader聊天的时候,我说我们现在一些高并发的场景的项目都在用lua开发 阅读全文
posted @ 2019-10-20 08:46 飞翔码农 阅读(9689) 评论(1) 推荐(0) 编辑
摘要:为什么要使用goconfig解析配置文件 目前各语言框架对配置文件书写基本都差不多,基本都是首先配置一些基础变量,基本变量里面有环境的配置,然后通过环境变量去获取该环境下的变量。例如,生产环境跟测试环境使用同一份配置,但是相应的环境下的变量的值是不一样的,通过环境获其取对应的的key value。没 阅读全文
posted @ 2019-07-20 08:49 飞翔码农 阅读(4573) 评论(0) 推荐(0) 编辑
摘要:为什么要使用命令行 觉得这个问题不应该列出来,又觉得如果初次进行WEB开发的话,可能会觉得所有的东西都可以使用API去做,会觉得命令行没有必要。 其实,一个生产的项目命令行是绕不过去的。比如运营需要导出报表、统计下付费用户、服务不稳定修改下订单状态等等,再者,命令行的工具基本都是内部使用,调试日志可 阅读全文
posted @ 2019-07-14 19:06 飞翔码农 阅读(4532) 评论(1) 推荐(1) 编辑
摘要:为什么要使用连接池 一个数据库服务器只拥有有限的连接资源,一旦所有的连接资源都在使用,那么其它需要连接的资源就只能等待释放连接资源。所以,在连接资源有限的情况下,提高单位时间的连接的使用效率,缩短连接时间,就能显著缩短请求时间。 所以就有了连接池的概念,在初始化时,创建一定数量的连接,先把所有连接存 阅读全文
posted @ 2019-07-09 07:54 飞翔码农 阅读(10595) 评论(1) 推荐(1) 编辑
摘要:为什么要用zap来写日志 原来是写PHP的,一直用的error_log,第一次写Go项目的时候,还真不知道该怎么写日志,后来就按照PHP的写法自己不成规范的捣鼓写。去了新公司之后,发现用的是zap。后来查询 了解了下zap,前同事反应他们很多大公司都在使用zap写日志,GitHub上star 高达7 阅读全文
posted @ 2019-06-30 11:32 飞翔码农 阅读(11343) 评论(0) 推荐(0) 编辑
摘要:为什么要使用Supervisord 17年第一次写Go项目的时候,用Go开发项目倒没没费多大劲,很快就开发完成了。到了在测试环境部署的时候,由于不知道有 Supervisord 这个软件,着实花了些功夫。总不能跟开发环境一样,直接执行编译生成的二进制文件吧,即使 后台执行了,万一它挂了,没人知道,即 阅读全文
posted @ 2019-06-22 09:03 飞翔码农 阅读(4204) 评论(1) 推荐(0) 编辑
摘要:gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率。 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须重新编译一次,即go build .像我们从事go web的开发,可能是从其他解释型语言跨过来的,就 阅读全文
posted @ 2019-06-19 21:59 飞翔码农 阅读(3377) 评论(0) 推荐(0) 编辑
摘要:glide 是golang项目开发中是特别重要的软件,没有它,golang的项目可能都无法发布。 为什么要使用glide 平时我们开发Go项目的时候,使用第三方的包的时候都直接使用go get 去获取第三方的包,但是go get获取到的包是项目的develop分支,我们开发的时候倒是可以不怎么关注。 阅读全文
posted @ 2019-06-15 13:16 飞翔码农 阅读(1345) 评论(0) 推荐(0) 编辑