通过Namespace实现隔离
在上次的文章 《虚拟化的基石——Namespace》 中主要讲述了Namespace的作用,却没有详细的拿代码举证,上次仅仅证明了UTS Namespace,剩下五个命名空间全在这篇文章了,主要是IPC Namespace、PID Namespace、Mount Namespace、User Namespace、Network Namespace的概念的理解以及使用代码证明!
在上次的文章 《虚拟化的基石——Namespace》 中主要讲述了Namespace的作用,却没有详细的拿代码举证,上次仅仅证明了UTS Namespace,剩下五个命名空间全在这篇文章了,主要是IPC Namespace、PID Namespace、Mount Namespace、User Namespace、Network Namespace的概念的理解以及使用代码证明!
Docker是使用Linux Kernel的Namespace和Cgroups实现的一种容器技术。那么什么是Namespace,什么是Cgroups,Docker是怎么使用它们的,容器到底是怎么一步步被创建出来的?了解容器技术的底层技术,然后明白它们是如何工作的,尤为重要,这些才是整个容器技术的基石。
Golang的工程管理一直是初学者所不能很好的理解的事物,本篇主要讲述了在Golang中如何进行工程管理,如何构建可复用模块,从GitHub获取Go的包是如何操作的,以及Golang的包管理工具的基本使用,这样再进行项目开发的时候就可以模块化的管理自己的工程,首先还得从Package说起!
通常我们需要编写好的错误处理方式,在了避免某些程序员滥用异常,于是Go这里直接把异常这一块给砍掉了,最终还是通过返回值来判断程序的异常情况,毕竟Go可是支持多返回值的语言,比如atoi、itoa等函数,就不能忽略它的第二个返回值,因为第二个返回值代表了转换是否成功!不过Golang还是提供了一些错误处理机制的
Go是一种面向对象的语言吗?
关于Go是一种面向对象的语言吗这种问题,官方的解释是难说,说不准,这回答就有意思了!在我看来尽管Go具有类型和方法,并允许使用面向对象的编程风格,但没有类型层次结构。 Go的接口完全提供了一种不同的方法,可以将类型嵌入其他类型,达到继承的效果,其实又完全不同于继承,因为Go其中一个特点是可以为任何类型的数据定义方法,所以再讨论Go是不是面向对象的语言的时候还是可以先体验体验Go的Functional Programming
记录了一下最近学习golang语言遗忘的和模糊的知识点,主要涵盖主函数退出返回值、如何编写测试程序、如何定义常量、golang的类型转换、golang中的预定义值、指针与其他语言的差异(主要是C语言),以及运算符等等!
本篇主要是讲述了数组和切片、Map的初始化方式与基本使用、重点阐述了如何使用Map实现Set、用Map实现工厂模式,以及字符串的使用,字符串常用API、Unicode与UTF8的关系!