自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 跨域问题

如何解决跨域问题,这些解决方法应用于什么场景,有什么特点。同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 In...

2018-08-23 20:12:26 191

原创 TCP与UDP区别总结

TCP与UDP区别总结:1、TCP是面向连接的运输层协议(传输数据前要建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制...

2018-08-16 20:32:37 204

转载 爬虫与前端安全

网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域。搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询;传统网络爬虫从一个或若干个初始网页的URL(Universal Resource L...

2018-08-16 20:30:38 1505

转载 服务器判断客户端的用户名和密码(token的身份验证)

 HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下,解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次...

2018-08-16 20:18:05 15591 1

原创 当在客户端中发送一个请求在网络中各层经历了什么

这个是这两天面试的一个问题,没回答上来,在这里整理一下:(1)网络层进行IP地址的解析(2)通过DNS得到目标的IP地址,进行域名的解析;(3)建立TCP连接(三次握手);(4)开始向web服务器发送请求(get或者post);(5)服务器的到请求进行响应,开始处理请求;(6)当完成数据请求或者数据传输时,断开TCP连接(四次挥手)。IP地址解析:1.从层次角度看:...

2018-08-16 20:04:41 2418

转载 面试题-原型链问题

1、如何准确判断一个变量是数组类型? var str=[]; console.log(typeof str);//object console.log(str.constructor===Array);//true console.log(Object.prototype.toString.call([]));//[object Array] console.log(Array.is...

2018-08-10 15:07:11 1237

转载 原型链

原型链的讲解在谈原型链之前,我们首先要了解自定义函数与 Function 之间是什么关系,而构造函数、原型和实例之间又存在什么千丝万缕的关系呢?其实,所有的函数都是 Function 的实例。在构造函数上都有一个原型属性 prototype,该属性也是一个对象;那么在原型对象上有一个 constructor 属性,该属性指向的就是构造函数;而实例对象上有一个 _proto_ 属性,该属性也指向...

2018-08-10 00:25:46 145

原创 this关键字

 this是什么?它是一个object,直接用alert弹出的是window Js里当对象是window的时候一般把window省略,实际上alert是window的方法 再试一下div的点击事件里弹出this则变成了div 得到的结论是:this就是调用当前方法(函数)的(元素)对象,在全局下就是window 但是事件调用匿名函数里直接调用时,this又回变成window,这时元...

2018-08-10 00:18:10 167

原创 闭包(闭包原理,底层解析,存在的问题)

闭包的定义:在Javascript语言中,只有函数中的子函数才能引用函数中的变量,简单来说,闭包就是定义在函数中的函数,是函数内外部连接的桥梁闭包的意义:(1)当前作用域总是能够访问外部作用域中的变量;(2)函数是唯一拥有自身作用域的结构,所以闭包的创建依赖于函数变量的作用域:全局变量、局部变量是变量的作用域仅有的两种形态;一般来说,全局变量可以在任意作用域中引用,而局部变量则只能在当前作...

2018-08-09 16:27:37 1958

原创 作用域,作用域链,闭包题

浏览器有读js的解析器,从script标签开始解析:第1步--预解析,找到全局的var和function,var的变量的值设置undefind ,function函数名和内容会整体保存为字符串,变量名和函数名重名时保留函数(既有内容的),函数和函数重名时后面的字符串覆盖前面的字符串 第2步--逐行读代码,变量在赋值之前一直是undefind,除非读到=、+、-、*、/、%、++、--、!等表...

2018-08-09 16:23:17 114

原创 setTimeout和setInterval的区别

使用方式:setTimeout (表达式, 延时时间)setInterval(表达式, 交互时间)延时时间/交互时间是以豪秒为单位的(1000ms=1s)setTimeout()方法是在等待指定时间后执行函数内容, 且只执行一次传入的表达式。<html><head><script type="text/javascript">func...

2018-08-08 10:11:45 249

原创 ajax的四个过程

1.创建XMLHttpRequest(ajax对象);2..链接到服务器3.发送请求4.接受返回值function ajax(url,fnSucc,fnFaild){ // 参数;1.连接服务器的地址 2.成功时函数 3,失败时函数 // 1. 创建xmlhttprequest对象 var xmlHttp = null; if(window.XML...

2018-08-06 17:36:13 1056

原创 js实现事件循环的方式

1.执行栈和事件队列:当javascript代码执行的时候会将不同的变量存于内存中的不同位置:堆(heap)和栈(stack)中来加以区分。其中,堆里存放着一些对象。而栈中则存放着一些基础类型变量以及对象的指针;当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(context),又叫执行上下文。这个执行环境中存在着这个方法的私有作用域,上层作用域的指向,方法的参数,这个作用域中定义...

2018-08-06 16:37:53 1365 1

原创 页面加载时执行的任务

1.onloadfunction doSomething(){        //执行某种任务… …}既可以在HTML标记中指定该函数:<body onload=”doSomething();”>也可以在JavaScript代码中指定该函数:window.onload=doSomething;这两种方式都会导致在页面加载完成后执行这个函数。但第2种方式的优点在于,它能使...

2018-08-05 16:25:36 1228

原创 js中常用的事件(pc端和移动端)

1.点击事件:在pc端是点击事件,但是在移动端是单击事件,在移动端的项目中我们经常会区分单击做什么和双击做什么,所以移动端的浏览器在识别click的时候,只有确定是单击后才会把它执行,在移动端使用click会存在300ms的延迟:浏览器在第一次点击结束后,还需要等到300ms看是否触发了第二次点击,如果触发了第二次点击就不属于click了,没有触发第二次点击才属于click但是,在某些场景...

2018-08-05 15:53:52 3436

原创 HTML标签嵌套规则和扁平化

HTML标签嵌套规则块级元素div、h1~h6、address、blockquote、center、dir、dl、dt、dd、fieldset、form、hr、isindex、menu、noframes、noscript、ol、p、pre、table、ul ...特点:总是在新行上开始,高度、行高以及顶和底边距都可控制,宽度缺省是它的容器的100%,除非设定一个宽度功能:主要用来搭...

2018-08-04 23:34:55 497

原创 js中字符串的方法

(1) var str = ' nihao';//定义一个字符串(2) str.length; //获取字符串的长度(3) str.charAt(2); //获取传入下标序号处的字符如果不传值默认值为"0",当传入的下标超出字符串长度时返回"null"(4) str.charCodeAt(2); //获取传入下标序号处的字符的Unicode 编码值如果不传值默认值为"0"(...

2018-08-04 23:32:56 146

原创 JavaScript的数组方法

JavaScript的数组方法(1)数组的定义方法:var arr = [1,2,3];//推荐这种写法; var arr = new Array(1,2,3)//对象定义数组但是对象定义数组值只有一个且是数字它会理解为长度,是字符串它会理解为内容,所以用第一种定义方法简单实用(2)数组除了用for可以遍历,用for in也是可以的,这里属性名称就是arr的下标(3)如果定义后...

2018-08-04 23:32:03 149

原创 求100个1-500间不重复的随机整数

1.经典例题:求100个1-500间不重复的随机整数(1)将500个数(1-500)放入一个数组,打乱500个数的顺序,再将数组长度改为100;判断是否重复。var arr = [];for(var i=1;i<=500;i++){arr.push(i);}//打乱500个数的顺序arr.sort(function(a,b){ //传入一个匿名函数return...

2018-08-04 23:31:05 3103

原创 html和css知识点(四)

1.position属性的5个值static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。inherit 规定应该从父元素继承 position 属性的值。relative 生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。absolu...

2018-08-04 21:57:27 275

原创 html和css知识点总结(三)

1.display的属性特点:(1)none:隐藏元素并脱离文档流,不占据任何空间;visibility:hidden:隐藏元素。但该元素还占据空间,会影响到布局;(2)block:块级元素中为display的默认值,独占一行,若干同级元素会从上到下排列(float除外),可以设置宽高内外边距,支持margin:auto;默认宽度为100%,元素前后带有换行符,可以容纳其他的块级元素和行内...

2018-08-03 23:14:04 150

原创 html与css知识点总结(二)

1.DOM结构及其优化:DOM是Document Object Model(文档对象模型)的缩写,DOM是中立与平台和语言的接口,它允许程序或脚本动态地访问更新文档的内容、样式以及结构。DOM包含核心DOM、XML DOM和HTML DOM,HTML DOM是关于如何获取、添加、修改和删除HTML元素的标准在HTML DOM中HTML文档中所有内容都被视为节点,DOM被视为节点树的HTML: ...

2018-08-03 09:52:29 130

原创 html知识点总结

1.块级元素、内联(行内)元素的特点:(1)块级元素:以块显示的元素,高度、宽度、内边距、外边距都可以设置,如:<div>、<p>等在默认状态下都是块级元素,块级元素独占一行,非块级元素在css中可以通过display:block设置成块级元素;(2)内联(行内)元素:以文本的方式显示,高度、宽度、内边距、外边距都不可改变,如:<a>等,内联元素与其相邻的元素在...

2018-07-27 10:30:22 110

原创 二叉树(六)----遍历算法的应用

一、先序遍历统计二叉树中的结点数: void PreOrder(BiTree root)//先序遍历统计结点个数 { if(root) { count++;//count是全局变量,初始值为0 PreOrder(root->Lchild); PreOrder(root->Rchild); }}二、输出二叉树中的叶子结点: 因为三种遍历算法输...

2018-07-26 09:33:03 397

原创 二叉树(五)-----后序非递归遍历

后序非递归遍历:后序非递归遍历和先序、中序非递归遍历主要的差别在于:当从子树返回时,如何判断该子树是从左子树返回的还是从右子树返回的,由此来确定栈顶元素的上一层结点是否应该出栈,因此,后序非递归遍历最主要的就是判断刚访问过的结点q是不是当前栈顶结点p的右孩子(1)p没有右孩子,则表明此时应该访问根结点;(2)p的右孩子是刚被访问过的结点q,此时也应该访问根结点(定义结点q的原因是标记被

2018-01-27 16:38:37 202

原创 二叉树(四)-------中序非递归遍历

中序非递归遍历:算法1:(1)从根结点开始,当前结点存在或者栈不为空进入循环   (2)当前结点进栈,进入其左子树,重复此操作,直到当前结点为空;(3)若栈不为空,则退栈,输出当前结点,进而访问退栈结点的右子树。void InOrder(BiTree root)//中序

2018-01-27 15:13:23 146

原创 二叉树(三)------先序非递归遍历

先序遍历:算法思想:从根结点开始,若当前结点存在或不为空,可重复操作一下两步:  (1)访问当前结点,当前结点进栈,访问其左子树,左子树不为空一直访问进栈,直到左子树为空;(2)若栈非空,则退栈顶结点,访问其右子树。#include#include#define MAXSIZE 100typedef char DataType;typedef struct Node{

2018-01-26 17:43:48 136

原创 二叉树(二)-----二叉树的先、中、后序遍历的递归实现

先序递归遍历:void PreOrder(BiTree root){ if(root) { printf("%c",root->data); PreOrder(root->Lchild); PreOrder(root->Rchild); }}中序递归遍历:void InOrder(BiTree root){ if(root) { InOrder(ro

2018-01-26 16:07:48 176

原创 二叉树(一)----建立二叉链表存储的二叉树

二叉树的存储分为顺序存储和链式存储顺序存储对于满二叉树是非常方便的,没有空间的浪费,又可以很方便的计算出每一个结点的左、右孩子及其双亲的下标位置,但是一般的二叉树不能连续的存储在一维空间中,所以空结点就占用了一定的空间。二叉树的顺序存储结构:#define MAX 100typedef struct{ datatype SqBiTree[MAX+1]; int

2018-01-26 15:25:51 2633

空空如也

空空如也

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

TA关注的人

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