Go:字符串以及转换优化

![由 Renee French 创作的原始 Go Gopher 作品,为“ Go 的旅程”创作的插图。](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200610-Go-String-and-Conversion-Optimization/Illustration.png) ℹ️ 这篇文章基于 Go 1.14。 在 Go 语言中,将 byte 数组转换为 string 时,随着转换后字符串...阅读全文

Go语言中文网 2021-04-12 11:42:53 dust347

Golang 逃逸分析简介

# Golang 逃逸分析简介 ![](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200907-Go-Introduction-to-the-Escape-Analysis/0.png) > 本篇文章基于 Golang 1.13. `逃逸分析` 是 Golang 编译器中的一个阶段,它通过分析用户源码,决定哪些变量应该在堆栈上分配,哪些变量应该逃逸到堆中。 ## 静态分析 ...阅读全文

Go语言中文网 2021-04-12 11:36:05 double12gzh

GO进阶训练营

download:GO进阶训练营 Q:参加 Go 进阶训练营,需要具备什么基础?需要掌握 Go 语言基础语法,并具备一定的 Go 语言相关项目开发经验。 Q:学完课程后能到什么水平?Go 进阶训练营课程设计对标字节跳动 2-2 级胜任力模型,教学贴近大厂真实场景。课程中的实践驱动,不仅可以系统提升你的代码硬实力,同时也会培养你进入一线互联网大厂必备的思维能力。我们的课程培养目标是大厂的资深 Go 工程师、高级 Go 开发工程师、Go 技术专家。按照老师系统性的规划,用心学习,可以帮你摆脱低效和痛...阅读全文

51CTO博客 2021-04-12 10:38:46 mb606f2586973a4

鸭子类型 vs 结构化类型 vs 标称类型

