随笔分类 -  go

上一页 1 2 3 4 5 6 7 8 ··· 16 下一页

当 Go struct 遇上 Mutex
摘要:struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ? 一段代码 type URL struct { Ip string Port string mux sync.RWMutex params url.Values } 阅读全文

posted @ 2021-06-11 10:35 ExplorerMan 阅读(84) 评论(0) 推荐(0) 编辑

Go sync.Pool 浅析
摘要:sync.Pool 应该是 Go 里面明星级别的数据结构,有很多优秀的文章都在介绍这个结构,本篇文章简单剖析下 sync.Pool。不过说实话 sync.Pool 并不是我们日常开发中使用频率很高的的并发原语。 尽管用的频率很低,但是不可否认的是 sync.Pool 确实是 Go 的杀手锏,合理使用 阅读全文

posted @ 2021-06-11 10:34 ExplorerMan 阅读(101) 评论(0) 推荐(0) 编辑

golang面向对象分析
摘要:说道面向对象(OOP)编程, 就不得不提到下面几个概念: 抽象 封装 继承 多态 其实有个问题Is Go An Object Oriented Language?, 随便谷歌了一下, 你就发现讨论这个的文章有很多: reddit google group 那么问题来了 Golang是OOP吗? 使用 阅读全文

posted @ 2021-06-11 10:33 ExplorerMan 阅读(53) 评论(0) 推荐(0) 编辑

一次错误使用 go-cache 导致出现的线上问题
摘要:话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.log 中响应时长高达数秒 查看数据库, codis 监控, 各项指标正常 不得已, 只能打开线上 p 阅读全文

posted @ 2021-06-11 10:32 ExplorerMan 阅读(356) 评论(0) 推荐(0) 编辑

Go timer 是如何被调度的?
摘要:本篇文章剖析下 Go 定时器的相关内容。定时器不管是业务开发,还是基础架构开发,都是绕不过去的存在,由此可见定时器的重要程度。 我们不管用 NewTimer, timer.After,还是 timer.AfterFun 来初始化一个 timer, 这个 timer 最终都会加入到一个全局 timer 阅读全文

posted @ 2021-06-11 10:31 ExplorerMan 阅读(56) 评论(0) 推荐(0) 编辑

Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解
摘要:服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级。 而另一种更方便的方法是在应用上做热重启,直接更新源码、配置或升级应用而不停服务。 这个功能在重要业务上尤为重要,会影响服务可用性、用户体验。 原理 热重启的原 阅读全文

posted @ 2021-05-31 18:01 ExplorerMan 阅读(1599) 评论(0) 推荐(0) 编辑

最终,为什么选择go-kit
摘要:转载请附上原文地址:http://www.jianshu.com/p/0c34a75569b1,谢谢! 前言 工作这些年,先后经历过两家公司,有参与过php语言框架的开发和主导过go语言技术栈的落地工作,在此过程中有一些感悟和总结。我想以之前我主导的go语言技术栈为线索,来陈述当时遇到的一些问题,以 阅读全文

posted @ 2021-05-29 18:58 ExplorerMan 阅读(516) 评论(0) 推荐(0) 编辑

Gorilla
摘要:Gorilla 是 Go 语言的 Web 工具包,包含模块如下: gorilla/context 存储全局的请求变量 gorilla/mux 是一个强大的 URL 路由器和分发器 gorilla/reverse 产生可逆的正则表达式muxes regexp的基础。 gorilla/rpc 实现 RP 阅读全文

posted @ 2021-05-28 16:02 ExplorerMan 阅读(765) 评论(0) 推荐(0) 编辑

nginx反向代理GRPC
摘要:Nginx 1.13.10新增了对GRPC的原生支持。 安装Nginx Nginx版本要求:1.13.10+ gRPC必须使用HTTP/2传输数据,支持明文和TLS加密数据,支持流数据的交互。这是为了充分利用 HTTP/2 连接的多路复用和流式特性。所以在安装部署nginx时需要安装http/2。使 阅读全文

posted @ 2021-05-17 15:33 ExplorerMan 阅读(1046) 评论(0) 推荐(0) 编辑

一次 Go 程序 out of memory 排查及反思
摘要:前言# 最近在搞数据导出模块,在测试大文件下载的过程中,报了 Out of memory (OOM) 错误,因为之前没有遇到过这类问题,导致此次排查问题花费了大半天,也走了不少弯路,特此复盘记录。 现象描述# 和往常一样复制粘贴完最后一个下载接口,没什么问题的话,导出模块就可以收工了。 上服务器部署 阅读全文

posted @ 2021-05-13 15:07 ExplorerMan 阅读(372) 评论(0) 推荐(0) 编辑

