随笔分类 -  go

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 16 下一页

golang 做了个mutex与atomic性能测试
摘要:func BenchmarkMutex(b *testing.B) { var number int lock := sync.Mutex{} for i:=0; i< b.N;i++{ go func() { defer lock.Unlock() lock.Lock() number++ }() 阅读全文

posted @ 2020-04-02 18:24 ExplorerMan 阅读(610) 评论(0) 推荐(0) 编辑

Go语言中的条件变量
摘要:Go语言sync package提供了条件变量(condition variable)类型: type Cond struct { // L is held while observing or changing the condition L Locker // contains filtered 阅读全文

posted @ 2020-04-02 18:21 ExplorerMan 阅读(236) 评论(0) 推荐(0) 编辑

golang 百万级请求
摘要:我在不同公司从事反爬虫、反病毒、反恶意程序已经有15年了,我知道,由于每天需要处理和应对的大量数据,这些系统最终会因此变得十分复杂。 目前我是smsjunk.com的CEO以及KnowBe4的首席架构师,两家公司都是活跃与网络安全行业。 有趣的是在过去10年作为一名软件工程师,几乎所有我参与的后端开 阅读全文

posted @ 2020-04-02 18:16 ExplorerMan 阅读(569) 评论(0) 推荐(0) 编辑

golang strings.NewReader
摘要:为什么说strings.Reader类型的值可以高效地读取字符串 与strings.Builder类型恰恰相反,strings.Reader类型是为了高效读取字符串而存在的。后者的高效主要体现在它对字符串的读取机制上,它封装了很多用于在string值上读取内容的最佳实践。 strings.Reade 阅读全文

posted @ 2020-04-02 18:07 ExplorerMan 阅读(933) 评论(0) 推荐(0) 编辑

golang strings.Builder
摘要:strings.Builder类型的值(以下简称Builder值)的优势有下面的三种: 已存在的内容不可变,但可以拼接更多的内容; 减少了内存分配和内容拷贝的次数; 可将内容重置,可重用值。 先来说说string类型。 我们都知道,在 Go 语言中,string类型的值是不可变的。 如果我们想获得一 阅读全文

posted @ 2020-04-02 18:06 ExplorerMan 阅读(3002) 评论(0) 推荐(0) 编辑

go modules 问题 proxy
摘要: 阅读全文

posted @ 2020-04-02 18:03 ExplorerMan 阅读(152) 评论(0) 推荐(0) 编辑

Golang 服务优雅重启
摘要:很多时候对于服务升级的做法简单粗暴, 就简单的杀进程启动新的进程. 还有的好一点就是多个相同的服务依次升级, 保证有服务可用. 但是公平的说这两种都会丢失请求中的连接. 鉴于这种情况, 在现实中我们可以使用优雅重启来搞定这个问题. Golang 实现优雅重启的原理也很简单: 监听 USR2 信号; 阅读全文

posted @ 2020-04-02 18:02 ExplorerMan 阅读(691) 评论(0) 推荐(0) 编辑

golang服务开发平滑升级之优雅重启
摘要:转载不错的文档 经典平滑升级方案 服务器开发运维中,平滑升级是一个老生常谈的话题。拿一个http server来说,最常见的方案就是在http server前面加挂一个lvs负载,通过健康检查接口决定负载的导入与摘除。具体来说就是http server 提供一个/status 接口,服务器返回一个s 阅读全文

posted @ 2020-04-02 18:00 ExplorerMan 阅读(514) 评论(0) 推荐(0) 编辑

Golang实现请求限流的几种办法
摘要:简单的并发控制 利用 channel 的缓冲设定,我们就可以来实现并发的限制。我们只要在执行并发的同时,往一个带有缓冲的 channel 里写入点东西(随便写啥,内容不重要)。让并发的 goroutine在执行完成后把这个 channel 里的东西给读走。这样整个并发的数量就讲控制在这个 chann 阅读全文

posted @ 2020-04-02 17:52 ExplorerMan 阅读(662) 评论(0) 推荐(0) 编辑

Golang限流器time/rate使用介绍
摘要:本主题为系列文章,分上下两篇。本文主要介绍time/rate的具体使用方法,另外一篇文章《Golang限流器time/rate实现剖析》则着重介绍其内部实现原理。 限流器是后台服务中的非常重要的组件,可以用来限制请求速率,保护服务,以免服务过载。限流器的实现方法有很多种,例如滑动窗口法、Token 阅读全文

posted @ 2020-04-02 17:50 ExplorerMan 阅读(316) 评论(0) 推荐(0) 编辑

go mod有了它,再也不用担心运行缺少类库了【h】
摘要:参考链接:https://blog.csdn.net/weixin_39003229/article/details/97638573 什么是go.mod? Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实 阅读全文

posted @ 2020-03-26 12:00 ExplorerMan 阅读(609) 评论(0) 推荐(0) 编辑

Golang 无法下载依赖解决方案 unrecognized import path "golang.org/x/net
摘要:golang Modules 依赖管理工具使用:https://blog.csdn.net/weixin_40165163/article/details/90112861 Golang 无法下载依赖解决方案今天本来想写一下爬虫程序的,所以就用到了"github.com/PuerkitoBio/go 阅读全文

posted @ 2020-03-26 11:59 ExplorerMan 阅读(2354) 评论(0) 推荐(0) 编辑

beego 注解路由无效问题分析
摘要:问题描述:学习 beego 框架发现注解路由无效,除了不能找到路由外,未见任何异常。 问题解决:将配置文件中的 runmode 更改为 dev 模式。 问题分析: 如果没有设置过 runmode 不会出现上述问题,当将 runmode 更改为非 dev 模式后,更改注解路由将产生上述问题。原因是,b 阅读全文

posted @ 2020-03-06 16:39 ExplorerMan 阅读(767) 评论(0) 推荐(0) 编辑

sync.Map实现分析
摘要:golang的SDK中提供线程安全的map实现sync.Map。它是针对RWMutex+map的实现方案中存在cache line的false share提出来的。主要适用于两个场景: 针对一个key一次写多次读。 多个goroutine并发读写修改的key是没有交集。 在这两种情况下,相比一个Mu 阅读全文

posted @ 2020-03-05 18:20 ExplorerMan 阅读(576) 评论(0) 推荐(0) 编辑

由浅入深聊聊Golang的sync.Map
摘要:前言 今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。 回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。 1. 阅读全文

posted @ 2020-03-05 18:14 ExplorerMan 阅读(788) 评论(0) 推荐(0) 编辑

Go语言编程:使用条件变量Cond和channel通道实现多个生产者和消费者模型
摘要:如题,使用条件变量Cond和channel通道实现多个生产者和消费者模型。Go语言天生带有C语言的基因,很多东西和C与很像,但是用起来 绝对比C语言方便。今天用Go语言来实现下多消费者和生产者模型。如果对C语言的多生产者和消费者模型感兴趣的可以看Linux系统编程:使用mutex互斥锁和条件变量实现 阅读全文

posted @ 2020-03-04 12:08 ExplorerMan 阅读(564) 评论(0) 推荐(0) 编辑

golang 的 channel 实现 生产者/消费者 模型
摘要:package main import ( "fmt" "math/rand" "time" ) func productor(channel chan<- string) { for { channel <- fmt.Sprintf("%v", rand.Float64()) time.Sleep 阅读全文

posted @ 2020-03-04 12:06 ExplorerMan 阅读(589) 评论(0) 推荐(0) 编辑

Golang sync.NewCond条件锁的用法
摘要:package main import ( "fmt" "sync" "time" ) func main() { c := sync.NewCond(&sync.Mutex{}) queue := make([]interface{}, 0, 10) removeFromQueue := func 阅读全文

posted @ 2020-03-04 12:05 ExplorerMan 阅读(793) 评论(0) 推荐(0) 编辑

golang channel多生产者和多消费者实例
摘要:package main import ( "fmt" "time" ) func consumer(cname string, ch chan int) { //可以循环 for i := range ch 来不断从 channel 接收值,直到它被关闭。 for i := range ch { 阅读全文

posted @ 2020-03-04 12:04 ExplorerMan 阅读(5026) 评论(0) 推荐(0) 编辑

Go语言的那些坑
摘要:Golang是我最喜欢的一门语言,它简洁、高效、易学习、开发效率高、还可以编译成机器码… 虽然它一出世,就饱受关注,而且现在在市面上逐渐流行开来,但是,它毕竟是一门新兴语言,还有很多让人不太习惯的地方(即坑,(^__^)),我作为新手,一边学习,一边踩坑,希望对其他人有借鉴作用。 文件名字不要轻易以 阅读全文

posted @ 2020-03-03 12:01 ExplorerMan 阅读(467) 评论(0) 推荐(0) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 16 下一页

导航