获得徽章 1
#青训营笔记创作活动#
1月20日,打卡day7
一般http协议是客户端发送请求,服务器响应,但是日常中很多广告用户并没有向服务器发送请求却收到了服务器的响应,怎么样才能在用户不做任何操作的情况下,网页能收到消息并发生变更?
其实是网页的前端代码里不断定时发HTTP请求到服务器,服务器收到请求后给客户端响应消息。
但这样,会有两个比较明显的问题

当你打开F12页面时,你会发现满屏的HTTP请求。虽然很小,但这其实也消耗带宽,同时也会增加下游服务器的负担。
最坏情况下,用户在扫码后,需要等个1~2s,正好才触发下一次http请求,然后才跳转页面,用户会感到明显的卡顿。
可以使用长轮询,将超时设置的很大,这个时间段内一旦服务器收到请求就会立刻返回客户端网页。
像这种,在用户不感知的情况下,服务器将数据推送给浏览器的技术,就是所谓的服务器推送技术,它还有个毫不沾边的英文名,comet技术。
而现在使用最广泛的HTTP1.1,也是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,这就是所谓的半双工。

也就是说,好好的全双工TCP,被HTTP用成了半双工。
这是由于HTTP协议设计之初,考虑的是看看网页文本的场景,能做到客户端发起请求再由服务器响应,就够了,根本就没考虑网页游戏这种,客户端和服务器之间都要互相主动发大量数据的场景。
所以为了更好的支持这样的场景,我们需要另外一个基于TCP的新协议,websocket协议。

websocket完美继承了TCP协议的全双工能力,并且还贴心的提供了解决粘包的方案。它适用于需要服务器和客户端(浏览器)频繁交互的大部分场景。比如网页/小程序游戏,网页聊天室,以及一些类似飞书这样的网页协同办公软件。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
#青训营笔记创作活动#
1月18日 打卡day6
刚插上网线,电脑怎么知道自己的IP是什么?怎么就突然能上网了呢?插上网线之后,获得IP的方式主要有两种。

第一种是,自己手动在电脑里配。除了IP地址还需要配上子网掩码和路由器的地址
第二种获取IP的方式,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)。

DHCP的工作原理也非常简单。

说白了,就是向某个管IP分配的服务器,也就是DHCP服务器,申请IP地址。其实一般家里用的路由器就自带这个功能。

展开
评论
赞了这篇沸点
#为什么2023年工作这么难找# 过来人有2点建议,在谈薪的时候主要考虑一下。
1,就算公司跟你承诺年薪多少,你也别听。
因为谈年薪的公司其实有坑。
他们会告诉你一个总价格,比如30万,然后再告诉你会按6/4开。
什么意思?
就是你每个月基本工资只能拿到30/12*0.6的工资。
剩下的4可能会当成绩效给你发(绩效考核如果过不了就没有奖金),
可能会打总到年底当成奖金发(部门年度业绩如果没完成也没有)。

