聊聊golang的context

golang的context的主要用途在于在多个goroutine之间传递数据,管理多个goroutine的生命周期。实际的应用场景有比如,在http服务中,每个请求就对应一个goroutine,而请求之中可能又会调用别的api,而产生更多的goroutine,用context来管理这些goroutine就能比较方便在这些goroutine中传递数据和管理。 主要方法 func Background() Context Background() 返回一个空的context,这是一个根节点。 fu...阅读全文

51CTO博客 2020-03-21 11:46:14 wx5e1abbbb0a5e5

golang调用原生epoll引起event loop阻塞问题

前言: golang标准库net很优秀,可以让开发者轻易构建非阻塞网络服务,但开发爽快带来的问题协程数加大,比如在net/http里一个连接两个协程,grpc算是业务和keepalive心跳是四个协程,数据的进出是通过channel传输。 golang netpoll抽象了epoll事件的调用,借助runtime的gopark&goready实现就绪协程的调度,让应用层用同步方法构建io异步的网络应用。 该文章原文地址 http://xiaorui.cc/archives/6758 问题: 那么...阅读全文

峰云就她了 2020年3月17日 rfyiamcool

[译]自定义Go Json的序列化方法

编译自 Custom JSON Marshalling in Go。 我们知道,通过tag,可以有条件地实现定制Go JSON序列化的方式,比如json:",omitempty", 当字段的值为空的时候,我们可以在序列化后的数据中不包含这个值,而json:"-"可以直接不被JSON序列化,如果想被序列化key-,可以设置tag为json:"-,",加个逗号。 如果你为类型实现了MarshalJSON() ([]byte, error)和UnmarshalJSON(b []byte) error方...阅读全文

鸟窝 2020年03月19日 smallnest

理解Go接口的实际应用

Go是静态类型的编程语言,自2009年发布以来,已经十多岁了。现在,Go广泛应用于云原生系统、微服务、web开发、运维等场景,并且在webassembly、嵌入式等也有进一步的探索。尤其在中国,Go语言越来越多的被众多公司和开发者所采用,相关的研究文章也不断的涌现,从编译器的优化、运行时的内部机制、标准库的设计、语言规范的探索、第三库的研究和应用、产品中的应用、不同语言的比较等等目不暇接。 Go是面向对象的编程语言吗? 官方FAQ给出了标准答案: Yes and No。 当然,Go有面向对象编程...阅读全文

鸟窝 2020年03月15日 smallnest

图解Go运行时调度器

本文翻译自《Illustrated Tales of Go Runtime Scheduler》。 译注:原文章结构有些乱,笔者自行在译文中增加了一些分级标题,让结构显得更清晰一些:)。 多goroutines形式的Go并发是编写现代并发软件的一种非常方便的方法,但是您的Go程序是如何高效地运行这些goroutines的呢? 在这篇文章中,我们将深入Go运行时底层,从设计角度了解Go运行时调度程序是如何实现其魔法的,并运用这些原理去解释在Go性能调试过程中产生的Go调度程序跟踪信息。 所有的工程...阅读全文

Tony Bai 三月 21, 2020 bigwhite

使用minio搭建高性能对象存储-第一部分:原型

近期参与了一个项目,该项目有存储大量图片、短视频、音频等非结构化数据的需求。于是我优先在Go社区寻找能满足这类需求的开源项目,minio就这样进入了我的视野。 图:minio logo 其实三年前我就知道了minio,并还下载玩(研)耍(究)了一番,但那时minio的成熟程度与今天相比还是相差较远的(当时需求简单,于是选择了较为熟悉的weedfs)。而如今的minio在github上收获了广泛的关注,小星星也是蛮多的(20k+ star)。它不仅被Go社区使用,在其他语言社区也有着广泛应用。我可...阅读全文

Tony Bai 三月 16, 2020 bigwhite

2020年热门Go语言开发的优点与缺点

本文谈谈Go语言的好与坏,并在目尾推荐了一个golang devops开发工程师学习完整体系。 什么是Go语言:Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。Go语言起源于2007年,当时Google的技术大神们备受C++越来越臃肿的困扰,决心开发一种新的语言来取代C++。他们认为:与其在臃肿的语言上不断增加新的特性,不如简化编程语言。于是,Golang这门新语言应运而生。...阅读全文

简书 2020-03-21 18:32:52 探索Linux服务器架构师

HTML的<marquee>标签怎么用?

在HTML中,<marquee>标签用于在网页中创建滚动文本或图像;可以从水平向左或向右或向右或向左滚动,也可以从上到下或从下到上滚动。 原文地址:HTML的标签怎么用?marquee元素是成对出现的,下面是<marquee>标签的一些属性列表: 示例1: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Marquee标签</title> <style> .main { text-align:center; } .marq ...阅读全文

简书 2020-03-21 18:32:48 yanghs

python爬虫笔记:开始前的准备

前言 好久不见,Python基础系列完结也有段时间了,希望帮到了大家。 从今天开始我将开始更新一个新的系列:Python爬虫学习笔记。 如你所见,本系列并不是复杂完备的教程,主要还是和大家一起分享我在学习Python爬虫的一些想法以及知识总结。 如果你已经看完了我之前的Python基础系列文章,对Python的基本语法有了一定的概念,那么可能我接下来要开始写的东西可能会对你熟练运用Python有所帮助。 Python爬虫基础知识 1. 爬虫的基本概念 爬虫是一类用于信息搜集的程序,主要用于在一个...阅读全文

简书 2020-03-21 18:32:47 pr1s0n

04 | 常量与iota

