java1.5新特性

java1.5新特性
java1.5新特性

2.For-Each循环

For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:

1 void processAll(Collection c){

2 for(Iterator i=c.iterator(); i.hasNext();){

3 MyClass myObject = (MyClass)i.next();

4 myObject.process();

5 }

6 }

使用For-Each循环,我们可以把代码改写成:

1 void processAll(Collection c){

2 for (MyClass myObject :c)

3 myObject.process();

4 }

这段代码要比上面清晰许多,并且避免了强制类型转换。

3.自动装包/拆包(Autoboxing/unboxing)

自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

自动装包:基本类型自动转为包装类.(int >> Integer)

自动拆包:包装类自动转为基本类型.(Integer >> int)

在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。

1 int a = 3;

2 Collection c = new ArrayList();

3c.add(a);//自动转换成Integer.

4 Integer b = new Integer(2);

5c.add(b + 2);

这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.

4.枚举(Enums)

JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu.我们可以这样来定义一个枚举类型。

1 public enum Color

2 {

3 Red,

4 White,

5 Blue

6 }

然后可以这样来使用Color myColor = Color.Red.

枚举类型还提供了两个有用的静态方法values()和valueOf().我们可以很方便地使用它们,例如

1 for (Color c : Color.values())

2 System.out.println(c);

5.可变参数(Varargs)

可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,

util.write(obj1);

util.write(obj1,obj2);

util.write(obj1,obj2,obj3);

在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了

1 public void write(Object... objs) {

2 for (Object obj: objs)

3 System.out.println(obj);

4 }

在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),现在我们可以这样写了

c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。

6.静态导入(Static Imports)

要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。

import static https://www.360docs.net/doc/1d16407129.html,ng.Math.*;

…….

r = sin(PI * 2); //无需再写r = Math.sin(Math.PI);

不过,过度使用这个特性也会一定程度上降低代码地可读性。

二.重点讲一下泛型

在已发布的Java1.4中在核心代码库中增加了许多新的API(如Loging,正则表达式,NIO)等,在最新发布的JDK1.5和即将发布的JDK1.6中也新增了许多API,其中比较有重大意义的就是Generics(范型)。

1.什么是Generics?

Generics可以称之为参数类型(parameterized types),由编译器来验证从客户端将一种类型传送给某一对象的机制。如Java.util.ArrayList,编译器可以用Generics来保证类型安全。

在我们深入了解Generics之前,我们先来看一看当前的java集合框架(Collection)。在j2SE1.4中所有集合的Root Interface是Collection

Collections example without genericity: Example 1

2 ArrayList list = new ArrayList();

3 list.add(new String("test string"));

4 list.add(new Integer(9)); // purposely placed here to create a runtime ClassCastException

5 inspectCollection(list);

6 }

7

8

9 protected void inspectCollection(Collection aCollection) {

10 Iterator i = aCollection.iterator();

11 while (i.hasNext()) {

12 String element = (String) i.next();

13 }

14 }

以上的样例程序包含的两个方法,collectionExample方法建立了一个简单的集合类型ArrayList,并在ArrayList中增加了一个String和一个Integer对象.而在inspecCollection方法中,我们迭代这个ArrayList用String进行Cast。我们看第二个方法,就出现了一个问题,Collection在内部用的是Object,而我们要取出Collection 中的对象时,需要进行Cast,那么开发者必需用实际的类型进行Cast,像这种向下造型,编译器无

法进行检查,如此一来我们就要冒在代码在运行抛出ClassCastException的危险。我们看inspecCollection方法,编译时没有问题,但在运行时就会抛出ClassCastException异常。所以我们一定要远离这个重大的运行时错误

2.使用Generics

从上一章节中的CassCastException这种异常,我们期望在代码编译时就能够捕捉到,下面我们使用范型修改上一章的样例程序。

//Example 2

2 ArrayList list = new ArrayList();

3 list.add(new String("test string"));

4 // list.add(new Integer(9)); this no longer compiles

5 inspectCollection(list);

6 }

7

8

9 protected void inspectCollection(Collection aCollection) {

10 Iterator i = aCollection.iterator();

11 while(i.hasNext()) {

12 String element = i.next();

13 }

14 }

从上面第2行我们在创建ArrayList时使用了新语法,在JDK1.5中所有的Collection都加入了Generics的声明。例:

//Example 3

1 public class ArrayList extends AbstractList {

2 // details omitted...

3 public void add(E element) {

4 // details omitted

5 }

6 public Iterator iterator() {

7 // details omitted

8 }

9 }

这个E是一个类型变量,并没有对它进行具体类型的定义,它只是在定义ArrayList时的类型占位符,在Example 2中的我们在定义ArrayList的实例时用String 绑定在E上,当我们用add(E element)方法向ArrayList中增加对象时,那么就像下面

的写法一样: public void add(String element);因为在ArrayList所有方法都会用String 来替代E,无论是方法的参数还是返回值。这时我们在看Example 2中的第四行,编译就会反映出编译错误。

所以在java中增加Generics主要的目的是为了增加类型安全。

通过上面的简单的例子我们看到使用Generics的好处有:

· 1.在类型没有变化时,Collection是类型安全的。

· 2.内在的类型转换优于在外部的人工造型。

· 3.使Java接口更加强壮,因为它增加了类型。

· 4.类型的匹配错误在编译阶段就可以捕捉到,而不是在代码运行时。

受约束类型变量

虽然许多Class被设计成Generics,但类型变量可以是受限的

public class C1 { }

public class C2 { }

第一个T变量必须继承Number,第二个T必须继承Person和实现Comparable

3.Generics方法

像Generics类一样,方法和构造函数也可以有类型参数。方法的参数的返回值都可以有类型参数,进行Generics。

//Example 4

