一年增加 1.2w 星,Dapr 能否引领云原生中间件的未来?

Dapr 是 2019 年 10 月微软开源的分布式运行时,在今年 2 月份刚刚发布了 v1.0 正式版本。虽然推出至今不过一年半时间,但 Dapr 发展势头十分迅猛,目前已经在 GitHub 上收获了 1.2w 星。阿里是 Dapr 开源项目的深度参与者和早期采用者,率先进行了生产落地,集团内部有十几个应用在使用 Dapr;目前已有 2 位 Dapr成员,是Dapr 项目中除微软之外代码贡献最多的公司。 虽然 Dapr 在国外有很高的关注度,但在国内知名度非常低,而且现有的少量 Dapr 资料...阅读全文

简书 2021-03-30 12:33:08 阿里云云栖号

源码解读:KubeVela 是如何将 appfile 转换为 K8s 特定资源对象的

KubeVela 是一个简单易用又高度可扩展的云原生应用管理引擎,是基于 Kubernetes 及阿里云与微软云共同发布的云原生应用开发模型 OAM 构建。 KubeVela 基于 OAM 模型构建了一套具体的实现,通过 Golang 编写,可以端到端地为用户构建云原生应用的平台,提供一个相对完整的解决方案。 KubeVela 项目自 2020 年 7 月份在社区里面发起,受到包括阿里、微软、Crossplane 等公司工程师在内的广大社区志愿者的欢迎,并一起投入到项目开发工作中。他们把在 OA...阅读全文

简书 2021-03-30 12:32:56 阿里云云栖号

一年增加 1.2w 星,Dapr 能否引领云原生中间件的未来?

简介: 虽然 Dapr 在国外有很高的关注度,但在国内知名度非常低,而且现有的少量 Dapr 资料也偏新闻资讯和简单介绍,缺乏对 Dapr 的深度解读。在 Dapr v1.0 发布之际,我希望可以通过这篇文章帮助大家对 Dapr 形成一个准确的认知:掌握 Dapr 项目的发展脉络,了解其核心价值和愿景,领悟 Dapr 项目背后的“道之所在”—— 云原生。 1.png 作者 | 敖小剑 阿里云高级技术专家、Dapr Maintainer Dapr 是 2019 年 10 月微软开源的分布式运行时,...阅读全文

简书 2021-03-30 12:32:55 阿里云技术

19 Golang包以及go mod

包的介绍和定义 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为辅我们提供了很多内置包,如fmt/strconv/strings/sort/errors/time/encoding/json/os/io等。 Golang中的包可以分为三种:1. 系统内置包 2. 自定义包 3. 第三方包 系统内置包:Golang语言给我们提供的内置包,引入后可以直接使用,如fmt/strconv/strings/sort/errors/time/encoding/json/os/i...阅读全文

简书 2021-03-30 10:32:32 learninginto

小孩数数出列问题

今天突然想起来很多年前去一家游戏公司现场面试遇到的一个逻辑题,题目是有N个小朋友围在一起从1开始报数,报到3的出列,然后剩下的人重新报数,问最后剩下的小孩是谁,试写一些伪代码。当时第一反应是采用常规的递归算法实现了,当时对方赞同但并不满意,随即补充了一个条件,假定N的人数为2时,如何才能进行递归?当时真是一下子懵逼了,想好好久,在对方提示下采用了链轮方式,发现代码不但精简很多而且逻辑更清晰。后来有次做棋牌游戏的出牌坐次需求时还真的给用上了。下面分享下相关代码和逻辑步骤。逻辑步骤:第一步,要将要看...阅读全文

简书 2021-03-30 06:32:31 凯老师斯密达

golang escape analyze

关于闭包变量逃逸 请看下面一段代码: func f() *Cursor { var c Cursor c.X = 500 return &c } 在Go语言中 方法内定义了一个变量c ,并最后返回其地址,理论上函数内定义变量使用的是函数内的栈空间,当函数返回时候栈空间就会释放掉,但是golang 使用了escape analyze 语法会自动识别出这种这种变量,并在堆中给其分配内存空间,二不是在函数的栈中。这种情况就是闭包逃逸,并移到了堆中。 返回一个闭包时,并不是单纯的返回一个函数,而是返回了...阅读全文

简书 2021-03-30 02:32:32 溪花

手撸golang etcd raft协议之3

