Golang
刺眼的宝石蓝
这个作者很懒,什么都没留下…
展开
-
【Golang】unsafe包使用方法总结——“不安全”的指针操作
一、概述Go虽然具有指针,但出于安全性的设计,与C/C++的指针相比,存在诸多限制:Go的指针不能进行数学计算。 不同类型的指针之间无法相互转换,也不能相互赋值。 不同类型的指针不能使用==和!=比较但Go团队并没有完全没收编程人员操纵指针的自由,提供了unsafe包的unsafe.Pointer类型作为非安全的指针,并提供了少量但足够的方法,让我们能像在C/C++上一样进行“无视类...原创 2020-02-27 15:11:54 · 3184 阅读 · 0 评论 -
【Golang】源码学习:runtime/chan.go:了解channel背后的实现原理
一、概述Go通过channel在独立工作的Goroutine之间实现了通信,其背后是Go的CSP并发模型,被描述为:Do not communicate by sharing memory; instead, share memory by communicating.不要通过共享内存的方式来通信,相反,要通过通信来共享内存。这一策略在Go中的实现,就是将channel即管道...原创 2020-02-24 15:11:53 · 628 阅读 · 0 评论 -
【Golang】defer陷阱和执行原理
你是不是觉得defer很简单、很好用,但也许你掉坑里了都不知道!这篇文章不介绍defer的常用功能,而是介绍你在用defer时,也许会踩的坑。defer允许我们进行一些函数执行完成后的收尾工作,并且代码更加简洁,例如:1、关闭文件流:// open a filedefer file.Close()2、解锁一个加锁的资源mu.Lock()defer mu.Unlock...转载 2020-02-21 14:58:20 · 456 阅读 · 0 评论 -
【Golang】源码学习:contex包——从功能到源码理解Go Context机制(二)
第一部分链接:https://blog.csdn.net/qq_38093301/article/details/104370248三、源码学习Context包高度提炼了功能边界,对外只暴露统一的Context接口,最大程度的隐藏的实现细节,对于接口的设计非常简洁。、Context接口的定义如下:...原创 2020-02-18 23:23:11 · 431 阅读 · 0 评论 -
【Golang】源码学习:contex包——从功能到源码理解Go Context机制(一)
最近在学习一些Go网络编程相关内容,发现无论是普通的web项目,还是groupcache和gRPC等大多数开源分布式项目都大量使用了context包以完成Goroutine的管理工作,在深入学习这项项目之前,有必要对context包进行一个细致的学习和整理,了解其背后的源码,本文边学编写,参考了比较热门的关于context的一些文章,才疏学浅,欢迎指正。一、从需求到功能GoLang通过开启...原创 2020-02-18 16:35:57 · 585 阅读 · 0 评论 -
【Golang】源码学习:net/rpc包——基于Http协议的 RPC 服务(二)
第一部分链接:https://blog.csdn.net/qq_38093301/article/details/1042105923、客户端请求发起在与RPC服务端建立http连接并验证后,客户端程序将使用本次的底层TCP连接Conn对象建立一个Client实例,并开启一个协程接受服务端返回消息。Client实例建立过程:func NewClient(conn io.ReadW...原创 2020-02-09 18:31:03 · 567 阅读 · 0 评论 -
【Golang】源码学习:net/rpc包——基于Http协议的 RPC 服务(一)
一、基本原理 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 具体原理参考:https://www.jianshu.com/p/7d6853140e13 https://developer.51cto.com/ar...原创 2020-02-08 23:33:28 · 1155 阅读 · 0 评论 -
【Golang】反射技术:reflect包的使用方法总结
阅读Go源码时,发现很多库都离不开reflect包提供的强大的反射技术,但在基础学习时对这部分一闪而过,现在重新全面学习了一遍,主要使用方法都总结在下面的代码中,自以为应该是比较详细的,后期学习过程中如发现疏漏,再做补充。 可以看到reflect包让我们获得了对于一个空接口中包含的值充分了解的能力,让我们的程序能够在运行时检查类型和变量,解析出一个未知类型背后的结构,...原创 2020-02-08 20:06:44 · 2925 阅读 · 0 评论 -
【Golang】Golang 推荐的命名规范
Golang 推荐的命名规范很少见人总结一些命名规范,也可能是笔者孤陋寡闻, 作为一个两年的golang 开发者, 我根据很多知名的项目,如 moby, kubernetess 等总结了一些常见的命名规范。 命名规范可以使得代码更容易与阅读, 更少的出现错误。如有不同意见欢迎吐槽、讨论。文件命名规范由于文件跟包无任何关系, 而又避免windows大小写的问题,所以推荐的明明规范如下...转载 2019-12-25 16:16:08 · 802 阅读 · 1 评论