上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 58 下一页
摘要: Go语言基础之UDP编程 UDP协议 UDP协议(User Datagram Protocol)中文名称是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时 阅读全文
posted @ 2021-11-07 22:24 RandySun 阅读(313) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之socket编程 Socket是BSD UNIX的进程通信机制,通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket可以理解为TCP/IP网络的API,它定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。电脑上运行的应用程序通常通过”套 阅读全文
posted @ 2021-11-07 22:22 RandySun 阅读(989) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之互联网协议介绍 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几 阅读全文
posted @ 2021-11-07 22:20 RandySun 阅读(224) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之GMP原理与调度 一、Golang “调度器” 的由来? (1) 单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活 (计算) 的是 CPU。早期的操作系统每个程序就是一个进程,知道一个程序运行完,才能进行下一个进程,就是 “单进程时代” 一切的程序只能串行发 阅读全文
posted @ 2021-11-07 15:30 RandySun 阅读(288) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之Sync rsync.WaitGroup 在代码中生硬的使用time.Sleep肯定是不合适的,Go语言中可以使用sync.WaitGroup来实现并发任务的同步。 sync.WaitGroup有以下几个方法: 方法名 功能 (wg * WaitGroup) Add(delta int 阅读全文
posted @ 2021-11-07 15:28 RandySun 阅读(464) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之原子操作(atomic包) 原子操作 代码中的加锁操作因为涉及内核态的上下文切换会比较耗时、代价比较高。针对基本数据类型我们还可以使用原子操作来保证并发安全,因为原子操作是Go语言提供的方法它在用户态就可以完成,因此性能比加锁操作更好。Go语言中原子操作由内置的标准库sync/atom 阅读全文
posted @ 2021-11-07 15:28 RandySun 阅读(427) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之并发安全和锁 有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争。 举个例子: var x int64 var wg sync.Wai 阅读全文
posted @ 2021-11-07 15:27 RandySun 阅读(115) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之select select多路复用 在某些场景下我们需要同时从多个通道接收数据。通道在接收数据时,如果没有数据可以接收将会发生阻塞。你也许会写出如下代码使用遍历的方式来实现: for{ // 尝试从ch1接收值 data, ok :=<-ch1 // 尝试从ch2接收值 data, o 阅读全文
posted @ 2021-11-07 15:26 RandySun 阅读(259) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之goroutine池 简易的work pool func worker(id int, jobs<-chan int, results chan<- int) { for j := range jobs { fmt.Printf("worker:%d start job:%d\n", 阅读全文
posted @ 2021-11-07 15:25 RandySun 阅读(145) 评论(0) 推荐(0) 编辑
摘要: Go语言基础之channel(信道) 什么是信道? 信道可以想像成 **Go 协程之间通信的管道。**如同管道中的水会从一端流到另一端,通过使用信道,数据也可以从一端发送,在另一端接收 信道的定义,就是一个变量(特殊),两个协程之间通信,传递什么类型(int,bool) 单纯地将函数并发执行是没有意 阅读全文
posted @ 2021-11-07 15:23 RandySun 阅读(452) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 58 下一页