这是一个很经典的面试题,例如现在面试官让你写一个超时控制函数,你是否有注意到内存泄露? 如果你的代码是这样写的,那么恭喜你,内存泄露了! 我们修改一下 main 函数: 执行一下再看看,效果很神奇。 它会一直打印 52,证明我们上面开的 50 个协程一直没有被释放。 问题其实就出在我画的圈里面,因为每一个程序都超时了,…
分类: Golang
共 17 篇这个系列的文章来自于,我们以前在团队内部的分享,用来做微服务体系架构设计的学习使用,一开始是放在 github 上的,近期有时间,就打算整理一下,顺便将这段时间的学习和沉淀融入进去,可能会很庞大,所以就先列出来一个目录。 Golang 基础篇 如果不喜欢看视频的话推荐看这个系列的文章 : https://www.liw…
Goridge 是 SpiralsCout 开源的高性能的 PHP 到 Golang 编解码器库。该库可以帮助你在 PHP 调用 Go 的服务方法。 Goridge 入门 使用方法: 我们先来编写简单的 Go 程序,目的就是提供一个 rpc 接口给 PHP 进行访问。 Hi 函数用来接受一个 name 入参。 PHP …
Web 核心 Server 在 《Golang 主流 Web 框架路由实现分析》中我们注意到对于一个 Web 框架来说,至少提供了三个抽象: 代表服务器的吃哦续爱那个,我们这里称之为 Server 代表上下文的抽象,我们这里称之为 Context 路由树 从前面框架对比来看,对于一个 Web 框架来说,我们首先要有一个…
Beego 路由实现分析 Beego 的设计初衷是为了提供一个简单易用的 web 框架,同时也保证了高性能和可扩展性。它的设计理念是基于 MVC 模式,在 Go 最早期的时候算是最流行的框架之一。 下面的代码是 Beego 最简单的使用方法。 这是一段非常经典的基于 MVC 的代码结构。 web.Router 用来注册…
你好,我是一笑。 在企业中越早进行公共库的沉淀越有利,在企业开发中中间件的集成是每个团队都需要的比如 MySQL、Redis、Kafka 这些中间件,几乎每个团队都需要使用,我们在开发项目的时候也需要使用这些中间件来构建我们的应用。 在团队使用 Go 语言构建应用的时候,各个项目组可能会存在自己封装中间件的行为,虽然大…
在 Go 中的错误处理与其他语言例如 Java,PHP 的错误处理还是有很大差异的,他没有异常的 try catch 机制,而是在函数的返回值中带上 error,让调用者先判断 error 在处理函数的返回值,调用者通过 error 的级别来判断是否触发 painc,这种高度自主化的错误处理模式原本是 go 语言的一大…
如果你尝试学习 Go 或者你正在为自己建立一个 PoC 或一个玩具项目,这个项目布局是没啥必要的。从一些非常简单的事情开始一个 main.go 文件绰绰有余。当有更多的人参与这个项目时,你将需要更多的结构,包括需要一个 toolkit 来方便生成项目的模板,尽可能大家统一的工程目录布局。 因为在大型多人协作的项目中如果…
0x00 什么是 IoC IoC (控制反转)并不是一个新鲜的概念,如果之前有过 Java 经验,那么肯定不会对 IoC 陌生,而 PHP 近几年的框架其实也开始出现了大量的容器应用,在这里需要注意 IoC 和 IoC 容器是两个概念,不要混淆。 IoC 是编程思想,而 IoC 容器是帮助我们进行 IoC 的工具,我们…
在导入数据之前,我这里准备了一个book 表,在表中存储了一万条数据。 我们现在想办法,将这些数据导入到 es 中,在这里我们是用 grom 来完成数据的读取,我们先导入 50 条数据。导入数据 之前我们应该先创建 mapping。 先简单说一下 key 和 keyword 的区别,如果需要全文检索那么就用 text …