随笔分类 - golang
摘要:1、首先需要了解哪些占位符分别代表什么 这些是死知识,把常用的记住,不常用的直接查表就行了 golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 定义示例类型和变量 type Human struct { Name string } var people =
阅读全文
摘要:Go语言通道(chan)——goroutine之间通信的管道 如果说 goroutine 是 Go语言程序的并发体的话,那么 channels 就是它们之间的通信机制。一个 channels 是一个通信机制,它可以让一个 goroutine 通过它给另一个 goroutine 发送值信息。每个 ch
阅读全文
摘要:defer是Go语言中的延迟执行语句,用来添加函数结束时执行的代码,常用于释放某些已分配的资源、关闭数据库连接、断开socket连接、解锁一个加锁的资源。Go语言机制担保一定会执行defer语句中的代码。其它语言中也有类似的机制,比如Java、C#语言里的finally语句,C++语言里的析构函数(
阅读全文
摘要:bee 工具简介 bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。 bee 工具的安装 您可以通过如下的方式安装 bee 工具: go get github.com/beego/bee 安装完之后
阅读全文
摘要:golang语言中defer的使用场景较多,用于锁的关闭,连接的延迟关闭等,通常在函数的结束时调用,详细的讲就是在函数结束时返回值赋值后,返回前执行defer的方法,最后才返回,另外defer确实有一定的开销,拒绝滥用。 第一点、defer 不带函数执行,defer可以理解像栈,先进后出,看下面代码
阅读全文
摘要:defer的几个规则 //1:先给返回值赋值,然后调用defer表达式,最后才是返回到调用函数中。 //2: golang按照先定义后执行的顺序依次调用defer //3: defer是在return调用之后才执行的 //4: defer可以读取有名返回值 //5: defer延迟执行的是最后的一个
阅读全文
摘要:在Go语言中接口(interface)是一种类型,一种抽象的类型。 接口的定义 定义格式: type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 ) 返回值列表2 … } Go语言的接口在命名时,一般会在单词后面添加er,接口名最好要能突出该接
阅读全文
摘要:TCP通信粘包问题分析和解决(全) 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据
阅读全文
摘要:语言-格式输入输出中“%d, %s,%o,%x,%e,%f,%v,%+v,%#v”等的含义 %d整型输出,%ld长整型输出,%s用来输出一个字符串, %+v 采取默认值输出 %c用来输出一个字符,%u以十进制数输出unsigned型数据(无符号数)%f用来输出,以小数形式输出,(备注:浮点数是不能定
阅读全文
摘要:参考;https://blog.csdn.net/xuduorui/article/details/78731650 常见并发编程模型分类并发编程模型,顾名思义就是为了解决高并发充分利用多核特性减少CPU等待提高吞吐量而提出的相关的编程范式。目前为止,我觉得比较常见的并发编程模型大致可以分为两类:
阅读全文
摘要:截取自我的博客:https://chunlife.top/ Goroutine称呼上一般被我们理解为协程(Coroutine),类似于轻量级“线程”。 Goroutine是一种编译器/解释器/虚拟机层面的多任务,并不属于操作系统。多个协程可能在一个或多个线程上运行(由调度器决定)对比操作系统(*ni
阅读全文
摘要:简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依旧保持高性能。 进程、线程、协程的关系和区别: 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。 协程和线程一样共享堆,不
阅读全文
摘要:进程、线程、协程的关系和区别: 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。 线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。 协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。启动一个线程消耗8M左右的内存,启动一
阅读全文
摘要:一般说到内存指的是计算机的随机存储器(RAM),程序都是在这里面运行。计算机内存的大致划分如下: 1:内存地址由上倒下依次增加 2:内存由上倒下依次分为以下几块: 内核虚拟内存:用户代码不可见的内存,地址空间顶部的区域,是为内核保留的。 栈: 维护虚拟地址的空间顶部是用户栈,编译器用它来实现函数调用
阅读全文