摘要: 三次握手和四次挥手详细原理,为什么要使用这种机制? 当进行第一次握手,网络不好可能会堵塞,所以连接的请求并没有到达服务器端;但是tcp连接有超时重传的机制,所以再一次发送请求,这时候服务器端接收到了你的请求,他也会返回一个请求给你,这是第二次握手;但是这时候网络环境突然又好了起来,那个堵塞的请求到达 阅读全文
posted @ 2023-03-05 21:58 不想做混子的奋斗远 阅读(81) 评论(0) 推荐(0)
摘要: 理解什么是协议? 互联网的实现,分为好几层。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议" 了解TCP/IP网络协议族的构成? 应用层、传输层、网络层、数据链路层、物理层 每层协议在应用程序中发挥的作用 阅读全文
posted @ 2023-03-05 20:51 不想做混子的奋斗远 阅读(23) 评论(0) 推荐(0)
摘要: 理解代码到底是什么,计算机如何将代码转换为可以运行的目标程序 代码就是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。 计算机 阅读全文
posted @ 2023-03-05 20:45 不想做混子的奋斗远 阅读(68) 评论(0) 推荐(0)
摘要: 实现常用布局 两栏布局 三栏、圣杯、双飞翼 圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。(中间先加载渲染) 圣杯布局 relative margin-left: -100%; <style> .container 阅读全文
posted @ 2023-03-05 19:43 不想做混子的奋斗远 阅读(84) 评论(0) 推荐(0)
摘要: 使用纯CSS实现曲线运动(贝塞尔曲线) 阅读全文
posted @ 2023-03-05 17:12 不想做混子的奋斗远 阅读(137) 评论(0) 推荐(0)
摘要: 使用CSS绘制几何图形(圆形、三角形、扇形、菱形等) //圆形 <div class="circle"></div> <style> .circle { border-radius: 50%; width: 80px; height: 80px; background: #666; } //扇形 < 阅读全文
posted @ 2023-03-05 17:11 不想做混子的奋斗远 阅读(146) 评论(0) 推荐(0)
摘要: 1.column多行布局实现瀑布流 column 实现瀑布流主要依赖两个属性。 column-count 属性,是控制屏幕分为多少列。 column-gap 属性,是控制列与列之间的距离。 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" 阅读全文
posted @ 2023-03-05 17:11 不想做混子的奋斗远 阅读(218) 评论(0) 推荐(0)
摘要: 11 阅读全文
posted @ 2023-03-05 17:03 不想做混子的奋斗远 阅读(16) 评论(0) 推荐(0)
摘要: -moz代表firefox浏览器私有属性 -ms代表IE浏览器私有属性 -webkit代表chrome、safari私有属性 -o代表opera私有属性 -webkit-transform:rotate(-3deg); /*为Chrome/Safari*/ -moz-transform:rotate 阅读全文
posted @ 2023-03-05 16:33 不想做混子的奋斗远 阅读(36) 评论(0) 推荐(0)
摘要: CSS模块化方案、如何配置按需加载、如何防止CSS阻塞渲染 阅读全文
posted @ 2023-03-05 16:30 不想做混子的奋斗远 阅读(40) 评论(0) 推荐(0)
摘要: PostCSS、Sass、Less的异同,以及使用配置,至少掌握一种 引入变量 Less中的变量,在声明中使用时,如果出现多次赋值的情况,其会取最后一次赋值的值 Sass/Stylus中的变量,如果出现多次赋值的情况,其会取声明前面最近的一次赋值的值 mixin 在Less中,可以直接引入一个CSS 阅读全文
posted @ 2023-03-05 16:24 不想做混子的奋斗远 阅读(157) 评论(0) 推荐(0)
摘要: 文本阴影 文本裁剪 文字描边 文本填充 text-fill-color 渐变效果 linear-gradient(方位, 起始色, 末尾色) 后面的暂时随用随查 阅读全文
posted @ 2023-03-05 16:14 不想做混子的奋斗远 阅读(41) 评论(0) 推荐(0)
摘要: 什么是BFC BFC 全称是 Block Formatting Context,即块格式化上下文。它是 CSS2.1 规范定义的,关于 CSS 渲染定位的一个概念。它是一个独立的渲染区域,只有 Block-level box 参与, 它规定了内部的 Block-level Box 如何布局,并且与这 阅读全文
posted @ 2023-03-05 16:07 不想做混子的奋斗远 阅读(85) 评论(0) 推荐(0)
摘要: 水平垂直居中的方案可以实现6种以上并对比它们的优缺点 父、子元素宽高未知时: ①flex布局 ②绝对定位+transform (定位的上、左为 50%,translate 上、左负 50%) ③绝对定位+margin:auto ④直接使用table ⑤Grid网格布局 .parent { displ 阅读全文
posted @ 2023-03-05 15:42 不想做混子的奋斗远 阅读(55) 评论(0) 推荐(0)
摘要: HTML文档流的排版规则 CSS几种定位的规则、定位参照物、对文档流的影响 如何选择最好的定位方式,雪碧图实现原理 阅读全文
posted @ 2023-03-05 15:35 不想做混子的奋斗远 阅读(26) 评论(0) 推荐(0)
摘要: CSS盒模型,在不同浏览器的差异 盒子模型有两种,分别是IE盒子模型和标准w3c盒子模型。 标准w3c盒子模型的范围包括 margin、border、padding、content,并且content部分不包括其它部分。 IE盒子模型的范围也包括 margin、border、padding、cont 阅读全文
posted @ 2023-03-05 15:33 不想做混子的奋斗远 阅读(87) 评论(0) 推荐(0)
摘要: 优势? 离线浏览 - 用户可在应用离线时使用它们。 速度 - 已缓存资源加载得更快。 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。 原理: HTML5的离线存储是基于一个manifest文件(缓存清单文件,后缀为.appcache)的缓存机制(不是存储技术),通过这个文件上的清单 阅读全文
posted @ 2023-03-05 15:29 不想做混子的奋斗远 阅读(47) 评论(0) 推荐(0)
摘要: head的使用目的和配置方法 使用目的: HTML 头部包含 HTML <head> 元素的内容,与 <body> 元素内容不同,页面在浏览器加载后它的内容不会在浏览器中显示,它的作用是保存页面的一些元数据 配置方法就是 <head> <meta charset="utf-8" /> <title> 阅读全文
posted @ 2023-03-05 15:24 不想做混子的奋斗远 阅读(198) 评论(0) 推荐(0)
摘要: 常用页面标签的默认样式、自带属性 默认样式 li {display: list-item }`/*默认以列表显示*/` head {display: none }/*默认不显示*/ table {display: table }/*默认为表格显示*/ tr {display: table-row } 阅读全文
posted @ 2023-03-05 14:39 不想做混子的奋斗远 阅读(91) 评论(0) 推荐(0)
摘要: ①用正确的标签做正确的事情 ②html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有CSS情况下也以一种文档格式显示,并且是容易阅读的。 ③搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO ④使阅读源码的人对网站更容易将网站分块,便于阅读维护 阅读全文
posted @ 2023-03-05 14:29 不想做混子的奋斗远 阅读(26) 评论(0) 推荐(0)
摘要: 懒加载 阅读全文
posted @ 2023-03-05 10:25 不想做混子的奋斗远 阅读(22) 评论(0) 推荐(0)
摘要: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎的原理 模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字 阅读全文
posted @ 2023-03-05 10:24 不想做混子的奋斗远 阅读(69) 评论(0) 推荐(0)
摘要: JSON.stringify JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性。 JSON.stringify(v 阅读全文
posted @ 2023-03-05 10:22 不想做混子的奋斗远 阅读(52) 评论(0) 推荐(0)
摘要: 可以说出两种实现双向绑定的方案、可以手动实现 1.手动绑定 Object.defineProperty <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="widt 阅读全文
posted @ 2023-03-05 10:18 不想做混子的奋斗远 阅读(50) 评论(0) 推荐(0)
摘要: EventEmitter EventEmitter (事件派发器)是 Node.js 的核心模块 events 中的类,用于对 Node.js 中的事件进行统一管理,用 events 特定的 API 对事件进行添加、触发和移除等等,EventEmitter 的核心就是事件触发与事件监听器功能的封装。 阅读全文
posted @ 2023-03-05 10:14 不想做混子的奋斗远 阅读(669) 评论(0) 推荐(0)
摘要: 经常有人说async函数是generator函数的语法糖,那么到底是怎么样一个糖呢?让我们来一层层的剥开它的糖衣。 有的同学想说,既然用了generator函数何必还要实现async呢? 这篇文章的目的就是带大家理解清楚async和generator之间到底是如何相互协作,管理异步的。 const 阅读全文
posted @ 2023-03-05 10:09 不想做混子的奋斗远 阅读(71) 评论(0) 推荐(0)
摘要: 暂时搁置 阅读全文
posted @ 2023-03-05 10:07 不想做混子的奋斗远 阅读(18) 评论(0) 推荐(0)
摘要: Function.prototype.mycall = function(obj){ var args = Array.prototype.slice.apply(arguments,[1]); obj.fn = this; obj.fn(...args);//es6的解构语法,也可以使用obj.f 阅读全文
posted @ 2023-03-05 10:06 不想做混子的奋斗远 阅读(38) 评论(0) 推荐(0)
摘要: 实现一个sleep函数 ①利用堵塞循环实现,因为js是单线程的,所以这个其实就是根本上的sleep function sleep(delay) { var start = (new Date()).getTime(); while ((new Date()).getTime() - start < 阅读全文
posted @ 2023-03-05 09:47 不想做混子的奋斗远 阅读(79) 评论(0) 推荐(0)
摘要: 手写防抖和节流工具函数、并理解其内部原理和应用场景 防抖 // 防抖: 一个函数 在设置的时间后执行 如果在设置的时间间隔期间再次触发 那么本次就无效 重新计算 // 触发高频时间后n秒内只会执行一次 如果n秒高频时间内再次触发 则会重新计算时间 // 原理 debounce 触发后 首先清除掉ti 阅读全文
posted @ 2023-03-05 09:41 不想做混子的奋斗远 阅读(38) 评论(0) 推荐(0)
摘要: 手写函数柯里化工具函数、并理解其应用场景和优势 什么是柯里化(Curring)??? 什么意思?简单来说,柯里化是一项技术,它用来改造多参数的函数。 简单讲就是把一个多参数的函数f,变换成接受部分参数的函数g,并且这个函数g会返回一个函数h,函数h用来接受其他参数。函数h可以继续柯里化。就是一个套娃 阅读全文
posted @ 2023-03-05 09:39 不想做混子的奋斗远 阅读(220) 评论(0) 推荐(0)
摘要: 前情提要 深拷贝:拷贝的是对象或者数组内部数据的实体,重新开辟了内存空间存储数据;浅拷贝:拷贝的是引用类型的指针,副本和原数组或对象指向同一个内存; ①递归方式 比较全面的深拷贝,缺点是较为繁琐 function deepClone(obj) { var target = {}; for(var k 阅读全文
posted @ 2023-03-05 09:11 不想做混子的奋斗远 阅读(91) 评论(0) 推荐(0)
摘要: 前情提要: map函数接收一个函数作为参数,作为参数的函数接收三个参数值,分别是遍历数组的每一项元素,元素的索引和数组本身。这三个参数刚好和reduce函数接收的第一个函数参数的第2、3、4个参数是对应的。这是实现的核心 实现思路是,将每次遍历的元素,作为传入的函数的参数,并将函数执行的结果放入新的 阅读全文
posted @ 2023-03-05 09:04 不想做混子的奋斗远 阅读(61) 评论(0) 推荐(0)
摘要: ①遍历 forEach ②sort排序 取索引 ③使用Math.max + apply var max1 = Math.max.call(null,3, 0, -7, 39); ④使用Math.max + 扩展运算符 let max=Math.max(...arr); 阅读全文
posted @ 2023-03-05 08:54 不想做混子的奋斗远 阅读(16) 评论(0) 推荐(0)
摘要: 2019年的ES10中新增了扁平化API flat ①flat实现指定深度的数组扁平化 function flatten6(arr,depth = 1) { if (!Array.isArray(arr)) return [] if(typeof depth !== 'number') depth 阅读全文
posted @ 2023-03-05 08:51 不想做混子的奋斗远 阅读(71) 评论(0) 推荐(0)
摘要: 首先了解一下什么是数组扁平化? 将一个嵌套多层的数组Array(嵌套可以是任何层数)转换为只有一层的数组。 数组去重 先总结数组的方法:pop、push、shift、unshift、sort、splice、slice、revere、concat join、indexOf、map、forEach、in 阅读全文
posted @ 2023-03-05 08:34 不想做混子的奋斗远 阅读(87) 评论(0) 推荐(0)