go协程和线程的区别

线程需要内核进程调度,有CPU时间片的概念,进行抢占式调度。 协程跟子程序执行类似,但是和子程序相比,协程有挂起的概念,协程可以挂起跳转执行其他协程,合适的时机再跳转回来。 相比其他语言,golang采用了MPG模型管理协程,更加高效,但是管理非常复杂。 M:内核级线程 G:代表一个goroutine P:Processor,处理器,用来管理和执行goroutine的。P的个数取决于设置的GOMAXPROCS,go新版本默认使用最大内核数。 单核场景:P绑定了M之后,P执...阅读全文

Go语言中文网 2020-12-01 21:57:25 minwell

bloom filter浅析(基本概念,概率分析,源码分析)

基本概念Bloom filter是一个空间高效(space- efficient)概率算法,被用于测试一个元素是否存在于一个集合中。 存在假阳性(false positive,表示实际是假但误辨为真的情况)匹配的可能,但不存在假阴性(false negatives)的可能。也就是说,一次查询返回的结果是可能在集合里或者绝对不在集合里。 最常用的操作是校验元素是否存在于集合中,也可以添加元素,但不可以删除元素。 同时,越多元素被加入到集合中,假阳性的概率就会越高。 Bloom filter一般应用...阅读全文

Segmentfault 2020-12-03 15:32:33 paradoximov

Go基础编程:结构体

