从net库源码窥探Go程序linux平台Dns解析原理(一)

前言某些架构中,业务系统服务或者微服务之间通过域名进行通信,这样就会导致在系统调用过程中创建网络连接之前先去解析一下域名,拿到域名对应的ip地址再建立连接,并发量小的情况下,这样的解析对dns域名服务器没有太大压力,但是当并发量激增的时候,每次创建网络连接都要去远端服务器去解析一

golang nsq源码分析&添加中文注释系列(二):Nsqd入口主流程

以往看网上的源码分析时,基本都是前面一段讲解,后面跟一大段代码,没有上下文分析,我就暗暗的想,如果一个函数或一段逻辑能有中文注释(俺小本毕业英语不太好)带有上下文分析,这样读源码岂不是会更快顺畅。。。不废话了,我们开始吧。

Linux内核的红黑树源码实现以及调用

linux内核相关视频解析:90分钟了解4种红黑树的Linux内核应用场景腾讯T2.3亲身经历分享,腾讯offer的获取之路红黑树可以说是程序员经常遇到的一种数据结构,不管是工作还是面试都会涉及,有时候还会让你写一段红黑树代码。

golang中,封装一个容纳不同类型ArrayList类(源码篇)

封装一个像java中的ArrayList类:(切记:此类在多协程下使用不安全)package codeimport “sync”type Array interface { Ini(); Add(interface{}) bool; Contains(interface

Golang channel源码分析

go通道基于go的并发调度实现,本身并不复杂,go并发调度请看我的这篇文章:go并发调度原理学习1.

Golang源码BUG追查

起因最近的项目从golang0.9升级到golang1.13后,项目中出现了很特殊的现象,在APP里,用户登录后访问页面正常,用户不登录,报错。处理过程1.Charles抓包发现,登录的情况下,服务返回的是protobuf的数据,未登录情况下返回的是json结构。

golang nsq源码解析&添加中文注释系列(一)

2019/12/21 23:28:19.924537 INFO: NSQ: persisting topic/channel metadata to nsqd.dat。

epoll源码剖析:为什么使用红黑树以及如何使用红黑树

以下是个人理解:epoll和poll的一个很大的区别在于,poll每次调用时都会存在一个将pollfd结构体数组中的每个结构体元素从用户态向内核态中的一个链表节点拷贝的过程,而内核中的这个链表并不会一直保存,当poll运行一次就会重新执行一次上述的拷贝过程,这说明一个问题:poll并不会在内核中为要监听的文件描述符长久的维护一个数据结构来存放他们,而epoll内核中维护了一个内核事件表,它是将所有的文件描述符全部都存放在内核中,系统去检测有事件发生的时候触发回调,当你要添加新的文件描述符的时候也是调用epoll_ctl函数使用EPOLL_CTL_ADD宏来插入,epoll_wait也不是每次调用时都会重新拷贝一遍所有的文件描述符到内核态。

高并发系统的限流策略:漏桶和令牌桶(附源码剖析)

前言今天与大家聊一聊高并发系统中的限流技术,限流又称为流量控制,是指限制到达系统的并发请求数,当达到限制条件则可以拒绝请求,可以起到保护下游服务,防止服务过载等作用。

Linux下安装Go语言(源码安装和二进制版安装)

1. 下载地址go github源码下载网址:https://github.com/golang/gogo 安装版本下载网址:https://golang.org/dl/如果打不开可以使用这个地址:https://golang.google.cn/dl/2.