获得徽章 1
#青训营笔记创作活动#
2月17日 打卡day12
今日学习sql语句执行过程:
①先将SQL发送给SQL接口,SQL接口会对SQL语句进行哈希处理。
②SQL接口在缓存中根据哈希值检索数据,如果缓存中有则直接返回数据。
③缓存中未命中时会将SQL交给解析器,解析器会判断SQL语句是否正确:
• 错误:抛出1064错误码及相关的语法错误信息。 • 正确:将SQL语句交给优化器处理,进入第④步。
④优化器根据SQL制定出不同的执行方案,并择选出最优的执行计划。
⑤工作线程根据执行计划,调用存储引擎所提供的API获取数据。
⑥存储引擎根据API调用方的操作,去磁盘中检索数据
⑦发生磁盘IO后,对于磁盘中符合要求的数据逐条返回给SQL接口。
⑧SQL接口会对所有的结果集进行处理并返回。
2月17日 打卡day12
今日学习sql语句执行过程:
①先将SQL发送给SQL接口,SQL接口会对SQL语句进行哈希处理。
②SQL接口在缓存中根据哈希值检索数据,如果缓存中有则直接返回数据。
③缓存中未命中时会将SQL交给解析器,解析器会判断SQL语句是否正确:
• 错误:抛出1064错误码及相关的语法错误信息。 • 正确:将SQL语句交给优化器处理,进入第④步。
④优化器根据SQL制定出不同的执行方案,并择选出最优的执行计划。
⑤工作线程根据执行计划,调用存储引擎所提供的API获取数据。
⑥存储引擎根据API调用方的操作,去磁盘中检索数据
⑦发生磁盘IO后,对于磁盘中符合要求的数据逐条返回给SQL接口。
⑧SQL接口会对所有的结果集进行处理并返回。
展开
评论
点赞
#青训营笔记创作活动#
2月14日 打卡day11
今日学习TCP&UDP
1. TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
2. TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"是操作系统内核在两端代码里维护的一套复杂状态机。
3. 大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
4. 对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
2月14日 打卡day11
今日学习TCP&UDP
1. TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
2. TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"是操作系统内核在两端代码里维护的一套复杂状态机。
3. 大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
4. 对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
展开
评论
点赞
#青训营笔记创作活动#
2月13日 打卡day10
今日学习 https
TLS前期4次握手,本质上就是在利用非对称加密的特点,交换三个随机数。目的就是为了最后用这三个随机数生成对称加密的"会话秘钥"。后期就一直用对称机密的方式进行通信。因为非对称加密慢,对称加密相对来说快一些,所以不是都用非对称加密。整个TLS握手过程涉及2对私钥和公钥:
1. 服务器本身的公钥和私钥:在第二次握手中,服务器将自己的公钥(藏在数字证书里)发给客户端。第三次握手中用这个服务器公钥来加密第三个随机数 pre_master_key。服务器拿到后用自己的私钥去做解密。
2. CA的公钥和私钥:第二次握手中,传的数字证书里,包含了被CA的私钥加密过的服务器公钥。客户端拿到后,会用实现内置在操作系统或浏览器里的CA公钥去进行解密。
2月13日 打卡day10
今日学习 https
TLS前期4次握手,本质上就是在利用非对称加密的特点,交换三个随机数。目的就是为了最后用这三个随机数生成对称加密的"会话秘钥"。后期就一直用对称机密的方式进行通信。因为非对称加密慢,对称加密相对来说快一些,所以不是都用非对称加密。整个TLS握手过程涉及2对私钥和公钥:
1. 服务器本身的公钥和私钥:在第二次握手中,服务器将自己的公钥(藏在数字证书里)发给客户端。第三次握手中用这个服务器公钥来加密第三个随机数 pre_master_key。服务器拿到后用自己的私钥去做解密。
2. CA的公钥和私钥:第二次握手中,传的数字证书里,包含了被CA的私钥加密过的服务器公钥。客户端拿到后,会用实现内置在操作系统或浏览器里的CA公钥去进行解密。
展开
评论
点赞
#青训营笔记创作活动#
2月12日 打卡day9
今日学习websocket
1. TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
2. 正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
2月12日 打卡day9
今日学习websocket
1. TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
2. 正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
点赞
#青训营笔记创作活动#
2月5日 打卡day8
今日学习
golang的优势
golang与java的对比,是重服务和重框架的对比。微服务失去了框架的束缚,各服务可以自由迭代,自由选择语言,自由替换,自由伸缩。容器和 Kubernetes 会保证这些服务的有序调度,ServicesMesh 会保证负载均衡、限流、健康检查、监控等一系列事项的正确运行。
微服务是一场架构层面的变革,而 Go 由于其简单实用的语法、编译快、可执行文件小等特点,是微服务所依赖的底层基础设施常用语言。
2月5日 打卡day8
今日学习
golang的优势
golang与java的对比,是重服务和重框架的对比。微服务失去了框架的束缚,各服务可以自由迭代,自由选择语言,自由替换,自由伸缩。容器和 Kubernetes 会保证这些服务的有序调度,ServicesMesh 会保证负载均衡、限流、健康检查、监控等一系列事项的正确运行。
微服务是一场架构层面的变革,而 Go 由于其简单实用的语法、编译快、可执行文件小等特点,是微服务所依赖的底层基础设施常用语言。
展开
评论
点赞
#青训营笔记创作活动#
2月4日 打卡day7
今日学习
Goroutine和Channel知识点
1. 只要 Goroutine函数执行结束,或者执行返回,意味着 Goroutine的退出。如果 Goroutine
的函数或方法有返回值,在 Goroutine 退出时会将其忽略。
2. channel可以用于实现 Goroutine间的通信,也可以用来实现 Goroutine间的同步。
3. 无缓冲的 channel的发送与接收操作是同步的,在执行发送操作之后,对应 Goroutine
将会阻塞,直到有另一个 Goroutine去执行接收操作,反之亦然。
4. 通常只发送 channel类型和只接收 channel类型,会被用作函数的参数类型或返回值
5. 在 channel关闭之后,将不能对 channel执行发送操作,否则会发生 panic,提示 channel已关闭。
6. 关闭 channel之后,依旧可以对 channel执行接收操作,如果存在缓冲区的情况下,将会读取缓冲区的数据,如果缓冲区为空,则获取到的值为 channel对应类型的零值。
2月4日 打卡day7
今日学习
Goroutine和Channel知识点
1. 只要 Goroutine函数执行结束,或者执行返回,意味着 Goroutine的退出。如果 Goroutine
的函数或方法有返回值,在 Goroutine 退出时会将其忽略。
2. channel可以用于实现 Goroutine间的通信,也可以用来实现 Goroutine间的同步。
3. 无缓冲的 channel的发送与接收操作是同步的,在执行发送操作之后,对应 Goroutine
将会阻塞,直到有另一个 Goroutine去执行接收操作,反之亦然。
4. 通常只发送 channel类型和只接收 channel类型,会被用作函数的参数类型或返回值
5. 在 channel关闭之后,将不能对 channel执行发送操作,否则会发生 panic,提示 channel已关闭。
6. 关闭 channel之后,依旧可以对 channel执行接收操作,如果存在缓冲区的情况下,将会读取缓冲区的数据,如果缓冲区为空,则获取到的值为 channel对应类型的零值。
展开
评论
点赞