获得徽章 1
- 1月11日 打卡day10
今日学习
JavaScript的一些代码实现
回到顶部,通过计时器去滑动比较丝滑
过滤特殊字符,通过pattern = new RegExp("$:!_//"),然后strong.substr.replace(pattern)
展开评论点赞 - 1月6日 打卡day9
今日学习
普通sql全表扫描的过程
首先本质上数据都存储在磁盘磁盘上,当发生磁盘IO,首先会根据给出的磁盘地址,在盘面上寻道。当找到对应地址(本地表数据文件中的起始地址),就可以读取二进制数据。mysql这里会有一个优化叫局部性读取原理
提前将数据从内存放入三级缓冲区,这样不止读取一页而是相关的几页数据。也就是一次磁盘IO不止会读一条表数据,而是多条表数据。在IntoDB,一次默认是16KB
因为mysql的全表扫描机制(防止没建主键同名的数据),所以要建立索引。
这里要知道树在磁盘中,各节点的数据是并不连续的,没法利用局部性原理
不选择二叉树是因为,如果字段按顺序增长,查询就变成了链表结构和全表扫描。
不选择红黑树是因为,树矮的不够多,一个结点只能存一个数据,并且也不能利用局部性原理
B树是让单节点可存多个数据,可以利用局部性原理,但是对于大范围性查找,那么多个数据肯定不会在一个节点,所以也要触发多个磁盘IO
B+树的叶结点不存数据,存索引,还有叶子结点的数据由指针指,所以对于大范围数据来说,只要知道第一个节点的位置,就能获取到对应范围内的所有节点。
展开评论点赞 - 1月5日 打卡day8
今日学习
计网实验二原来的抓包的工具,wireshark,
并且对https整个加密的过程有了更详细的了解
整个加密过程分为两阶段,一个是TLS四次握手,利用非对称加密的特性交换信息,最终得到一个会话密钥。
第一次握手,客户端告诉服务器,我这边支持的加密协议版本TSL1.2,使用的加密套件是RSA,一个客户端随机数。
第二次握手,服务器随机数+服务器证书+ACK(TSL1.2),
第三次握手,这边客户端生成一个随机数pre_master_key,从服务证书里取出服务器公钥,用公钥加密pre_Master_key随机数,发给服务器。这时候客户端用已经拥有的三个随机计算得到一个“会话密钥”,客户端把通信数据内容生成一个摘要,用会话密钥加密一下,发给服务器做检验。
第四次握手,服务器把从客户端传过来的pre_master_key(用服务器这边的私钥解密),集齐3个随机数,也生成一个“会话密钥”,发给客户端,说明我这边使用这个会话密钥进行加密通信。
三个随机数依次叫:client andom ,server random ,pre_master_key经过f(x)后生成会话密钥
可以认为,只要知道这三个随机数,就能破解https通信。
如何得到pre_master_key,在它进行TLS四次握手之前,使用环境变量SSLKEYLOGFILE就能干预,让它输出pre_master_key的文件。(目前curl和chrome 支持)
然后还要回看Ssl.key文件,找到第三个随机数,确定前两个随机数的位置就能找到了。这个文件包含3列,最重要的第二列的client random和第三节的pre_master_key展开评论点赞 - 从URL输入到页面展现发生了什么
一DNS解析,将域名解析为IP地址,二tcp了解,三次握手,三发送http请求,四服务器处理请求并返回http报文,五浏览器解析渲染页面,六断开连接,tcp四次挥手
http的默认端口号是80,url格式
scheme://host.domain:port/path/filaname?abc=123#456789
path定义的是服务器上的路径,filename定义的资源的名称
第一步浏览器需要通过ip地址找到服务器,使用DNS域名解析,在DNS上记录一条信息记录。
DNS域名解析一般为迭代查询,不停的问
第二步TCP三次握手建立连接
第三步,发送http请求
第四步,服务器处理请求并返回http报文,每个浏览器自带一个处理请求的应用,常用的有,apache,ngnix,IIS,lighttpd
第五步,浏览器解析渲染页面
第六步,断开连接进行tcp四次挥手
展开赞过评论2 - 1月2日 打卡day7
今日学习
更详细的了解了网关代理nginx的作用,起到前端和后端连接的作用,是个中间人
而5XX的状态码是由nginx返回的,502就是网关代理把客户端的请求转发给服务器的时候,服务器无效反应。评论点赞 - 12月30日 打卡day6
今日学习
连接网络后,电脑怎么知道自己ip的
大体流程为本机使用DHCP协议(应用层,UDP协议),广播到某个ip分配服务器,DHCP服务器收到这个简历后,发现自己池子里有空闲ip,就给了它这个offer(ip,子网掩码,路由器地址,DNS服务器地址),服务器按理还说应该是广播基于UDP协议的话,但是这样也会比较浪费性能,所以优化为了单播,即Source不再是255.255.255.255。当然也得看目的机器是否支持单播包。然后本机发送确认接受这个offer,DHCP服务器再次返回ACK。
每次联网可以经历后两个流程。
得到DHCP ACK,后也不是立刻就能使用,而是要到朋友圈炫耀三条,ARP消息,向同一网络内的机子传递我的ip地址属于我的这个mac地址,让它们纪录缓存到ARP表里,三次无偿ARP没有冲突后,就可以放心使用了。展开评论点赞 - 12月29日,打卡day5
今日学习
从无到有的网络原理,问题的本质是两台独立的计算机之间如何建立通信的。无论是物理媒介还是wifi,只要在物理层能表示0和1二进制的传输载体就可以通信。
数据的传输方式分为三种,也就是计网中学到的,电路交换,报文交换,分组交换
多个计算机互联通信,要知道谁发的谁接受的,靠唯一ID,MAC地址。
集线器在物理层,收到即转发,用作转发用
电路交换简单可靠,但是通信线路资源比较紧张
交换机在数据链路层,实现了全双工,可以在数据接受的同时发送数据。
报文交换可以随时发送报文,解决了电路交换的占线问题,但是报文交换没有限制发现会有延时问题
分组交换,最小信息单位相较报文交换来说是分组,分组加速了传输
网络通过不同的结点,覆盖扩大到更大的范围
展开评论点赞 - 12月28日,打卡day4天
今日学习
websocket是应用层协议,查看是否是websocket协议,可以在http协议请求中headers的update:websocket,同时带上一段随机生成的base64码(Sec-WebSocket-Key),发给服务器。
websocket只有在建立连接时才用到了HTTP,升级之后就跟HTTP没有任何关系了。展开评论点赞 - 12月27日 打卡day3
今日学习
if else的优化
JavaScript可以用或来代替简单的,let c=a|b
如果a为真,则执行c=a,若不为真,也执行c=b
一层三元符,return nBoolean ?1:0,如果nBoolean为true,则返回1,否则返回0
还有就是switch case ,注意如果每个case后不加break的话,它会依次执行case条件判断,有时候不注意会执行default。收起展开评论点赞 - #青训营笔记创作活动#
12月26日 Day2
今日学习
惊艳一时的CSS的属性
background-clip:text可以用图片的背景颜色作为文字效果
:invalid伪类,可以自由设置让input标签有线无线时的元素颜色
让每个元素隔开20px,可以使用gap:20px展开评论点赞