[转]Javascript模块化编程(二):AMD规范

来自阮一峰http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块。(接上文)七、模块的规范先想一想,为什么模块很重要?因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!考虑到Javascript模块现在还没有官方规范,这一点就更重要了。目前,通行的Javascript模块规范共有两种:CommonJS和AMD。我主要介绍AMD,但是要先从CommonJS讲起。八、CommonJS2009年,美国程序员RyanDahl创造了node.js项目,将javascript语言用于服务器端编程。这标志"Javascript模块化编程"正式诞生。因为老实说,在浏览器环境下,没有模块也不是特别大的问题,毕竟网页程序的复杂性有限;但是在服务器端,一定要有模块,与操作系统和其他应用程序互动,否则...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

[转]Javascript模块化编程(一):模块的写法

来自阮一峰http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等......开发者不得不使用软件工程的方法,管理网页的业务逻辑。Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,Javascript不是一种模块化编程语言,它不支持"类"(class),更遑论"模块"(module)了。(正在制定中的ECMAScript标准第六版,将正式支持"类"和"模块",但还需要很长时间才能投入实用。)Javascript社区做了很多努力,在现有的运行环境中,实现"模块"的效果。本文总结了当前"Javascript模块化编程"的最佳实践,说明如何投入实用。虽然这不是初级教程,但是只要稍稍了解Javascript的基本语法,就能看懂。一、原始写法模块就是实现特定功能的一组方法。...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

javaweb开发环境搭建

概要 1.SSH开发相关软件及开发包下载2.软件安装及相关设置3.最简单的Web程序1.软件下载 在D盘建一个目录JavaTools,用来存放下载的软件和开发包。(本教程将使用D盘,你也可以使用C盘或E盘)。下载软件的原则,有Zip版的不下载exe版的。1)JDK:JDK6Update7Windows版 下载页面:http://java.sun.com/javase/downloads/index.jsp 下载链接:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter;pgid=yYdgaHqkkjVSR0EUPIQsoQ3D0000o_tQgoGy;sid=AeftgEasIkTtgQ4qZlGlhakFzl2YCYvpVAUiQVuyc5IGAw== 更多信息:http://java.sun.com2)IDE:EclipseI...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

Java并发编程: 使用Exchanger实现线程间的数据交换

本文介绍Exchanger工具类,然后采用Exchanger给出一个两个线程交换数值的简单实例。1.Exchanger介绍/***Asynchronizationpointatwhichtwothreadscanexchangeobjects.*Eachthreadpresentssomeobjectonentrytothe{@link#exchange*exchange}method,andreceivestheobjectpresentedbytheother*threadonreturn.*/从上面的注释中可以看出:Exchanger提供了一个同步点,在这个同步点,两个线程可以交换数据。每个线程通过exchange()方法的入口提供数据给另外的线程,并接收其它线程提供的数据,并返回。Exchanger通过Lock和Condition来完成功能,Exchanger的一个重要的public方法是exchange方法,用于线程的数据交换,相关的类图以及详细的Exchanger类内容如下:packagejava.util.concurrent;importjava.util.concur...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

Java并发编程: Volatile不能保证数据同步

