09 2013 档案
摘要:一. 题目英文原文地址:http://dmitry.baranovskiy.com/post/91403200其中有五段小代码,用来测试是否理解JavaScript的核心(core),闭包(closures)和作用域(scopes)。先尝试回答每段代码中alert语句的结果,然后再作实践检查。if (!("a" in window)) { var a = 1;}alert(a);第一题解析var a = 1, b = function a(x) { x && a(--x); };alert(a);第二题解析function a(x) { return x .
阅读全文
摘要:Document Object Model (DOM) Level 3文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。DOM3通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包扩XML Infoset、 XPath、和XML Base。Java API:org.w3c.dom,
阅读全文
摘要:一. 背景System.getenv(String)方法继续有效;增加了新的System.getenv()方法,返回保存环境变量的Map。同时增加了以纳秒为计量单位的时间表示法nanoTime()。二. 示范代码 @Test public void testSystem() { long currentTime = System.currentTimeMillis(); long nanoTime = System.nanoTime(); System.out.println(currentTime + "|" + nanoTime); ...
阅读全文
摘要:java.lang.Thread类增强特性如下:线程优先级已经更改。java.lang.Thread.MIN_PRIORITY = 1java.lang.Thread.NORM_PRIORITY = 5java.lang.Thread.MAX_PRIORITY = 10为查询执行线程的状态提供了新的Thread.State枚举类及getState()方法。线程类增加了新的dump方法-getStackTrace()和getAllStackTraces(),为获取当前线程或者是所有线程的stack trace提供了编程的方法。以前只在ThreadGroup类中提供的uncaughtExcep..
阅读全文
摘要:1. 环境1). Windows 7 64位版本2). VMware 9.0.2版本3). 奶瓶1.2.3版本(beini-1.2.3.iso)2. 安装2.1 安装方式一将beini-1.2.3.iso用诸如UltraISO之类的软件刻录成自启动U盘;然后设置电脑从U盘启动,这样就能进入奶瓶系统。优点,实现非常简单。缺点,抓包的时候电脑干不了别的事情。2. 安装方式二第一步,安装一空的XP虚拟机,参考:Windows 7下面安装VMware、Windows XP,记住,不需要安装XP的软件,只需要一个运行环境即可。第二步,设置XP为从光盘启动,参考:设置XP从光盘启动。第三步,设置XP虚拟机
阅读全文
摘要:1. 描述Arrays工具类提供了针对数组(Array)的一些操作,比如排序、搜索、将数组(Array)转换列表(List)等等,都为静态(static)方法:binarySearch - 使用二进制搜索算法来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据指定的比较器(通过上面的 Sort(Object[]、Comparator) 方法)对数组进行升序排序。deepToString - 返回指定嵌套(多维)数组的字符串表示形式。equals -判断两个数组是否相等fill -给数组赋值sort -对数组进行排序,有多种实现。可以自定义比较器,可以自定义排序起止位置。toString
阅读全文
摘要:1. 要求对列表(List)中的自定义对象,要求能够按照对象的属性(字段)进行排序(正序、倒序)。如:用户对象(Member)有用户名(username)、级别(level)、出生日期(birthday)等字段,要求可以分别对它的三个字段进行排序。2. 实现思路1. 对于自定义对象,可以在自定义对象中实现Comparable接口,然后再调用Collections.sort的方法实现排序,只能是针对一个属性(字段),维持一个顺序;要实多字段任意选择一个排序,同样需要通过调用Collections.sort(List list, Comparator c)方法,传进一个Comparator来实现。
阅读全文
摘要:集合框架在JDK1.5中增强特性如下:一. 新语言特性的增强泛型(Generics)- 增加了集合框架在编译时段的元素类型检查,节省了遍历元素时类型转换代码量。For-Loop循环(Enhanced for loop)- 节省了遍历集合中显式iterators的调用。自动装箱/拆箱(Autoboxing/unboxing)- 自动将基本类型及其包装类之间进行互相转换。更多阅读:JDK1.5新特性,语言篇二. 增加了三个新的接口Queue- 队列接口,除了基本的集合操作外,它还提供了额外的插入、提取和检查操作。Queue使用时要尽量避免Collection的add()和remove()方法,而是
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。 JDK1.5版本中,加入java.uill.concurrent包,其中包含
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。 JDK1.5版本中,加入java.uill.concurrent包,其中包含
阅读全文
摘要:java.util.concurrent, java.util.concurrent.atomic,和java.util.concurrent.locks 包提供了高性能的、可扩展的框架,保证开发并发类库与程序的线程安全性;诸如:线程池、线程安全的集合、各种同步器、任务计划框架、任务同步工具、原子变量、锁等等。此包将程序员从以前手写此类代码的环境中解放出来,就像集合框架为数据结构做的事一样。额外的,此包提供了低级别的原生调用以适应高级应用开发。详细参考:《Java Concurrency》读书笔记,使用JDK并发包构建程序更多内容:有关Java Concurrency的全部文章
阅读全文
摘要:1. java.util.concurrent概述JDK5.0以后的版本都引入了高级并发特性,大多数的特性在java.util.concurrent包中,是专门用于多线并发编程的,充分利用了现代多处理器和多核心系统的功能以编写大规模并发应用程序。主要包含原子量、并发集合、同步器、可重入锁,并对线程池的构造提供了强力的支持。原子量,是定义了支持对单一变量执行原子操作的类。所有类都有get和set方法,工作方法和对volatile变量的读取和写入一样。并发集合,是原有集合框架的补充,为多线程并发程序提供了支持。主要有:BlockingQueue,ConcurrentMap,ConcurrentNa
阅读全文
摘要:1. 背景类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。当在运行不对称的活动时很有用。比如说,一个线程向buffer中填充数据,另一个线程从buffer中消费数据;这些线程可以用Exchange来交换数据。这个交换对于两个线程来说都是安全的。2. 示范代码package com.clzhang.sample.thread;import java.util.*;import java.util.concurrent.Exch
阅读全文
摘要:1. 背景CountDownLatch类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置。2. 示范代码下面代码示范了如果扑克游戏一桌人都到齐了,则翻底牌:package com.clzhang.sample.thread;import java.util.*;import java.util.concurrent.Co
阅读全文
摘要:1. 背景CyclicBarrier类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。2. 示范代码下面这段代码演示了打扑克游戏,够4个人则开桌,共计开5桌:package com.clzhang.sample.thread;import java.util.concurrent.BrokenBarrierException;import java.util.
阅读全文
摘要:1. 背景类java.util.concurrent.Semaphore提供了一个计数信号量。通过Semaphore类,可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。Semaphore的构造函数中带有一个fairness的参数,用于设置是否“公平”。当fairness为true时,Semaphore保证各线程以后进先出(FIFO)的方式获得信号量。如果fairness为false,则不保证这种顺序。2. 示范代码下面这段代码演示了某种资源只限于5个线程访问:package com.clzhang.sample.
阅读全文
摘要:1. 什么是线程安全性调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通常称为不稳定状态),等到操作完全结束,该对象才会重新回到完全可用的状态。如果其他线程企图访问一个处于不可用状态的对象,该对象将不能正确响应从而产生无法预料的结果,如何避免这种情况发生是线程安全性的核心问题。一个类在可以被多个线程安全调用时就是线程安全的。类要成为线程安全的,首先必须在单线程环境中有正确的行为。正确性与线程安全性之间的关系非常类似于在描述ACID(原子性、一致性、独立性和持久性)事务时使用的一致性与独立性之间的关系:从特定线程的角度看,由不同线程所执行的对象操作是先后(虽然顺序
阅读全文
摘要:1. 基本概念程序,是一组有序的静态指令,是一种静态的概念。程序的封闭性是指程序一旦运行,其结果就只取决于程序本身;程序的再现性是指当机器在同一数据集上重复执行同一程序时,机器内部的动作系列完全相同,最后获得的结果也相同。进程,是一种活动,它是由一个动作系列组成,每个动作是在某个数据集上执行一段程序,整个活动结果是提供一处系统或用户功能。进程一般由三部分组成:程序、数据集合、进程控制块(PCB)。进程具有并发性和不确定性。线程,是一个进程内部的顺序控制流。线程本身不能独立运行,必须在进程中执行,使用进程的地址空间。一个进程内部包含多个顺序控制流,或者并发执行多种运算,就是多线程。创建进程的高消
阅读全文
摘要:一. 背景这是一个简单的文本扫描类,能够解析基本数据类型与字符串。它是StringTokenizer和Matcher类之间的某种结合。最大的优点是读取控制台输入非常方便,其它功能,有点鸡肋。二. 示范代码package com.clzhang.sample.thinking;import java.util.*;import org.junit.Test;public class JDK15Scanner { @Test public void testScanner() { // 主要功能,读取控制台输入 Scanner scanner1 = new ...
阅读全文
摘要:一. 背景ProcessBuilder类是用来创建操作系统进程的。与Runtime.exec相比,它提供了更加方便的方法以创建子进程。每个ProcessBuilder实例管理着一个进程属性的集合。start()方法用这些属性创建一个新的Process实例。start()方法可以从同一个实例重复调用(可以更改属性值后再调用)。每个ProcessBuilder实例管理着进程的如下属性:一条命令(a command),可以用List来表示,也可以用变长字符串。命令后面的参数与命令合并在一起。如:“cmd /c dir”,可以拆分为三个字符串,也可以放到一个List中。一个运行环境(an enviro
阅读全文
摘要:Formatter类提供了对布局对齐和排列的支持,以及对数值、字符串和日期、时间数据的常规格式和特定于语言环境的输出的支持。通用Java类型,诸如byte、BigDecimal和Calendar都被支持。Java语言格式化后的字符串很像C语言的printf函数,但比C语言严谨,比如,C语言忽略无效参数,而Java则会抛出异常。同时它也不是为多线程设计的,程序员需要自己考虑同步的问题。一. 语法1. 常规类型、字符类型和数值类型的格式说明符语法如下:%[argument_index$][flags][width][.precision]conversion 2. 用来表示日期和时间类型的格式说明
阅读全文
摘要:Java 1.5版本,就是Java 2 Standard Edition 5,Version 1.5,简称Java 5。版本代号Tiger。一. 泛型(Generics)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。泛型提供一种途径,让你告诉编译器容器中存放的是什么,这样它就可以做一些检查工作。不符合规则的情况下,编译是通不过的。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。 @Test publ...
阅读全文
摘要:排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关键字R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。排序算法分类常见的有插入(插入排序/希尔排序)、交换(冒泡排序/快速排序)、选择(选择排序)、合并(归并排序)等。一.插入排序插入排序(Insertion Sort),它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到
阅读全文
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写,同时也方便机器进行解析和生成。对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。 官网:http://json.org/json-zh.html 1. JS
阅读全文
摘要:以下内容根据网上资源整理而来,主要来源是CSDN一个供下载的check.js,源码地址找不到了。1. 检查输入字符串是否为空或者全部都是空格/*检查输入字符串是否为空或者全部都是空格输入:str 输入的字符串返回:如果全是空返回true;否则返回false*/function isNull(str) { if (str == "") return true; var regexp = "^[ ]+$"; var regObj = new RegExp(regexp); return regObj.test(str);}2. 检查输入对象的值是否符合Ema
阅读全文
摘要:1. RegExp是什么?对象表示正则表达式,它是对字符串执行模式匹配的强大工具。2. 如何创建RegExp?2.1 直接量语法/pattern/attributes2.2 创建RegExp 对象的语法new RegExp(pattern, attributes);2.3 参数参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",具体含义参考“修饰符”节。2.4 示范var reg1 = /'\w+'/g;var
阅读全文