golang面试 探探

发送http请求的过程以及用到的协议,传输层用到的是tcp还是udp tcp与udp协议以及三次握手四次挥手的详细过程 ?传输的具体东西 http协议有哪些 ?区别是啥?你们公司开发用的是什么http协议?https的加密过程? mysql的索引什么时候不能生效? mysql事务的特性?mysql的原子性是怎么做到的? redis用来做什么在项目里,redis的值更新怎么做的?redis宕机了之后怎么处理?mysql记录操作日志的日志名称 redis的定期删除key 项目里怎么处理的房间已经被预...阅读全文

2020-11-27 22:32:40 呆临
阅读:914 评论:0

Linux IO模式及 select、poll、epoll详解(含部分实例源码)

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。视频解析:epoll具体实现:https://www.bilibili.com/video/BV1PA41147Ad/支撑亿级io的底层基石 epoll实战揭秘:https://www.bilibili.com/video/BV1iJ411S7mv/异步IO原理:https://www.bilibili.com/video/BV1kt4y1v7Lj/一 概念说明在进行解释之前,首先要说...阅读全文

2020-11-28 15:32:52 linux大本营
阅读:962 评论:0

学习golang开始前的准备工作

学习任何一门语言,都需要了解和学习好基础,至于基于该语言的各种框架,对于我们来说,都是工具。打牢基础,并不是指只熟记语言的关键词和语法,更重要的是我们需要知道它是什么,为什么要这么用,它包括程序思维逻辑和实现方法。 什么是golang Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 Go的语法接近C语言,但对于变量的声明(英语:type declaration)有所不同。Go支持垃圾回收功能。通过goroutine和通道等并行构造可以建...阅读全文

2020-12-08 09:32:40 Fesion
阅读:507 评论:0

如何设计一个亿级网关(API Gateway)?

1.背景 1.1 什么是API网关 API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。 1.2 为什么需要API网关 RPC协议转成HTTP。 由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将RPC协议转换成HTTP协议。 请求路由 在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。 统一...阅读全文

2020-12-09 13:32:41 前端三少爷
阅读:5700 评论:0

为什么很多公司转型Go语言开发?Go语言能做什么

来源:http://t.cn/EXZCk881、为什么选择Go语言选择Go语言的原因可能会有很多,关于Go语言的特性、优势等,我们在之前的文档中也已经介绍了很多了。但是最主要的原因,应该是基于以下两方面的考虑:执行性能缩短API的响应时长,解决批量请求访问超时的问题。在Uwork的业务场景下,一次API批量请求,往往会涉及对另外接口服务的多次调用,而在之前的PHP实现模式下,要做到并行调用是非常困难的,串行处理却不能从根本上提高处理性能。而GO语言不一样,通过协程可以方便的实现API的并行处理,...阅读全文

2020-12-10 15:59:47 占小狼
阅读:7740 评论:0

从MongoID的生成讨论分布式唯一ID生成方案

背景MongoDB,想必大家都使用过,在数据落盘后,查询该条数据时,会发现其会自动生成一条"_id",如:db.test.insert({"name":"tom"}) 查询结果: { "_id" : ObjectId("5fd049327fbb28868f4660a5"), "name" : "tom" } MongoID作为主键索引,即使是集群情况下,其在整个数据库中也是全局唯一的。那这种ID有什么用呢?或者说在哪些场景下会被使用呢?当然需要满足下面两个条件:1.数据量现在或未来比较大,处于增...阅读全文

2020-12-17 15:32:33 行如风
阅读:990 评论:0

还敢乱写代码??腾讯 Code Review 规范出炉!

前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论。发现不少同学 code review 与写出好代码的水平有待提高。在这里,想分享一下我的一些理念和思路。 为什么技术人员包括 leader 都要做 code review 谚语曰: 'Talk Is Cheap, Show Me The Code'。知易行难,知行合一难。嘴里要讲出来总是轻松,把别人讲过的话记住,组织一下语言,再讲出来,很容易。绝知此事要躬行。设计理念你可能道听途...阅读全文

2020-12-15 16:37:40 码农突围
阅读:2758 评论:0

微服务过载保护原理与实战

在微服务中由于服务间相互依赖很容易出现连锁故障,连锁故障可能是由于整个服务链路中的某一个服务出现故障,进而导致系统的其他部分也出现故障。例如某个服务的某个实例由于过载出现故障,导致其他实例负载升高,从而导致这些实例像多米诺骨牌一样一个个全部出现故障,这种连锁故障就是所谓的雪崩现象比如,服务A依赖服务C,服务C依赖服务D,服务D依赖服务E,当服务E过载会导致响应时间变慢甚至服务不可用,这个时候调用方D会出现大量超时连接资源被大量占用得不到释放,进而资源被耗尽导致服务D也过载,从而导致服务C过载以及...阅读全文