手撸golang etcd raft协议之3 缘起 最近阅读 [云原生分布式存储基石:etcd深入解析] (杜军 , 2019.1) 本系列笔记拟采用golang练习之 gitee: https://gitee.com/ioly/learning.gooop raft分布式一致性算法 分布式存储系统通常会通过维护多个副本来进行容错, 以提高系统的可用性。 这就引出了分布式存储系统的核心问题——如何保证多个副本的一致性? Raft算法把问题分解成了领袖选举(leader election)、 日志...阅读全文

简书 2021-03-30 02:32:32 老罗话编程

go语言基础知识分享

go语言基础知识 go语言的基本事项 go run hello.go 直接运行,输出结果(原理也是编译后执行) go build hello.go 生成可执行程序,运行可执行程序,输出结果 注意 go语言中花括号不能单独占一行,否则会报错 package main import "fmt" func main(){ //go语言中此处的花括号不能单独占一行,否则会报错 fmt.Println("hello world") } go语言一条语句占一行,如果一行需要执行多个语句 使用 分号 隔开 g...阅读全文

简书 2021-03-30 02:32:31 小魔童哪吒

Go-Const

go 常量 golang中的常量一般用const来定义 const声明多个常量 多个常量声明 const ( a = 1 b = "go" c = "java" ) 值相同时,可省略 const ( n1 = 100 n2 n3 ) 常量计数器iota 在const关键字出现时将计数被重置为0。 const中每新增一行常量声明,计数+1(iota可理解为const语句块中的行索引) 常规用法 const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 ) 跳过计数 co...阅读全文

简书 2021-03-30 02:32:31 SodaCrush

解读Go语言的2019:如果惊喜不再,还有哪些值得关注?

本文是 InfoQ“解读 2019”年终技术盘点系列文章之一。趋势:排名 15,仍处主流之列从 TIOBE Index 来看,Go 语言最近在全球的热度似乎有所下滑。不过,如果看总体排名的话,截止到 2019 年的 12 月,Go 语言依然排在第 15 位,仍处于主流之列。虽然中途存在一些起落,但总体上还是与去年同期持平的。图 1:TIOBE Index 之 Go 语言(2019 年 12 月)图 2:TIOBE Index(2019 年 12 月)简单来讲,TIOBE Index 在给这些编程...阅读全文

51CTO博客 2021-03-29 19:07:38 mb5fdb0a1b25659

为何我们用 Go 而非 Python 编写机器学习基础设施平台?

Python 是机器学习项目中最流行的语言,就这点而言,应该不会有人提出异议。尽管 R、C++ 和 Julia 之类的语言都有自己的拥趸和用例,但 Python 仍然是 最受欢迎的 编程语言,在每个主流的机器学习框架中都能见到它的身影。最近,我们构建了一个将机器学习模型部署为 API 的开源平台—— Cortex,我们考虑了很久应该如何选择编程语言。最终的结果是代码库中有 87.5% 用的是 Go。经过一番比较,我们认为:Python 适用于机器学习,而 Go 适用于基础设施。Python 所擅...阅读全文

51CTO博客 2021-03-29 17:43:40 mb5fdb0a1b25659

再见Python!我要学Go了!2500字深度分析!

原创 菜鸟哥 菜鸟学Python 2020-11-15收录于话题#趣味Python105个大家好,我是菜鸟哥周末了跟大家聊我最近的一些想法。编程语言的天下,自古就是适者生存。像是Java, C和Python等语言,都是历经大浪淘沙,顺应时代发展的强大的编程语言。而今天要和大家分享的go语言,也是顺应时代发展的强大编程语言,被称为取代Python的语言。从2011-2019 可以看出Go语言的增长速度还是非常迅猛的。1.什么是Go 语言go语言,又被称为golang,是由谷歌开发的一种静态强类型、...阅读全文

51CTO博客 2021-03-29 16:54:38 mb600aa45a054a0

最终,我们放弃了GO,迁移至Rust,特性使然

在各个领域,Rust 都已经成为一流的语言。在 Discord,我们看到了 Rust 在客户端和服务端的成功。举例来说,我们在客户端使用它实现了 Go Live 的视频编码管道,在服务端,它则被用于 Elixir NIFs。最近,我们通过将服务的实现从 Go 切换到 Rust,极大地提升了该服务的性能。本文阐述了重新实现服务为何是有价值的、该过程是如何实现的以及由此带来的性能提升。Read States 服务Discord 是一家以产品为中心的公司,所以我们先介绍一下产品的背景信息。我们从 Go...阅读全文

