书山有路勤为经,学海无涯苦作舟。
文件在前端以什么样的方式存在
以multipart/form-data为例,知道了文件是以二进制的形式存在,application/json 是以文本形式进行传输,
js的正则写一个邮箱
var reg=/^([A-Za-z]|[0-9])+@([A-Za-z]|[0-9])\.([a-zA-Z]{2,4})$/
reg.test(email)
计算机网络的拥塞控制
防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载
方法
- 慢开始,发送方让自己的发送窗口等于拥塞窗口,当拥塞时就少发,不拥塞时多发。慢开始:由于一开始不知道网络的负荷,所以保险起见,由小到大逐渐增大发送窗口。刚开始为一个最大报文段smss,每收到一个对新的报文的确认后,就把拥塞窗口增加一个smss.慢开始算法下每一个传输伦茨,拥塞窗口就翻倍。
- 拥塞避免:让拥塞窗口缓慢增大,既每经过一个往返时间cwnd增加一个,线性增加。以慢开始门限(ssthresh)为界,下则用慢开始,上则用拥塞避免算法。当网络出现超时,ssthresh就变为原来一半
- 快重传,采用快重传可以让发送方尽早知道发生了个别报文的丢失。快重传就是让接收方收到报文立刻发出确认报文,而不是捎带。例如接收方没收到M3就会一直发送M2的确认报文,发送方只要收到三个重复确认报文就会知道接收方没收到m3,就立刻进行重传(快重传)这样就不会超时。发送方就不会认为网络拥塞
- 快恢复,当接收方又接受到确认报文,知道只是丢失了个别报文,就把门限值ssthresh也设为原来的一半,拥塞窗口=ssthresh,并开始执行拥塞避免算法
数据库范式
第一范式:所有属性都是不可分的基本项
第二范式:每一个非主属性都完全函数依赖于任何一个候选码
第三范式:不传递依赖,也不部分依赖
vue3新特性
css实现居中布局
java 子类指向父类引用
Person p = new Student();
但是你得注意:父类的引用指向子类的话,此时的 p 只能使用Person类中存在的方法,但是子类
Student类中扩充的方法就不能调用了
算法二叉树路径之和
function sumTree(root, sum = 0) {
// 1. 判断输入是否合法
if(!root) {
return 0;
}
// 4. 得出结果
sum = sum + root.val;
// 2. 判断递归结束的条件(遍历每个节点,对每个节点判断其是否有左右子树)
if(!root.left && !root.right) {
return sum;
}
// 3. 寻找路径,将问题小化
return sumTree(root.left, sum) + sumTree(root.right, sum);
}
css写一个进度条
transition
vue实现类的切换
创建了一个要切换颜色的类cgcolor,然后在data里面新建一个状态标签active,然后通过绑定calss用active来判断
就是给:class="{'cgcolor‘:active}",active在data中,然后设置click时间,将active变为false.
怎么让服务器传回json格式的数据
vueX
script标签属性
-
defer async charset language src type
-
defer属性:脚本立即下载但延迟到文档被解释和执行之后才执行,在HTML5里面虽然规定了脚本要按照它们出现的顺序来执行,但实际上,延迟脚本不一定会按照顺序执行,所以最好只出现一个延迟脚本。现在大多数支持HTML5的浏览器会忽略这个属性,像正常一样处理延迟脚步,最好还是把延迟脚步放在前面。
-
async属性: 表示立即下载脚本,同时不妨碍其他资源的下载,异步脚本也不会保证按照出现的先后顺序执行。
-
charset属性: 指定字符集,大多数浏览器忽略这个属性。
-
language属性: 已经废弃。
-
src属性: 表示指定外部文件地址。
-
type属性: 表示MIME类型,默认为text/javascript.在H5里面,可写可不写。
轮播js实现
CSS3 animation 属性和 @keyframes 规则