我这里简要说下Golang的包管理,目前Golang的包管理有几个比较用的多的,比如godep,govender,glide,还有官方最近推出的dep。 本篇文章是对Glide包在进行包管理时遇到下载包出现错误的一个小结。
特此声明 本篇文章主要目的是为了使用Google查询技术相关知识资料。 准备工作 在阿里云上申请一台在国外的云服务器,比如我用的是一台香港阿里云服务器,系统是CentOS。 搭建步骤 使用终端登陆云服务器
本篇文章是基于gRPC官网翻译。代码较多,建议在电脑上浏览。
简介 单例模式是使用最多的设计模式之一,在工作和面试中也常常提到这个设置模式。单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。
Go的垃圾回收采用的是 标记-清理(Mark-and-Sweep)算法,就是先标记出需要回收的内存对象块,然后在清理掉;在这里不介绍标记和清理的具体策略,只介绍GC过程是怎么调度的以及STW相关 这个算法,会导致STW (stop the world)的问题,中断用户逻辑。
这段时间在看Java和Go的垃圾回收机制,趁着这个机会我总结了一下常见的GC算法。分别是:引用计数法、Mark-Sweep法、三色标记法、分代收集法。 引用计数法 原理是在每个对象内部维护一个整数值,叫做这个对象的引用计数,当对象被引用时引用计数+1,当对象不被引用时引用计数-1。当引用计数为0时,自动销毁对象。 目前引用计数法主要用在c++标准库的 std::shared_ptr 、微软的 COM 、Objective-C 和PHP 中。 但是引用计数法有个缺陷就是不能解决循环引用的问题。循环引用是指对象 A 和对象 B 互相持有对方的引用。这样两个对象的引用计数都不是 0 ,因此永远不能被收集。 另外的缺陷是,每次对象的赋值都要将引用计数+1,增加了消耗。 Mark-Sweep法(标记清除法) 这个算法分为两步,标记和清除。 标记:从程序的根节点开始, 递归地 遍历所有对象,将能遍历到的对象打上标记。 清除:讲所有未标记的的对象当作垃圾销毁。
在mac下使用vscode开发Go程序时使用delve来debug如果报下面的错误: could not launch process: exec: "lldb-server": executable file not found in $PATH Process exiting with code: 1 可以直接打开终端(Terminal)输入: $ xcode-select --install
1.Defer的定义 defer:英文意思是推迟,延迟。所以defer语句表示推迟函数的执行,直到函数执行完毕返回为止。特别要提示是defer会在return语句之后执行。