1 public T max(T t1, T t2) {

2 if (https://www.360docs.net/doc/1d16407129.html,pareTo(t2) > 0)

3 return t1;

4 else return t2;

5 }

这里,max方法的参数类型为单一的T类型,而T类型继承了Comparable,max的参数和返回值都有相同的超类。下面的Example 5显示了max方法的几个约束。

//Example 5

1 Integer iresult = max(new Integer(100), new Integer(200));

2 String sresult = max("AA", "BB");

3 Number nresult = max(new Integer(100), "AAA"); // does not compile

在Example 5第1行参数都为Integer,所以返回值也是Integer,注意返回值没有进行造型。

在Example 5第2行参数都为String,所以返回值也是String,注意返回值没有进行造型。以上都调用了同一个方法。

在Example 5第3行产生以下编译错误:

Example.java:10: incompatible types

found : https://www.360docs.net/doc/1d16407129.html,ng.Object&java.io.Serializable&https://www.360docs.net/doc/1d16407129.html,parable required: https://www.360docs.net/doc/1d16407129.html,ng.Number

Number nresult = max(new Integer(100), "AAA");

这个错误发生是因为编译器无法确定返回值类型,因为String和Integer都有相同的超类Object,注意就算我们修正了第三行,这行代码在运行仍然会报错,因为比较了不同的对象。

3.通配(Wildcards)

先看以下两行代码是否合法:

List ls = new ArrayList(); // 1

List lo = ls; // 2

第一行没问题, 关键在第二行代码, 大多数人会认为, "一个String的List自然更是一个Object的List", 因此, 第2行没问题.

好, 接着看以下代码:

lo.add(new Object()); // 3

String s = ls.get(0); // 4: 试图将一个Object赋给一个String!

可见, 通过别名lo, 我们能对ls, 一个String的列表, 进行数据操作(特别是插入一个Object), 从而导致ls不仅仅是容纳了String对象! 这是Java编译器不容许的! 编译时, 第2行会报告一个编译错误的.

通常, 若Foo是Bar的一个子类型(子类或子接口), G是某个泛型声明, 则G并不是G的一个子类型.

假定要输出一个集合中的所有元素. 以下分别是旧版本及新版本(JDK 1.5)中的写法:

void printCollection(Collection c) {

Iterator i = c.iterator();

for( k = 0; k < c.size(); k++) {

System.out.println( i.next() );

}}

void printCollection(Collection c) {

for(Object e : c) {

System.out.println(e);

}}

问题在于, 新版本反而不如旧版本更有用些. 因为旧版本能使用各种类型的集合作

为参数, 但新版本则只能使用Collection. 而正如上节看到的,

Collection并不是其它各种集合的超类型(父类型).

所有集合的超类型应该写作: Collection, 读作: collection of unknown(未知集合), 即一个集合, 其元素类型可以与任何类型相匹配. 因此称这种类型为"通配类型".

正确实现上述旧版本的代码可以这么写:

void printCollection(Collection c) {

for(Object e : c) {

System.out.println(e);

}}

这时, 可以用任意类型的集合来调用此方法. 注意在方法体中, 仍然从c 中读入元素并赋给了Object, 这是没有错误的, 因此不论类型实参是何种集合, 它的元素都是object. 然而, 如果任意给它增加一个object则是不安全的:

Collection c = new ArrayList();

c.add(new Object()); // 编译时的错误

由于我们不知道c的元素类型是什么, 所以不能给它增加一个object. 方法add()接受一个类型E的参数, 而E与集合的元素类型相同. 当类型实参是?时, 它表示"未知的类型", 我们传递给add的参数必须是这个"未知类型"的子类型. 不幸的是, 既然类型未知, 也就无法决定其子类型, 于是什么也不能作为其参数. 唯一的例外是null, 因为null是所有类型的一个成员.

另一方面, 如果给了一个List, 我们可以调用get()方法并使用其返回的元素. 虽然返回的元素类型是"未知类型", 但它总归是一个object, 因此将get()返回的元素赋给一个Object类型的变量, 或将其传递给一个可接受Object的参数都是安全的.

Java2标准版(Java 2 Platform, Standard Edition, J2SE)1.5即将正式推出,这一次的版本更新不同于以往,它带来了很多里程碑式的革新,SUN将其绰号取名为“虎”。这一次的变革将是Java诞生以来从未有过的,它给我们带来了耳目一新的感觉。下面我们就来欣赏一下其中的部分典型变化:

1.自动包装和解包(Autoboxing and unboxing)

代码示例

往一个ArrayList中加入一个整数,1.5版本以前的版本写法是:

List list = new ArrayList();

list.add( new Integer( 10 ) );

而在1.5版本中可以写为:

list.add( 10 );

因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的代码只是增加了程序的文本长度而已,所以 1.5版本支持了自动包装和解包操作,对于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer,long /Long,float/Float的相应包装/解包操作都进行了支持,从而使代码变得简单。

2.更优化的循环语句(The inhanced for loop)

代码示例

一个典型的遍历数组的循环语句,1.5版本以前的写法是:

for ( Iterator iterator = list.iterator(); iterator.hasNext(); )

{

Integer n = (Integer)iterator.next();

...

}//for

而在1.5版本中可以写为:

for ( Integer n : list )

{

...

}//for

显然1.5版本的写法比以前是大大简化了,但是在需要修改集合,比如删除其中元素时不能采用这种写法。之所以Java1.5版本没有象C#那样干脆定义一个foreach 关键词,主要是因为SUN认为增加一个专门的关键词成本太高了(too costly)。但1.4版本中就曾经增加了assert关键词,1.5版本中也新增加了enum关键词,因此这一解释恐怕并不那么令人信服。

3.参数可变的方法和printf

代码示例

当不能确定一个方法的入口参数的个数时,以往版本的Java中,通常的做法是将多个参数放在一个数组或者对象集合中作为参数来传递,1.5版本以前的写法是:

int sum(Integer[] numbers)

{

int nSum = 0;

for(int i: numbers)

nSum += i;

return nSum;

}

...

//在别处调用该方法

sum(new Integer[] {12,13,20});

而在1.5版本中可以写为:

int sum(Integer... numbers)

{

int nSum = 0;

for(int i: numbers)

nSum += i;

return nSum;

}

...

//在别处调用该方法

sum(12,13,20);

显然,1.5版本的写法更为简易,也更为直观,尤其是方法的调用语句,不仅简化很多,而且更符合通常的思维方式,更易于理解。

1.5版本自身就有一个应用该特征的典型例子,即C风格的格式化输出方法——printf。

代码示例

输出一个加法算式,1.5版本以前的写法是:

int x = 5;

int y = 7;

int nSum = x + y;

System.out.println(x + " + " + y + " = " + nSum);

而在1.5版本中可以写为:

System.out.printf("%d + %d = %d/n", x, y, nSum);

以上两种写法的输出结构是一样的,即“5 + 7 = 12”。

这种改变不仅仅是形式上的,printf还可以提供更为灵活、强大的输出功能,比如限定按照两位整数的形式输出,可以写为“System.out.printf("%02d + %02d = %02d/n", x, y, nSum);”,输出结果将是“05 + 07 = 12”。

4.枚举

代码示例

构建一个表示色彩的枚举,并赋值,在1.5版本中可以写为:

public enum MyColor{ Red, Yellow, Blue }

MyColor color = MyColor.Red;

for ( MyColor mycolor : MyColor.values() )

System.out.println( mycolor );

以往的Java版本中没有enum关键词,1.5版本中终于加入了进来,这确实是一个令人高兴的改进。此外,enum还提供了一个名为values() 的静态方法,用以返回枚举的所有值的集合。所以,以上程序的输出结果是把“Red”、“Yellow”、“Blue”分行输出。

而enum提供的静态方法valueOf()则将以字符串的形式返回某一个具体枚举元素的值,比如“MyColor.valueOf(“Red”)”会返回“Color.Red”。静态方法name()则返回某一个具体枚举元素的名字,比如“https://www.360docs.net/doc/1d16407129.html,()”会返回“Red”。类似的方法还有不少。此外,enum自身还可以有构造方法。

5.静态引用

代码示例

当我们要获取一个随即数时,1.5版本以前的写法是:

import https://www.360docs.net/doc/1d16407129.html,ng.Math; //程序开头处

...

double x = Math.random();

而在1.5版本中可以写为:

import static https://www.360docs.net/doc/1d16407129.html,ng.Math.random; //程序开头处

double x = random();

静态引用使我们可以象调用本地方法一样调用一个引入的方法,当我们需要引入同一个类的多个方法时,只需写为“import static https://www.360docs.net/doc/1d16407129.html,ng.Math.*”即可。这样的引用方式对于枚举也同样有效。

6.总结

以上对J2SE1.5的部分新特征做了一些简单的介绍。总而言之,1.5版本的Java 确实给我们带来了很多令人激动的变革,如同以上介绍的那样,很多功能以前的版本也能实现,但是不能实现得这样简单、漂亮。相信这次变革会给Java带来更多的追

随者。

Java 8新特性探究(4)-类型注解 复杂还是便捷

Java 8新特性探究(4):类型注解复杂还是便捷 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷? AD: 注解大家都知道,从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什么?复杂还是便捷? 什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;java 8里面,注解可以应用在任何地方,比如: 创建类实例 new @Interned MyObject(); 类型映射 myString = (@NonNull String) str; implements 语句中 class UnmodifiableList T implements @Readonly List @Readonly T { ... } throw exception声明 void monitorTemperature() throws @Critical TemperatureException { ... } 需要注意的是,类型注解只是语法而不是语义,并不会影响java的编译时间,加载时间,以及运行时间,也就是说,编译成class文件的时候并不包含类型注解。 类型注解的作用 先看看下面代码 Collections.emptyList().add( One );inti=Integer.parseInt( hello );System.console ().readLine(); 上面的代码编译是通过的,但运行是会分别报UnsupportedOperationException;NumberFormatException;NullPointerException异常,这些都是runtime error; 类型注解被用来支持在Java的程序中做强类型检查。配合插件式的check framework,可以在编译的时候检测出runtime error,以提高代码质量。这就是类型注解的作用了。 check framework check framework是第三方工具,配合Java的类型注解效果就是1+1 2。它可以嵌入到javac 编译器里面,可以配合ant和maven使用,也可以作为eclipse插件。地址是checker-framework。 check framework可以找到类型注解出现的地方并检查,举个简单的例子: importcheckers.nullness.quals.*;publicclassGetStarted{voidsample(){@NonNullObjec tref=newObject();}} 使用javac编译上面的类 javac-processorcheckers.nullness.NullnessCheckerGetStarted.java 编译是通过,但如果修改成 @NonNullObjectref=null; 再次编译,则出现 GetStarted.java:5:incompatibletypes.found:@Nullable nulltype

HTML5基础入门教程(小编搜集辛苦啊,必看)

HTML5教程 什么是HTML5? HTML5 将成为HTML、XHTML 以及HTML DOM 的新标准。 HTML 的上一个版本诞生于1999 年。自从那以后,Web 世界已经经历了巨变。HTML5 仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5 支持。 你是不是多少有了解一点,但是你却对这个不精啊!可以进群交流,⑤①④①⑥⑦⑥⑦⑧。HTML5 是如何起步的? HTML5 是W3C 与WHATWG 合作的结果。 编者注:W3C 指World Wide Web Consortium,万维网联盟。 编者注:WHATWG 指Web Hypertext Application Technology Working Group。WHATWG 致力于web 表单和应用程序,而W3C 专注于XHTML 2.0。在2006 年,双方决定进行合作,来创建一个新版本的HTML。 为HTML5 建立的一些规则: ?新特性应该基于HTML、CSS、DOM 以及JavaScript。 ?减少对外部插件的需求(比如Flash) ?更优秀的错误处理 ?更多取代脚本的标记 ?HTML5 应该独立于设备 ?开发进程应对公众透明 新特性 HTML5 中的一些有趣的新特性: ?用于绘画的canvas 元素

?用于媒介回放的video 和audio 元素 ?对本地离线存储的更好的支持 ?新的特殊内容元素,比如article、footer、header、nav、section ?新的表单控件,比如calendar、date、time、email、url、search 浏览器支持 最新版本的Safari、Chrome、Firefox 以及Opera 支持某些HTML5 特性。Internet Explorer 9 将支持某些HTML5 特性。 HTML 5 视频 许多时髦的网站都提供视频。HTML5 提供了展示视频的标准。 Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准。 今天,大多数视频是通过插件(比如Flash)来显示的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了一种通过video 元素来包含视频的标准方法。 视频格式 当前,video 元素支持两种视频格式: Internet Explorer Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0 Ogg X X X MPEG 4 X X Ogg = 带有Thedora 视频编码和Vorbis 音频编码的Ogg 文件 MPEG4 = 带有H.264 视频编码和AAC 音频编码的MPEG 4 文件

ANYLOGIC 7 新功能一览表

ANYLOGIC 7. FASTER, SIMPLERMODEL BUILDING WITH IMPROVEDCAPABILITIES AnyLogic 7, the newest version of the most definitive simulation and modeling software available will be released early in 2014. Features include enhanced support for multimethod modeling, decreased need for coding, renewed libraries, and other usability improvements. Apply for beta testing today and experience the faster modeling process and increased capabilities of AnyLogic 7! Definitive Multimethod Modeling Environment ? Enti ties, resources, and agents are all now the same object. ? Entities can have individual behavior, separate from process-driven. ? Agents can dive into and jump out of the process flowcharts with no coding required. ? System dynamics can be freely used inside and outside entities and agents. Unified Spaceand SpaceMarkupElements ? Consolidated 3D space for all kinds of objects: agents,entities, resource units, pedestrians, rail cars, etc. ? People, vehicles, pallets, buildings, trains, equipment can interact in the same 3D space. ? Easily define walls, areas, paths, nodes, etc. with our new set of space markup elements. ? Specific markup shapes are available for conveyors, warehouse storages, rail tracks and switches. ? The new network rout ing techniques allow for efficient modeling of very large structures, such as distributioncenters where every shelf is modeled. New Libraryfor ProcessModeling ? Graphically define parameters, internal variables, animation, and statistics of entities. ? Resources can have their own sub-process to prepare for a service and wrap-up afterwards.

Java 1.7的新特性

内容如下: 下面是Java 1.7里新出现的功能的一些用法例子: 对集合的支持 创建List / Set / Map 时写法更简单了。 1.Listlist = ["item"]; 2.String item = list[0]; 3.Setset = {"item"}; 4.Mapmap = {"key" : 1}; 5.int value = map["key"]; 对资源的自动回收管理 下面的代码看起来有点麻烦… 不是吗 1.BufferedReader br = new BufferedReader(new FileReader(p ath)); 2.try { 3. return br.readLine(); 4.} finally { 5. br.close(); 6.} 相信你一定会喜欢下面这种写法 1.try (BufferedReader br = new BufferedReader(new FileRea der(path)) { 2. return br.readLine(); 3.} 泛型实例创建过程中类型引用的简化当声明你的对象的接口是,你肯定是不想重复指明泛型类型 看看下面的这种写法多好呀… 1. 2.Maphello = new Map<>(); 在数字中使用下划线

1.int billion = 1_000_000_000; 我不知道这个能有多少用处 对字符串进行switch case 1.String availability = "available"; 2.switch(availability) { 3. case "available": 4. //code 5. break; 6. 7. case "unavailable": 8. //code 9. break; 10. 11. case "merged": 12. //code 13. 14. default: 15. //code 16. break; 17.} 注意:在把字符串传进Switch case之前,别忘了检查字符串是否为Null。 二进制符号 你可用作二进制字符前加上0b 来创建一个二进制类型。 1.int binary = 0b1001_1001; 一个catch里捕捉多个异常类型 1.try { 2.Here comes your code.... 3.} 4.catch(IOException | NullPointerException | ..........) { 5.} 如果有人能说出更多的新特征,那就更好了。我相信里面有更多的很酷的新东西。

浅谈HTML5的技术优势

龙源期刊网 https://www.360docs.net/doc/1d16407129.html, 浅谈HTML5的技术优势 作者:刘媛 来源:《新一代》2018年第01期 摘要:本文通过技术分析总结了HTML 5的新特性、技术发展的新优势;通过分析HTML 5的技术劣势,总结分析出未来改进的方向;通过对html5 APP的发展现状的分析,总结出其在移动端开发的优势和不足,并通过市场发展现状,展望了HTML 5的发展前景。 关键字:HTML 5;技术优势;WEB应用 自2014年10月HTML 5正式公开发布至今已经过去了3年的时间,作为新一代的WEB 标准,它因市场缺乏统一标准的需求而生,又因其开放且强大的优势而受到各方面的关注,在备受瞩目的发展了几年之后,却又因为迟迟得不到更广泛的实际应用而质疑它的实际作用。尽管HTML 5备受争议,但不可否认的是HTML 5从根本上改变了WEB应用的开发方式,无论是桌面应用还是移动应用端,HTML 5及其标准都将持续影响着各个WEB操作平台。 下面我们将从html5的新特性、优点、不足和应用领域等几个方面,对HTML5在WEB 操作平台的发展趋势做进一步的分析,让大家对这种语言的技术优势及发展趋势有更明确的了解和认识。 一、html 5的优势 (一)更强的兼容性 Html即超文本语言已经发展了20几年,在经历了几次技术变革之后人们发现各种浏览器对其支持程度并不是越来越好,而是反其道而行之。因此,才有了新标准的出现,Html 5并不是要颠覆html发展的已有成果,而是要做到更好的兼容过去的技术,并发展和得到更多的web浏览器的支持,那么此时兼容性就变得至关重要了,HTML5想要做到的是变成web语言的共主。 (二)更具合理性 我们知道Html 5是在不断归纳和总结的基础上完成了自身的丰富性,那么它的合理性又 从何而来呢,举个例子来说,Google在对用户的标签定义习惯和使用习惯进行了百万次级别 的跟踪、分析后得出id = "nav"、id = "header"的ID定义使用率非常高,为了更好的方便用 户,html 5新增加了标签、标签等一系列的结构元素,这就使得用户的结构性定义变得更加简单和方便了。 (三)简化并提高了效率

《NBA 2K15》游戏全新特性一览 NBA2K15有什么新特性

《NBA 2K15》游戏全新特性一览 NBA2K15有什么新特性游戏介绍(PRESENTATION) 1.应广大玩家要求,NBA2K15采用了比以往更加简洁华丽的界面,选择球队界面将会使用球员真人照片。 2.在菜单的中心位置,玩家们会看到NBA2KTV,一个每周更新一次的电视节目,只能在游戏里看到,每期时长15分钟,由瑞秋德米塔主持。瑞秋不是一个简单的模特&主播,她曾在高中时期参加过麦当劳女子全明星篮球赛,篮球实力无需解释。 3.NBA2KTV是NBA2K制作组开发的一个展现NBA2K玩家社区的电视节目(比如数据排行榜的领头羊,各种活动竞赛的冠军,令人激动人心的玩家赛场集锦),和游戏开发员探讨游戏的更新和攻略,游戏制作背后的花絮,以及大家喜欢的NBA球星的生活展示等。 4.赛前比赛前瞻板块今年将会重回游戏,该板块将由《NBA Inside》两位当家主持艾尔尼.约翰逊和大鲨鱼奥尼尔主持,每场比赛开场两位都会简单分析比赛看点&球员介绍等内容。奥尼尔会在游戏中大秀他的耍宝功夫。 5.我们几乎扫描了NBA所有球员的赛场动态,包括新秀。今年球场最大的改变就是球员的头发会随着运动而飘动,而不是之前那样的贴在头上。 6.全新的编辑球员系统可以让玩家随心所欲的编辑自建球员。除了以往的面部编辑之外,今年我们的很多脸型发型五官都来自于其他的NBA球员,所以如果你想要拿吉诺比利的头顶配阿泰斯特锋利的脸型,更多搭配随你心情。 7.NBA2K系列首次放出!玩家可以利用PS4摄像头和XBOX体感设备将自己的脸扫进游戏中进行MC模式。这一功能目前仅支持PS4和XB1。 8.你可以使用你的真人扫描模型进行MC模式和其他在线模式(比如篮球公园)。 9.球场气氛方面,采用了全新的拉拉队员和吉祥物,每个球场都会有当家球星的大头牌子,全新的球员开场介绍,比赛开场的升旗仪式并播放国歌。观众也会根据球员在球场的表现有更多反应,之前LD2K也提到过NBA2K15中,当比赛进入垃圾时间以后,观众们就会逐渐退场,当比赛进入焦灼的时候,所有观众都会站起来欢呼。 10.当玩家完成一个精彩进球以后,NBA2K制作组开发了全新视角去记录球员反应。 游戏体验(GAMEPLAY) 11.为了帮助玩家找到手感,NBA2K制作组建立了一个全新的投篮指示系统,投篮指示条的颜色改变帮助玩家找到正确的投篮点,不同的位置拥有不同的投篮点,投篮指示系统会告诉玩家球员的投篮热点和冷区。在正确的时机提示玩家做出正确的出手,这可以帮助玩家很快找到投篮 感觉,另外,不用的球员拥有不同的投篮手感。 12.全新的投篮系统并不意味着玩家的每次出手都能命中,高命中率的时代过去了。 NBA2K15中建立了全新的投篮教程用来帮助玩家找到投篮的时机。投篮的时机决定命中率,系统

史上最全Java基础知识点归纳

史上最全Java基础知识点归纳 写这篇文章的目的是想总结一下自己这么多年来使用Java的一些心得体会,主要是和一些Java基础知识点相关的,所以也希望能分享给刚刚入门的Java 程序员和打算入Java开发这个行当的准新手们,希望可以给大家一些经验,能让大家更好学习和使用Java。 这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE 相关的、和Java中各个框架相关的内容。 经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。 1.JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资

深开发者来说,不会JVM几乎是不可接受的。 JVM作为Java运行的基础,很难相信对于JVM一点都不了解的人可以把Java语言吃得很透。我在面试有超过3年Java经验的开发者的时候,JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证Java开发能力的高低。 在JVM这个大类中,我认为需要掌握的知识有: JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump,分析内存结构 class二进制字节码结构,class loader体系,class加载过程,实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解) 2.Java的运行(基础必备) 这条可能出看很简单,Java程序的运行谁不会呢?不过很多时候,我们只是单纯通过IDE去执行Java程序,底层IDE又是如何执行Java程序呢?很多人并不了解。

HTML5特性概览

什么是HTML5 如何定义 狭义地讲,它是HTML4的升级版,但是它比HTML4增加了许多东西。以下关于HTML5的描述,摘自《HTML5设计原理》一文。 HTML5的“范围” 某些称呼常常被挂在嘴边:“HTML5技术”,“HTML5开发”,“某某产品HTML5版本”。 就像通讯协议2G,3G标准一样,HTML5技术内容来自各个浏览器厂商提供的成熟技术,其中一些已经被使用了多年(比如IE5,6里面的某些事实标准)。还有很多“HTML5技术”是各种存在已久工业标准往Web上面照搬(或者是子集),比如MathML(用于描述数学公式,以后做课件会很方便),HTML5内容之庞大不是几句话就可以说的清的,现在它还在不停地增长。 Javascript与HTML5的关系 JS是一门脚本语言,它可以作为某种特定软件环境的嵌入式开发语言,JS本身并不具备IO能力,所以JS本身不能进行网络通讯、界面绘制。但是,当JS嵌入到浏览器中的时候,浏览器提供了BOM和DOM两套API,前者负责与浏览器交互,后者则提供HTML&CSS排版引擎的接口给JS使用。HTML5标准增强了BOM和DOM两套API的能力,使得基于浏览器环境的开发变得更加“险恶”……更加多样化。 有人说HTML5就是Javascript,大致也没错,因为目前在浏览器端没有一种开发语言与JS竞争(IE支持VBScript,Chrome近期会支持Dart语言),所以浏览器端的程序开发一般就是指Javascript开发。 除了浏览器,JavaScript还有其它的宿主环境,比如NodeJs,NodeJs为JS提供了访问网络以及文件系统的能力,所以开发人员可以在这个环境中进行服务端的Web开发。 此外,浏览器本身也是一个可内嵌的组件,它也可以嵌入到其它程序环境中作应用层的开发,比如前网易游戏开发主管云风的博客中就曾透露,早期的西游系列网游就用了不少浏览器界面嵌入到游戏中,以降低开发成本(主要做游戏中交互菜单的部分)。当然,这种混合型的应用无处不在,我们日常生活中使用的大量桌面软件都是这种模式,比如腾讯QQ、360安全卫士等,QQ中的聊天窗口右侧部分、以及聊天记录窗口等都使用了浏览器组件。 这种形式的应用同样也存在于手机端。PhoneGap就是这样一种解决方案,它封装了手机端的底层数据、设备的访问能力给浏览器控件使用,好处是跨平台。

SOLIDWORKS2019新增功能零件和特征草图钣金熔接

台北工程一課 /張鈞威 K.K SOLIDWORKS 2019新增功能零件和特徵、草圖、鈑金、熔接 每年新增功能,總是讓大家接觸SOLIDWORKS 全新的操作與指令介面體驗,但大家看著二百多頁的新增功能PDF 應該都會苦笑何年何月才能能夠看完對吧? 在本篇的技術通報中,就由我整理零件和特徵、草圖、鈑金、熔接這四種新增功能來為大家做詳細介紹! 零件和特徵: ?邊界方塊 邊界方塊於19之前的版本,不管您抑制或隱藏邊界方塊,系統都會針對其零組件進行重新計算,於19新增功能開始,使用使用邊界方塊時的效能已經改善,使用邊界方塊時不會對其進行重新計算,以節省時間。

?裝飾螺紋線功能改良 許多人反映裝飾螺紋線再複雜幾何與繁雜特徵中產生、更新和顯示裝飾螺紋線等問中有不穩定的現象,於19新增功能獲得改善,品質更為穩定,其行為模式的改良,為邊線與面提供更穩定的參考,另外也為組合件、工程圖與圖形提供正確的參數。 19裝飾螺紋線並新增錐形軸的標準和異型孔。另外當使用插入→註記→裝飾螺紋線來產生裝飾螺紋線時,會支援螺紋線類別以及裝飾螺紋線PropertyManager中以支援數學關係式運用。 ?升級舊版裝飾螺紋線 由上一個新增功能知道19增強了改良的裝飾螺紋線,對於舊圖面當然也提供升級到新版螺紋線的功能,此功能必須先設定系統選項,才能對每一個模型升級步驟如下。 1.在工具→選項→系統選項→一般中選擇允許裝飾螺紋線進行升級,然後按一下確定。 2.開啟模型,然後用滑鼠右鍵按一下特徵管理員設計樹狀結構中最上層的項目,再按一下升 級裝飾螺紋線特徵。

不過升級前必須要注意升級舊版零件時,您可能需要調整使用該零件的組合件與工程圖。例如,工程圖上可能會懸置註記和尺寸。 ?生部分導角與圓角 產生局部的導角與圓角是19重點功能之一,以往只能依照邊線全部導角和圓角,現在已打破這個思維可以在此群組方塊中指定局部邊線參數。 不過要注意的是部分導角與圓角功能僅適用於固定大小圓角和偏移面導角。

HTML5 CSS3新特性的浏览器支持情况

代码检测HTML5/CSS3新特性的浏览器支持情况 伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情。然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8、9为主,windows8.1的用户已经用上了IE10/11,而考虑我国的国情,IE6、7依然存留不少。在我们放手用HTML5开发的时候,新特性支持度检测就是必不可少的了。一种方式是用https://www.360docs.net/doc/1d16407129.html,erAgent或 navigator.appName来检测浏览器类型和版本,不过这种方式不是很可靠,浏览器对于一些新特性也是在逐渐支持,不能肯定说某个浏览器100%支持了HTML5。而且,IE11做了一个恶心的举动:在UA中去掉了“MSIE”标志,把appName改为了“Netspace”,并且开始支持-webkit-前缀的css属性,这是活生生要伪装成chrome的节奏。所以,HTML5/CSS3支持性的检测,还是靠特征检测(figure detection)或者说能力检测更好些。本篇就来介绍一下常用的检测方式都有哪些。 HTML5部分 检测HTML5新特性的方法主要有以下几种: 1. 检查全局对象(window或navigator)上有没有相应的属性名 2. 创建一个元素,检查元素上有没有相应的属性 3. 创建一个元素,检测元素上有没有方法名称,然后调用该方法,看能否正确执行 4. 创建一个元素,为元素的相应属性赋一个值,然后再获取此属性的值,看看赋值是否生效 由于不同浏览器的不同行为,检测一些特性的时候,可能会用到上述几个方法的组合,接下来用上面的方法做一下常用特性的检测: canvas 1.function support_canvas(){ 2. var elem = document.createElement('canvas'); 3. return !!(elem.getContext && elem.getContext('2d')); 4.}

Excel2013 中的新增功能

新增功能 打开Excel 后,首先展现在您面前的是全新的界面。它更加简洁,其设计宗旨是帮助您快速获得具有专业外观的结果。您会发现,大量新增功能将帮助您远离繁杂的数字,绘制更具说服力的数据图,从而指导您制定更好更明智的决策。 若要了解如何开始快速创建基本Excel 工作簿,请参阅Excel 2013 中的基本任务。 主要功能一览 迅速开始 模板为您完成大多数设置和设计工作,让您可以专注于数据。打开Excel 2013 时,您将看到预算、日历、表单和报告等。 即时数据分析

使用新增的“快速分析”工具,您可以在两步或更少步骤内将数据转换为图表或表格。预览使用条件格式的数据、迷你图或图表,并且仅需一次点击即可完成选择。要使用此新功能,请参阅“即时分析您的数据”。 瞬间填充整列数据 “快速填充”像数据助手一样帮您完成工作。当检测到您需要进行的工作时,“快速填充”会根据从您的数据中识别的模式,一次性输入剩余数据。要了解此功能何时会派上用场,请参阅“根据您键入的内容拆分数据列”。 为数据创建合适的图表 通过“图表推荐”,Excel 可针对您的数据推荐最合适的图表。通过快速一览查看您的数据在不同图表中的显示方式,然后选择能够展示您想呈现的概念的图表。当您创建首张图表时,请尝试此功能。

使用切片器过滤表格数据 切片器作为过滤数据透视表数据的交互方法在Excel 2010 中被首次引入,它现在同样可在Excel 表格、查询表和其他数据表中过滤数据。切片器更加易于设置和使用,它显示了当前的过滤器,因此您可以准确知道正在查看的数据。 一个工作簿,一个窗口 在Excel 2013 中,每个工作簿都拥有自己的窗口,从而能够更加轻松地同时操作两个工作簿。当操作两台监视器的时候也会更加轻松。 Excel 新增函数

JAVA8-新特性总结及案例

一 Lambda函数(箭头函数) Lambda 表达式,也可称为闭包,它是推动Java 8 发布の最重要新特性。Lambda 允许把函数作为一个方法の参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变の更加简洁紧凑。 (parameters) ->expression或(parameters) ->{ statement1; statement2; ...... } lambda表达式の重要特征: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选の参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选の大括号:如果主体包含了一个语句,就不需要使用大括号。 可选の返回关键字:如果主体只有一个表达式返回值则编译器会自动返回,大括号需指定表达式返回数值。 本质上,Lambda函数是对匿名内部类对象の简写。 应用举例1(比较JAVA7与JAVA8):Lambda函数做类の属性 运行结果: 应用举例2(比较JAVA7与JAVA8):Lambda函数做main函数变量

应用举例3: 应用举例4:多线程启动时使用Lambda函数

应用举例5:在 1.7中,匿名内部类只能使用定义为finalの外部变量,1.8会自动为Lambda函数使用の外部变量加上final,因此final可以省略不写。

二方法引用(::方法名 ----》调用了方法对象)应用举例1:

应用举例2:

三函数式接口 函数式接口(Functional Interface)就是一个具有一个方法の普通接口。函数式接口可以被隐式转换为lambda表达式。 函数式接口可以现有の函数友好地支持 lambda。 JDK 1.8之前已有の函数式接口: https://www.360docs.net/doc/1d16407129.html,ng.Runnable java.util.concurrent.Callable java.security.PrivilegedAction https://www.360docs.net/doc/1d16407129.html,parator

JAVA8十大新特性详解

JAVA8 十大新特性详解 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API “Java is still not dead—and people are starting to figure that out.” 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字。 一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: default double sqrt(int a) { return Math.sqrt(a); } } Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。 formula.calculate(100); // 100.0 formula.sqrt(16); // 4.0 文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算sqrt(a * 100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。

译者注:在Java中只有单继承,如果要让一个类赋予新的特性,通常是使用接口来实现,在C++中支持多继承,允许一个子类同时具有多个父类的接口与功能,在其他语言中,让一个类同时具有其他的可复用代码的方法叫做mixin。新的Java 8 的这个特新在编译器实现的角度上来说更加接近Scala的trait。在C#中也有名为扩展方法的概念,允许给已存在的类型扩展方法,和Java 8的这个在语义上有差别。 二、Lambda 表达式 首先看看在老版本的Java中是如何排列字符串的: Collections.sort(names, new Comparator() { @Override public int compare(String a, String b) { return https://www.360docs.net/doc/1d16407129.html,pareTo(a); } }); 只需要给静态方法 Collections.sort 传入一个List对象以及一个比较器来按指定顺序排列。通常做法都是创建一个匿名的比较器对象然后将其传递给sort方法。 在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式: 看到了吧,代码变得更段且更具有可读性,但是实际上还可以写得更短: 对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字,但是你还可以写得更短点:

FracproPT 2007 介绍和新增功能

1、FracproPT2007介绍 FracproPT是作为美国天然气研究所(GRI)的天然气供应规划的项目被开发的。FracproPT在全世界的天然气、石油和地热的储藏领域中,有很多的商业应用。集总参数的三维压裂裂缝模型(它不应该与所谓的拟三维模型相混淆)充分地表现出了水力压裂物理过程的复杂性和实际状况。 FracproPT系统被特别地设计为工程师用于水力压裂设计及分析的最综合的工具。比其它的水力压裂模型更多的功能是:有实效的使用现场施工数据是FracproPT的重要主题。这一点使FracproPT不同于有关的同类软件产品。实时数据的使用为工程师提供了对施工井响应的更深刻、更合理的理解,这些响应反映了在压裂施工之前、之中和之后,储藏中所发生的物理过程的真实性。 FracproPT提供了与产能分析相结合的压裂施工设计和分析的四种操作模块。 FracproPT 运行模块之间的关系 ?压裂设计模块: 这个模块生成设计的施工泵序一览表。用户输入要求的无因次导流能力并评价经济最适合的裂缝半长。FracproPT帮助用户选择支撑剂和压裂液体并生成满足要求的缝长和导流能力的推荐的施工泵序一览表。 ?压裂分析模块: 使用本方式可以进行详细的预压裂设计,实时数据分析,和净压力历史拟合。实时数据分析可以是实时的,或使用先前获取的数据进行压裂后的分析。这个方式可以用测试压裂分析估算所形成的裂缝几何尺寸,确定裂缝闭合应力以及分析近井筒扭曲来确定早期脱砂的潜在可能性。 ?产能分析模块: 该模块被用来预测、或者历史拟合压裂井或非压裂井的生产状态。在本模块中,FracproPT 把由压裂裂缝扩展和支撑剂运移模型确定的支撑剂浓度剖面传输给产

JAVA7 新特性介绍(官方公布)中文版

Java7 新特性集合(中文版) Java 7平台标准版文档 甲骨文有两个产品实现Java平台标准版(Java SE)7:Java SE的开发工具包(JDK),7和Java SE的运行环境(JRE)7。 JDK 7中的JRE 7的一个超集,并包含在JRE 7的一切,再加上开发applets 和应用程序所必需的编译器和调试器等工具。 JRE7提供了类库,Java虚拟机(JVM),和其他运行使用Java编程语言编写的applets和应用程序所需的组件。 下面的概念图说明了Java组件技术:

文档之“新” 文档定期更新,以提供在Java平台上的新功能的深入了解信息的开发。一些最近的更新包括: 1.Swing 包括以下主题: JLayerClass Swing包中的新组件,可支持自定义绘制 NimbusLook & Feel Swing包中最新的U组件,可支持自定义皮肤 Heavyweightand Lightweight Components Swing包中的最新属性,可实现透明和半透明窗体 Shapedand Translucent Windows Swing包中的最新组件,可实现自定义形状窗体Hue-Saturation-Luminance(HSL) Color Selection in JColorChooser Class色彩选择器,可支持色彩饱和度和亮度

Image 2 TranslucentWindow Image 3 GradientWindow Image 4 ShapedWindow 2. Java SE 7的网络增强 URLClassLoader.close方法已被添加。这种方法有效地消除了如何支持从一个特定的代码库,特别是在JAR文件中加载的类和资源更新的实现的问题。有关更多信息,请参阅合为URLClassLoader。

Oracle Database 18c 的10大新特性一览

在2017 Oracle OpenWorld大会上,关于Oracle 18c 的一系列新特性已经被披露出来,借助分散在各个会场的公开分享主题和内容、OOW提供的PPT下载,我们和大家抢鲜分享一下18c 中极具吸引力的新特性。 注意:标题里提到的10仅为约数,文章中提到的新特性不仅10个,分列也只是为了阅读便利,这些特性可能随着版本发布发生改变,仅供参考。 1.自治数据库- Autonomous Database 首先,从最高级别上,Oracle 18c 将是一个『自治数据库- Autonomous Database』,这由Larry Ellison首先发布,而在此框架下,一系列的设计由此展开。 2.云级别可用性增强- Cloud-Scale Availability 这其中包含了一系列的新特性,包括: 支持跨地域和混合云的自动的Sharding能力; RAC Sharding支持; 在ADG中支持Nologging数据的复制同步; ADG自动重定向update操作到主库(这个特性对于读写分离很有用); Grid Infrastructure 打补丁的零影响;

建议的瞬时逻辑备库滚动升级; 3.In-Memory 内存选件增强 内存选件获得了大量的增强,包括: 自动In-Memroy管理,这应该指自动选择适合In-Memory的对象并压缩提速等;支持In-Memory的内存表,这个特性很有用; In-Memory 支持NVRAM 内存架构; 针对数据仓库的特定增强,In-Memory 动态扫描;优化算法等; 4.In-Memory的外部表和InLine外部表支持

HTML5 history新特性pushState、replaceState及两者的区别

这篇文章主要介绍了HTML5 history新特性pushState、replaceState及两者的区别的相关资料,需要的朋友可以参考下 DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退。 从HTML5开始,我们可以开始操作这个历史记录堆栈。 1.History 使用back(),forward(),和go()方法可以在用户的历史记录中前进和后退 前进和后退 后退: 代码如下: window.history.back(); 这个方法会像用户点击了浏览器工具栏上的返回键一样。 同样的,也可以用以下方法产生用户前进行为: 代码如下: window.history.forward(); 移动到历史记录中特定的位置 你可以使用go()方法从session历史中载入特定的页面。 向后移动一页: 代码如下: window.history.go(-1); 向前移动一页: 代码如下: window.history.go(1); 类似的,你可以前进或者后退多页。 还可以通过检查浏览器历史记录的length属性来找到历史记录堆栈中的页面总数。 代码如下: var numberOfEntries = window.history.length; 注意:IE支持向go()方法传URL参数。 2.添加和修改history实体 自Gecko2开始引入(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) HTML5引入了histtory.pushState()和history.replaceState()这两个方法,他们允许添加和修改history实体。同时,这些方法会和window.onpostate事件一起工作。 使用history.pushState()方法来修改referrer,这种方法可以被用在经过修改状态后而为xmlhttpRequest对象创建的http header中。这个referrer会是创建XMLHttpRequest 时document的URL。 pushState 用于向history 添加当前页面的记录,而replaceState 和pushState 的用法完全一样,唯一的区别就是它用于修改当前页面在history 中的记录。 例子 假设https://www.360docs.net/doc/1d16407129.html,/foo.html页面执行了一下JS 代码如下: var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html"); 这种方法将会使url地址栏显示https://www.360docs.net/doc/1d16407129.html,/bar.html,但浏览器不会加载bar.html

KDxxxMS新功能

KDxxxMS系列新功能操作摘要 (Ver.0) -内部参考资料,仅限维修员使用- -客户操作内容请参考产品附带的操作手册-

目录 1.新功能简介 (3) 1.1新功能一览表 (3) 1.2新功能的型号对应表 (3) 2.顶部取纸/浏览功能 (4) 2.1功能切换操作 (4) 2.2顶部取纸功能操作 (5) 2.2.1. 纸张安装 (5) 2.2.2. 顶部取纸操作 (5) 2.3浏览功能操作 (5) 2.3.1. 顶部取纸操作 (5) 3.超高速增速功能 (5) 3.1面板设置 (5) 4.高浓度打印功能 (6) 4.1面板设置 (6) 5.内置接口功能 (7) 5.1面板设置 (7) 5.2打印驱动安装以及打印端口设置 (8) 5.2.1. 打印驱动安装 (8) 5.2.2. LAN打印端口设置 (8) 5.2.3. USB打印端口设置 (14) 6.仿真切换功能 (19) 6.1面板设置 (19) 7.QR条码打印功能 (20) 7.1面板设置 (20)

新功能简介 1.1新功能一览表 这里列举了KDxxxMS所增加的新功能。 这些功能并非在所有的型号上都可使用,具体的型号对应关系请参考1.2节。 1.2新功能的型号对应表

2. 顶部取纸/浏览功能 2.1 功能切换操作 浏览功能可在全部的KDxxxMS 型号上使用。 而顶部取纸功能只有KD380MS/P 和KD480MS 能使用,初始值为浏览功能。 浏览功能和顶部取纸功能切换的操作步骤如下: (1)按下面的流程图操作,进入[EJECT/VIEW MODE]菜单选项。 (2 EJECT VIEW )功能。 (3 此后,打印机将保存设置内容并开始初始化。 取纸 取纸

Java8新特性之JavaFX 8

Java8新特性之JavaFX 8 JavaFX主要致力于富客户端开发,以弥补swing的缺陷,主要提供图形库与media库,支持audio,video,graphic,animation,3D等,同时采用现代化的css方式支持界面设计。同时又采用XUI方式以XML方式设计UI界面,达到显示与逻辑的分离。与android这方面确实有点相似性。 JavaFX历史 跟java在服务器端和web端成绩相比,桌面一直是java的软肋,于是Sun公司在2008年推出JavaFX,弥补桌面软件的缺陷,请看下图JavaFX一路走过来的改进 从上图看出,一开始推出时候,开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java bytecode,程序员可以使用Java代码代替。JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。JavaFX 2.0 包含非常丰富的UI 控件、图形和多媒体特性用于简化可视化应用的开发,WebView可直接在应用中嵌入网页;另外2.0 版本允许使用FXML 进行UI 定义,这是一个脚本化基于XML 的标识语言。从JDK 7u6开始,JavaFx 就与JDK捆绑在一起了,JavaFX团队称,下一个版本将是8.0,目前所有的工作都已经围绕8.0库进行。这是因为JavaFX 将捆绑在Java 8中,因此该团队决定跳过几个版本号,迎头赶上Java 8。 JavaFx8的新特性 全新现代主题:Modena 新的Modena主题来替换原来的Caspian主题。不过在Application的start()方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)来继续使用Caspian主题。