获得徽章 1
- 1月20日打卡day7
今日学习
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
#青训营笔记创作活动#展开评论点赞 - #青训营笔记创作活动#
1月15日打卡day3
今日学习
MySQL
一张数据表一般对应一颗或多颗树的存储,树的数量与建索引的数量有关,每个索引都会有一颗单独的树。
主键索引也是聚簇索引,非主键索引都是非聚簇索引。除格式信息外,两种索引的非叶子节点都是只存索引数据的,比如索引为id,那非叶子节点就是存的id数据。
B+树的查询是从上往下一层层查询的,一般情况下我们认为B+树的高度保持在3层以内是比较好的,也就是上两层是索引,最后一层存数据,这样查表的时候只需要进行3次磁盘IO就可以了(实际上会少一次,因为根节点会常驻内存),且能够存放的数据量也比较可观。
MySQL每个节点大小默认为16KB,也就是每个节点最多存16KB的数据,可以修改,最大64KB,最小4KB。展开评论点赞 - #青训营笔记创作活动#
1月14日打卡day2
今日学习
IDEA插件
Key Promoter X
Key Promoter X 是一款帮助你快速学习IDEA快捷键的插件,当你在IDEA中用鼠标点击某些功能时,它会自动提示你使用该功能的快捷键。它能让你更轻松地摆脱使用鼠标功能,从而只使用键盘来开发,这大概是刚开始使用IDEA的程序员最需要的插件了。
Lombok
Lombok目前已经是开发Java应用的标配了,不仅SpringBoot默认支持它,连IDEA也内置了Lombok插件,无需安装即可使用。Lombok是一款Java代码功能增强库,通过Lombok的注解,你可以不用再写getter、setter、equals等方法,Lombok将在编译时为你自动生成。
MyBatisX
MybatisX是一款基于IDEA的快速开发插件,由MyBatis-Plus团队开发维护,提示很全功能也很强大。支持xml和Mapper接口之间的跳转,自带图形化的代码生成器,可以通过类似JPA的方式,直接根据方法名称生成SQL实现。展开评论点赞 - #青训营笔记创作活动#
1月13日打卡day1
今日学习
常用限流方式
计数器
在一段时间间隔内,对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。
滑动窗口
滑动窗口把固定时间片进行划分,并且随着时间的流逝,进行移动,固定数量的可以移动的格子,进行计数并判断阀值。
漏桶
一个固定容量的漏桶,按照固定速率流出水滴。
令牌桶
一个固定的桶,桶里存放着令牌(token)。一开始桶是空的,系统按固定的时间(rate)往桶里添加令牌,直到桶里的令牌数满,多余的请求会被丢弃。当请求来的时候,从桶里移除一个令牌,如果桶是空的则拒绝请求或者阻塞。
Redis + Lua 分布式限流
分布式限流,以集群为维度,可以方便的控制这个集群的请求限制,从而保护下游依赖的各种服务资源。
展开评论点赞