Go语言核心36讲
郝林
《Go并发编程实战》作者,前轻松筹大数据负责人
立即订阅
24139 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
开篇词+学习路线 (3讲)
开篇词 | 跟着学,你也能成为Go语言高手
免费
预习篇 | 写给0基础入门的Go语言学习者
50 | 学习专栏的正确姿势
模块一:Go语言基础知识 (6讲)
01 | 工作区和GOPATH
02 | 命令源码文件
03 | 库源码文件
04 | 程序实体的那些事儿(上)
05 | 程序实体的那些事儿(中)
06 | 程序实体的那些事儿 (下)
模块二:Go语言进阶技术 (16讲)
07 | 数组和切片
08 | container包中的那些容器
09 | 字典的操作和约束
10 | 通道的基本操作
11 | 通道的高级玩法
12 | 使用函数的正确姿势
13 | 结构体及其方法的使用法门
14 | 接口类型的合理运用
15 | 关于指针的有限操作
16 | go语句及其执行规则(上)
17 | go语句及其执行规则(下)
18 | if语句、for语句和switch语句
19 | 错误处理(上)
20 | 错误处理 (下)
21 | panic函数、recover函数以及defer语句 (上)
22 | panic函数、recover函数以及defer语句(下)
模块三:Go语言实战与应用 (27讲)
23 | 测试的基本规则和流程 (上)
24 | 测试的基本规则和流程(下)
25 | 更多的测试手法
26 | sync.Mutex与sync.RWMutex
27 | 条件变量sync.Cond (上)
28 | 条件变量sync.Cond (下)
29 | 原子操作(上)
30 | 原子操作(下)
31 | sync.WaitGroup和sync.Once
32 | context.Context类型
33 | 临时对象池sync.Pool
34 | 并发安全字典sync.Map (上)
35 | 并发安全字典sync.Map (下)
36 | unicode与字符编码
37 | strings包与字符串操作
38 | bytes包与字节串操作(上)
39 | bytes包与字节串操作(下)
40 | io包中的接口和工具 (上)
41 | io包中的接口和工具 (下)
42 | bufio包中的数据类型 (上)
43 | bufio包中的数据类型(下)
44 | 使用os包中的API (上)
45 | 使用os包中的API (下)
46 | 访问网络服务
47 | 基于HTTP协议的网络服务
48 | 程序性能分析基础(上)
49 | 程序性能分析基础(下)
尾声与思考题答案 (2讲)
尾声 | 愿你披荆斩棘,所向无敌
新年彩蛋 | 完整版思考题答案
Go语言核心36讲
登录|注册

46 | 访问网络服务

郝林 2018-11-26
你真的很棒,已经跟着我一起从最开始初识 Go 语言,一步一步地走到了这里。
在这之前的几十篇文章中,我向你一点一点地介绍了很多 Go 语言的核心知识,以及一些最最基础的标准库代码包。我想,你已经完全有能力独立去做一些事情了。
为了激发你更多的兴趣,我还打算用几篇文章来说说 Go 语言的网络编程。不过,关于网络编程这个事情,恐怕早已庞大到用一两本专著都无法对它进行完整论述的地步了。
所以,我在这里说的东西只能算是个引子。只要这样能让你产生想去尝试的冲动,我就很开心了。

前导内容:socket 与 IPC

人们常常会使用 Go 语言去编写网络程序(当然了,这方面也是 Go 语言最为擅长的事情)。说到网络编程,我们就不得不提及 socket。
socket,常被翻译为套接字,它应该算是网络编程世界中最为核心的知识之一了。关于 socket,我们可以讨论的东西太多了,因此,我在这里只围绕着 Go 语言向你介绍一些关于它的基础知识。
所谓 socket,是一种 IPC 方法。IPC 是 Inter-Process Communication 的缩写,可以被翻译为进程间通信。顾名思义,IPC 这个概念(或者说规范)主要定义的是多个进程之间,相互通信的方法。
这些方法主要包括:系统信号(signal)、管道(pipe)、套接字 (socket)、文件锁(file lock)、消息队列(message queue)、信号灯(semaphore,有的地方也称之为信号量)等。现存的主流操作系统大都对 IPC 提供了强有力的支持,尤其是 socket。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Go语言核心36讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • 嘎嘎
    net.Conn接口提供了SetDeadline, SetReadDeadline, SetWriteDeadline;调用SetDeadline方法等于同时调用了后两个方法,因为其最总调用的setDeadlineImpl(fd, t, 'r'+'w') 对读和写都设置了超时时间。

    作者回复: 对的。

    2019-04-04
    5
  • 春暖花开
    go对tcp包的粘包怎么处理的
    2018-11-26
    2
  • NulI
    今天是教师节,祝郝老师节日快乐!

    作者回复: 谢谢!

    2019-09-10
    1
  • Lane
    粘包难道不应该业务层去做吗
    2018-11-27
    1
  • My dream
    请老师讲一下用nginx搭建go的服务器环境嘛,因为nginx更适合处理静态文件,go更适合处理动态文件,但我不知如何下手去搭建这样的环境
    2018-11-27
    1
  • benying
    打卡
    2019-06-11
  • Spiderspiders
    它是一种有数消息边界但没有逻辑连接的非可靠 socket 类型,我们熟知的基于 UDP 协议的网络通信就属于此类。

    这里多了一个数,应该是有消息边界,而不是有数消息边界

    作者回复: 我已经提给编辑了,谢谢!

    2019-04-05
  • 虢国技匠
    打卡:
    SetDeadline()
    SetReadDeadline()
    SetWriteDeadline()
    2019-03-15
  • beyondkmp
    golang里面的并发dial,看了下dial的源代码应该是双栈ipv4和ipv6的并发,会同时对ipv4地址组和ipv6地址组,两组地址进行并发连接,哪个快用哪个。
    2019-02-25
  • 一直说自己小怂包
    net.Dial函数内部调用net.Dialer类型的Dial方法
    2019-01-18
  • ipfs
    老师您好,我工作多年,现在准备学习go语言进入区块链,现在想努力学习下网络编程,您有网络开发课程吗?或书籍,亦或者推荐的资料,谢谢

    作者回复: 你好,我目前没有搞网络开发课程。搞网络编程的话先熟悉熟悉网络协议吧。

    2019-01-12
  • Lane
    请问老师:golang内置的是epoll还是select。不像我们自主编写的时候会显示的调用select或者epoll、libevent之类的

    作者回复: Linux下的话是epoll。

    2018-11-27
  • Rand01ph
    另外,如果解析出的 IP 地址有多个,那么函数会串行或并发地尝试建立连接。这是有参数控制串行或并发么
    2018-11-27
  • My dream
    特别是基于https的
    2018-11-27
  • 春暖花开
    go有没有类似jave的netty库
    2018-11-26
  • kkgo
    老师,你是否在开go课程项目实战
    2018-11-26
收起评论
16
返回
顶部