首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
golang
订阅
rinetd
更多收藏集
微信扫码分享
微信
新浪微博
QQ
10篇文章 · 0订阅
Golang高性能实战
2018年后就一直计划在公司做一次技术分享,但迟迟没有确定好主题。正好公司好多同事都开始学习golang, 正好到了由入门到晋级的阶段。 我这边golang也有一两年的经验了,对于golang高性能的设计是有一定的理解,所以 有了这次的分享。
Golang strings.Builder 原理解析
在很多场景中,我们都会进行字符串拼接操作。最开始的时候,你可能会使用如下的操作: 与许多支持string类型的语言一样,golang中的string类型也是只读且不可变的。因此,这种拼接字符串的方式会导致大量的string创建、销毁和内存分配。
为什么在Go语言中要慎用interface{}
记得刚从Java转Go的时候,一个用Go语言的前辈告诉我:“要少用interface{},这玩意儿很好用,但是最好不要用。”那时候我的组长打趣接话:“不会,他是从Java转过来的,碰到个问题就想定义个类。”当时我对interface{}的第一印象也是类比Java中的Object…
如何对 Go 项目代码进行静态依赖分析
看源码的一个比较好的思路是:先从宏观上对系统内部模块的调用关系有一个大概的认识。这个过程又分静态分析和动态分析。动态分析很简单,直接对内存数据进行采样即可,比如 Golang 的 pprof。
浅析Linux中的零拷贝技术
本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能。这时候服务端的任务是:将服务端主机磁盘中的文件不做修改地从已连接的s…
Go 语法速览与实践清单(V0.5)
Go CheatSheet 是对于 Go 学习/实践过程中的语法与技巧进行盘点,其属于 Awesome CheatSheet 系列,致力于提升学习速度与研发效能,即可以将其当做速查手册,也可以作为轻量级的入门学习资料。 本文参考了许多优秀的文章与代码示范,统一声明在了 Go …
理解 Go Context 机制
最近在公司分析 gRPC 源码,proto 文件生成的代码,接口函数第一个参数统一是 ctx context.Context 接口,公司不少同事都不了解这样设计的出发点是什么,其实我也不了解其背后的原理。今天趁着妮妲台风妹子正面登陆深圳,全市停工、停课、停业,在家休息找了一些资料研究把玩一把。 Context 通常被译作上下文,它是一个比较抽象的概念。在公司技术讨论时也经常会提到上下文。一般理解为程序单元的一个运行状态、现场、快照,而翻译中上下又很好地诠释了其本质,上下上下则是存在上下层的传递,上会把内容传递给下。在 Go 语言中,程序单元也就指的是 Goroutine。 每个 Goroutine 在执行之前,都要先知道程序当前的执行状态,通常将这些执行状态封装在一个 Context 变量中,传递给要执行的 Goroutine 中。上下文则几乎已经成为传递与请求同生存周期变量的标准方法。在网络编程下,当接收到一个网络请求 Request,处理 Request 时,我们可能需要开启不同的 Goroutine 来获取数据与逻辑处理,即一个请求 Request,会在多个 Goroutine 中处理。而这些 Goroutine 可能需要共享 Request 的一些信息;同时当 Request 被取消或者超时的时候,所有从这个 Request 创建的所有 Goroutine 也应该被结束。
如何优雅的关闭Go Channel「译」
也就是说应该只在[唯一的或者最后唯一剩下]的生产者协程中关闭channel,来通知消费者已经没有值可以继续读了。只要坚持这个原则,就可以确保向一个已经关闭的channel发送数据的情况不可能发生。 如果想要在消费端关闭channel,或者在多个生产者端关闭channel,可以使…
Go 中的内存泄漏
当使用带有垃圾回收器(GC)的语言编程时, 通常我们不需要关心内存泄漏问题, 因为语言运行时(runtime)会定期收集未使用的内存. 但是, 我们确实需要了解一些可能导致轻微的或者真正的内存泄漏的特殊场景. 本文剩下的部分将列出几个这样的情况.
视频笔记:如何正确使用 Golang Context
每一个长请求都应该有个超时限制,需要在调用中传递这个超时,比如开始处理请求的时候我们说是 3 秒钟超时,那么在函数调用中间,这个超时还剩多少时间了?需要在什么地方存储这个信息,这样请求处理中间可以停止