常量 使用const定义,类型可不指定 const Con string = "hello" const Constr = "world" func TestCon(t *testing.T){ //t.Log(getConNum()) t.Log(Con) t.Log(Constr) t.Log(reflect.TypeOf(Con)) } 常量可以是字符、字符串、布尔值或数值(整数型、浮点型和复数) 常量的值必须在编译时就能够确定 func getConNum() int { return ...阅读全文

简书 2020-03-21 18:32:43 刀斧手何在

【Go语言踩坑系列(四)】字典

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 要点 本文关注Go语言map相关的语言特性。 map初始化与内存分配 首先,必须给map分配内存空间之后,才可以往map中添加元素: func main() { var m map[int]int // 使用var语法声明一个map,不会分配内存 m[1] = 1 // 报错:assignment to entry in nil map } 如果你使用的是make来创建一个map,Go在声...阅读全文

Segmentfault 2020-03-24 21:32:34 NoSay

Go 每日一库之 go-cmp

简介 我们时常有比较两个值是否相等的需求,最直接的方式就是使用==操作符,其实==的细节远比你想象的多,我在深入理解 Go 之==中有详细介绍,有兴趣去看看。但是直接用==,一个最明显的弊端就是对于指针,只有两个指针指向同一个对象时,它们才相等,不能进行递归比较。为此,reflect包提供了一个DeepEqual,它可以进行递归比较。但是相对的,reflect.DeepEqual不够灵活,无法提供选项实现我们想要的行为,例如允许浮点数误差。所以今天的主角go-cmp登场了。go-cmp是 Goo...阅读全文

Segmentfault 2020-03-24 10:32:35 darjun

【Go语言踩坑系列(三)】数组与切片

声明 本系列文章并不会停留在Go语言的语法层面,更关注语言特性、学习和使用中出现的问题以及引起的一些思考。 要点 本文关注Go语言数组和切片相关的语言特性。 数组和切片以及字符串的关系 相同点 Go语言中数组、字符串和切片三者是密切相关的数据结构。这三种数据类型,在底层原始数据有着相同的内存结构,在上层,因为语法的限制而有着不同的行为表现。 差别 Go语言的数组是一种值类型,虽然数组的元素可以被修改,但是数组本身的赋值和函数传参都是以整体复制的方式处理的。 Go语言字符串底层数据也是对应的字节数...阅读全文

Segmentfault 2020-03-24 10:32:35 NoSay

Go module 使用说明

go modules 是 golang 1.11 新加的特性。 1、设置go mod GO111MODULE GO111MODULE 有三个值:off, on和auto(默认值)。 GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。 GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。 GO111MODULE=auto,默认值,go命令行将会根据当...阅读全文

简书 2020-03-21 16:32:45 whoam1_python

gin-vue-admin 基于vue和gin 搭建的后台管理系统脚手架

gin-vue-admin 基于vue和gin 搭建的后台管理系统脚手架 项目地址:https://github.com/piexlmax/gin-vue-admin开发者(贡献者)列表开发者功能姓名@piexlmax 项目发起者 蒋*兆@krank666 前端联合作者 尹*@1319612909 前端css优化 杜*兰@granty1 代码积极贡献者 印*林gin-vue-admin gin+vue开源快速项目模板更新代码后如果遇到前端报错请执行 npm i 前端开发会不定期增加新的依赖 请注...阅读全文

简书 2020-03-21 16:32:45 Mr奇淼

从零学习 Go 语言(01):一文搞定开发环境的搭建

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 ## 1. 下载安装 Go语言 下载地址:https://golang.google.cn/dl/ 这...阅读全文

Go语言中文网 2020-03-21 15:39:21 hello_wbm

golang日志框架zap简洁配置

golang日志框架zap简洁配置 $ 前言 zap是uber开源的一款高性能日志组件框架 $ 配置目标 日志按天分割,一天一个文件 只保留近七天的日志 错误日志输出堆栈 源码 package base import ( "fmt" rotatelogs "github.com/lestrrat-go/file-rotatelogs" "go.uber.org/zap" "go.uber.org/zap/zapcore" "io" "os" "time" ) var Log *zap.Sugar...阅读全文

简书 2020-03-21 13:32:46 aoe5188

聊聊golang的context

golang的context的主要用途在于在多个goroutine之间传递数据,管理多个goroutine的生命周期。实际的应用场景有比如,在http服务中,每个请求就对应一个goroutine,而请求之中可能又会调用别的api,而产生更多的goroutine,用context来管理这些goroutine就能比较方便在这些goroutine中传递数据和管理。 主要方法 func Background() Context Background() 返回一个空的context,这是一个根节点。 fu...阅读全文

简书 2020-03-21 13:32:46 onepunchgo

gin-vue-admin 基于vue和gin 搭建的后台管理系统脚手架

项目地址: https://github.com/piexlmax/gin-vue-admin 开发者(贡献者)列表 开发者 功能 姓名 @piexlmax 项目发起者 蒋*兆 @krank666 前端联合作者 尹* @1319612909 前端css优化 杜*兰 @granty1 代码积极贡献者 印*林 gin-vue-admin gin+vue开源快速项目模板 更新代码后如果遇到前端报错请执行 npm i 前端开发会不定期增加新的依赖 请注意更新 重构记录 2019年12月12日 17:15...阅读全文

Segmentfault 2020-03-23 18:32:32 蒋吉兆

【GO】详解GOROOT和GOPATH

GOROOT 其实就是golang 的安装路径 当你安装好golang之后其实这个就已经有了 GOPATH 作用: 存放sdk以外的第三方类库 自己收藏的可复用的代码 目录结构:$GOPATH目录约定有三个子目录 src存放源代码(比如:.go .c .h .s等) 按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。 pkg编译时生成的中间文件(比如:.a) golang编译包时 bin编译后生成的可执行文件(为了方便,可以把此目录加入...阅读全文

简书 2020-03-21 04:32:51 咔咔手赚网