【GoLang】golang context channel 详解
摘要:package main import ( "fmt" "time" "golang.org/x/net/context") func main() { // ctx, cancelFunc := context.WithDeadline(context.Background(), time.Now 阅读全文

posted @ 2021-04-26 11:44 ExplorerMan 阅读(220) 评论(0) 推荐(0) 编辑

用DD命令制作硬盘镜像
摘要:用DD命令制作硬盘镜像 本文参考http://serverfault.com/questions/4906/using-dd-for-disk-cloning写出,转载时请说明出处。 以下的说明都是针对备份整个硬盘,而不是备份某一个分区。 一、用DD命令制作硬盘镜像的特点 (1)在制作镜像时,不能对 阅读全文

posted @ 2021-04-23 15:30 ExplorerMan 阅读(4396) 评论(0) 推荐(0) 编辑

golang 中, os.exit() runtime.Goexit() return 有什么区别
摘要:return结束当前函数,并返回指定值runtime.Goexit结束当前goroutine,其他的goroutine不受影响,主程序也一样继续运行os.Exit会结束当前程序,不管你三七二十一 Gosched 暂停当前goroutine,使其他goroutine先行运算。只是暂停,不是挂起,当时间 阅读全文

posted @ 2021-04-23 15:04 ExplorerMan 阅读(1561) 评论(0) 推荐(0) 编辑

Golang 协程控制关闭
摘要:部分代码参考:https://zhuanlan.zhihu.com/p/26695984 这边文章的的 package main import ( "context" "fmt" "time") func main() { ctx := context.Background() ctx, cance 阅读全文

posted @ 2021-04-23 15:00 ExplorerMan 阅读(921) 评论(0) 推荐(0) 编辑

Redis主从集群切换数据丢失问题
摘要:一、数据丢失的情况 异步复制同步丢失集群产生脑裂数据丢失 1.异步复制丢失对于Redis主节点与从节点之间的数据复制,是异步复制的,当客户端发送写请求给master节点的时候,客户端会返回OK,然后同步到各个slave节点中。如果此时master还没来得及同步给slave节点时发生宕机,那么mast 阅读全文

posted @ 2021-04-23 11:07 ExplorerMan 阅读(612) 评论(0) 推荐(0) 编辑

Goroutine(协程)的理解
摘要:title: Goroutine(协程)的理解tags: Go,GoroutineAuthor: Clown95 并发概念 Go语言相对于其他语言的最大一个特色就是支持高并发编程模式。Goroutine(协程)是Go中最基本的执行单元。事实上每一个Go程序至少有一个Goroutine:主Gorout 阅读全文

posted @ 2021-04-21 10:26 ExplorerMan 阅读(343) 评论(0) 推荐(0) 编辑

堆和栈的概念和区别
摘要:在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进 阅读全文

posted @ 2021-04-21 10:24 ExplorerMan 阅读(432) 评论(0) 推荐(0) 编辑

golang goroutine实现_golang中的Mutex设计原理详解(一)
摘要:Mutex系列是根据我对晁岳攀老师的《Go 并发编程实战课》的吸收和理解整理而成,如有偏差,欢迎指正~ 目标本系列除了希望彻底学习和了解 golang 中 sync.Mutex 的原理和使用,更希望借 golang 中 Mutex 的发展和演变,了解并发场景下锁的设计与实现方法以及不同业务场景下的一 阅读全文

posted @ 2021-04-21 10:09 ExplorerMan 阅读(157) 评论(0) 推荐(0) 编辑

Sentinel Go 核心统计结构滑动窗口的深度解析
摘要:Sentinel Go 核心模块分析之滑动窗口统计结构设计什么是滑动时间窗口滑动窗口基本运行模式滑动窗口的周期和格子长度怎么设置?滑动窗口长度一致,格子长度不一致格子长度一致,滑动窗口长度不一致总结Sentinel Go时间滑动窗口实现长度可设置的原子数组基于时间的滑动窗口实现 本文主要分析 Sen 阅读全文

posted @ 2021-04-21 10:08 ExplorerMan 阅读(269) 评论(0) 推荐(0) 编辑

golang sync.Mutex互斥锁的实现原理
摘要:golang sync.Mutex互斥锁的实现原理数据结构与状态机Lock(1)正常模式(2) 饥饿模式Unlocksync.Mutex是一个不可重入的排他锁。 这点和Java不同,golang里面的排它锁是不可重入的。 当一个 goroutine 获得了这个锁的拥有权后, 其它请求锁的 gorou 阅读全文

posted @ 2021-04-21 10:07 ExplorerMan 阅读(414) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 16 下一页

导航