获得徽章 0
- #青训营笔记创作活动#
2月7日 打卡day16
今日学习
大数取模运算是不可逆的,因此他人无法暴力解密。但是结合欧拉定理,我们可以选取出合适的p(公钥), q(私钥), N(用于取模的大数),让原本不可逆的运算在特定情况下,变得有那么点“可逆”的味道。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
HTTPS相当于HTTP+TLS,目前主流的是TLS1.2,基于TCP三次握手之后,再来TLS四次握手。
TLS四次握手的过程中涉及到两对私钥和公钥。分别是服务器本身的私钥和公钥,以及CA的私钥和公钥。展开评论点赞 - #青训营笔记创作活动#
2月6日 打卡day15
今日学习
Redis(Remote Dictionary Server)是一个开源的、键值对型的数据存储系统。使用C语言编写,遵守BSD协议,可基于内存也可持久化的日志型数据库,提供了多种语言的API,被广泛用于数据库、缓存和消息中间件。
Redis的优缺点:
优点:
完全基于内存操作,性能极高,读写速度快。
支持高并发,支持10万级别的并发读写。
支持主从模式,支持读写分离与分布式。
具有丰富的数据类型与丰富的特性(发布订阅模式)。
支持持久化操作,不会丢失数据。
缺点:
数据库容量受到物理内存的限制,不能实现海量数据的高性能读写。
相比关系型数据库,不支持复杂逻辑查询,且存储结构相对简单。
虽然提供持久化能力,但实际更多是一个 disk-backed 功能,与传统意义上的持久化有所区别。
Redis支持的数据类型:
基本数据类型:
String(字符串)
Hash(哈希)
List(列表)
Set(集合)
ZSet(Sorted Set 有序集合)
高级数据类型:
HyperLogLog:用来做基数统计的算法,在输入元素的数量或体积非常大时,计算基数所需的空间总是固定的,并且是很小的。HyperLogLog 只会根据输入元素来计算基数,而不会存储输入元素本身。
Geo:用来地理位置的存储和计算。
BitMap:实际上不是特殊的存储结构,本质上是二进制字符串,可以进行位操作,常用于统计日活跃用户等。展开评论点赞 - #青训营笔记创作活动#
2月5日 打卡day14
今日学习
建立索引时需要遵守的原则:
频繁使用的字段创建索引。
表的主外键或连表字段,必须创建索引。
建立索引的字段的区分性要足够高。
建立索引的字段值不应过长。
建立联合索引应遵循最左前缀原则。
经常根据范围取值、排序、分组的字段建立索引。
尽量使用联合索引代替单值索引。展开评论点赞 - #青训营笔记创作活动#
2月4日 打卡day13
今日学习
索引创建方式:(1)用CREATE语句创建。(2)用ALTER语句创建。(3)用DDL语句创建。
索引的本质:和表一样,是磁盘中的文件。
MySQL的索引分类:可以从不同层面进行分类,如数据结构层次,字段数量层次,功能逻辑层次。从数据结构层次可分类为B+Tree类型、Hash类型、R-Tree类型、T-Tree类型。展开评论点赞 - #青训营笔记创作活动#
2月3日 打卡day12
今日学习
SQL语句产生方式:(1)自己动手编写。(2)ORM框架自动生成。
SQL语句执行前,在MySQL连接层维护一个数据库连接池。
SQL语句执行过程:
(1)将SQL语句发给SQL接口,进行哈希处理。
(2)缓存未命中时将SQL交给解析器。
(3)优化器根据SQL制定执行计划。
(4)工作线程执行计划。
(5)存储引擎去磁盘中检索数据。
(6)将符合要求的数据返回给SQL接口。
(7)SQL接口对结果集进行处理并返回。展开评论点赞 - #青训营笔记创作活动#
2月2日 打卡day11
今日学习
HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。展开评论点赞 - #青训营笔记创作活动#
1月30日 打卡day10
今日学习
1、注释尽可能全面,写有意义的方法注释
2、项目拆分合理的目录结构
3、不在循环里远程调用、或者数据库操作,优先考虑批量进行展开评论点赞 - #青训营笔记创作活动#
1月23日 打卡day9
今日学习
MySQL架构:
网络连接层:主要是指数据库连接池,会负责处理所有客户端接入的工作。
系统服务层:主要包含SQL接口、解析器、优化器以及缓存缓冲区四块区域。
存储引擎层:这里是指MySQL支持的各大存储引擎,如InnoDB、MyISAM等。
文件系统层:涵盖了所有的日志,以及数据、索引文件,位于系统硬盘上。
学习技巧:先窥其全貌,再深入细节。展开评论点赞 - #青训营笔记创作活动#
1月22日 打卡day8
今日学习
写出漂亮代码的45个小技巧:
1、规范命名:见名知意、能够读出来
2、规范代码格式:合适的空格、代码对齐
3、写好代码注释:解释代码的意图和功能、解释参数和返回值、警示作用展开评论点赞 - #青训营笔记创作活动#
1月19日 打卡day7
今日学习
UDP一定比TCP快吗?
TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。展开评论点赞