202005-30 Go语言的协程和信道 HOT 学习Go语言,就不得不学习协程(Goroutines)和信道(Channels),正是因为有了协程和信道的机制,才使得Go语言对高并发的天然支持,下面就让我们对协程和信道的使用一探究竟吧! 继续阅读 >
202005-30 Go语言微服务实战之初识微服务 HOT 本系列的文章,将围绕搭建一个基于微服务架构的数据统计系统的实战例子展开,我们将展示如何将服务运行在docker容器中,并将其部署在kubernetes上,相信看完这个系列的文章后,你也可以快速入门后台开发。 继续阅读 >
202005-30 Go语言切片扩容规则闲谈 HOT 每个对象在内存中都要占一块空间,可能是1字节,可能是3字节,可能是8字节,所以对于一个 struct 来说,其字段类型会觉得这个结构体对象所占的内存,但是所占内存大小可能不是所有字段类型所占内存的大小,因为为了让 CPU 读取方便,我们就会对每个字段进行内存对齐。 继续阅读 >
202005-30 Go 语言 range 解析 HOT range 关键字在 go 语言中是相当常用好用的语法糖,可以用在 for 循环中迭代 array、slice、map、channel、字符串所有涉及到遍历输出的东西。 继续阅读 >
202005-07 go语言的内置容器 数组 HOT 数组是相同类型的一组数据构成的长度固定的序列,其中数据类型包含了基本数据类型、复合数据类型和自定义类型。数组中的每一项被称为数组的元素。数组名是数组的唯一标识符, 数组的每一个元素都是没有名字的,只能通过索引下标(位置)进行访问。因为数组的内存是一段连续的存储区域,所以数组的检索速度是非常快的,但是数组也有一定的缺陷,就是定义后长度不能更改。 继续阅读 >
202005-07 Go语言标准库 container 相关包的学习与实践 HOT Golang 提供了几个简单的容器供我们使用,本文在介绍几种 Golang 容器的基础上,实现一个基于 Golang 容器的LRU算法。 继续阅读 >
202004-17 Go语言 Yaml编码和解码 HOT YAML Ain’t Markup Language,一种非常简洁的非标记语言,可以快速的对Yaml进行编码和解码。 官网地址:https://gopkg.in/yaml.v2 GoDoc:https://godoc.org/gopkg.in/yaml.v2 继续阅读 >
202004-17 RPC系列之基本概念及go语言使用实现 HOT 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。 继续阅读 >
202004-17 WebAssembly增加Go语言绑定 HOT 为提供更好的跨平台支持,WebAssembly 正在积极推动其在本地桌面端的进展。与此同时,Wasmtime(WebAssembly runtime)近期为它增加了 Go 绑定功能,这意味着开发者可直接在 Go 应用程序中调用 WebAssembly 模块。 继续阅读 >
202004-17 吐血整理的GO语言部分框架、库必学清单! HOT 作为一款网红编程语言,Go语言还十分年轻,很多程序员无法及时了解到Go语言的框架、库和软件应用。近日,Github用户avelino分享了一张非常完整且庞大的表单,包括命令行、数据库、Web框架、机器学习、自然语言处理......以下是部分内容截取,感谢分享。 继续阅读 >
202004-17 Go语言如何实现stop the world? HOT 本文基于 Go 1.13。 在某些垃圾回收器算法中,“停止世界”(Stop the World: STW,下同)是跟踪内存使用最重要的阶段,它会停止程序的执行,以扫描内存使用,并添加写障碍。让我们回顾一下它在内部如何工作,以及它可能面临的潜在问题。 继续阅读 >
202004-17 关于 Go 语言优秀命令行库 Cobra 的探索 HOT Cobra 是 Golang 生态系统中最着名的项目之一。它简单,高效,并得到 Go 社区的大力支持。让我们来深入探索一下。 继续阅读 >
202004-16 Go监控模式(Monitor Pattern) HOT Go 能实现监控模式[1],归功于 sync 包和 sync.Cond 结构体。监控模式允许 goroutine 在进入睡眠模式前等待一个定特定条件,而不会阻塞执行或消耗资源。 继续阅读 >
202004-15 Go的Channel很强大,理解其内在概念会让它更强大 HOT Go 中的通道(channel)机制十分强大,但是理解内在的概念甚至可以使它更强大。实际上,选择缓冲通道或无缓冲通道将改变应用程序的行为和性能。 继续阅读 >
202004-15 Go刷LeetCode系列:二叉树(3)二叉树路径和 HOT 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 继续阅读 >
202004-15 为什么 Go 语言设计时没有泛型? HOT Go 是一门语法元素少、设计简单的编程语言,简单的设计往往意味着较弱的表达能力,工程师也需要使用更多时间编写重复的逻辑。Go 语言从发布到今天已经过去了 10 多年,向 Go 语言添加泛型的讨论也从 2010 年一直持续到今天。 继续阅读 >
202004-15 Go的泛型真的要来了—如何使用以及它们是怎么工作的 HOT 你没看错,这里讲的就是 Go 中的泛型。只不过还没有正式发布,是基于草案设计的,已经是实现了可运行的版本。所以,泛型到来真的不远了! Go 中的泛型已经接近成为现实。本文讲述的是泛型的最新设计,以及如何自己尝试泛型。 继续阅读 >
202004-13 Go新手容易犯的三个致命错误,你中招了吗? HOT 最近因为以前一些重要且古老的go项目基本没有人专职维护了,所以被安排去熟悉这些项目的代码,所以看了大量go的代码。历史原因,这些代码中或多或少有一些刚刚从PHPer转过来的Gopher去设计和开发的,自然有不少是在php(fpm模式下)码代码思路下埋藏的一些坑。今天我就来和大家一起分享一下最近发现的出现比率比较高的三个致命错误。 继续阅读 >
202004-11 打造 Zap 开箱即用日志组件 HOT 目前 golang 日志库的大众选择主要集中在: logrus, zap, zerolog. zap 和 zerolog 的性能都是优秀的, 但是从用法习惯上我更倾向于 zap. 继续阅读 >
202004-10 Go 每日一库之 validator:Go最优秀的验证库 HOT 今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。 继续阅读 >
202004-10 项目使用了 ORM,具体执行的是什么 SQL 语句总是很迷?xorm1.0 解决了 HOT 自定义上下文 SQL Log 需求有哪些? 可以使用自己的封装日志库,拓展日志输出问题,可以输出到 es(elasticsearch)等,方便日志分析。 方便定位 sql 问题。 集成 sql 指标监控,可以找出慢 sql,优化 sql 语句。 集成链路追踪(opentracing),更清楚知道业务都执行了哪些 sql 语句。 继续阅读 >
202004-10 八个字节的 UDP 如何传输数据 HOT 为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。 继续阅读 >