-
Go入门系列(二十) go web编程简介
发布时间:2021-06-28 16:17本节简单介绍go web编程并用go构建一个服务器。例子:快速搭建一个go web服务器package main import ( "fmt" "log" "net/http" ) func
-
Go并发编程系列(八)互斥锁, 读写锁, 条件变量, Waitgroup, Once, 临时对象池Pool和原子操作
发布时间:2021-02-06 09:34一、互斥锁和读写锁关于锁相信大家都很熟悉了,因此这里不再对锁进行过多的描述,只是简单的带过一下。如果读者们想了解互斥锁和读写锁的基本使用和例子,可以看看这篇文章:《Go入门系列(十七) go并发之基于
-
Go并发编程系列(七)channel通道及其原理
发布时间:2021-02-05 13:54在Go语言中,channel通道用于多个goroutine间通信。 有关goroutine和channel的基本概念和使用在本人的《Go入门系列 go并
-
Go并发编程系列(六)go并发机制之goroutine调度和goroutine阻塞
发布时间:2021-02-05 12:07Go调度程序(Go调度器) Go调度器本质上也是一个结构体。Go调度器并不是运行在某个专用内核线程中的程序,调度程序会运行在若干已存在的M(或者说内核线程)之中。换句话说,运行时系统中几乎所有的
-
Go并发编程系列(五) go并发机制之MPG模型
发布时间:2021-02-05 11:17Go并发机制 在操作系统提供的内核线程之上,Go搭建了一个特有的两级线程模型。Go的独立控制流不是内核级线程而是goroutine协程。Go不推荐用共享内存的方式传递数据,而推荐使用channe
-
Go并发编程系列(四) 多线程基本概念与线程模型
发布时间:2021-02-05 09:32多线程 一个进程至少会包含一个线程,因为其中至少会有一个控制流持续运行。因而,一个进程的第一个线程会随着这个进程的启动而创建,这个线程称为该进程的主线程。 当然,一个进程也可以包含多个线程
-
Go并发编程系列(三) 多进程编程与进程同步之Socket编程
发布时间:2021-02-05 08:59socket socket,常译为套接字,也是一种IPC方法。但是与其他IPC方法不同的是,它可以通过网络连接让多个进程建立通信并相互传递数据,这使得通信双方是否在同一台计算机上变得无关紧要。
-
Go并发编程系列(二) 多进程编程与进程同步之Signal信号量
发布时间:2021-02-04 19:46信号 signal操作系统信号(signal,以下简称信号)是IPC中唯一一种异步的通信方法,它的本质是用软件来模拟硬件的中断机制。信号用来通知某个进程有某个事件发生了。例如,在命令行终端按下某些快捷
-
Go并发编程系列(一) 多进程编程与进程同步之Pipe管道
发布时间:2021-02-04 18:43关于多进程和多线程的基本概念以及基本操作本人在以下系列文章已经介绍。 ”浅谈操作系统原理” http://zbpblog.com/blog-175.html“pyth
-
Go入门系列(十九)io编程和文件操作
发布时间:2021-01-18 15:19Go 语言将 I/0 操作封装在以下几个包中。 io :为IO原语提供基本的接口,在 io 包中最重要的是两个接口-一-Reader 和 Writer 接口。本章所提到的各种包,都和这两个接口有
-
Go入门系列(十八) 反射、包和测试工具
发布时间:2021-01-17 13:24反射 reflect 反射在go中是一个包,包名为reflect,其作用是可以查看一个变量的具体类型和值。 反射这个包提供了两种接口类型 Type 和 Value,分别用于记录一
-
Go入门系列(十七) go并发之基于共享变量的并发
发布时间:2021-01-17 00:29上一章介绍了基于channel的并发,这一章介绍基于共享变量的并发。 简介基于共享变量的并发 我们知道如果多个线程或者协程并发的对一个变量进行修改,会出现数据不一致的问
-
Go入门系列(十六) go并发编程之Goroutine与channel(下)
发布时间:2021-01-12 12:07使用select处理多个channel 以一个例子开始。这个例子模拟火箭倒计时发射,并且用户可以在标准输入流终止这个倒计时功能。 // 未加终止功能的火箭发射 func main()
-
Go入门系列(十五) go并发编程之Goroutine与channel(中)
发布时间:2021-01-12 10:09用循环开启多个goroutine进行并发 在这一节,我们会用生成缩略图的例子来熟悉goroutine和channel的使用。 首先我们下载一个作者提供的图片压缩的包 thumbnail(这
-
Go入门系列(十四) go并发编程之Goroutine与channel(上)
发布时间:2021-01-10 13:44现在终于讲到了Go中最核心也最重要的部分:Goroutine并发编程。 Go的并发有两种主要方式:基于CSP模型的并发(通过channel实现) 和 基于共享变量的并发。Go的主要并发方式是前者
-
Go入门系列(十三) 接口——类型断言(下)
发布时间:2021-01-10 11:45类型断言类型断言可以判断某一个接口值变量是否是某种类型。语法为 x.(T),T是要断言的类型,x是接口值,这一句话的意思是判断x是否是T这种类型的变量。但是x.(T)不只返回一个bool,还会返回一个
-
Go入门系列(十二) 接口——接口的应用和例子(中)
发布时间:2021-01-09 10:00接下来我们将具体介绍go源码中提供的一些使用了接口技术的一些例子。 sort.Interface接口 像很多其他语言会为每一种类型写一个排序函数,并通过方法的方式调用,
-
Go入门系列(十一) 接口——接口的定义、作用、具体类型和具体值(上)
发布时间:2021-01-08 10:04Go中的接口是一种数据类型,不过它的作用和其他语言中的接口一样,用作于一种协议以暴露和隐藏一个变量或一种类型的方法。 我们回想一下php中的接口,php中的接口中会定义一系列的方法,这些方法没有
-
Go入门系列(十) go中的面向对象编程——方法
发布时间:2021-01-08 09:39方法 方法涉及到面向对象编程。在php中,对象是作为一种PHP的数据类型而存在,必须要用类所实例化出来的一个变量才是一个对象。但是在python或者js中则秉承着一切皆对象的原则,一个字符串或者
-
Go入门系列(九) 函数 - defer机制(下)
发布时间:2021-01-07 11:23匿名函数 拥有函数名的函数只能在包级语法块中被声明,通过匿名函数我们可绕过这一限制,在任何表达式中表示一个函数值。更为重要的是,通过这种方式定义的函数可以访问完整的词法环境,这意味着在函数中定义