2,对于公司承诺的年终奖是14薪还是16薪都不要太当真。因为如果公司业绩好,老板心情好,你才会有年终奖拿。这个是完全不可确定因素。
你要关心的,是你除去公积金社保税收之后,到手能拿多少钱。
所以,面试全部通过,等到谈薪环节时,必须让HR把下面这几个事事无巨细的说明白:
月薪多少,
月薪如何构成,
基本工资和绩效比例是多少,
公积金社保按照什么基数什么比例缴纳,年终是否会有年终奖,会有几个月,
有没有房补饭补车补等补助。
所有的事情,必须让Hr事无巨细的都说明白。
3,招聘方和面试者是平等的,你们双方互相看上眼才有继续谈的必要。
如果你觉得对方并没有尊重你的意思,让你感觉不舒服,你完全可以直接拒绝。
招聘方出钱,面试者出力,拿钱干活,这就是一个契约关系。
没必要体现自己是优越的一方。
好聚好散,都留个体面。[微笑]
展开
14
#青训营笔记创作活动#
1月17日 打卡day5
今日学习MYsql索引之道
了解了索引失效的几种场景,如索引建立不当,索引列上使用了函数,索引列上有计算操作,like左边包含%等等
评论
#青训营笔记创作活动#
1月16日 打卡day4
作者从客户端转服务端,他认为难点在编程思维的转变,思考问题角度的转变。
客户端开发是以设计稿为标准进行开发的,俗称页面驱动设计,而服务端开发中,需要着重注意数据库表结构设计是否合理,这会直接影响后续开发业务逻辑是否顺利,这种开发思维俗称数据驱动设计。
接下来介绍了软件的架构模式,总的说经历了三个阶段的演进:从单机、集中式到分布式微服务架构。
接着介绍了DDD (Domain Driven Design):领域驱动设计。
DDD的核心思想就是避免业务逻辑的复杂性和技术实现的复杂性耦合在一起。
明确业务复杂性和技术复杂性的边界,隔离双方的复杂性,站在更高的角度实现解耦。
DDD最大的价值就是梳理业务需求,抽象出一个个“领域”,并形成各个领域之间的接口交互,方便团队协作,推进项目前进。
微服务有如下特点:单一职责,团队独立,技术独立,数据库分离,独立部署


展开
评论
#青训营笔记创作活动#
1月15日 day3

每张表由于自身的字段不同、字段所占用的空间不同等原因,它们在最佳性能下可以存放的数据量也就不同。

还学习了聚簇索引和非聚簇索引:
主键索引也是聚簇索引,非主键索引都是非聚簇索引。除格式信息外,两种索引的非叶子节点都是只存索引数据的,比如索引为id,那非叶子节点就是存的id数据。

叶子节点的区别如下:

聚簇索引的叶子节点一般情况下存的是这条数据的所有字段信息。所以我们 select * from table where id = 1 的时候,都是要去叶子节点拿数据的。

非聚簇索引的叶子节点存的是这条数据所对应的主键和索引列信息。比如这条非聚簇索引是username,然后表的主键是id,那该非聚簇索引的叶子节点存的就是 username 和 id,而不存其他字段。 相当于是先从非聚簇索引查到主键的值,再根据主键索引去查数据内容,一般情况下要查两次(除非索引覆盖),这也称之为 回表 ,就有点类似于存了个指针,指向了数据存放的真实地址。

此外还学习了B+树的查询,InnoDB节点的存储内容,3层B+树的计算


展开
评论
#青训营笔记创作活动#
1月14日 打卡day2
今日学习
IDEA是程序员用的最多的开发工具,很多程序员想把它打造成一站式开发工具,于是安装了各种各样的插件。通过插件在IDEA中完成各种操作,无需安装其他软件
在本文中,了解到了IDEA中一些非常实用的插件工具
展开
2
赞了这篇沸点
#JUEJIN FRIENDS 过年啦#
今天历经千辛万苦回家了,三年不见的家乡,我回来了,好期待今年的新开始呀
附一张高铁路途风景
哈莉奎茵于2023-01-13 23:17发布的图片
14
#青训营笔记创作活动#
1月13日 打卡day1
今日学习了什么是限流,以及限流的作用范围和常用的限流方法。
计数器是一种最简单限流算法,其原理就是:在一段时间间隔内,对请求进行计数,与阀值进行比较判断是否需要限流,一旦到了时间临界点,将计数器清零。
滑动窗口是针对计数器存在的临界点缺陷,滑动窗口是一种流量控制技术,这个词出现在 TCP 协议中。滑动窗口把固定时间片进行划分,并且随着时间的流逝,进行移动,固定数量的可以移动的格子,进行计数并判断阀值。
漏桶算法(Leaky Bucket),原理就是一个固定容量的漏桶,按照固定速率流出水滴。我们无法预知流进水桶的水流大小,但可以限制流出水桶的水流速度,进而达到流量整形和流量控制的目的。
令牌桶算法(Token Bucket)是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。

展开
评论
下一页