Dingding's Blog

希望多年后我依然能坚持在这里...

Leetcode 30 -- Day 7

Counting Elements

Question Given an integer array arr, count element x such that x + 1 is also in arr. If there're duplicates in arr, count them seperately. Example Example 1: Input: arr = [1,2,3] Output...

Go 字符串中的潜在问题

首发于:https://studygolang.com/articles/25537 Go 字符串中的潜在问题 在我之前的文章 Go 中我喜欢的东西中提到过,我喜欢的 Go 的东西其中之一就是它的字符串(通常还有切片)。从一个 Python 开发者的角度看,它们之所以伟大,是因为创建它们时开销很少,因为它们通常不需要复制。在 Python 中,任何时候操作字符串都需要复制一部分或全部字符...

Go 项目的布局

首发于:https://studygolang.com/articles/24686 Go 项目的布局 Kyle C. Quest 2017年9月12日 · 5 min 阅读 读过了 Tour of Go,在 https://play.golang.org/ 上把玩过,然后你感觉你准备好写一些代码了。很棒!但是,你不确定该如何组织你的项目。可以将代码放在你想放的任意地方吗?有没有组织代码...

Module 第 1 部分:为什么和做什么

首发于:https://studygolang.com/articles/24580 Module 第 1 部分:为什么和做什么 引言 Module 针对自 Go 语言初版发布以来即成为开发者痛点的三个关键问题提供了完整的解决方案,使得开发者: 能够在 GOPATH 工作区之外使用 Go 代码; 能够对依赖包进行版本控制并识别可以使用的最兼容版本; 能够使用 Go 原生...

Go 垃圾回收:第三部分 - GC 的步调

首发于:https://studygolang.com/articles/24562 Go 垃圾回收:第三部分 - GC 的步调 前言 这是三篇系列文章中的第三篇。该系列文章提供了一种对 Go 垃圾回收背后的机制和概念的理解。本篇的主要内容是 GC 如何控制自己的步调。 三篇文章的索引: 1)Go 垃圾回收:第一部分 - 概念 2)Go 垃圾回收:第二部分 - GC 追踪 3)Go ...

传递回调函数和指针到 Cgo

首发于:https://studygolang.com/articles/24447 传递回调函数和指针到 Cgo Cgo允许 Go 程序调用 C 库或其他暴露了 C 接口的库。正是如此,这也成为 Go 程序员工具箱的重要组成部分。 使用Cgo可能会比较棘手,特别是在 Go 和 C 代码中传递指针和回调函数时。 这篇文章讨论了一个端到端当例子,包含了如下几方面: Cgo的基本使用...

理解 Go 的空接口

首发于:https://studygolang.com/articles/24407 理解 Go 的空接口 空接口可用于保存任何数据,它可以是一个有用的参数,因为它可以使用任何类型。要理解空接口如何工作以及如何保存任何类型,我们首先应该理解空接口名称背后的概念。 接口(interface{}) Jordan Oreilli 对空接口的一个很好的定义: 接口是两件事物:它...

Go 中的并发 Bug

首发于:https://studygolang.com/articles/24041 Go 中的并发 Bug Go 目前正在通过新的并发原语(concurrency primitives)goroutine 和 channel 试图简化并发编程并减少报错。但是,实际情况怎么样呢?两位来自宾夕法尼亚州立大学和普渡大学的研究员 Yiying Zhang 和 Linhai Song 对 Go ...

在 Go 中使用微服务架构的好处

首发于:https://studygolang.com/articles/24267 在 Go 中使用微服务架构的好处 前言 我们已经讨论“微服务架构”很长一段时间了。它是软件架构中最新的热门话题。那么什么是微服务呢?我们为什么要使用它?为什么要在 Golang 中使用微服务架构?它有哪些优点? 本文中,我将会探讨一些相关的问题。废话不多说,让我们开始吧。 什么是微服务? 微服务是一...

无缓冲和有缓冲通道

首发于:https://studygolang.com/articles/23538 无缓冲和有缓冲通道 Go 中的通道(channel)机制十分强大,但是理解内在的概念甚至可以使它更强大。实际上,选择缓冲通道或无缓冲通道将改变应用程序的行为和性能。 无缓冲通道 无缓冲通道是在消息发送到通道时需要接收器的通道。声明一个无缓冲通道时,你不需要声明容量。例如: package ma...