Go的Context
go1.7是一个变动非常大的版本。一方面官方引入了Context来管理多个具有明显父级关系的GoRoutine,一方面对原有的代码包进行了大量的修改,让他们都能够支持Context。
我们之前已经讲过一个用来管理,编排多个GoRoutine的包sync.WaitGroup。它能够解决部分场景,但仍然有一些问题未能解决:
本文为极客时间《Go语言核心36讲》的学习笔记,梳理了相关的知识点。
Map的简介
Map数据结构有多种多样的名称:哈希表,散列,字典,Map,键值对,这些都是广义上的Map数据类型。Map类型的数据结构在大多数的编程语言中都有支持,日常使用最多,面试最经常问到的是GO语言中的Map和Redis中的字典。
这是GO语言官方文档的描述:
并发与并行
简单介绍
这一块内容我们只简单提一下,不会展开。相关问题可以直接在网上找资料,非常全面。
在讨论并发之前,必须得先讲清楚并发和并行,以及他们两个之间的区别,还有各自会有哪些常见的问题。这两个名词都是操作系统里的概念:
- 并发是指两个或多个事件在同一时间间隔内发生。
- 并行性是指系统具有同时进行运算或操作的特性。
本文为极客时间《Go语言核心36讲》的学习笔记,梳理了相关的知识点。
通常情况下,我们是肯定不会直接起一个协程开始写逻辑代码的。Go语言已经帮我们写好了各种常用的并发工具,基本都在**sync(同步)**包中,可以开箱即用。
//正常情况下,是不会这样子直接起一个协程做并发业务的。
go func(){
....
}
本文为极客时间《Go语言核心36讲》的学习笔记,梳理了相关的知识点。
两者区别
Go 语言的切片类型属于引用类型,同属引用类型的还有字典类型、通道类型、函数类型等;而 Go 语言的数组类型则属于值类型,同属值类型的有基础数据类型以及结构体类型。简单的说,数组类型的长度是固定的,而切片类型是可变长的。数组的容量永远等于其长度,都是不可变的。
索引
1.数据库三大范式
- 第一范式(1NF):确保每个属性都是原子性的,即每个属性都不能再分割为更小的数据单元。同时,每个属性都要具有唯一的名称,不允许重复。
- 第二范式(2NF):保证非主键属性完全依赖于主键,即非主键属性不能只依赖于主键的部分属性。如果存在这样的情况,需要将表进行拆分,使每个表只包含一个实体类型。
- 第三范式(3NF):保证非主键属性之间不存在供给依赖关系,即非主键属性不能依赖于其他非主键属性。如果存在这样的情况,需要将表进行拆分,使每个表只包含一个实体类型。
1. 经典网络分层
五层协议模型(TCP/IP模型):分为物理层、数据链路层、网络层、传输层和应用层。
七层协议模型(0SI 模型):分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
1. 什么是并发,什么是并行?
并发是指多个任务在同一个时间段内交替进行,通过不断地切换上下文来实现同时执行的效果。
并行是指多个任务在同一个时间段内实际同时执行,并利用多个处理器或多核CPU的并行计算能力来加速任务的完成。