Go 语言是哪一种? 编程语言具有类型概念 - 布尔类型,字符串,整型或者被称为类或者结构体的更加复杂的结构。根据如何将类型解析并赋值给各种构造(例如变量,表达式,函数,函数参数等),编程语言可以归类为鸭子类型,结构化类型或标称类型。 本质上,分类决定了对象如何被解析并推断为具体的类型。 ![](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200608-duck-typing-vs-st...阅读全文

Go语言中文网 2021-04-12 11:16:27 DoubleLuck

Go: stringer 命令,通过代码生成提高效率

![由 Renee French 创作的原始 Go Gopher 作品,为“ Go 的旅程”创作的插图。](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200605-Go-Stringer-Command-Efficiency-Through-Code-Generation/00.png) ℹ️ 这篇文章基于 Go 1.13。 `stringer` 命令的目标是自动生成满足 `fmt.Str...阅读全文

Go语言中文网 2021-04-12 11:03:51 kagxin

如何用 Go 编写词法分析器

*词法分析器是所有现代编译器的第一阶段,但是如何编写呢?让我们用 Go 从头开始构建一个。* ![lexer](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200601-How-to-Write-a-Lexer-in-Go/how-to-write-a-lexer-in-go-featured.jpg) ## 什么是词法分析器? 词法分析器有时也称为扫描器,它读取源程序并将输入转换为标记...阅读全文

Go语言中文网 2021-04-12 10:19:53 alandtsang

在 BigCache 中存储任意类型(interface{})

这篇文章也发在我的个人 [博客](https://calebschoepp.com/blog) 最近在工作中,我的任务是向我们的一个 Golang 服务添加缓存。这个服务需要传入请求以提供用于身份验证的 API key。因此,对于每个请求,该服务都会额外查询数据库以验证 API key,尽管它通常是相同的 key。这很不好。实现缓存最终比我想象的要难得多。 经过调研和工程师之间详尽讨论之后,我们认为 [BigCache](https://github.com/allegro/bigc...阅读全文

Go语言中文网 2021-04-12 10:16:46 alandtsang

将 Go 作为脚本语言用

Go 作为一种可用于创建高性能网络和并发系统的编程语言,它的生态应用变得[越来越广泛](https://blog.golang.org/survey2019-results),同时,这也激发了开发人员使用 Go 作为脚本语言的兴趣。虽然目前 Go 还未准备好作为脚本语言 “开箱即用” 的特性,用来替代 Python 和 Bash ,但是我们只需要一点点准备工作就可以达到想要的目标。 [正如来自 Codelang 的 Elton Minetto 所说的那样](https://dev.to/c...阅读全文

Go语言中文网 2021-04-12 09:51:22 polaris

阿里云go开发环境搭建过程

开通了一个阿里云来玩,记录一下环境搭建的过程。这篇文章主要介绍了阿里云go开发环境搭建过程,非常不错,具有参考借鉴价值,需要的朋友可以参考下:运行环境#切换到安装文件夹 cd /usr/local #下载go #由于墙的原因,直接下载官方的可能会失败,这里用国内一个论坛的 wget https://dl.gocn.io/golang/1.8.4/go1.8.4.linux-amd64.tar.gz #解压 tar -zxvf go1.8.4.linux-amd64.tar.gz #创建工作目录 ...阅读全文

51CTO博客 2021-04-11 23:48:24 mb607022e25a607

golang 一份漂亮的Dockerfile

对于dockerfile而言,何为完美? 我认为应该满足以下三点: 体积小 构建快 够安全 话说不说,直接上拿走可用的Dockerfile。 FROM golang:1.13.5-alpine3.10 AS builder WORKDIR /build RUN adduser -u 10001 -D app-runner ENV GOPROXY https://goproxy.cn COPY go.mod . COPY go.sum . RUN go mod download COPY . . ...阅读全文

简书 2021-04-12 00:32:34 陈光岚_强化班

关于Golang的那些事(八)-- 使用共享变量实现并发

在上一篇文章中,我用goroutine和通道来实现了一种直接和自然的并发方式。在串行程序中(也就是一个程序只有一个goroutine),程序中各个步骤的执行顺序由程序逻辑来决定,比如在一系列语句中,第一句在第二句之前执行,以此类推。如果没有先后顺序,那么这两件事就是并发的。在并发调用的时候如果没有额外的同步机制的情况下,从两个或多个goroutine同时调用这个函数,它们都能正常的运行,那么我们称之为这个函数是并发安全的。 我们经常会遇到并发调用不工作的情况,包括死锁、活锁以及资源耗尽,最重要的...阅读全文

简书 2021-04-12 00:32:34 llkevin13579

DevOps CI/CD 分析(三)之K8S yaml模版配置详解

前面我们讲解了Dockerfile基础命令、编写Dockerfile,因为整个DevOps CI/CD过程所涉及的知识面比较多,所以本节我们则开始总结Kubernetes(K8S) yaml模版配置,当我们比较熟悉Kubernetes(K8S) yaml模版内容时候,那最终在编写gitlab-ci.yml文件时候就游刃有余了! Kubernetes Service&Deployment # 版本号 apiVersion: v1 # Kubernetes资源类型,服务类型 kind: Servic...阅读全文

Go:每分钟处理百万请求

【译文】原文地址 问题 从事匿名遥测和分析系统,我们的目标是能够处理来自大量客户端的POST请求。我们的web服务将接收JSON文档内容包括很多的负载需要发送到亚马逊S3存储,为了后续使用map-reduce来处理这些数据。 传统方式我们将创建worker-tier架构,使用包含如下中间件: SideKiq Resque DelayedJob Elasticbeanstalk worker tier RabbitMQ 搭建两个集群,一个部署前端另一个用于workers,这样就可以通过扩展来应对大...阅读全文

简书 2021-04-12 00:32:34 汪明军_3145

手撸golang 仿spring ioc/aop 之3

手撸golang 仿spring ioc/aop 之3 缘起 最近阅读 [Offer来了:Java面试核心知识点精讲(框架篇)] (王磊 , 2020.6) 本系列笔记拟采用golang练习之 Talk is cheap, show me the code. Spring Spring基于J2EE技术实现了一套轻量级的 Java Web Service系统应用框架。 它有很多优秀的特性,很多公司都选择把 Spring作为产品或项目的基础开发架构。 Spring的主要特性包括: 1. 轻量 2. ...阅读全文

简书 2021-04-12 00:32:33 老罗话编程

2021-04-11:判断二叉树是否是完全二叉树?

2021-04-11:判断二叉树是否是完全二叉树? 福大大 答案2021-04-11: 按层遍历。 代码用golang编写。代码如下: package main import ( "container/list" "fmt" ) func main() { head := &TreeNode{Val: 1} head.Left = &TreeNode{Val: 2} head.Right = &TreeNode{Val: 3} head.Left.Left = &TreeNode{Val: 4}...阅读全文

简书 2021-04-12 00:32:32 福大大架构师每日一题

Golang垃圾回收机制

参考链接: Python中的屏障对象Barrier Objects什么是垃圾回收 曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法: 内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的代码段。然而检测工具难免有疏漏和不足,只能起...阅读全文

51CTO博客 2021-04-11 19:54:55 wx57f63dceec388

RabbitMQ 入门 (Go) - 5. 使用 Fanout Exchange 做服务发现(下)

到目前为止,我一直专注于如何让消息进出消息代理,也就是RabbitMQ。实际上,我们可以继续使用 RabbitMQ 和它的 Exchanges 来连接这个应用程序的其他部分,但是我想探索一个稍微不同的模型:我想使用协调器来跟踪哪些类型的消费者得到消息通知。这样的话,我断开了传感器数据生成器和数据使用者之间的连接。同时为了处理这些数据通信,我决定使用事件(event)来通知用户系统中正在发生的事情,并让他们决定是否要处理数据。 其原理大致如下:在协调器内部,我们有构建好的 QueueListene...阅读全文

51CTO博客 2021-04-11 21:32:51 mb607022e25a607

CentOS6.8配置GO语言开发环境

Go语言是谷歌2009发布的第二款开源编程语言,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 鉴于越来越多的开源项目都采用Go为开发语言,本文介绍Linux(CentOS 6.8)下GO开发环境的搭建与使用。一、Go安装使用1、下载Go源码包https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz上传到/usr/local/src目录下2、...阅读全文

51CTO博客 2021-04-11 17:10:43 mob604756eba0ee

Golang后端面试汇总-001

基础面试 go的调度 GPM是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区别于操作系统调度OS线程。 G很好理解,就是个goroutine的,里面除了存放本goroutine信息外 还有与所在P的绑定等信息。 P管理着一组goroutine队列,P里面会存储当前goroutine运行的上下文环境(函数指针,堆栈地址及地址边界),P会对自己管理的goroutine队列做一些调度(比如把占用CPU时间较长的goroutine暂停、运行后续的goroutine等等)...阅读全文

简书 2021-04-11 14:32:32 流雨声