JavaScript闭包
JavaScript的作用域JavaScript 的作用域有两种
全局作用域
函数作用域
与其他语言不同的是,JavaScript 没有块级作用域,参考以下程序
if (true) { var x = 1;}console.log(x); // 1
上面的变量 x 定义在 if 的语句块中,在其他的语言中,x 在语句块外是访问不到的,但是由于 JavaScript 没有块级作用域,所以变量 x 是全局变量,所以在语句块外也可以被访问到。
注意:
上面的讨论是基于 ES5 的,在 ES6 中,通过关键字 let 或 const 声明的变量,可以实现块级作用域的效果
if (true) { let x = 1;}console.log(x); // not defined
JavaScript 作用域链JavaScript 作用域链指的是查找变量的顺序,比如下面的程序
var i = 1;function foo() { var i = 2; function bar() { var ...
从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表节点定义如下:
private static class ListNode { private int value; private ListNode next; public ListNode(int value) { this.value = value; }}
如果只是反过来打印节点的值,那么很简单,只要遍历链表,将节点的值 push 到一个栈里面,因为栈的特点是后进先出,所以最后我们遍历栈,达到的效果就是将链表从尾到头打印,如下
public static void printListReverse(ListNode root) { if (root == null) { return; } Stack<Integer> stack = new Stack<>(); ListNode cur = root; // 遍历链表 将值 ...
二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
首先将这个二维数组看做是一个矩阵,考虑这么一个思路,首先在矩阵中选取一个数,如果要查找的数大于这个数,那么该数应该在选取数字的下方或者右方,如果该数小于选取的数,那么这个数应该在选取数字的上方或者左方,无论怎样,查找的数都会在选取位置的两个区域都出现,并且这两个区域有重叠的部分,这使得问题较为复杂,
现在不妨换一种思路,我们从右上角开始进行查找,如果查找的数比右上角的数小,那么该数只可能在左方,如果查找的数比右上角大,那么该数只可能在下方,查找的数都只会在一个区域出现,要么在左方,要么在下方,每一次查找都会使得查找的区域变小,下面以查找数字5为例
代码如下
public class Test { public static boolean findInMatrix(int[][] matrix, int number) { boolean fou ...
jQuery系统教程
本篇文章是在完整学习 jQuery 以后,系统整理的教程,大纲如下
jQuery 的核心函数 $, jQuery
操作 jQuery 集合
操作 DOM 元素的属性和类属性
操作样式
操作 DOM 元素(添加,删除…)
jQuery 事件
jQuery 显示与隐藏
jQuery 动画
jQuery 扩展及实用函数
Ajax
jQuery核心函数jQuery 这个库中最重要的就是它提供的核心函数 jQuery() ,它提供了非常强大的功能,因为这个函数用的十分的频繁,所以提供了 jQuery() 的别名,那就是 $() ,在后面的演示中都将会以 $ 为例,现在我们来看一下该核心函数提供了哪些功能
选择多个 DOM 元素
将 HTML 字符串得解析为一个 DOM 元素
作为入口函数
将 DOM 元素转换为 jQuery 集合
上面有些名词可能没有听过,这里只是感性了解一下,下面就具体讲解。
选择元素考虑下面的 DOM 结构
<div id="box"></div><div class="container"> ...
使用before和after实现一个hover遮罩效果
今天开始学习CSS效果,记录一下,成品如下
实现的思路很简单,使用到了::before和::after两个伪元素,默认两个伪元素的width为0,height与父元素的高度相同,当鼠标放上去时,伪元素的width变为100%,注意到两个伪元素变化的方向不一样,因为::before被设置为了
top: 0;left: 0;
而::after被设置为
bottom: 0;right: 0;
talk is cheap, show me the code,直接上代码吧
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <st ...
数组中的重复的数字
题目一:找出数组中重复的数字
在一个长度为n的数组里的所有数组都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数组2或者3。
考虑如果没有数组中没有重复的数字,那么排序后会有arr[i] = i(因为元素在 0~n-1 的范围内),那么现在我们遍历数组,让第i个位置的元素的值为i(从0开始),做法是当arr[i] != i的时候,与第arr[i]的位置进行交换,这样可以使得第arr[i]个位置上的数是arr[i],即arr[arr[i]] = arr[i]
int temp = arr[i];arr[i] = arr[temp];arr[temp] = temp;
如果有重复的数,由于arr[arr[i]]位置上的数已经被占了,所以这个时候我们就知道有重复的数,算法如下
public class Test01 { public static boolean duplicate(int ...
单例模式
题目:设计一个类,我们只能生成该类的一个实例。
如果只能生成一个实例,这意味着构造方法必须为私有的,该类实例的创建不能由用户创建,一个容易想到的版本如下
public class Test01 { private Test01() { } private static Test01 instance; public static Test01 getInstance() { if (instance == null) { instance = new Test01(); } return instance; } public static void main(String[] args) { Test01 one = Test01.getInstance(); Test01 two = Test01.getInstance(); System.out.print ...
JavaScript中的冒泡与捕获
JavaScript中的冒泡与捕获首先来看一个例子来明白什么是冒泡和捕获,来看下面的一个html结构
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> .outer { width: 200px; height: 200px; background-color: black; margin: 100px auto; } .inner { width: 100px; height: 100px; background-color: greenyellow; } < ...
SSM整合
在学习完Spring, SpringMVC, MyBatis三大框架后,现在将记录如何整合这三个框架。
准备工作首先新建一个Maven工程,在pom.xml中导入以下包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version></dependency><dependency> <groupId>org.springfram ...
Spring MVC笔记
本片文章是我记录学习 Spring MVC 的学习笔记,作为初学者,对于这个框架的理解可能并不深刻,所以这篇文章主要讲述的是 Spring MVC 框架的使用,所以对于有些内容为什么要这么做,这么做有什么好处,由于才疏学浅,却不是我能解释的,所以本篇文章以代码偏多,文字解释偏少。
Hello Spring MVC先简单的的把 Spring MVC 用起来,然后在解释一下 Spring MVC 的用法。首先在 pom.xml 中导入需要的包
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.0.RELEASE</version> </dependency> <dependency> <groupId> ...