Golang 进阶
Golang 进阶
衣舞晨风
不预测,只应对
展开
-
关于Golang闭包
1、能不用闭包的地方就不要用闭包,没必要为了炫技,写一段增加团队小伙伴负担的代码。2、for 循环代码,统一在内部用临时变量再存一下。关于Golang闭包。原创 2024-01-09 21:30:00 · 676 阅读 · 1 评论 -
Golang SSL 证书 验证
代码平平无奇,需要注意的是http client初始化部分。因为是短连接,如果是大量域名去验证的话,短时间内将导致大量。原创 2023-12-25 22:15:00 · 501 阅读 · 1 评论 -
得物-Golang-记一次线上服务的内存泄露排查
这边大致归纳下go语言中有哪些常见的内存泄露。常见内存泄露。原创 2023-12-19 23:15:00 · 11744 阅读 · 18 评论 -
Gin获取Response Body引发的OOM
同时根据请求的Header跳过SSE及Websocket请求,因为这两类流的请求记录到审计日志中意义不大,而且在json序列化的时候也会有问题。再看下代码,可以看到这个代码的逻辑是每一个请求都会将响应的Body完整的缓存在内存一份,对于响应体很大的请求,在这里就会造成内存暴涨,比如:像日志下载。我们在开发中基于Gin开发了一个Api网关,但上线后发现内存会在短时间内暴涨,然后被OOM kill掉。在图二中可以看到内存的增长是很快的,在一分半的时间内,内存增长了近2G。* 后来参考Echo,补上了这个功能。原创 2023-02-25 04:56:36 · 817 阅读 · 0 评论 -
Golang PutUvarint Uvarint
GO Uvarint用法及代码示例原创 2022-12-23 22:00:00 · 383 阅读 · 0 评论 -
Golang net/http 请求处理流程分析
Golang net/http 请求处理流程分析原创 2022-07-15 21:30:00 · 1393 阅读 · 0 评论 -
Kubernetes中Java应用Heap Dump
伴随着微服务及容器化的发展,越来越多的应用运行在kubernetes集群中,运维、调试的问题也随之而来。以Java为例,当线上环境出现内存问题,比如OOM,这时候需要Dump内存进行分析的时候,就会发现对于普通开发人员来说他们没有操作kubernetes集群机器的权限,从而导致,Dump出来的文件无法回传到开发手中进行MAT之类的分析。本文的解决办法是这样的,当用户需要Dump某个应用实例的时候,只需要在实例终端界面点击一下按钮,后台会自动Dump Heap到OSS上,上传完成后,会将下载的信息展示在列表原创 2021-02-07 09:17:55 · 1933 阅读 · 0 评论 -
Golang GC
一、增量式 GC二、The GC runs concurrently with mutator threads, is type accurate (aka precise), allows multiple GC thread to run in parallel. It is a concurrent mark and sweep that uses a write barrier. I...原创 2018-12-15 11:40:01 · 1447 阅读 · 0 评论 -
Golang GC: Prioritizing low latency and simplicity
The SetupGo is building a garbage collector (GC) not only for 2015 but for 2025 and beyond: A GC that supports today’s software development and scales along with new software and hardware throughout ...转载 2018-12-15 10:29:11 · 502 阅读 · 0 评论 -
Go Concurrency Patterns: Context
IntroductionIn Go servers, each incoming request is handled in its own goroutine. Request handlers often start additional goroutines to access backends such as databases and RPC services. The set of ...转载 2018-12-12 12:51:43 · 674 阅读 · 0 评论 -
视频笔记:理解 channels - Kavya Joshi
一、视频信息1、视频观看地址https://www.youtube.com/watch?v=KBZlN0izeiY2、PPT下载地址http://download.csdn.net/download/xunzaosiyecao/102128843、博文https://about.sourcegraph.com/go/understanding-channels-转载 2018-01-18 20:27:40 · 1106 阅读 · 0 评论 -
goroutine 调度器(scheduler)
虽然golang的最小调度单元为协程(goroutine),但是操作系统最小的调度单元依然还是线程,所以golang scheduler(golang调度器)其要做的工作是如何将众多的goroutine放在有限的线程上进行高效而公平的调度。操作系统的调度不失为高效和公平,比如CFS调度算法,那么go为何要引入goroutine?原因很多,有人会说goroutine 相比于linux的pthre转载 2018-01-14 15:32:15 · 1971 阅读 · 0 评论 -
Go 1.9 sync Map 源码阅读笔记
1. 空间换时间。 通过冗余的两个数据结构(read、dirty),实现加锁对性能的影响。2. 使用只读数据(read),避免读写冲突。3. 动态调整,miss次数多了之后,将dirty数据提升为read。4. double-checking。5. 延迟删除。 删除一个键值只是打标记(会将key对应value的pointer置为nil,但read中仍然有这个key:key;value:nil的键值对),只有在提升dirty的时候才清理删除的数据。6. 优先从read读取、更新、删除,因为对read原创 2019-05-18 08:58:35 · 4110 阅读 · 1 评论