gRPC的介绍

下面是对gRPC和protocol buffers的介绍。这个页面介绍gRPC和protocol buffers。gRPC可以使用protocol buffers作为它的接口定义语言(IDL)和它的底层消息交换格式。综述在gRPC中,客户端应用程序可以像调用本地对象一样直接调用另一台机器上的服务器应用程序上的方法,从而更容易创建分布式应用程序和服务。与许多RPC系统一样,gRPC基于定义服务的思想,指定可以通过其参数和返回类型远程调用的方法。在服务器端,服务器实现这个接口并运行gRPC服务器来处...阅读全文

简书 2021-03-12 22:32:37 朋小

leetcode331 验证二叉树的前序序列化 golang

331. 验证二叉树的前序序列化 解题思路 对于一个合法的二叉树,其前序序列应该有以下特征 root,left,right // todo 画图 那么我们就可以先把root取出来,然后分别对left和right进行递归判断。不过这里存在一个问题,就是我们不知道left和right的长度。那么我们就在递归函数里进行判断,如果是 # 则长度为1,依次递归判断。如果是不合法的则返回-1 首先把字符串按照逗号,进行切割 进行递归判断 如果为空,不合法 如果为# 返回1 否则 依次递归遍历。 代码 fun...阅读全文

简书 2021-03-12 22:32:36 lucasgao

手撸golang GO与微服务 Saga模式之2

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 Saga模式 saga模式将分布式长事务切分为一系列独立短事务 每个短事务是可通过补偿动作进行撤销的 事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用 Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是...阅读全文

简书 2021-03-12 16:35:22 老罗话编程

想成为全栈工程师,要做到哪几点?

作为开发者,我们不过度区分服务端 server 客户端 client,我们是 web developer,从事 web 开发,多去理解技术和实践落地。 成为全栈工程师的道路 成为全栈工程师说不上难也说不上容易,其中技术积累占了很大一部分: 紧跟前沿 掌握足够多的输入。 关注海外社区新消息发布,业界的新产品新技术,学会高质量的获取信息,坚持做和习惯做。 注重学习 & 不断实践 有属于自己的思考和严谨的产出。 掌握高效学习方法,比如我们最近在做 k8s 容器集群相关的事情,需要理解底层设计和做集群调...阅读全文

简书 2021-03-12 16:35:21 阿里云技术

Go context机制

1 什么是Context最近在公司分析gRPC源码,proto文件生成的代码,接口函数第一个参数统一是ctx context.Context接口,公司不少同事都不了解这样设计的出发点是什么,其实我也不了解其背后的原理。今天趁着妮妲台风妹子正面登陆深圳,全市停工、停课、停业,在家休息找了一些资料研究把玩一把。Context通常被译作上下文,它是一个比较抽象的概念。在公司技术讨论时也经常会提到上下文。一般理解为程序单元的一个运行状态、现场、快照,而翻译中上下又很好地诠释了其本质,上下上下则是存在上下...阅读全文

简书 2021-03-12 16:35:21 淘小铺刀仔

想成为全栈工程师,要做到哪几点?

简介: 如何成为一名全栈工程师?需要具备哪些技术积累?成为全栈工程师有哪些好处?希望本文能为期望成为全栈工程师的同学提供一点帮助,和同学们一起分享交流。 image 作为开发者,我们不过度区分服务端 server 客户端 client,我们是 web developer,从事 web 开发,多去理解技术和实践落地。 成为全栈工程师的道路 成为全栈工程师说不上难也说不上容易,其中技术积累占了很大一部分: 紧跟前沿 掌握足够多的输入。 关注海外社区新消息发布,业界的新产品新技术,学会高质量的获取信息...阅读全文

简书 2021-03-12 16:35:21 阿里云云栖号

开课啦 dubbo-go 微服务升级实战

简介: 杭州开课啦教育科技有限公司是一家致力于为中小学生提供学习辅导的在线教育公司,目前公司后端服务基础设施主要依托于阿里云原生,其中包含计算、网络、存储以及 Kubernetes 服务。 技术选型背景2020 年是开课啦公司发展壮大的一年,整个公司团队由原来的几百人扩充至现在的几千人,在集中使用的时候基本上会有几千人同时在运营后台进行操作,公司原有的内部后台运营系统是用 PHP 搭建起来的,性能跟业务上已逐渐不能满足公司的需求规划,加上目前开课啦公司开发部已经做了微服务拆分,主体对外服务是 j...阅读全文

51CTO博客 2021-03-12 12:46:38 mob604756e3cc85

WebAssembly + Go 系列(2)WASI,WebAssembly 不止于 Web

