06 2019 档案
摘要:转自:https://studygolang.com/articles/9506 最近在油管上面看了一个视频:Understanding nil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。 nil是什么 相信写过Golang的程序员对下面一段代码是非常非常熟悉的了: 当出现不
阅读全文
摘要:结论:是一个指向hmap结构体类型的指针。 首先我们来看一段代码: 输出是true,m是一个指针,fn内部申请的map[int][int]不影响外部m。 所有m是一个指针,那具体m的结构是什么呢?可以通过gdb调试: 所以一切明了,就是一个指针。
阅读全文
摘要:转自https://blog.csdn.net/i6448038/article/details/82057424并修改 map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? 总体来说golang的map是hashmap,是使用数组+链表的形式实现的,使用拉链法消除
阅读全文
摘要:在刚接触GO语言时候,我相信你也会有这种困惑,为什么有的函数名前面有输入参数,而一些却没有,它们是否有差别?确实有差别, 函数名前面没有输入参数,是一般的函数; 函数名前面有输入参数,是结构的方法,输入参数叫做“方法接收者”!GO语言没有类,方法都定义在结构上了!! 如代码所示,A和B是普通函数,而
阅读全文
摘要:1、定义一个结构体 2、初始化一个结构体 有两种情况,一是得到结构体的对象,一是得到结构的对象指针,分别有三种方式: 3、对象与对象指针的区别(更确切的说应该是值类型和指针类型) 与C/C++类似,GO语言也存在对象与对象的指针,但不同的是,GO语言中没有 -> 操作符来调用指针所属的成员,而与一般
阅读全文
摘要:定义一个struct,定义的时候是字段名与其类型一一对应,实际上Go语言支持只提供类型,而不写字段名的方式,也就是匿名字段,或称为嵌入字段。 当匿名字段是一个struct的时候,那么这个struct所拥有的全部字段以及方法(指绑定在这个类型上的,见最后)都被隐式地引入了当前定义的这个struct。
阅读全文
摘要:Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new 这是一个用来分配内存的内建函数,但是与C++不
阅读全文
摘要:我怎么知道一个变量是分配在堆上还是栈上? 正确的观点是,你不需要知道。go语言中的每一个变量,它的生命周期和引用它的周期一样长。该语言的语义和实现时选择的存储位置,是没有关系的。 在编写高效率的程序时,存储位置的确会有影响。如果可以,go语言编译器将会分配函数的局部变量到函数的栈帧上。然而,如果编译
阅读全文
摘要:闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变
阅读全文
摘要:import后面的是目录 包名和目录名没有关系,但是包名最好等于目录名 同一个目录下只能有一种包名。 转自:http://tonybai.com/2015/03/09/understanding-import-packages/ Golang使用包(package)这种语法元素来组织源码,所有语法可
阅读全文
摘要:默认情况下,所有的goroutine都在同一个原生线程里跑,也就是只使用了一个CPU核。但是,通过runtime.GOMAXPROCS(4)设定,可以将goroutine调度到多个CPU上运行。 在同一个原生线程里,若当前goroutine不发生阻塞,那么不会主动让出CPU给其他同一线程的gorou
阅读全文
摘要:线程与协程的区别 切换开销的区别 线程太重,资源占用太高,频繁创建销毁会带来严重的性能问题; 协程切换远比线程小 切换开销的区别 线程太重,资源占用太高,频繁创建销毁会带来严重的性能问题; 协程切换远比线程小 2. 协程的好处: 一个协程几乎就是一个普通的对象,因此可以放心阻塞,一旦阻塞那么让当前线
阅读全文
摘要:1. Docker for Mac 是运行在 Hypervisor 上的 一个 HyperKit 实现,毕竟还是虚拟化加容器的实现方式,而不是内核级别的实现。(虚拟机) Docker for Mac不使用VirtualBox,而是使用HyperKit,一个轻量级的macOS虚拟化解决方案,它在Mac
阅读全文
摘要:第一篇 http://virtual.51cto.com/art/201805/572135.htm Docker容器与虚拟机有什么区别? Docker是一个虚拟环境容器,可以将你的可执行文件、配置文件及一切其他你需要的文件一并打包到这个容器中,并发布和应用到任意平台。比如,你在本地用Python开
阅读全文
摘要:转自https://baijiahao.baidu.com/s?id=1590260903873768203&wfr=spider&for=pc 最近遇到一个case,该案例中,网站既存在带www的域名又存在不带www的域名,且两个网站之间并没有做301重定向的跳转关系。 小编我建议客户只能保留一个
阅读全文
摘要:转载自菜鸟教程https://www.runoob.com/linux/linux-file-content-manage.html Linux系统中使用以下命令来查看文件的内容: cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! less 与
阅读全文
摘要:转载自https://www.runoob.com/linux/linux-vim.html Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以
阅读全文
摘要:Ctrl + a 跳到一行最前e 跳到一行最后 u 剪切光标之前/整行(不同shell)k 剪切光标之后的y 粘贴 r 搜索历史l 清屏clear c 结束当前命令z 当前命令放入后台 s 暂停屏幕输出q 恢复屏幕输出
阅读全文