自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 网站性能优化的常用方法

减少HTTP请求     使用雪碧图、内联图片,合并脚本和样式表。使用内容分发网络(CDN)添加Expires头压缩组件压缩样式表和脚本,开启gzip压缩大概减少70%的大小样式表放在顶部将脚本放在底部避免CSS表达式使用外部JavaScript和CSS减少DNS查找精简JavaScript避免重定

2017-11-07 11:20:09 502

原创 小米前端电话面试

1.实现一个上三角形 用css2.ajax的原理 状态 原生js3.ajax中遇到前进,或者后退4.call与apply的区别5.伪类 link hover visited active6.css3的新特性7.阻止冒泡事件8.placehoder怎么兼容ie79.css的盒模型10.box-sizing11.jq代理12.冒泡,快排13.事件代理

2017-10-17 21:35:04 1876

原创 js数组去重的方法总结

1.使用ES6的Set方法,注意返回的是一个对象,不是数组function uniqueArray(arr){ var arrNew=new Set(arr); return arrNew;}2.使用Es6的Array.from()方法function uniqueArray2(arr){ var arrNew=Array.from(new Set(arr)

2017-10-17 16:31:19 386

原创 DNS域名解析全过程

首先贴上一张图: 详细解释:1.首先你在客户端(也就是你的电脑)输入一个域名,这里以www.163.com为例。然后就要对这个域名进行解析。客户端向本地的DNS服务·器发起一个请求,本地的DNS服务器首先会查看缓存记录,就是域名与ip的对应关系。如果缓存中有该条记录(有输入的网址),就会将对应ip返回给客户端。2.如果缓存中没有记录,本地DNS服务器就会向根DNS服务器发起

2017-10-15 23:14:08 2959

转载 http状态码详解

状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。101服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完

2017-10-15 16:35:18 253

原创 js实现每次调用一个函数自动加1

1.首先考虑使用闭包  function getId () {  'use strict';    var i = 0;  getId = function () {    return i++;  };  return i++;  }console.log(getId());console.log(getId());结果为01

2017-10-15 16:16:57 18392 1

转载 css选择器的权重计算

CSS 选择器权重计算规则  其实,CSS有自己的优先级计算公式,而不仅仅是行间>内部>外部样式;ID>class>元素。一、样式类型  1、行间我的行间CSS样式。   2、内联 h1{font-size:12px; color:#000; }   3、外部

2017-10-15 15:52:59 320

原创 2017年新浪php实习生笔试题

1.get与post的区别2.cookie与session的区别3.

2017-10-14 10:26:09 1696

转载 跨域问题的解决办法

1.同源策略如下:URL说明是否允许通信http://www.a.com/a.jshttp://www.a.com/b.js同一域名下允许http://www.a.com/lab/a.jshttp://www.a.com/script/b.js同一域名下不同文件夹允许ht

2017-10-11 08:47:28 283

转载 排序算法总结

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。        当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分

2017-10-08 16:49:52 276

原创 前序遍历,中序遍历,后序遍历的相互求法

今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。     首先,我们看看前序、中序、后序遍历的特性: 前序遍历:     1.访问根节点     2.前序遍历左子树     3.前序遍历右子树 中序遍历:     1.中序遍历左子

2017-10-07 21:53:24 3403

原创 从尾到头打印链表

题目描述:            输入一个链表,从尾到头打印链表每个节点的值。解题思路:             整体是后进先出,符合堆栈的原理,先将节点的值压栈,在弹栈。import java.util.Stack;import java.util.ArrayList;public class Solution { public ArrayList printListFr

2017-10-07 14:38:44 237

原创 替换空格

题目描述:          请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路:          使用正则表达式全局搜索空格字符,在javascript中有replace()函数,知己调用该函数可以直接替换。function replaceSpace(str){

2017-10-07 14:34:27 194

原创 二维数组中的查找

题目描述:             在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:            遍历查询是最笨的方法。从左上角开始查询,可能会遇到岔路。提供一种解题思路:从左下角或者右上角开始查找,两者思路相同。以左下角为例:如果大于目标整数,需要

2017-10-07 14:19:41 187

转载 js原型链

ECMAScript 中描述了原型链的概念,并将原型链作为实现继承的主要方法。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。简单回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么,假如我们让原型对象等于另一个类型的实例,结果会怎么样呢?显然,此时的原型对象将包含一个

2017-10-03 22:02:22 178

原创 js的基本包装模型

为了便于操作基本类型值,ECMAScript 还提供了3 个特殊的引用类型:Boolean、Number 和String。这些类型与本章介绍的其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。来看下面的例子。var s1 = "some text";

2017-10-03 10:58:39 240

转载 webpack超详细配置, 使用教程(图文)

流程webpack安装Step 1: 首先安装Node.js, 可以去Node.js官网下载.Step2: 在Git或者cmd中输入下面这段代码, 通过全局先将webpack指令安装进电脑中npm install webpack -gStep3: 使用Git Bash here 或者 cmd cd命令使当前目录转到当前项目的目录下, 然后输入下面

2017-10-03 09:29:01 409

原创 js的闭包问题

想要学好javascript,弄懂闭包问题是不可避免的·,这既是javascri的的难点,也是它的特色所在。我们要使用javascript的高级应用,就不可避免的要使用闭包。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局

2017-10-02 08:41:25 202

转载 在浏览器中输入www.baidu.com后执行的全部过程

1、客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到网络层。2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与

2017-09-29 10:45:15 450

转载 OSI,TCP/IP,五层协议的体系结构,以及各层协议

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)网络层:

2017-09-29 10:44:25 1116

原创 TCP三次握手和四次挥手过程

三次握手:第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户

2017-09-29 10:43:26 157

原创 TCP的三次握手过程?为什么会采用三次握手,若采用二次握手可以吗?

:建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。(1)TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。(2)采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发

2017-09-29 10:42:03 596

转载 js的垃圾回收机制

标记清除JavaScript 中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。可以使用任何方式来标记变量。比如,可以通过翻转某个特殊

2017-09-28 22:54:35 187

原创 js检测数据类型

要检测一个变量是不是基本数据类型?typeof 操作符是最佳的工具。说得更具体一点,typeof 操作符是确定一个变量是字符串、数值、布尔值,还是undefined 的最佳工具。如果变量的值是一个对象或null,则typeof 操作符会像下面例子中所示的那样返回"object":var s = "Nicholas";var b = true;var i = 22;var u

2017-09-28 19:28:07 200

翻译 js中传递参数问题

ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。有不少开发人员在这一点上可能会感到困惑,因为访问变量有按值和按引用两种方式,而参数只能按值传递。在向参数传递基本类型的值时,被传递的值会被复制给一个局

2017-09-28 13:55:55 617

翻译 js中复制基本类型与复制引用类型值的区别

如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上。来看一个例子:var num1 = 5;var num2 = num1;在此,num1 中保存的值是5。当使用num1 的值来初始化num2 时,num2 中也保存了值5。但num2中的5 与num1 中的5 是完全独立的,该值只是num1 中5 的一个副本。此后,这两

2017-09-28 13:44:14 466

转载 js中深拷贝与浅拷贝的区别

在js中,我们经常复制一个对象,复制数据,那么就会有人问了,怎么复制,今天辉哥就带来js中的复制方法。JS中对象分为基本类型和复合(引用)类型,基本类型存放在栈内存,复合(引用)类型存放在堆内存。堆内存用于存放由new创建的对象,栈内存存放一些基本类型的变量和对象的引用变量。至于堆内存和栈内存的区别介绍,你们可以百度看看。下面开始讲解复制:这种只是简单的变量,内存小,我们直接复

2017-09-28 13:37:30 763

原创 html中块级标签,行内标签,空元素的总结

(1)行内元素a - 锚点* abbr - 缩写* acronym - 首字* b - 粗体 ( 不推荐 )* bdo - bidi override* big - 大字体* br - 换行* cite - 引用* code - 计算机代码 ( 在引用源码的时候需要 )* dfn - 定义字段* em - 强调

2017-09-27 18:57:55 2206

原创 html5增加与移除元素总结

Html5新增了 27 个元素,废弃了 16 个元素,根据现有的标准规范,把 HTML5 的元素按优先级定义为结构性属性、级块性元素、行内语义性元素和交互性元素 4 大类。结构性元素主要负责web上下文结构的定义section:在 web 页面应用中,该元素也可以用于区域的章节描述。header:页面主体上的头部, header 元素往往在一对 body 元素中。footer:页面

2017-09-27 18:51:16 859

转载 Doctype作用? 严格模式与混杂模式如何区分?它们有何意义?

回答1:(1)、 声明位于文档中的最前面,处于标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。             (2)、严格模式的排版和JS 运作模式是以该浏览器支持的最高标准运行。             (3)、在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。               (4)、DOCTYPE不存

2017-09-27 18:17:13 745

原创 js实现异步编程的方法

1.回调函数f1(f2);回调函数是异步编程的基本方法。其优点是易编写、易理解和易部署;缺点是不利于代码的阅读和维护,各个部分之间高度耦合 (Coupling),流程比较混乱,而且每个任务只能指定一个回调函数。2.事件监听f1.on('done',f2);事件监听即采用事件驱动模式,任务的执行不取决于代码的顺序,而取决于某个事件是否发生。其优点是易理解,可以

2017-09-26 22:52:06 284

转载 javaScript实现快速排序

日本程序员norahiko,写了一个排序算法的动画演示,非常有趣。这个周末,我就用它当做教材,好好学习了一下各种排序算法。排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。目前,最常见的排序算法大概有七八种,其中"快速排序"(Quicksort)使用得最广泛,速度也较快。它是图灵奖

2017-09-26 19:00:59 399

转载 交换两个变量的值,不使用第三个变量的四种方法

通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:int a,b;a=10; b=15;int t;t=a; a=b; b=t;这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。

2017-09-26 18:41:14 1259

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除