Golang 有多快?—— 对比 Go 和 Python 实现的 Eratosthenes 筛选法

![Photo by Max Duzij on Unsplash](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200523-How-Fast-Is-Golang/Photo.jpeg) 时间宝贵,所以为什么浪费时间等待程序运行?除非过去几年与世隔绝,否则不会错过 Go 的兴起。由谷歌工程师 Robert Griesemer,Rob Pike 和 Ken Thompson [创造的](https:/...阅读全文

Go语言中文网 2020-08-18 15:55:43 dust347

Go:使用 Delve 和 Core Dump 调试代码

![由 Renee French 创作的原始 Go Gopher 为“ Go Go 之旅”创建的插图。](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20200523-Go-Debugging-with-Delve-and-Core-Dumps/Illustration.png) ℹ️ 这篇文章基于 Go Delve 1.4.1。 core dump 是一个包含着意外终止的程序其内存快照的文件。这个文...阅读全文

Go语言中文网 2020-08-18 15:48:10 dust347

zap 高性能是如何做到的?

![插图由“go 之旅”提供,原图由 Renee French 创作](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20190815-go-how-zap-package-is-optimized/1__mMI_UYf-DsS04MU5AnRQg.png) Go 生态系统有许多流行的日志库,选择一个可以在所有项目中使用的日志库对于保持最小的一致性至关重要。易用性和性能通常是我们在日志库中考虑的两个指标。...阅读全文

Go语言中文网 2020-08-18 14:56:27 lts8989

Go 中可取消的读取操作

在使用 Go 进行工作时,使用 `io.Reader` 和 `io.Writer` 接口是最常见的情场景之一。这很合理,它们是数据传输的主力接口。 关于 `io.Reader` 接口,有一点令我困惑:它的 `Read()` 方法是阻塞的,一旦读取操作开始,你没有办法去抢占它。同样,也无法在读取操作上执行 `select` 操作,异步协调多个 `io.Reader` 时的读取操作会有点棘手。 `io.ReadCloser` 是 Go 提供的一个常用的退出通道,在许多情况下,它确实允许你...阅读全文

Go语言中文网 2020-08-18 14:49:05 DoubleLuck

go进程管理工具Pmon2实践

![](http://p0.qhimg.com/t017d6cbb68aed4b693.png) [360导航团队](https://hao.360.com)使用 `go` 语言开发 `web` 服务时间也比较早,对于 `go` 服务的进程管理工具的选择上也做了很多尝试。 `go` 官方并没有提供任何进程管理工具供大家使用,所以我们往往部署线上的 `go` 服务时会借助其他工具。常用的方式无非是如下这几种: 1. `nohup + &` 2. 系统内置常驻进程管理工具(`in...阅读全文

Go语言中文网 2020-08-18 13:21:50 apptut

Go:gops 如何与 runtime 交互?

![](hhttps://raw.githubusercontent.com/studygolang/gctt-images2/master/20200405-go-how-does-gops-interact-with-the-runtime/1_3PCyB5PhH_NEZoNnj693dA.png) 本文基于 Go 1.13 和 gops 0.3.7。 `gops` 旨在帮助开发人员诊断 Go 进程并与之交互。它提供了追踪运行中的程序数秒钟,通过 `pprof` 获取 CPU 的...阅读全文

Go语言中文网 2020-08-18 11:24:44 DoubleLuck

【入门向】在Golang中像Python一样快速使用HTTP请求

本文将介绍一个 Golang 下的 Http 请求封装库。可以与 Python 的 requests 库类似的配置请求和处理返回。 获取 Goreq go get -u github.com/zhshch2002/goreq Quick start 首先,我们来发起一个 GET 请求,代码非常简单。如下: func main() { res := goreq.Do(goreq.Get("https://httpbin.org/get")) if res.Err != nil { fmt.Prin...阅读全文

简书 2020-08-18 06:32:52 zhshch

浅谈 k8s ingress controller 选型

名词解释 阅读本文需要熟悉以下基本概念: 集群:是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等云资源。 实例(Pod):由相关的一个或多个容器构成一个实例,这些容器共享相同的存储和网络空间。 工作负载(Node):Kubernetes 资源对象,用于管理 Pod 副本的创建、调度以及整个生命周期的自动控制。 服务(Service):由多个相同配置的实例(Pod)和访问这些实例(Pod)的规则组成的微服务。 Ingress:Ingress 是用于将外部 HTTP(S)流量路由到服...阅读全文

简书 2020-08-18 06:32:51 城市里永远的学习者

如何快速优雅的掌握Rust | 01

原创:星宫数据 “ 掌握一门全新的编程语言,最短5分钟就可以。”开篇 学习掌握一门编程语言,难不难?怎么学?要多久?怎么样算掌握了?相信这是很多想做程序员的同学们的困惑。但如果我告诉你,掌握一门全新的编程语言,最短5分钟就可以,是不是惊掉了你的下巴?当然,这里说的5分钟掌握一门语言,前提是你已经有很多这方面的积累,这门新的语言的语法和使用,也还没有完全跳跃式的演进和变化,例如从面向对象的语言中,突然接触函数式编程语言scala,那就不是几分钟能搞定的事了。但是有Java基础,学习JavaScri...阅读全文

简书 2020-08-18 06:32:49 星宫数据科技

轻量快速的 Python ASGI 框架 uvicorn

什么是 Uvicorn ? 答:Uvicorn 是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器。 什么是 uvloop 和 httptools ? 答: uvloop 用于替换标准库 asyncio 中的事件循环,使用 Cython 实现,它非常快,可以使 asyncio 的速度提高 2-4 倍。asyncio 不用我介绍吧,写异步代码离不开它。 httptools 是 nodejs HTTP 解析器的 Python 实现。 什么是 ASGI 服务器? 答: 异...阅读全文

简书 2020-08-18 06:32:46 羋虹光

golang踩坑---批量生成随机数重复问题

今天项目里面遇到一个问题,一个业务需要动态生成多个随机数和随机字符串,都知道golang中生成随机数的核心是设置随机数种子,于是我先使用如下代码随机生成十个5位的字母,每一次循环都获取当前时间作为随机数种子来保证随机性。 func Test1(t *testing.T) { for i := 0; i < 10; i++ { //设置随机数种子 rand.Seed(time.Now().Unix()) bytes := make([]byte, 5) for i := 0; i < 5; i++...阅读全文

简书 2020-08-18 06:32:40 lannisiter

go开发环境搭建(windows系统)

开发环境搭建 1、下载golang安装包,最新版本1.15:https://studygolang.com/dl image.png 2、设置环境变量 计算机->属性->高级系统设置->环境变量 新建用户变量如下: GOROOT=C:\Go // Go安装目录 GOPATH=C:\GoPath // 新建目录作为workspace 添加环境变量如下: Path=C:\GoPath\bin; 3、检查是否安装成功 go version // go version go1.14.3 windows/...阅读全文

简书 2020-08-18 06:32:40 风铃草613

go语言实现base58加解密

package tool import ("bytes""fmt""math/big") ////base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值。区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,//// 如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。////////结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。////base58的go...阅读全文

51CTO博客 2020-08-17 18:10:14 v824394795

Redis Go语言与Redis数据库交互

安装go get github.com/gomodule/redigo/redis安装完成后,可以自己创建一个 go 文件:test.go内容如下:package mainimport "github.com/gomodule/redigo/redis"func main(){ conn, _ := redis.Dial("tcp", ":6379") defer conn.Close() conn.Do("set", "c1", "hello")}然后编译运行该文件,之后如果在 redis 中...阅读全文

51CTO博客 2020-08-17 17:01:14 品途旅游

ARTS 第14周| LeetCode 683 K个空花盆 | Redis 持久化 | MySQL 索引失效

ARTSARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。本周内容Algorithm本周的算法题是 LeetCode 683 K个空花盆。这道题最简洁的方法就是用双指针。实现比较简单,但是理解起来不太容易。核心思路就是翻转 bulbs 的映射到 花盆->开花天数 的 days. 题目...阅读全文

Segmentfault 2020-08-22 18:32:32 casmo澎湃哥

Go基础变量和常量

Go语言变量和常量命名规则Go语言命令规则: 一个名字必须以一个字母或下划线开头,后面可以跟任意数量的字母、数字、或下划线。大写字母和小写字母是不同的变量关键字Go语言中有25个关键字,关键字不能用于声明变量,只能在特定的语法结构中使用,具体关键字如下break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type c...阅读全文

Segmentfault 2020-08-21 19:32:32 无常

Go语言简介

Go语言简介1.Go语言的诞生2.Go语言特点3.Go语言应用领域4.使用Go语言的公司5.为什么学Go语言1.Go语言的诞生Go语言是由谷歌推出的一门静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言官网 golang.orgGo语言作者 从左到右依次是: Robert Griesemer 曾开发过V8 JavaScript引擎和Java HotSpot虚拟机Rob Pike 曾开发过Plan 9操作系统,他与肯·汤普逊共同开发了UTF-8Ken Thompson Unix操作...阅读全文

Segmentfault 2020-08-21 11:32:34 老虎Linux