获得徽章 1
- #青训营笔记创作活动#
2月13日 打卡day14
今日学习了:
- 高并发架构
- 瞬时高并发的注意事项
- 缓存
- 熔断
- 限流
展开评论点赞 - #青训营笔记创作活动#
# 2月11日 打卡day13
今日学习了:
- HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
- 客户端和服务端之间加入nginx,可以起到**反向代理和负载均衡**的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
- 后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
- 如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开评论点赞 - #青训营笔记创作活动#
2月10日 打卡day12
今日学习了:
1. 集线器、交换机、路由器的区别
2. 电路交换、报文交换、分组交换的区别
3. 转发与标识
展开评论点赞 - #青训营笔记创作活动#
# 2月3日 Day11
今日学习了一个优秀后端应该具有的好习惯:
- 注释全面而有意义
- 项目拆分合理
- 不在循环里远程调用、或者数据库操作,优先考虑批量进行
- 封装方法形参
- 封装通用模板
- 封装复杂逻辑判断
- 保持优化性能的嗅觉
- 可变参数的配置化处理
展开评论点赞 - #青训营笔记创作活动#
# 1月27日 Day9
今日学习了:
- TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
- TCP是面向连接的协议,而UDP是无连接的协议。这里的"**连接**"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
- 大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套**重传**机制。
- 对于UDP+重传的场景,如果要传**超大数据包**,并且没有实现**分段机制**的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。展开赞过评论1 - #青训营笔记创作活动#
# 1月20日 Day8
今日学习了:
- Kafka基础概念
- 整体架构
- 版本变迁
- 实战
展开赞过评论1 - #青训营笔记创作活动#
1月19日 Day7
今日学习了:
- TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
- 在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
- 对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
- websocket和socket几乎没有任何关系,只是叫法相似。
- 正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。展开赞过评论1 - #青训营笔记创作活动#
1月17日Day5
今日学习了:
- 索引类别与原理
- 加索引可能会使效率降低,可通过公式count(distinct(column_name)) : count(*)计算离散值,离散值越高说明建立索引效果越明显
- 尽量少用SELECT * FROM TABLE,因为可能导致回表,使效率降低
- 最左匹配原则:最左优先,以最左边的为起点任何连续的索引都能匹配上(sql中and前后顺序会自动调整),同时遇到范围查询(>、<、between、like)就会停止匹配。
- Mysql5.6增加ICP 索引下推展开评论点赞