2020-12-19 14:32:34 kevinwan
阅读:1334 评论:0

基于 Gitee Go 的 Golang 持续集成部署体验

Gitee Go 快速体验入口:https://gitee.com/features/gitee-go[Gitee Go] 是 [Gitee] 推出的 CI/CD 服务,通过自定义构建流程,可以实现从代码仓库到构建部署自动化。目前已支持 Maven、Gradle、npm、Python、Ant、PHP、Golang 等工具和语言的持续构建与集成能力。本次实践将基于 Gitee Go 完成一个 Golang 应用的 自动化构建编译+部署,并通过外网访问预览效果。实现思路[Gitee Go] 提供了将...阅读全文

2020-12-18 22:32:34 诺墨
阅读:1611 评论:0

载:如何优雅地重试

转载:如何优雅地重试背景在微服务架构中,一个大系统被拆分成多个小服务,小服务之间大量 RPC 调用,经常可能因为网络抖动等原因导致 RPC 调用失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。 重试的风险重试能够提高服务稳定性,但是一般情况下大家都不会轻易去重试,或者说不敢重试,主要是因为重试有放大故障的风险。首先,重试会加大直接下游的负载。如下图,假设 A 服务调用 B 服务,重试次数设置为 r(包括首次请求),当 B 高负载时很可能调用不成功,这时 A 调用...阅读全文

2021-01-08 09:33:49 meng_philip123
阅读:1820 评论:0

gin框架总结

