获得徽章 1
#青训营笔记创作活动#
2月10日 打卡day16

HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开
评论
#青训营笔记创作活动#
2月9日 打卡day15

接口方法、类、复杂的业务逻辑,都应该添加有意义的注释
对于接口方法的注释,应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述
类的注释应该包含类的功能说明、作者和修改者。
如果是业务逻辑很复杂的代码,真的非常有必要写清楚注释。
清楚的注释,更有利于后面的维护。
展开
评论
#青训营笔记创作活动#
2月8日 打卡day14

个人区域网(PAN)
个人区域网PAN(Personal Area Network),顾名思义可以是个人使用区域范围内的电脑等设备,用无线连接起来的网络。所以范围相对很小。
局域网(LAN)
局域网LAN(Local Area Network),在地理上局限的范围,如1km左右。但可以将多个互连的局域网,来覆盖校园或者企业中。所以局域网也被称为校园网或企业网。
城域网(MAN)
城域网MAN(Metropolitan Area Network),城域网的作用范围可跨越几个街区甚至整个城市,距离约也可以为5到50km,所以一般也是一个城市。
广域网(WAN)
广域网WAN(Wide Area Network)范围通常为几十到几千公里,可以通过长距离运送主机所发送的数据,所以可以跨越不同国家,也是互联网的核心部分。
互联网
当你蓦然回首,把许多计算机连接在一起形成了计算机网络,而把许多网络连接在一起就构成了互联网;一个覆盖范围更大的计算机网络,覆盖范围可以是全球。
展开
评论
#青训营笔记创作活动#
2月7日 打卡day13

这里也是学习底层、源码、原理、调优等知识的一个小技巧,如果只关注于某一个点,很容易出现“不识庐山真面目,只缘身在此山中”的情况,好比你想要研究“庐山”,但是一上来就抓着里面的某颗松树往死里钻,这定然是不妥的,更应该的是先从整体出发,先将整个庐山的面貌看清楚,最后再依次根据所观察到的全貌,逐步研究每个节点上的细节。
展开
评论
#青训营笔记创作活动#
2月6日 打卡day12

文章开头通过抓包baidu的数据包,展示了用wireshark抓包的简单操作流程。
HTTPS会对HTTP的URL和Request Body都进行加密,因此直接在filter栏进行过滤http.host == "baidu.com"会一无所获。
HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
三个随机数,分别是客户端随机数(client random),服务端随机数(server random)以及pre_master_key。前两个,是明文,第三个是被服务器公钥加密过的,在客户端侧需要通过SSLKEYLOGFILE去导出。
通过设置SSLKEYLOGFILE环境变量,再让curl或chrome会请求HTTPS域名,会让它们在调用TLS库的同时导出对应的sslkey文件。这个文件里包含了三列,其中最重要的是第二列的client random信息以及第三列的pre_master_key。第二列client random用于定位,第三列pre_master_key用于解密。
展开
评论
#青训营笔记创作活动#
2月5日 打卡day11

如果写的规范,注释好,其实很多问题也就解决了。本文就从代码的编写规范,格式的优化,设计原则和一些常见的代码优化的技巧等方面总结了了45个小技巧分享给大家
展开
评论
#青训营笔记创作活动#
2月4日 打卡day10

TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
展开
评论
#青训营笔记创作活动#
2月3日 打卡day9

遇到的 Bug 百度没有结果怎么办
中文翻译文献模棱两可怎么办
寻找外文文献的发现过程是什么样的
如何解决英文文档中的复杂句子
如何结合文档学习语法
结合实例带你操作“笨”方法找到适合自己的路
展开
评论
#青训营笔记创作活动#
2月2日 打卡day8

本文主要介绍了 Kafka 的一些基本知识,包含 Topic、Partition、消费者、生产者、副本等基本概念,同时也介绍了 Kafka 的版本变迁以及应用实战所必备的知识点,最后以“消息可靠性分析”这个主体结尾,加深对 Kafka 的理解。
展开
评论
#青训营笔记创作活动#
2月1日 打卡day7

TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
下一页
个人成就
文章被阅读 981
掘力值 174
收藏集
0
关注标签
10
加入于