在本篇博文中,将给出一个实例去验证volatile修饰的变量并不能保证其数据同步.Java内存模型规定了所有变量都存储在主内存中,每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到变量的主内存副本拷贝,线程对变量的所有操作(读取,赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程也不能直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程,主内存,工作内存三者的交互关系如图所示。当一个变量定义成volatile之后,保证了此变量对所有线程的可见性,也就是说当一条线程修改了这个变量的值,新的值对于其它线程来说是可以立即得知的.此时,该变量的读写操作直接在主内存中完成.Volatile变量具有synchronized的可见性特性,但是不具备原子特性。Volatilevariablessharethevisibilityfeaturesofsynchronized,butnoneoftheatomicityfeatures.虽然增量操作(x++)看上去类似一个单独操作,实际上它是一个由读取-修改-写入操作序列组成的组合操作,必须以原子方式...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

Java并发编程: 使用CountDownLatch协调子线程

本文将介绍CountDownLatch工具类,并采用这个工具类给出一个实例。1.CountDownLatch工具类介绍CountDownLatch是一个同步工具类,它允许一个或多个线程处于等待状态直到在其它线程中运行的一组操作完成为止。CountDownLatch用一个给定的计数来实现初始化。Await方法会一直处于阻塞状态,直到countDown方法调用而使当前计数达到零。当计数为零之后,所有处于等待的线程将被释放,await的任何后续调用将立即返回。这种现象只出现一次,计数是不能被重置的。如果你需要一个可以重置计数的版本,需要考虑使用CyclicBarrie.上面的介绍来自于CountDownLatch类的注释。/***Asynchronizationaidthatallowsoneormorethreadstowaituntil*asetofoperationsbeingperformedinotherthreadscompletes.**<p>A{@codeCountDownLatch}isinitializedwithagiven[i]count[/i].*The...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

【java】HashMap详解

 HashMap和HashSet是JavaCollectionFramework的两个重要成员,其中HashMap是Map接口的常用实现类,HashSet是Set接口的常用实现类。虽然HashMap和HashSet实现的接口规范不同,但它们底层的Hash存储机制完全一样,甚至HashSet本身就采用HashMap来实现的。 通过HashMap、HashSet的源代码分析其Hash存储机制实际上,HashSet和HashMap之间有很多相似之处,对于HashSet而言,系统采用Hash算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素;对于HashMap而言,系统key-value当成一个整体进行处理,系统总是根据Hash算法来计算key-value的存储位置,这样可以保证能快速存、取Map的key-value对。在介绍集合存储之前需要指出一点:虽然集合号称存储的是Java对象,但实际上并不会真正将Java对象放入Set集合中,只是在Set集合中保留这些对象的引用而言。也就是说:Java集合实际上是多个引用变量所组成的集合,这些引用变量指向实际的Java对象...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

【Java】产生随机数的方式小结

 引用一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有。 二.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法。三.在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦 其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的 对于方法二中的Random类有以下说明: java.util.Random类有两种方式构建方式:带种子和不带种子 不带种子: 此种方式将会返回...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

有趣的JavaScript原型链

原文地址:http://www.mollypages.org/misc/js.mp 所有的实例对象都继承了创建它们的构造函数的原型对象。Mozilla/Konqueror浏览器实现了一个特殊的__proto__属性来指向构造函数(用来创建属于该原型对象类型的实例对象的函数)的原型对象。别去纠结有没有这么一个小小的__proto__属性,我们的思路就是要所有的实例对象能够使用它们的构造函数所指向的原型对象。这个属性是prototype,它是JavaScript标准的一部分。prototype对象默认都有一个constructor属性反向指向了以该prototype对象作为原型的构造函数。prototype对象只为构造函数创建出来的实例对象继承属性所用,构造函数自己却并不使用它(但既然该构造函数自己也是一个对象,那么它也会继承它的构造函数的原型,一般是javascript系统的Function对象)。functionFoo(){};varf1=newFoo();Foo.prototype.x="hello";f1.x//=>helloFoo.x//=>undefine...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

安装ArcGIS 9.2server插件 java环境的配置

CreateArcGISupdatesitesTheArcGISEclipseplug-inscanbeinstalledbycreatingalocalupdatesiteforeachseparateplugin. 1.FromtheEclipsemainmenu,chooseHelp>SoftwareUpdates>FindandInstall.2.ClicktheSearchfornewfeaturestoinstallbuttonandclickNext.3.Bydefault,youshouldseeseveralupdatesites. Youwilladd 3newsites:onefortheEngineplugins,onefortheServerplugins andoneforCorepluginsrequiredforboth.CorecontainstheJavaHelpSystemaswell.ToaddanArcGISupdatesite,clicktheNewLocalSitebutton.Youma...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

<转>Eclipse插件开发中的Java项目模型

http://developer.51cto.com/art/200906/130101.htm Eclipse插件开发中的Java项目模型是比较重要的内容,也是我们最长接触到的。本文将详细的为大家讲解Java项目模型。 Java项目模型Eclipse的项目有很多种,包括Java项目、C++项目、C#项目等,每种项目都有自己的特点。我们最常接触到的项目就是Java项目,因此我们重点来讲解一下Java项目模型。Java模型是用来对与创建、编辑和构建Java程序相关联的对象进行建模的一些类。Java模型类是在org.eclipse.jdt.core中定义的。这些类实现资源的特定于Java的行为,并进一步将Java资源分解成模型元素。 Java模型的继承结构图如图3.13所示。图3.13 Java模型的继承结构图IJavaElement的子类接口还有IMethod、IType等,在这里没有全部列出。Java模型中的类结构比较简单,级次也非常少。下面介绍一下各个接口的主要方法。(1)  IJavaElementexists:判断元素是...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

java虚拟机垃圾回收机制

一、相关概念 基本回收算法引用计数( ReferenceCounting ) 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为 0 的对象。此算法最致命的是无法处理循环引用的问题。标记 - 清除( Mark-Sweep ) 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,同时,会产生内存碎片。复制( Copying ) 此算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另外一个区域中。次算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不过出现 " 碎片 " 问题。当然,此算法的缺点也是很明显的,就是需要两倍内存空间。标记 - 整理(&nb...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

Java集合框架比较

 数组类Array是Java中最基本的一个存储结构。它用于存储一组连续的对象或基本类型的数据。其中的元素的类型必须相同。Array是最有效率的一种:1、效率高,但容量固定且无法动态改变。Array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们Array的容量。2、Java中有一个Arrays类,专门用来操作Array,提供搜索、排序、复制等静态方法。equals():比较两个Array是否相等,Array拥有相同元素个数,且所有对应元素两两相等。fill():将值填入Array中。sort():用来对Array进行排序。binarySearch():在排好序的Array中寻找元素。System.arraycopy():Array的复制。JavaCollectionsFramework成员主要包括两种类型,即:Collection和Map类型。在Java中提供了Collection和Map接口。其中List和Set继承了Collection接口;Vector、ArrayList、LinkedList三个类实现List接口,HashSet、TreeSet实...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

<转>java注解实例

java注解实例2009-08-1011:27Java代码packageTest_annotation;    importjava.lang.annotation.Documented;  importjava.lang.annotation.Inherited;  importjava.lang.annotation.Retention;  importjava.lang.annotation.Target;  importjava.lang.annotation.ElementType;  importjava.lang.annotation.RetentionPolicy;    /**元注解@Target,@Retention,@Documented,@Inherited**     @Target表示该注解用于什么地方,可能的ElemenetTyp...
当地较为有名的狠人 当地较为有名的狠人·2020-03-29

JavaScript给动态插入的元素添加事件绑定

由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数。我们知道,用Javascript向HTML文档中插入内容,有两种方法,一种是在写HTML代码写入JS,然后插入到文档中;另外一种是通过ajax的方式,从服务器获取数据,然后用js把获取的数据经过处理后插入文档中;两种方法各有特点,本文将分析新插入到文档中的元素的事件绑定问题,并假定新插入的对象不做内联的事件绑定(即不用类似<aonclick=””>的形式)。所有的示例将会用到jQuery和原生Javascript。<body><p>第1行内容</p><p>第2行内容</p><p>第3行内容</p><script>varappendhtml=document.createElement("p");appendhtml.innerHTML="这是插入的内容";document.body.appendChild(appendhtml);varnodep=document.g...
首页上一页...555556557558559...下一页尾页