获得徽章 1
赞了这篇文章
#青训营笔记创作活动#
1月16日 打卡day24
今日学习高并发下秒杀商品的一些细节,瞬时高并发,页面静态化,秒杀按钮,读多写少,缓存问题,库存问题,mq异步处理,分布式锁,限流等。
1月16日 打卡day24
今日学习高并发下秒杀商品的一些细节,瞬时高并发,页面静态化,秒杀按钮,读多写少,缓存问题,库存问题,mq异步处理,分布式锁,限流等。
评论
点赞
#青训营笔记创作活动#
1月15日 打卡day23
今日学习了为什么用公钥加密却不能用公钥解密,从而引出了http的加密模型,http是基于tcp的明文传输,在其上的报文很容易被中间链路的别有用心者嗅探和发现,所以就有了在http的tcp三次握手后再进行TLS的四次握手从而获得对称加密的会话密钥,对于为什么不能用公钥解密公钥加密的信息是因为很多的加密算法是理论上不可逆的,即通过某个加密算法加密后,通过现代计算机的速度去对其进行解密可能几百年也未必成功,例如大数取余操作,通过欧拉定律就可以获得两对数字钥匙,明文通过其中任何一个数字钥匙加密后都可以用另一个数字钥匙解密,把其中一个数字钥匙公布,叫做公钥,而未公开的另一个数字钥匙称为私钥,任何人都可以用公开的公钥对数据加密后发送给私钥的持有者,这样就可以保证别人获取不到通过公钥加密的数据。在TCP三次握手后,建立TSL的四次握手过程如下,第一次握手:客户端发送支持的协议版本等信息,以及生成的随机数给服务端。第二次握手:服务端发送服务器证书和确定的加密协议版本信息和生成的随机数发送给客服端。第三次握手:客服端通过内置在操作系统或浏览器中的CA公钥对服务器证书进行解密,拿到服务器的公钥,此时客户端会再生成一个随机数pre_master_key并用获得公钥进行加密发送给服务端,此时客户端已经拥有了3个随机数,就会生成一个会话密钥,并通知服务端后面将使用这个会话密钥进行对称的加密通信,然后用这个会话密钥加密所有的通信数据形成的一个摘要发送给服务端进行校验,称为finished报文,至此客户端握手过程结束。第四次握手:服务端通过私钥获得pre_master_key也得到了三个随机数,通过与客户端使用相同的算法也能形成会话密钥,服务端通过会话密钥校验客户端的摘要无误后确定客户端是可信任的,之后也会使用会话密钥发送一个摘要给客户端进行校验,至此,服务端握手结束。随后客服端通过校验服务端的摘要无误后确定服务端是可信任的。此后的通信通过使用会话密钥进行对称加密通信。
1月15日 打卡day23
今日学习了为什么用公钥加密却不能用公钥解密,从而引出了http的加密模型,http是基于tcp的明文传输,在其上的报文很容易被中间链路的别有用心者嗅探和发现,所以就有了在http的tcp三次握手后再进行TLS的四次握手从而获得对称加密的会话密钥,对于为什么不能用公钥解密公钥加密的信息是因为很多的加密算法是理论上不可逆的,即通过某个加密算法加密后,通过现代计算机的速度去对其进行解密可能几百年也未必成功,例如大数取余操作,通过欧拉定律就可以获得两对数字钥匙,明文通过其中任何一个数字钥匙加密后都可以用另一个数字钥匙解密,把其中一个数字钥匙公布,叫做公钥,而未公开的另一个数字钥匙称为私钥,任何人都可以用公开的公钥对数据加密后发送给私钥的持有者,这样就可以保证别人获取不到通过公钥加密的数据。在TCP三次握手后,建立TSL的四次握手过程如下,第一次握手:客户端发送支持的协议版本等信息,以及生成的随机数给服务端。第二次握手:服务端发送服务器证书和确定的加密协议版本信息和生成的随机数发送给客服端。第三次握手:客服端通过内置在操作系统或浏览器中的CA公钥对服务器证书进行解密,拿到服务器的公钥,此时客户端会再生成一个随机数pre_master_key并用获得公钥进行加密发送给服务端,此时客户端已经拥有了3个随机数,就会生成一个会话密钥,并通知服务端后面将使用这个会话密钥进行对称的加密通信,然后用这个会话密钥加密所有的通信数据形成的一个摘要发送给服务端进行校验,称为finished报文,至此客户端握手过程结束。第四次握手:服务端通过私钥获得pre_master_key也得到了三个随机数,通过与客户端使用相同的算法也能形成会话密钥,服务端通过会话密钥校验客户端的摘要无误后确定客户端是可信任的,之后也会使用会话密钥发送一个摘要给客户端进行校验,至此,服务端握手结束。随后客服端通过校验服务端的摘要无误后确定服务端是可信任的。此后的通信通过使用会话密钥进行对称加密通信。
展开
评论
点赞
赞了这篇文章
#青训营笔记创作活动#
1月14日 打卡day22
今日学习redis基本概念,redis是一个用c编写的基于键值对的数据存储系统,基于内存也可持久化的日志型数据库,其优点为其基于内存,具有较高的性能,支持高并发,支持主从模式,分布式与读写分离,具有丰富的数据类型与特性,支持持久化能够保护数据不被丢失,但是其数据库容量收物理内存的限制,不能支持海量数据的高性能读写,不支持复杂的逻辑查询,存储结构相对简单,其持久化基于disk-backed,与传统的持久化具有一定的差别。
1月14日 打卡day22
今日学习redis基本概念,redis是一个用c编写的基于键值对的数据存储系统,基于内存也可持久化的日志型数据库,其优点为其基于内存,具有较高的性能,支持高并发,支持主从模式,分布式与读写分离,具有丰富的数据类型与特性,支持持久化能够保护数据不被丢失,但是其数据库容量收物理内存的限制,不能支持海量数据的高性能读写,不支持复杂的逻辑查询,存储结构相对简单,其持久化基于disk-backed,与传统的持久化具有一定的差别。
展开
评论
点赞
#青训营笔记创作活动#
1月13日 打卡day21
今日学习mysql的索引概念,索引类型有普通索引,主键索引,全文索引,空间索引,联合索引等;数据结构类型有b+tree型,hash型,r+tree型,t+tree型等;数据存储层次可分为聚簇索引和非聚餐索引,其中聚簇索引按规定的数据结构方式与表数据存储在一起,而非聚簇索引与表数据分开存储,使用物理地址关联。
1月13日 打卡day21
今日学习mysql的索引概念,索引类型有普通索引,主键索引,全文索引,空间索引,联合索引等;数据结构类型有b+tree型,hash型,r+tree型,t+tree型等;数据存储层次可分为聚簇索引和非聚餐索引,其中聚簇索引按规定的数据结构方式与表数据存储在一起,而非聚簇索引与表数据分开存储,使用物理地址关联。
展开
评论
点赞
#青训营笔记创作活动#
1月12日 打卡day20
今日学习如何建立好的索引,首先需要知道哪些操作会影响索引,当查询中包含or关键字时不会走索引;当使用模糊查询以%开头是也不会走索引;未使用联合索引最左侧索引也不会走索引,但在mysql8.x的版本中通过索引跳跃,也能进行索引;在索引上使用计算,或计算函数都会使索引失效;使用反范围的索引查询时也会造成索引失效;回表指的是通过普通索引得到主索引字段,在走主索引,但如果走普通索引已经完全够查找需要的数据,就不会回表,索引覆盖也就是当使用联合索引时,如果未使用最左侧索引也能完全查找到需要的信息,也会走索引查询。
1月12日 打卡day20
今日学习如何建立好的索引,首先需要知道哪些操作会影响索引,当查询中包含or关键字时不会走索引;当使用模糊查询以%开头是也不会走索引;未使用联合索引最左侧索引也不会走索引,但在mysql8.x的版本中通过索引跳跃,也能进行索引;在索引上使用计算,或计算函数都会使索引失效;使用反范围的索引查询时也会造成索引失效;回表指的是通过普通索引得到主索引字段,在走主索引,但如果走普通索引已经完全够查找需要的数据,就不会回表,索引覆盖也就是当使用联合索引时,如果未使用最左侧索引也能完全查找到需要的信息,也会走索引查询。
展开
评论
点赞
#青训营笔记创作活动#
1月11日 打卡day19
今日学习了使用数据库可视化平台Bytebase,它的主要特性有sql审核,sql编辑,sql建议,gitops工作流,备份恢复。
1月11日 打卡day19
今日学习了使用数据库可视化平台Bytebase,它的主要特性有sql审核,sql编辑,sql建议,gitops工作流,备份恢复。
评论
点赞
#青训营笔记创作活动#
1月10日 打卡day18
今日学习sql优化的几个思路,隐式转换会引起索引失效,比如将一个字符串类型的索引赋值数字,就会进行隐式转换,造成索引失效,导致慢sql;最左匹配不当也会造成索引失效,当使用联合索引时,遵循最左匹配原则,若没有使用最左索引,即使该索引存在于联合索引中,也不会走索引,导致慢sql;深分页也会导致慢sql,例如limit(1000,10),会先回表1000行,然后取后十行,造成慢sql;group by和order by使用filesort时也会导致慢sql。
1月10日 打卡day18
今日学习sql优化的几个思路,隐式转换会引起索引失效,比如将一个字符串类型的索引赋值数字,就会进行隐式转换,造成索引失效,导致慢sql;最左匹配不当也会造成索引失效,当使用联合索引时,遵循最左匹配原则,若没有使用最左索引,即使该索引存在于联合索引中,也不会走索引,导致慢sql;深分页也会导致慢sql,例如limit(1000,10),会先回表1000行,然后取后十行,造成慢sql;group by和order by使用filesort时也会导致慢sql。
展开
评论
点赞
#青训营笔记创作活动#
1月9日 打卡day17
今日学习sql的执行流程,当执行一个sql语句时需要从数据库连接池查看是否有闲置的空闲连接,有的话直接复用,没有的话如果没有达到最大连接数量的话就需要重新创建连接,获取连接后将sql语句交给sql接口,当sql是查询语句时,sql接口会在缓存通过hash值查找是否存在需要的数据,如果存在直接返回,不能存在的话就需要交给解析器检查sql语句是否有语法等错误,然后交给优化器挑选出最佳性能的执行方式后交给存储引擎通过io在磁盘上查询数据后返回;当sql是修改语句时,sql接口检查缓存中是否有该sql操作的表,有的话需要全部删除,避免后续查询到未更新的值,然后交给解析器检查语法后交给优化器选择最佳执行性能并记录redo-log和undo-log,后在缓冲区中查询是否存在需要操作的表数据,存在的话在内存中写入后通过cheakpoint机制将数据写回磁盘,不存在的话交给存储引擎发起磁盘io写入磁盘,最后记录bin-log。
1月9日 打卡day17
今日学习sql的执行流程,当执行一个sql语句时需要从数据库连接池查看是否有闲置的空闲连接,有的话直接复用,没有的话如果没有达到最大连接数量的话就需要重新创建连接,获取连接后将sql语句交给sql接口,当sql是查询语句时,sql接口会在缓存通过hash值查找是否存在需要的数据,如果存在直接返回,不能存在的话就需要交给解析器检查sql语句是否有语法等错误,然后交给优化器挑选出最佳性能的执行方式后交给存储引擎通过io在磁盘上查询数据后返回;当sql是修改语句时,sql接口检查缓存中是否有该sql操作的表,有的话需要全部删除,避免后续查询到未更新的值,然后交给解析器检查语法后交给优化器选择最佳执行性能并记录redo-log和undo-log,后在缓冲区中查询是否存在需要操作的表数据,存在的话在内存中写入后通过cheakpoint机制将数据写回磁盘,不存在的话交给存储引擎发起磁盘io写入磁盘,最后记录bin-log。
展开
评论
点赞