什么是 WASI通过上一篇文章,我们大概能知道 WebAssembly 是什么,以及用 Go 编写一些应用,这篇文章我们再来聊一聊 WASI,阅读完这一篇文章后我们基本上能对 WebAssembly 整体上有个认知。本文同样也只会简单带你过一遍,而不会很深入,如果感兴趣的话更多地还是需要你自己研究。关于什么是 WASI,可以先看一下这篇文章:Standardizing WASI: A system interface to run WebAssembly outside the web,讲得非常...阅读全文

51CTO博客 2021-03-12 11:18:06 mob604756e3cc85

手撸golang GO与微服务 Saga模式之2

缘起最近阅读<<Go微服务实战>> (刘金亮, 2021.1)本系列笔记拟采用golang练习之Saga模式saga模式将分布式长事务切分为一系列独立短事务每个短事务是可通过补偿动作进行撤销的事务动作和补动作偿都是幂等的, 允许重复执行而不会有副作用Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是避免使用长期持...阅读全文

Segmentfault 2021-03-17 09:32:37 ioly

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停...

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现? 福哥答案2021-03-11: 1.外部协程和内部协程没关系。 2.如果程序不奔溃,不会影响内部协程继续执行。如果没做特殊处理,整个程序会奔溃。 3.三种方式:共享变量作为标志位,通道,上下文context。这三种方式均是协作式中断,不是抢占式。对于程序员,是无法实现抢占式中断的。 如...阅读全文

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

WebAssembly + Go 系列(2)WASI,WebAssembly 不止于 Web

什么是 WASI通过上一篇文章,我们大概能知道 WebAssembly 是什么,以及用 Go 编写一些应用,这篇文章我们再来聊一聊 WASI,阅读完这一篇文章后我们基本上能对 WebAssembly 整体上有个认知。本文同样也只会简单带你过一遍,而不会很深入,如果感兴趣的话更多地还是需要你自己研究。关于什么是 WASI,可以先看一下这篇文章:Standardizing WASI: A system interface to run WebAssembly outside the web,讲得非常...阅读全文

Segmentfault 2021-03-16 20:32:34 咖灰怪

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现?福哥答案2021-03-11:1.外部协程和内部协程没关系。2.如果程序不奔溃,不会影响内部协程继续执行。如果没做特殊处理,整个程序会奔溃。3.三种方式:共享变量作为标志位,通道,上下文context。这三种方式均是协作式中断,不是抢占式。对于程序员,是无法实现抢占式中断的。 如果能实现...阅读全文

51CTO博客 2021-03-11 20:42:38 福大大

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行

2021-03-11:go中,协程内部再启用协程,它们是没关系,对吧?外部协程奔溃,内部协程还会执行吗?外部协程执行结束的时候,如何让内部协程也停止运行?golang原生提供的包里,让内部协程停止运行,如何实现?福哥答案2021-03-11:1.外部协程和内部协程没关系。2.如果程序不奔溃,不会影响内部协程继续执行。如果没做特殊处理,整个程序会奔溃。3.三种方式:共享变量作为标志位,通道,上下文context。这三种方式均是协作式中断,不是抢占式。对于程序员,是无法实现抢占式中断的。 如果能实现...阅读全文

51CTO博客 2021-03-11 20:42:25 福大大

面向对象语言的三大特性

一、封装(encapsulation)封装就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。1、封装的理解和好处(1)隐藏实现细节(2)可以对数据进行验证,保证安全合理2、如何体现封装(1)对结构体中的属性进行封装(2)通过方法、包实现封装3、封装的实现步骤(1)将结构体、字段(属性)的首字母小写(不能导出了,其他包不能使用,类似private)。(2)给结构体所在包提供一个工厂模式的函数,首字母大写,类似一个构造函数。(...阅读全文

简书 2021-03-11 16:41:49 柯帆

手撸golang GO与微服务 Saga模式之1

缘起 最近阅读<<Go微服务实战>> (刘金亮, 2021.1) 本系列笔记拟采用golang练习之 Saga模式 saga模式将分布式长事务切分为一系列独立短事务 每个短事务是可通过补偿动作进行撤销的 事务动作和补偿动作都是幂等的, 允许重复执行而不会有副作用 Saga由一系列的子事务“Ti”组成, 每个Ti都有对应的补偿“Ci”, 当Ti出现问题时Ci用于处理Ti执行带来的问题。 可以通过下面的两个公式理解Saga模式。 T = T1 T2 … Tn T = TCT Saga模式的核心理念是...阅读全文

简书 2021-03-11 16:32:39 老罗话编程