结构体(struct)是自定义方式形成新的数据类型,结构体是类型中带有成员的复合类型。Go 语言结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员。来描述真实世界的实体和实体对应的各种属性。结构体属性也叫字段或成员,每个字段都有名称和类型,每个名称是唯一的。可以是任何类型,如普通类型、复合类型、函数、map、interface、struct等,所以我们可以理解为go语言中的“类”。定义结构体定义方式如下:type name struct{ fieldNam...阅读全文

Segmentfault 2020-12-03 15:32:32 一夕烟云

对于flutter,我有话说

对于一个喜欢追求新技术的人来说,flutter 火爆了一年多我却没有尝鲜,实在是说不过去。我之所以对 flutter 不感冒,源于我对 flutter 所使用的 dart 语言的无知 —— 我觉得既然市面上有 typescript 这样可以满足 flutter 需要的语言,为何要用 dart 这样一个行将就木的语言呢?但最近有个朋友给我展示了他用 flutter 做的一个私人项目,惊艳到我,于是我开始学 flutter。 我学 flutter 的历程和其它语言有些不同 —— 比如学 rust,我...阅读全文

简书 2020-12-01 16:33:43 飞翔的企鹅666

golang实现文件传输小demo

获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先发送文件名给接收者,接收者收到文件名返回确认信息"ok",才读取本地文件 发送给接收者。发送者: package main import ( "fmt" "io" "net" "os") func main() { fmt.Println("请输入接收者地址(IP:PORT):") var addr string fmt.Scan(&addr) fmt.Println("请输入需要传输的文件:") var pa...阅读全文

简书 2020-12-01 16:33:33 也许会了

小白也能看懂!教你如何快速搭建实用的爬虫管理平台

写在前面:本篇文章内容较多,涉及知识较广,读完需要大约 20 分钟,请读者耐心阅读。如今大多数企业都离不开爬虫,它是获取数据的一种有效方式。但是对爬虫有着规模量级要求的企业或个人需要同时处理不同类别的爬虫,这会凭空增添很多附加的管理成本。同时,爬虫管理者还需要应对网站内容变更、持续增量抓取、任务失败等问题。因此一个成熟的爬虫管理流程应该包含一个管理系统,能够有效处理上述问题。爬虫有多重要对搜索引擎来说,爬虫不可或缺;对舆情公司来说,爬虫是基础;对 NLP来说,爬虫可以获取语料;对初创公司来说,爬...阅读全文

简书 2020-12-01 16:33:33 华为云开发者社区

Go ———一门优秀的编程语言

初识go语言是在今年5月份,耗时不到3个月和团队一起开发了一个比较大型的web应用。这篇文章主要是总结了go语言特点和部分开发常用基础知识。在写博客的路上还很长,慢慢走才会走得更远。go语言开发三大特点1、开发效率高 语言非常简单,关键字少,框架也很简单。正交性,它是支持面向对象的,不是一个完全面向对象的 设计理念追求简单,把一些不是很有必要的东西全部都砍掉了,语言功能是非常精简的 编译速度很快、运维部署很容易2、支持高并发 Goruntine 协程 协程与线程主要区别是它将不再被内核调度,而是...阅读全文

简书 2020-12-01 15:39:53 Lovealfy

[mysql] 如何让string类型ID 实现自增长

mysql里 如何让string类型ID 实现自增长?这里有2种方法: 首先,数据库类型中能实现自增比较常见的是int类型,它可以很方便的设置为AUTO_INCREMENT, 所以思路就是,假如A表需要这样的ID,那就在某个地方用int保存一个对应的序列。 image.png 为方便讲解,假设我们有张Application表,它需要有如下数据结构: application id的值预期是APP-1, APP-2, APP-3...APP-n 方法: 1.(条件允许,比较推荐)利用2种数据库 re...阅读全文

简书 2020-12-01 15:39:50 V_Jan

go读书笔记(五)

参考了《Go in Action》、《Go 网络编程:使用 Handler 和 HandlerFunc》《golang中 type func() 用法分析》、《net/http/httptest (net/http) - Go 中文开发手册 - 开发者手册》 1 单元测试 单元测试是用来测试包或者程序的一部分代码或者一组代码的函数。go语言中有几种方法编写单元测试: 基础测试(basic test) 只使用一组参数和结果来测试一段代码 表组测试(table test) 使用多组参数和结果进行测试...阅读全文

简书 2020-12-01 15:38:21 韧心222

未来有望干掉 Python 和 JavaScript 的编程语言

Python 和 JavaScript 是当今最热门的两种编程语言。但是,它们不可能永远位居榜首。最终,它们一定会失宠,就像所有的编程语言一样。这很可能在未来十年内就会发生。哪些编程语言有望取代它们呢?下面就是我列出的挑战者名单。 Dart 由于 Flutter 框架和 Google 的认可,这门语言迅速流行起来。它与使 Ruby 如此流行的驱动力相似:Rails 框架。如果 Google 的新操作系统 Fuchsia 取得成功的话,Dart 将会成为其中心。主要优势:它是一种比 JavaScr...阅读全文

简书 2020-12-01 15:38:20 非著名程序员i

WebRTC由浅入深 1

WebRTC通话最典型的应用场景应该是一对一视频通话,如微信视频,QQ视频等。我们回想一下日常生活中是怎么进行“实时音视频”交流的,假设A与B要进行面对面说话,通常A会说:B,xxx,向B发出“问候”声明,表明我要和你开始对话了,你方便嘛。这时候,如果B正在和C说话,可能就会说:稍等,我和C聊完再和你说。如果B带了降噪耳机,可能只是收到了A的信号,还没听清楚具体的意思,那么可能就会说:再说一遍,刚刚没听清楚。也有可能B心情不好,没有理睬A的话语。情况很多,甚至B是外国人,可能会回复:dsl#%¥...阅读全文

简书 2020-12-01 15:32:43 申屠鹏会

一文告何先验Go泛型

Go术专栏“改Go语⾔编程质之五十个效行”方慕课网火热销中!本专栏主足大gopher于Go言阶之求,何为道且高情绕Go代码臣五十条效行之二十二日2020年十月,Go心开团队巧主人Russ Cox在golang-dev论坛上真矣Go泛型将在Go。.八地(2022.二):此其切望go入泛型之gopher言无疑是一大利好消!不过,是以两刃剑泛型!泛型之入必令Go语之复杂性轴进。我深以为忧Go入泛型后如心殿+ +楷之为“滥”而成多伎巧,此非Go目组欲见之。是以今在宣泛型时皆是谨之。Robert Grie...阅读全文

51CTO博客 2020-11-30 11:57:52 qq5fae3da3db36a

聊聊golang的error增强

序 本文主要研究一下golang的error增强 Errors in Go 1.13 golang的1.13版本对error进行了增强,主要是 引入了Unwrap方法 增加Is和As方法 fmt.Errorf支持%w来包装error 实例 package main import ( "errors" "fmt" "os" ) var DemoErr = errors.New("test error stack") // https://itnext.io/golang-error-handlin...阅读全文

简书 2020-12-01 10:32:42 go4it

Protocol Buffers 开发者指南

欢迎来到 protocol buffers 的开发者指南。protocol buffers 是一个语言中立,平台中立针对通讯协议,数据存储和其他领域中对结构化数据进行序列化的扩展方法。 本文档主要针对的是 Java,C++ 或 Python 的开发人员希望在开发的应用程序中使用 Protocol Buffers。这个有关 Protocol Buffers 摘要性的介绍将会告诉你如何开始使用 Protocol Buffers。如果你希望更加深入的了解有关 Protocol Buffers 的内容,...阅读全文

简书 2020-12-01 10:32:42 HoneyMoose

聊聊golang的error增强

序本文主要研究一下golang的error增强Errors in Go 1.13golang的1.13版本对error进行了增强,主要是引入了Unwrap方法增加Is和As方法fmt.Errorf支持%w来包装error实例package main import ( "errors" "fmt" "os" ) var DemoErr = errors.New("test error stack") // https://itnext.io/golang-error-handling-best-p...阅读全文

Segmentfault 2020-12-03 14:32:32 codecraft

grpc & opentrace ( jaeger实现 )

1) RPCRemote Procedure Call1) 概览2) 优势简单、通用、安全、效率2) GRPC1) 简介gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计ps: 多语言支持C++C#DartGoJavaNode.jsObjective-CPHPPythonRuby2) 概览3) Protocol BuffersProtocol Buffers是一种与语言无关,平台无关的可扩展机制,用于序列化结构化数据。使用Protocol Buffers可以一次定...阅读全文

Segmentfault 2020-12-03 13:32:33 sado

etcd入门 & go操作etcd

一、etcd1、简介etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。 类似项目有`zookeeper`和`consul`。2、特点`完全复制`:集群中的每个节点都可以使用完整的存档 `高可用性`:Etcd可用于避免硬件的单点故障或网络问题 `一致性`:每次读取都会返回跨多主机的最新写入 `简单`:包括一个定义良好、面向用户的API(gRPC) `安全`:实现了带有可选的客户端证书身份验证的自动化TLS `快速`:每秒10000...阅读全文

Segmentfault 2020-12-03 10:32:34 sado