学习
文章平均质量分 55
冰释物语
C 开发工程师
展开
-
归并排序-Golang
归并排序golang实现原创 2022-07-24 10:59:37 · 548 阅读 · 2 评论 -
sync.map源码解析
golang浅谈sync.mapgo语言原生的map并不是线程安全的一种数据结果,如果想要达到安全则需要使用锁,如果map比较大,则加锁解锁代价相对比较大,常见的做法拆分map,使用key值hash的方式进行小规模的锁操作,前者性能影响较大,后者使用锁较多,容易出错go在1.9之后提供了sync.Map,一种并发安全的map数据结构操作方式跟常见的map大同小异,只是在遍历的时候操作不太一样func main() { var m sync.Map // 1. 写入 m.Store("te原创 2021-01-04 15:45:41 · 442 阅读 · 0 评论 -
Go语言内存逃逸分析
go语言内存逃逸分析什么是逃逸逃逸分析过程指针逃逸动态类型逃逸逃逸常见情况如何避免总结什么是逃逸逃逸分析是编译器用于决定变量分配到堆上还是栈上的一种行为。函数的运行都是在栈上面运行的,在栈上面生命临时变量,分配内存,函数运行完毕之后,回收内存,每个函数的栈空间都是独立的,其他函数是无法进行访问,但是在默写情况下栈上面的数据需要在函数结束之后还能被访问,这时候就会设计到内存逃逸了,什么是逃逸,就是抓不住如果数据从栈上面逃逸,会跑到堆上面,栈上面的数据在函数结束的时候回自动回收,回收代价比较小,栈的原创 2020-08-06 17:36:47 · 1029 阅读 · 0 评论 -
Go语言内存回收机制GC
前言文章有点长,如果是刚接触GC建议耐心看完所谓内存回收,便是指当前内存使用完毕,释放当前存储器,以供后续继续使用,如果没有进行及时的释放,则会造成内存泄漏常见的GC方式有如下三种引用计数:对每一个对象维护一个引用计数,当引用该对象的对象被销毁的时候,引用计数减1,当引用计数为0的时候,怎回收该对象,比如c++的shared_ptr优点 :对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。缺点:不能很好的处理循环引用,而且实时维护引用计数,有也一定的代价。代表语言:Pytho原创 2020-07-16 17:37:02 · 2168 阅读 · 1 评论 -
go dial tcp 216.58.200.49:443: i/o timeout问题解决-proxy设置
在Go 1.13中,我们可以通过GOPROXY来控制代理,以及通过GOPRIVATE控制私有库不走代理。设置GOPROXY代理:go env -w GOPROXY=https://goproxy.cn,direct设置GOPRIVATE来跳过私有库,比如常用的Gitlab或Gitee,中间使用逗号分隔:go env -w GOPRIVATE=.gitlab.com,.gitee.com如果在运行go mod vendor时,提示Get https://sum.golang.org/look原创 2020-07-14 10:47:39 · 28849 阅读 · 3 评论 -
Go语言函数参数传递类型详解
go语言函数参数传递类型详解到底是值传递还是引用传递?什么是值传递什么是传引用(引用传递)到底是值传递还是引用传递?golang默认都是值传递引用,无论参数是指针还是普通参数传递,默认都是值拷贝传递什么是值传递函数传递的总是原来这个东西的一个副本,一副拷贝。比如我们传递一个int类型的参数,传递的其实是这个参数的一个副本;传递一个指针类型的参数,其实传递的是这个该指针的一份拷贝,而不是这个指针指向的值。在网上看了一篇帖子,自己实际操作了进行验证,以int类型的数据进行验证,代码如下func mo原创 2020-06-30 15:22:05 · 1676 阅读 · 0 评论 -
Kafka分区分配策略-RangeAssignor、RoundRobinAssignor、StickyAssignor
按照Kafka默认的消费逻辑设定,一个分区只能被同一个消费组(ConsumerGroup)内的一个消费者消费。假设目前某消费组内只有一个消费者C0,订阅了一个topic,这个topic包含7个分区,也就是说这个消费者C0订阅了7个分区,参考下图(1)此时消费组内又加入了一个新的消费者C1,按照既定的逻辑需要将原来消费者C0的部分分区分配给消费者C1消费,情形上图(2),消费者C0和C1各自负责消费所分配到的分区,相互之间并无实质性的干扰。接着消费组内又加入了一个新的消费者C2,如此消费者C.原创 2020-06-15 15:35:25 · 433 阅读 · 0 评论 -
curl 命令详解(转载)
curl 命令详解(转载)常用参数详解参数 描述 -I/--head 只显示传输文档,经常用于测试连接本身 -o/--output 把输出写到该文件中,必须输入保存文件名 -O/--remote-name 把输出写到该文件中,保留远程文件的文件名 -F/--form 模拟表单提交 -s/--silent 静默模式,不输出任何东西 ...原创 2020-04-20 15:20:44 · 578 阅读 · 0 评论 -
使用GoBase64标准包遇到的问题
报错代码 enstr := "eyJBY2NvdW50SWQiOiIxIiwiQ2xpZW50IjoiIiwiRW1haWwiOiJ5YWt1Lm1pb3RvQGdtYWlsLmNvbSIsIk1hc3RlckZsYWciOnRydWUsImV4cCI6MTU0ODc0NTY5OSwidHlwZSI6ImVtcGxveWVlcyJ9"// {"AccountId":"1","Clie...原创 2020-03-17 14:39:54 · 647 阅读 · 0 评论 -
一次完整的HTTP请求所经历的7个步骤
HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层...转载 2018-04-12 09:55:43 · 382 阅读 · 0 评论 -
C++ 用libcurl库进行http 网络通讯编程
一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网ht转载 2018-01-25 11:02:12 · 197 阅读 · 0 评论 -
多线程信号量,互斥锁,条件变量异同
多线程常见的几种同步方式分为以下几点:只是阐述相关性,具体代码逻辑,网上一抓一大片,再次不在详述。1、信号量:主要用于线程之间的数据同步,比如A线程数据处理完成之后会立马通知B线程进行相应的操作。常见的信号有两种一种是二进制信号,只有0和1两种状态,这种情况下类似于互斥锁,另一种就是整型信号,在不为0的情况下则可以获取到信号,进行操作,每次操作完则进行信号减1,直到为0的时候才会处于阻塞。原创 2017-12-10 23:30:30 · 2095 阅读 · 0 评论