- 博客(36)
- 收藏
- 关注
原创 实现图片预加载的几种方式
感觉自己好久没有写博客了,可能自己变懒了。不知道为什么最近有点迷茫,不知道是该去学一下新东西还是该去看一下具有深度的东西。新的技术需要关注,但是我要去研究一下jquery的源码,这个东西很早就想去看,无奈时间安排不过来。学了新的东西,没有机会去实践,很快就忘记了,但是我们还是要保持一种不断吸收新知识的姿态。讲了这么多废话,好了,开始今天的话题。实现图片预加载的几种方式。在开发的过程,我们经常会遇到
2017-07-26 23:35:47 48307 8
原创 总结一下:after和:before的一下知识点
1.伪元素不存在文档中,js无法获取到它,所以用js是无法操作它的。 2.它属于主元素本身,所以在它身上进行事件的触发,触发的是主元素的事件;例如在主元素上绑定一个click事件,我们去点击这个伪元素的时候,触发的是主元素的click事件。 3.有些元素是没有伪元素的,比如img,input,textarea等等。从这些元素本身来去看,就是这些元素里面是不可以再包括其他元素的(意
2017-05-22 16:21:42 1385
原创 xss攻击进阶篇---如何利用抓包工具Fiddler进行xss攻击
最近对自己的项目进行了xss攻击,想找到还存在什么漏洞;玩着玩着玩上瘾了,顺手帮别人的网站做了测试,结果时,不费一兵一卒就轻易拿下;还可以进行CSRF攻击,攻击别人的帐号.xss的危害可小可大;比如弄一些恶作剧,弹出一些东西,大到恶意地操作别的帐号,做一下钓鱼的入口等等什么是xss,什么csrf;在这里我们不去讨论;相关的知识点请看之前我写过的一篇文章XSS跨站脚本攻击与CSRF跨站请求伪造攻击的
2016-11-12 16:59:14 12071 2
原创 回顾数据结构(5):队列
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct Queue{ int data; struct Queue *next;}QNode,*QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear;}LQueue;//初始
2016-11-06 13:36:48 457
原创 回归数据结构(4):双向循环链表
双向循环链表的插入,删除的操作如图: #include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LNode{ int data; struct LNode *next; struct LNode *prior;}Node,*LinkList;int createLinkList(LinkLi
2016-11-05 15:15:03 466
原创 回顾数据结构(3):双向链表
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LNode{ int data; struct LNode *next; struct LNode *prior;}Node,*LinkList;//创建双向链表int createLinkList(LinkList &L,int l
2016-11-05 13:36:03 386
原创 回顾数据结构(2):单循环链表
#include <stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LNode{ int data; struct LNode *next;}Node,*LinkList;//创建循环链表int createLinkList(LinkList &L,int length){ LinkList he
2016-11-05 13:35:07 307
原创 单链表逆序操作-倒插法
首先我们把链表分成两部分,头结点,其他结点;让头结点的next为NULL;然后剩余部分使用倒插法,一个一个的插入的到头结点中;#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef struct LNode{ int data; struct LNode *next;}Node,*LinkList;int cr
2016-11-04 21:02:15 2616
原创 回顾数据结构(1):单链表
1.链表的结点由数据域和指针域构成: //定义链表结构typedef struct LNode{ ElemType data; struct LNode *next;}Node,*LinkList;2.创建链表://创建链表Status CreateLinkList(LinkList &L,int n){ LinkList p,head; L = (LinkL
2016-11-04 19:07:37 333
原创 常见的CSS布局总结
两行布局:头部高度固定,尾部高度为剩余高度方法:尾部元素设置 position: absolute; top:顶部元素的高度,bottom:0;<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> html,body{
2016-10-13 23:13:59 2093
原创 angular.js指令(directive)中的controller,compile,link函数有什么不同?
到目前为止,用angualrjs去做开发也有两个月了.做为一个菜鸟,难免会被大神吊打(这里有一个悲伤的故事...);某一天,一位前端大神问我:你知道angular指令中的controller,compile,link函数有什么不同?然后我就一脸懵逼了....今天我们来一起了解一下它们有什么不同的地方: var ag = angular.module("myApp",[]);
2016-09-30 15:11:00 10995
原创 你真的了解z-index属性了吗?
在编码的过程中,我们常常用z-index去控制元素的层叠顺序.那么我们真的了解它了吗?z-index的语法:(参考W3C文档) 属性 值 Value auto integer inherit Initial auto Applies to positioned elements Inherited no Percentages N/A Media
2016-08-24 14:37:32 6347 1
原创 Requirejs---菜鸟入门
Requirejs知道这个东西,但是没有去用过“,其实很久就想去用这个东西来模块化开发,奈何把时间放到其他地方去了。这两天也去看了一下文档。所以今天在这里写下自己的想法。首先我来个demo代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">
2016-07-30 00:06:57 878
原创 XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结。
之前就了解过这方面的知识,但是没有系统地总结。今天在这总结一下,也让自己在接下来的面试有个清晰的概念。XSS跨站脚本攻击: xss 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)缩写混淆,所以将跨站脚本攻击缩写为xss。Xss是攻击者在web页面插入恶意的代码。当用户浏览该页面的时候,代码执行,从而实现攻击目的
2016-07-19 20:19:38 19109 5
原创 用setTimeout()方法来模拟setInterval()与setInterval()之间的什么区别?
对于setTimeout()跟setIntervl()之间的区别,你真的了解么?有时候看似简单的东西,往往隐藏一些你不知道的细节。setTimeout(fn,time)是超时调用,它在大于等于time之后调用fn;而setIntervl(fn,time)是间歇调用;每隔time调用一次。下面我要讲的是:用setTimeout()方法来模拟setInterval()与setInterval()之间的什
2016-07-08 17:32:22 13712 1
转载 为什么javascript是单线程?
今天面试的时候,面试官问了我这个问题,为什么javascript是单线程的?我的脑袋瞬间蒙了,我从单线程跟多线程的区别来回答:比如多线程要考虑线程之间的资源抢占,死锁,冲突之类的。回到学校后我就去找这个问题的答案。下面分享一篇来自阮一峰老师的博客,原文地址:http://www.ruanyifeng.com/blog/2014/10/event-loop.html一、为什么JavaScript是单线
2016-07-08 16:27:49 29458 6
原创 javascript中的变量提升和函数提升
变量提升是指函数中的所有变量声明会在函数执行时被“提升”至函数体顶端。javascript的执行环境构建分为声明阶段和执行阶段。在声明阶段javascript引擎会为所有的变量和函数声明创建标识符。可以将此阶段看作是运行环境的前期配置.到了执行阶段,函数均已被定义,但是所有变量的值均未定义。var x=1;(function(){ consolel.log(x); var x=2
2016-06-30 14:53:33 361
原创 Web客户端存储
客户端存储有以下几种方式: 1.web存储(localStorage&&sessionStorage) 2.cookie 3.IE User Data 4.离线web应用 5.web数据库 6.文件系统API下面我主要是总结一下localStorage,sessionStorage,cookie,IE User Data的知识点,在平时的项目中,有时候会用到这些
2016-06-20 11:36:24 543
原创 谈谈javascript中设计模式第一篇
最近看了一本《Javascript设计模式与开发实践》;这本书写的很不错,书中举的例子也很通俗易懂。一早就想抽点时间写写的从中的感悟,好像也拖了好久了,什么课程设计呀,考试啦。今天终于静下来了。首先我们来谈谈满大街都是的-单例模式: 单例模式的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式虽然简单,但是在javascript这种弱类型的语言中却又着举足轻重的地位;它可
2016-06-01 23:36:14 978
原创 在webstorm中怎么配置本地服务器
前端IDE有挺多的,比如Dreamwear,Hbuilder,Webstorm;还有许多纯文本编辑器。不过我还是比较喜欢Webstorm。因为webstorm自带了一个本地服务器。如果你把项目放到本地服务器,比如tomcat,就会出现一个跨域的问题。而你有不想copy来copy去,当然,如果你想,也是可以的。我们还可以在Webstorm中配置本地服务器。Settings 配置本地服务器,配置本
2016-05-05 12:31:13 47613 1
原创 用javascript实现图片上传并预览
最近在开发的过程中遇到了一个图片上传并预览的问题。其实这问题不难。chrome,FF,IE10+可以用FileReader来实现。IE9-可以用css的滤镜来实现。一开始我也是这样干了。但是测试的时候ie9-老是显示不了图片。我以为是方法出现问题。于是找度娘,找谷歌;几乎都是这样实现的。搞了好久,都不知哪出问题了。最后才发现是测试的出现问题。我用IE-test来测试,还有IE11的仿真,其实这些都是
2016-04-28 17:34:58 14518 3
原创 归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的算法思想: 假设初始系列有n个待排序的记录,则可以看成n个有序的子序列,每个子序列长度为1;然后两两归并,得到n/2个长度
2016-04-19 15:31:34 410 2
原创 堆排序
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。 堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆) 情形2:ki >= k2i 且ki >
2016-04-18 18:45:57 312
原创 希尔排序
希尔排序实质上是一种分组插入方法;比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比[2] 较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一
2016-04-17 17:34:00 354 1
原创 直接插入排序
直接插入排序(Insertion Sort)是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。直接插入排序的思想是: 在一个待排序的系列A[n] (n=0,1,2,3,4….n)中,默认A[i](i=0)为有序的,然后第i+1个记录,从后面向前扫描,找到合适的位置插入,然后合适位置后的元素往后移动。直接插入排序是一种稳定的排序算法;需要
2016-04-17 10:50:39 290
原创 简单选择排序
简单选择排序的基本思想是每一趟在n-i+1(i=0,1,2….n-1)个记录中选择关键字最小的记录作为有序系列的第i个记录。最大的特点是交换移动数据的次数相当少。 1. 简单选择排序的时间复杂度:O(n^2); 2. 简单选择排序是稳定的排序算法,不需要额外的空间。算法实现:#include <stdio.h>#include <stdlib.h>void simpleSelectSort
2016-04-17 00:02:30 370
原创 冒泡排序
冒泡排序(Bubble Sort): 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。是一种稳定和不需要额外空间的排序算法算法原理 1. 比较相邻的元素,如果第一个比第二个大,就交换,最后一个就是最大的元素; 2. 对剩余的n-1个元素重复1的步骤,又把第二大冒的倒数第二的位置,以此
2016-04-15 19:08:37 806
原创 快速排序
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。下面是本人的自己的总结:快速排序是一种不用额外空间的排序算法,操作的自己本身。要注意的是快速排序不是一种稳定的排序算法。快速
2016-04-15 10:50:24 342
原创 用css实现垂直水平居中的几种方法
1.用line-block和vertical-align来实现居中:这种方法适合于未知宽度高度的情况下。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #container{ text-align: c
2016-04-12 11:01:27 14033
原创 javascript 模板引擎:artTemplate-3.0
artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>test arTemplate</title>
2016-03-31 16:44:47 1647
原创 Js数组组合输出
请编写一个函数,接受一个数组,输出该数组中的元素可以组成所有不同两两组合,让输入array(1,2,3)输出array(1,2),array(1,3),array(2,3);function array(){ var arr=[]; for(var i=0;i<arguments.length;i++){//除重复元素 if((arr.indexOf(argumen
2016-03-22 21:16:54 1696
转载 理解javascript中this关键字---转载
跟别的语言大相径庭的JavaScript 的this 总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑定的,而非函数被声明时的环境。除去不常用的with 和eval 的情况,具体到实际应用中,this 的指向大致可以分为以下4 种。作为对象的方法调用。 var obj={ name:"yang", getName:function(){
2016-03-12 17:10:28 627
原创 javascript中的数组
javascript是一门弱类型语言,javascript中的数组跟强类型的语言,如java中的数组有很大的不同。javascript中的数组是无类型的;数组元素可以是任意类型的。javascript数组是动态的,根据需要它们会增长或缩减,并且在创建数组是无须声明一个固定大小或者在数组大小变化时无须重新分配空间。javascript数组可能是稀疏的;数组元素的索引不一定是连续的,它们之间可能有空
2016-03-09 17:09:12 710
原创 javascript中的AJAX
Ajax 技术的核心是XMLHttpRequest 对象(简称XHR),这是由微软首先引入的一个特性,其他 浏览器提供商后来都提供了相同的实现。IE7+、Firefox、Opera、Chrome 和Safari 都支持原生的XHR 对象在IE的老浏览器中可能会遇到三种不同版本的XHR 对象,即MSXML2.XMLHttp MSXML2.XMLHttp.3.0 和MXSML2.XMLHttp.
2016-03-08 19:39:28 521
原创 javascript中的BOM知识点总结
javascript中的BOM知识点总结BOM的核心对象是window,window是一个Global对象,因此在全局作用域中定义的变量,函数都都会变成window对象的属性和方法. var age=29; function sayAge(){ alert(" this.age"); } alert(window.age);//29 sayA
2016-03-05 01:49:08 595
原创 在客户端验证表单
在客户端验证表单的时候,不能用submit按钮阻止默认事件,要阻止表单提交就要在表单上阻止sumint事件; 注册页面 用户名:*
2015-12-04 22:53:44 602
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人