给新手的微服务入门知识
> > 导读:微服务是一个模糊的术语,通常指的是小型独立服务,共同组成一个应用程序。 微服务架构与单片架构相反,其应用程序是一个大系统。 > 我们将讨论如何开始作为初学者,并选择正确的工具来建立微服务架构。 *迅速崛起的微服务* 根据Google趋势指数的结果,近来微服务已经越来越流行: <img src="https://pic3.zhimg.com/v2-b9fa9dfcd80d0fed94fe2eeaad425576_b.png" data-rawwidth="768" data-...阅读全文
一篇文章带你了解Cloud Native
背景 Cloud Native表面看起来比较容易理解,但是细思好像又有些模糊不清:Cloud Native和Cloud关系是啥?它用来解决什么问题?它是一个新技术还是一个新的方法?什么样的APP符合“云原生”的呢?等等。下面将会一一解读。 Cloud Native介绍 Cloud Native是Matt Stine提出的一个概念,它是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrast...阅读全文
Golang 微服务教程(一)
译文链接:wuYin/blog原文链接:ewanvalentine.io,翻译已获作者授权。 本节对 gRPC 的使用浅尝辄止,更多可参考:gRPC 中 Client 与 Server 数据交互的 4 种模式 前言 系列概览 《Golang 微服务教程》分为 10 篇,总结微服务开发、测试到部署的完整过程。 本节先介绍微服务的基础概念、术语,再创建我们的第一个微服务 consignment-service 的简洁版。在接下来的第 2~10 节文章中,我们会陆续创建以下微服务: consignme...阅读全文
来自老司机golang面试官的经验分享:面试你很大几率会遇到的go语言面试题
正在准备golang面试的小伙伴,很荣幸,你能看到这篇文章,希望每一个看到这篇分享的小伙伴都能找到自己称心如意的工作!编程语言类:Go是什么?使用Go编程有什么好处?Go支持类型继承吗?Go支持运营商超载吗?Go支持方法重载吗?Go支持指针算术吗?Go支持通用编程吗?Go是一个区分大小写的语言吗?Go中变量的静态类型声明是什么?Go中变量的动态类型声明是什么?你能在Go中的单个声明中声明多种类型的变量吗?如何在Go中打印变量的类型?什么是指针?break语句的目的是什么?继续声明的目的是什么...阅读全文
go context应用场景
golang中Context的使用场景 context在Go1.7之后就进入标准库中了。它主要的用处如果用一句话来说,是在于控制goroutine的生命周期。当一个计算任务被goroutine承接了之后,由于某种原因(超时,或者强制退出)我们希望中止这个goroutine的计算任务,那么就用得到这个Context了。 关于Context的四种结构,CancelContext,TimeoutContext,DeadLineContext,ValueContext的使用在这一篇快速掌握 Golang...阅读全文
图解Golang的内存分配
一般程序的内存分配 在讲Golang的内存分配之前,让我们先来看看一般程序的内存分布情况: image 以上是程序内存的逻辑分类情况。 我们再来看看一般程序的内存的真实(真实逻辑)图: image Go的内存分配核心思想 Go是内置运行时的编程语言(runtime),像这种内置运行时的编程语言通常会抛弃传统的内存分配方式,改为自己管理。这样可以完成类似预分配、内存池等操作,以避开系统调用带来的性能问题,防止每次分配内存都需要系统调用。 Go的内存分配的核心思想可以分为以下几点: 每次从操作系统申...阅读全文
详解Go语言的内存模型及堆的分配管理
前言 这篇文章主要介绍Go内存分配和Go内存管理,会轻微涉及内存申请和释放,以及Go垃圾回收。从非常宏观的角度看,Go的内存管理就是下图这个样子,我们今天主要关注其中标红的部分。 Go这门语言抛弃了C/C++中的开发者管理内存的方式,实现了主动申请与主动释放管理,增加了逃逸分析和GC,将开发者从内存管理中释放出来,让开发者有更多的精力去关注软件设计,而不是底层的内存问题。这是Go语言成为高生产力语言的原因之一。 我们不需要精通内存的管理,因为它确实很复杂,但掌握内存的管理,可以让你写出更高质量的...阅读全文
字节跳动内推北京上海
字节 EZ 教育部门跪求各端技术人才,入职即私人赠送 500 元入职奖金。职级越高,奖金给的更多。有意向直接投递简历到:liushilin.nanchen@bytedance.com,或者直接添加微信:nanchen2251 办公地点:北京 && 上海 我们从哪里来 移动互联网的红利已经接近了天花板,下一个市场红利在哪里?字节跳动战略性的选择了千亿级的教育行业,而上一次的战略押注就是短视频业务,于是有了抖音和火山。也许你曾遗憾错过了抖音的风口,那么你实在是不应该再错过我们这班车。 教育作为字节跳...阅读全文
go pprof与线上事故:一次成功的定位与失败的复现
背景:一次大几万人的线上抢购活动,突然出现了问题,页面半天打不开,打开了半天下不了单,cpu涨了又跌跌了又涨,而内存使用又稳如老狗!不要慌,按照套路去分析问题,一切都不是问题! 阅读此文你将收获: 分析问题的一个思路! 学会使用pprof定位问题。 解决问题的一个思路! 大纲: 我是如何定位问题的 如何通过pprof精准定位 通过pprof来定位代码 我是如何trouble shooting的 一. 我是如何思考问题的 “活动挂了,下不了单!”,随着一声凄凉的惨叫,办公室大门被运营人员打开,于是...阅读全文
掌握这些Go语言特性,你的水平将提高N个档次(二)
前言: 大家好,我是asong,这是我的第二篇原创文章。上一文介绍了切片、变量声明、defer三个知识点(回顾上文,关注公众号即可进行阅读),这一文将继续介绍其他Go语言特性,废话不多说,直接上干货。 1. 指针和引用 在Go语言中只有一种参数传递的规则,那就是值拷贝,其包含两种含义: 函数参数传递时使用的值拷贝 实例赋值给接口变量,接口对实例的引用是值拷贝 我们在使用过程中会发现有时明明是值拷贝的地方,结果却修改了变量的内容,有以下两种情况: 直接传递的是指针。指针传递同样是值拷贝,但指针和指...阅读全文