gin框架总结 一 gin框架初识 1.1 helloworld gin框架中的路由是基于httprouter开发的。HelloWorld: package main import ( "github.com/gin-gonic/gin" "fmt" ) func main() { r := gin.Default() //Default返回一个默认路由引擎 r.GET("/", func(c *gin.Context) { username := c.Query("username") fmt...阅读全文

2021-01-10 20:41:46 voidFan
阅读:2921 评论:0

Bilibili 毛剑:Go 业务基础库之 Error

前言 在 4 月 27 日举办的 Gopher China 2019 中,国内 Go 语言专家,Bilibili 架构师毛剑进行了题为《 Go 业务基础库之 Error & Context 》的演讲,主要探讨两个问题: 在业务的基础库中,经常需要针对异常进行处理; 这次分享针对业务逻辑的异常处理,异常日志记录,异常信息关联, 业务错误码,以及基于Go,error的特点如何来使用解决这类问题; 在Go引入context以后,我们如何改造自己的基础库。 利用context上下文解决元数据传递,超时传...阅读全文

2021-04-19 22:05:19 mob604756f0bbf4
阅读:1386 评论:0

请给我一篇 Go 工程实践干货 @ Go中国

前言 在 4 月 27 日举办的 Gopher China 2019 中,国内 Go 语言专家,Bilibili 架构师毛剑进行了题为《Go业务基础库之Error & Context》的演讲,主要探讨两个问题: 在业务的基础库中,经常需要针对异常进行处理; 在Go引入context以后,我们如何改造自己的基础库。 本文是他演讲的第二部分——Context 篇,以下为演讲实录。 第二个我们讲上下文,上下文很多地方都在用了,上下文争议非常多。 我们先看背景,我们用上下文到底想解决什么问题?像其他语言...阅读全文

2021-04-19 22:08:11 mob604756f0bbf4
阅读:719 评论:0

基于 Go 开源项目 MIMIO 的对象存储方案在探探的实践

前言 在 2019年第五届 Gopher China 大会上,探探研发工程师于乐做了题为《基于 MINIO 的对象存储方案在探探的实践》的技术演讲。探探作为一个亿级用户千万日活的社交平台,每天会处理用户上传的大量图片、视频等媒体文件。最初将所有的对象存储在S3上,但随着存储容量越来越大,开始着手调研自己的存储系统。 经过一番比较,纯 Go 写的 Minio 最适合探探的业务场景。Minio 在设计上去繁就简,接口完全兼容 S3 协议。本次演讲会重点分享 Minio 在探探应用实践过程中积累的一些...阅读全文

2021-04-19 22:16:44 mob604756f0bbf4
阅读:1295 评论:0

深入理解Prometheus(GO SDK及Grafana基本面板)

最近我对Prometheus刮目相看了, 服务加一行代码就能轻轻松松地监控起来服务的CPU使用率、内存、协程数、线程数、打开的文件描述符数量及软限制、重启次数等重要的基本指标, 配合Grafana建立了直观的图表, 对查问题很有帮助, 故想写写折腾Prometheus和Grafana后得到的值得一讲的实践与理解. GO服务几个重要的基本指标Dashboard 介绍Prometheus是CNCF 的项目之一(ps.CNCF的项目代码都值得研究), 而且还是Graduated Projects. 同...阅读全文

2021-04-19 22:21:34 mob604756f0bbf4
阅读:1895 评论:0

Go 语言在百度 APP 中的实践

前言 在 2019年第五届 Gopher China 大会上,百度资深研发工程师陈肖楠进行了主题为《百度APP Go语言实践》的演讲,以下为演讲实录。 No.0 简介 我来自百度APP平台部,主要负责公司内规范建立和系统工具的开发。首先我将介绍一下我们公司的开发规范,然后针对这个规范,介绍我们在Go语言体系建设所做的工作;再针对这些体系建设,对其中三个项目展开详细的介绍。 这个是今天分享的大纲,主要分为以下四个部分: Go开发规范 Go语言体系 依赖管理 代码检查 No.1 Go 开发规范 首先...阅读全文

2021-04-19 22:35:33 mob604756f0bbf4
阅读:1650 评论:0

亿级用户日活千万的社交平台探探,如何用Go支撑后端工程实践

作者简介 任 贺 在“探探”领导产品后端团队工作,负责处理开发 GO 到 PostrgreSQL 所有的数据库管理部分 目录 1.探探的概述 2.Go 在探探后端的使用 3.探探工程实践 4.探探架构演变 5.分享小结 一、探探的概述 今天是第一次在Gopher大会上介绍我们在Go上的使用经验,探探算是国内比较早使用Go的公司之一,我们在做探探之前,就已经陆陆续续用Golang写了一些Web Server。 我先简单介绍一下:探探是一款陌生人交友的产品,面向的用户群主要是单身的年轻用户。探探的第...阅读全文

2021-04-20 23:04:26 mob604756f0bbf4
阅读:931 评论:0

Go在迅雷P2P连通系统中的性能优化实践-朱文

目录 如何构建压测环境 如何分析性能瓶颈 如何做性能优化 语言层面 设计层面 总结 主要内容 我是来自迅雷的后台开发架构师,今天很高兴给大家分享一下我在迅雷连通系统中的性能优化实践经验。P2P连通系统是我们迅雷下载过程中用来辅助P2P打洞和穿透的系统,C++开发,性能要求很高,是迅雷访问量最大的系统。16年的时候,我们发现P2P连通率有较大的提升空间,所以决定升级P2P连通系统后台,以提高P2P连通率以及用户下载体验。在此之前,我们零星使用过Go来开发模块,体验到Go的高效开发效率,所以我们决定...阅读全文

2021-04-20 23:33:28 mob604756f0bbf4
阅读:567 评论:0

丁靖--go工程效率实践

丁靖:2007年开始PHP, PECL开发,Swoole开发组成员;2015年开始Golang,从事存储,图像处理,高并发服务开发;目前是贝壳找房基础服务负责人 前言 今天我分享的主题是go的工程效率实践,做一个简单的自我介绍,我叫丁靖,8年PHP、PECL开发,2015年开始接触go,现在从事存储和图象处理以及高并发服务开发,目前是贝壳找房基础服务负责人。 先做一个铺垫,分享一下我对技术团队价值的理解,还有我们有哪些效率问题,以及我们是怎么解决的。 技术价值 技术团队的价值 首先看技术的价值,...阅读全文

2021-04-20 23:47:00 mob604756f0bbf4
阅读:551 评论:0

go语言的31个坑

目录go语言的31个坑golang中分为值类型和引用类型1.左大括号不能单独放一行 {2.不能使用简短声明来设置字段的值3.不小心覆盖了变量4.显式类型的变量无法使用 nil 来初始化5.直接使用值为 nil 的 slice、map6.map 容量7.string 类型的变量值不能为 nil8.Array 类型的值作为函数参数9.访问 map 中不存在的 key10.string 类型的值是常量,不可更改,可以使用rune来转换11.string 与索引操作符12.字符串并不都是 UTF8 文本...阅读全文

2021-04-27 20:24:43 mob604756fb8908
阅读:2352 评论:3