![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
文章平均质量分 67
王建文go
这个作者很懒,什么都没留下…
展开
-
锁 和 CPU CAS 原子操作
锁 和 CPU CAS 原子操作原创 2022-09-15 17:52:36 · 682 阅读 · 0 评论 -
sync.Map源码原理
shell实现简单的检测程序停止则进行重启#!/bin/sh#无线循环while truedoecho jinru .shecho jinru1 .shecho jinru2 .shma="999@qq.com"#判断4011端口是否在执行if netstat -lntp | grep -q ‘:4011’thenecho anquanelse./ceshi#...原创 2019-04-18 15:58:09 · 370 阅读 · 0 评论 -
Go的GMP调度器
Go的GMP调度器上一篇文章关联链接地址点击前言:最后有讲系统级别多线程、多进程的问题.最大的问题其实就是资源浪费,切换成本高所以导致很多语言对线程的控制要求比较高,否则容易出现内存溢出,或者频繁的让cpu滴使用率达过高Go的GMP就很好的解决了这部分的问题。这也是Go逐渐成为热门语言的原因之一。线程补充:线程是系统级别进行控制(系统态)。线程会由机器的多核数量来达到是否存在并行的情况。协程 co-routine是有用户态进行管理操作CPUcpu只看系统态,只会看向原创 2021-02-20 14:32:15 · 192 阅读 · 0 评论 -
统一实现rpc,grpc,tcp,http等协议简单的负载均衡
**统一实现rpc,grpc,tcp,http等协议简单的负载均衡**利用:zookeeper或者etcd来实现.(zookeeper的源码为java,etcd的源码为go)本文选用zookeeper来实现服务之间的调用负载。原因:作为一个go开发程序员,我觉得zookeeper部署加运用容易点,不过听说etcd是会好一点,具体我是没有做实验进行对比的,有空的话可以试试。(部署自行google 不管是哪个系统都容易的很)实现思路:程序之所以能调用肯定是分为了serve以及client,那么就得先原创 2020-06-28 16:59:44 · 676 阅读 · 0 评论 -
携程并发两小坑
携程:协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,和多线程比,线程数量越多,协程的性能优势就越明显。独占CPU导致其他Groutine饿死。Groutine是协作式抢占调度,Groutine本身不会主动放弃CPU.func GoroutineCpu(){ runtime.GOMAXPROCS(4) //开核 go func() ...原创 2020-02-21 16:53:00 · 304 阅读 · 0 评论 -
数组、切片之优化
数组:数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成,位数不同类型也就不同,int64 != int32切片:切片就是一种简化版的动态数组,因为动态数组的长度不固定,所以切片的长度自然也就不能是类型的组成部分了。切片数组的内存增长:其实这种类型的内存增长不用做过多的介绍,因为一般的情况下不管是什么语言,他们的数组以及线程等,存入内存时,在扩容的时候都是以D...原创 2020-02-20 16:54:31 · 214 阅读 · 0 评论 -
tcp解决粘包
代码链接: https://github.com/wjw1758548031/Golang/blob/master/tcp.gotcp协议相对于udp协议的差别TCP UDP是否连接 面向连接 面向非连接传输可靠性 可靠 不可靠应用场合 少量数据 传输大量数据速度 慢 快根据这个确定运用场...原创 2019-12-25 10:27:29 · 154 阅读 · 0 评论 -
golang Map和指针优化
小编不啰嗦,直接上代码:执行结果:这里的内存分配容量和次数都为0,因为此次定义的数据量较小,直接忽略不计。结果:带指针的结构明显执行速度比值传递快。为什么会发生这样的情况呢,而且在我以前的文章中也能找到,频繁的带入指针,还会影响到Gc回收,造成压力,那么在此处,为何性能快了这么多。原因:值传递,传入过去会分配两个内存空间,意思是内存会分配两个容量存储。而直接使用指针的话,可以直接...原创 2019-12-19 16:27:19 · 1483 阅读 · 0 评论 -
go Gc
**GC受值类型和引用类型的影响(golang)**前言:此篇介绍的是优化,引用传递返回值,还是值返回各自给gc带来的压力一下是代碼:**测试开始:**下方是引用类型传递所返回的接口(也就是代码里调用的test):下方是值类型传递所返回的接口(也就是代码里调用的testOne):总结:很明显的看出来,值传递gc所占用的堆明显比引用要少,而且引用还在不停地叠加,因为gc无法...原创 2019-09-17 14:36:41 · 239 阅读 · 0 评论 -
Golang小技巧与原理
Golang小技巧与原理前言:每个部分写的不太清楚,只是指出了思路,可以直接根据思路百度,应该都有相应教程。1:&是地址 是值 当&为参数传入方法时会影响之前的值,否则不会影响(包括)3:切面和map都是线程不安全的,建议不要开携程,否则就需要加锁。4:for k := rang item //第一个默认值就是k而不是v5: i:=make([]int,10);...原创 2019-04-18 14:39:05 · 185 阅读 · 0 评论