51CTO博客 2021-03-29 14:02:38 mb5fdb0a1b25659

一年增加 1.2w 星,Dapr 能否引领云原生中间件的未来?

作者 | 敖小剑 阿里云高级技术专家、Dapr Maintainer Dapr 是 2019 年 10 月微软开源的分布式运行时,在今年 2 月份刚刚发布了 v1.0 正式版本。虽然推出至今不过一年半时间,但 Dapr 发展势头十分迅猛,目前已经在 GitHub 上收获了 1.2w 星。阿里是 Dapr 开源项目的深度参与者和早期采用者,率先进行了生产落地,集团内部有十几个应用在使用 Dapr;目前已有 2 位 Dapr成员,是Dapr 项目中除微软之外代码贡献最多的公司。 虽然 Dapr 在国...阅读全文

简书 2021-03-29 23:32:57 Java互联网架构师小马

源码解读:KubeVela 是如何将 appfile 转换为 K8s 特定资源对象的

作者 | 樊大勇 KubeVela 是一个简单易用又高度可扩展的云原生应用管理引擎,是基于 Kubernetes 及阿里云与微软云共同发布的云原生应用开发模型 OAM 构建。 KubeVela 基于 OAM 模型构建了一套具体的实现,通过 Golang 编写,可以端到端地为用户构建云原生应用的平台,提供一个相对完整的解决方案。 KubeVela 项目自 2020 年 7 月份在社区里面发起,受到包括阿里、微软、Crossplane 等公司工程师在内的广大社区志愿者的欢迎,并一起投入到项目开发工作...阅读全文

简书 2021-03-29 23:32:41 该用户已秃头

Go-Map

go map golang中的map是一种(无序的)key-value形式的数据结构,类似python中的字典,默认初始值为nil,map是引用类型,必须初始化才能使用。 map创建 直接创建/通过make创建 通过make创建时 make(map[keyType]valueType, [cap]), cap可省略 var userMap = map[String]String{ "name": "admin", "password": "password", } codeMap := make...阅读全文

简书 2021-03-29 23:32:33 SodaCrush

Golang语言(打卡✏️第四天)fmt格式化工具|Go主题月

Println输出 Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。 fmt.Println("Println输出,尾部会有换行符") print("print输出") Fprint Fprint系列函数会将内容输出到一个io.Writer接口类型的变量w中,我们通常用这个函数往文件中写入内容。 实例: // 向标准输出写入内容 fmt.Fprintln(os.Stdou...阅读全文

简书 2021-03-29 23:32:32 叫我詹躲躲

2021-03-29:无序数组arr,子数组-1和1的数量一样多,请问最长子数组的长度是多少?

2021-03-29:无序数组arr,子数组-1和1的数量一样多,请问最长子数组的长度是多少? 福大大 答案2021-03-29: [1, -1, 2, 3, -4, -1, 9]变成[1, -1, 0, 0, 0, -1, 0],累加和等于0的最长子数组长度,就是所需要的值。 求前缀和,存map。 代码用golang编写。代码如下: package main import "fmt" func main() { arr := []int{1, -1, 2, 3, -4, -1, 9} ret ...阅读全文

简书 2021-03-29 23:32:32 福大大架构师每日一题

golang中的空接口使用

1、空接口 Golang 中的接口可以不定义任何方法,没有定义任何方法的接口就是空接口。空接口表示,没有任何约束,因此任何类型变量都可以实现空接口。空接口在实际项目中用的是非常多的,用空接口可以表示任意数据类型 func main() { // 定义一个空接口 x, x 变量可以接收任意的数据类型 var x interface{} s := "你好 golang" x = s fmt.Printf("type:%T value:%v\n", x, x) i := 100 x = i fmt.P...阅读全文

简书 2021-03-29 17:35:42 ST_MT

Docker的奇淫技巧

docker是什么 这里用简单的几句话描述docker做了什么事情。 docker是一个可以创建、管理容器的东西。可以理解为docker里面存放了许多容器。 容器就是一个精简版的linux系统,这个系统只有基本的环境供以使用,里面可以运行程序(可以是mysql,可以是nginx,可以是redis等)。 容器的创建是依赖于镜像的,镜像可以看作是一个模板,docker可以根据镜像生成一个容器实例,假如你需要一个容器中放入mysql,那么就去docker的镜像仓库拉取一个mysql镜像(可指定版本),...阅读全文

简书 2021-03-29 17:35:42 码农Kkio