![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础必备
小山羊~
命运多舛,痴迷淡然
展开
-
前端精确还原设计稿,从psd到html
动态生成的元素做事件委托 $('.select ul').on('mouseenter',"li",function(e){ $(this).css({'backgroundColor':'#E8F3FF','font-size':'18px'}); }); $('.select ul').on('mouseout',"li",function(e){ ...原创 2021-07-16 16:23:49 · 899 阅读 · 0 评论 -
设备像素比+图片高清显示+移动适配
一、设备像素比(device pixel ratio) 在前端开发之前,我们会有一个psd文件,称之为视觉稿。对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667)。 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:原先的375×667,就会变成750×1334)原创 2020-09-04 14:31:05 · 281 阅读 · 0 评论 -
数组去重的几种方法
1. splice var arr = [1,2,5,7,2,2,4,5] for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1) j-- } ...原创 2018-06-12 11:06:24 · 311 阅读 · 0 评论 -
new的时候具体做了什么?输出日期,九九乘法表
new的时候具体做了什么? *1. 创建一个新的对象,this变量引用该对象,同时还继承了该函数的原型 * 2. 属性和方法都被添加到this 引用的对象中去 * 3. 新创建的对象由this所引用,并且最后隐式的返回this function Person(name, age) { ...原创 2018-06-12 11:20:13 · 350 阅读 · 0 评论 -
浅拷贝与深拷贝的区别
1、数据类型: * 数据分为基本的数据类型(String, Number, boolean, Null, Undefined)和对象数据类型 - 基本数据类型: 特点: 存储的是该对象的实际数据 - 对象数据类型: 特点: 存储的是该对象在栈中引用,真实的数据存放在堆内存里 2、复制数据 - 基本数据类型存放的就是实际的数据,可直接复制 ...原创 2018-06-12 11:31:51 · 2327 阅读 · 0 评论 -
从输入url到显示及缓存
1. 首先,在浏览器地址栏中输入url 2. 浏览器先查看浏览器缓存--系统缓存--路由器缓存 若缓存中有,会直接在屏幕中显示页面内容, 若没有,则直接跳到第3步 3. 在发送http请求前,需要域名解析(DNS解析)解析获取相应的IP地址 4. 浏览器向服务器发起TCP连接,与浏览器建立TCP三次握手 5. 握手成功后,浏览器向服务器发送http请求,请求数据包 6. 服务器处理请...原创 2018-06-13 09:38:37 · 260 阅读 · 0 评论 -
TCP三次握手
TCP/IP由四个层次组成,网络接口层、网络层、传输层、应用层 1. 客户端向服务器端发送连接请求包SYN(syn=j),等待服务器回应 2. 服务端收到客户端连接请求包SYN(syn=j)后,将SYN放入到自己的未连接队列,此时服务器需要发送两个包给客户端 (1)向客户端发送确认自己收到连接请求的确认包ACK(ack=j+1),表明已知道其请求 (2)向客户端发送连接询问请求...原创 2018-06-13 09:39:02 · 107 阅读 · 0 评论 -
forEach()与each、map()与filter()等的区别
1. forEach var arr = ['yyn','lz','xks','parent']; arr.forEach(function(item,index,arr){ console.log(item); console.log(index); console.log(arr); ...原创 2018-07-17 13:51:21 · 1086 阅读 · 0 评论 -
获取url参数
getUrlParam(name){ // ?param=123&¶m1=456 let queryString = window.location.search.split('?')[1] || '', reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"), ...原创 2018-12-14 10:03:39 · 90 阅读 · 0 评论 -
冒泡排序、快速排序算法
基本思想: 冒泡排序: (1)N个数,总共进行N-1趟排序,每趟排序次数为(N-i)次; (2)可用双重循环,外层控制循环多少趟,内层控制每一趟的循环次数; (3)通过两两比较关键字,得出升序序列或者降序序列。 function sort(arr){ for(var i = 0;i < arr.length-1; i++){ ...原创 2019-03-31 00:07:42 · 144 阅读 · 0 评论 -
插入排序
思想: 每次将一个待排序的元素与已排序的元素(第一个元素即有序序列)进行逐一比较,直到找到合适的位置按大小插入 比如,3,8,6,2,4,5 (1)起初,定有序序列(第一个元素)3 (2)将无序序列的第一个元素8,与有序序列3(从后向前)比较;需保存当前比较的有序元素(因后移时,会占据该元素的位置) (3) (比较,后移)插入拿6为例,6与有序序列8比较,6<8,则8后移,...原创 2019-03-31 16:04:48 · 78 阅读 · 0 评论 -
归并排序算法
(1) left 8,right 4, 4<8,将4插入result[ ] (2)拿第一个序列(left)的第一个数与第二个序列(right)的第一个数比较,4<5, 则4插入result[ ], 继续拿小的序列,即left的第二个数与right的第一个数比较,8>5,将5插入result[ ],继续拿right的第二个数,与left的第二个数比较,7<8,将...原创 2019-03-31 16:28:11 · 85 阅读 · 0 评论 -
希尔排序算法
注意间隔(步长),比如10个数,步长为5,2,1,此算法为h=3*h+1 function shellSort(arr){ var N=arr.length; var h=1; while(h<N/3){ h=3*h+1;//设置间隔 } while(h>=1){ ...原创 2019-03-31 16:34:04 · 73 阅读 · 0 评论 -
折半(二分)查找法
(1)确定low,high,mid (2) 将关键字21与mid比较,21<56, 则high=mid-1, mid=19, 21>19, 则low=mid+1,mid=21,此时关键字mid则为关键字的位置 function search(arr,num) { var len=arr.length; va...原创 2019-03-31 16:51:17 · 110 阅读 · 0 评论 -
TCP/IP协议
为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。 但是简单的连到一起是远远不够的,就好像...原创 2019-03-31 18:16:51 · 130 阅读 · 0 评论 -
HTTP协议
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层的面向对象的协议。由于其简捷、快速的方式,适用于分布式超媒体信息系...原创 2019-03-31 23:01:43 · 117 阅读 · 0 评论 -
Http缓存机制及原理
Http 缓存机制作为 web 性能优化的重要手段,但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 铺垫 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 请求报文(Request)和响应报文(Response) HTTP请求报文主要由请求行(request line)、请求头部(hea...原创 2019-04-03 00:29:53 · 168 阅读 · 0 评论