十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在JDK1.7的新特性方面主要有下面几方面的增强:
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:做网站、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的新河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
1.jdk7语法上
1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头。
1.2 Switch语句支持string类型
1.3 Try-with-resource语句
注意:实现java.lang.AutoCloseable接口的资源都可以放到try中,跟final里面的关闭资源类似; 按照声明逆序关闭资源 ;Try块抛出的异常通过Throwable.getSuppressed获取
1.4 Catch多个异常 说明:Catch异常类型为final; 生成Bytecode 会比多个catch小; Rethrow时保持异常类型
1.5 数字类型的下划线表示 更友好的表示方式,不过要注意下划线添加的一些标准
1.6 泛型实例的创建可以通过类型推断来简化 可以去掉后面new部分的泛型类型,只用就可以了
1.7在可变参数方法中传递非具体化参数,改进编译警告和错误
1.8 信息更丰富的回溯追踪 就是上面try中try语句和里面的语句同时抛出异常时,异常栈的信息
2. NIO2的一些新特性
1.java.nio.file 和java.nio.file.attribute包 支持更详细属性,比如权限,所有者
2. symbolic and hard links支持
3. Path访问文件系统,Files支持各种文件操作
4.高效的访问metadata信息
5.递归查找文件树,文件扩展搜索
6.文件系统修改通知机制
7.File类操作API兼容
8.文件随机访问增强 mapping a region,locl a region,绝对位置读取
9. AIO Reactor(基于事件)和Proactor
2.1IO and New IO 监听文件系统变化通知
通过FileSystems.getDefault().newWatchService()获取watchService,然后将需要监听的path目录注册到这个watchservice中,对于这个目录的文件修改,新增,删除等实践可以配置,然后就自动能监听到响应的事件。
2.2 IO and New IO遍历文件树 ,通过继承SimpleFileVisitor类,实现事件遍历目录树的操作,然后通过Files.walkFileTree(listDir, opts, Integer.MAX_VALUE, walk);这个API来遍历目录树
2.3 AIO异步IO 文件和网络 异步IO在java
NIO2实现了,都是用AsynchronousFileChannel,AsynchronousSocketChanne等实现,关于同步阻塞IO,同步非阻塞IO,异步阻塞IO和异步非阻塞IO。Java NIO2中就实现了操作系统的异步非阻塞IO。
3. JDBC 4.1
3.1.可以使用try-with-resources自动关闭Connection, ResultSet, 和 Statement资源对象
3.2. RowSet 1.1:引入RowSetFactory接口和RowSetProvider类,可以创建JDBC driver支持的各种 row sets,这里的rowset实现其实就是将sql语句上的一些操作转为方法的操作,封装了一些功能。
3.3. JDBC-ODBC驱动会在jdk8中删除
4. 并发工具增强
4.1.fork-join
最大的增强,充分利用多核特性,将大问题分解成各个子问题,由多个cpu可以同时解决多个子问题,最后合并结果,继承RecursiveTask,实现compute方法,然后调用fork计算,最后用join合并结果。
4.2.ThreadLocalRandon 并发下随机数生成类,保证并发下的随机数生成的线程安全,实际上就是使用threadlocal
4.3. phaser 类似cyclebarrier和countdownlatch,不过可以动态添加资源减少资源
5. Networking增强
新增URLClassLoader close方法,可以及时关闭资源,后续重新加载class文件时不会导致资源被占用或者无法释放问题
URLClassLoader.newInstance(new URL[]{}).close();
新增Sockets Direct Protocol
绕过操作系统的数据拷贝,将数据从一台机器的内存数据通过网络直接传输到另外一台机器的内存中
6. Multithreaded Custom Class Loaders
解决并发下加载class可能导致的死锁问题,这个是jdk1.6的一些新版本就解决了,jdk7也做了一些优化。有兴趣可以仔细从官方文档详细了解
JDK1.8的新特性
一、接口的默认方法
Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法。
二、Lambda 表达式
在Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8提供了更简洁的语法,lambda表达式:
Collections.sort(names, (String a, String b) - {
return b.compareTo(a);
});
三、函数式接口
Lambda表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为 默认方法 不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
四、方法与构造函数引用
Java 8 允许你使用 :: 关键字来传递方法或者构造函数引用,上面的代码展示了如何引用一个静态方法,我们也可以引用一个对象的方法:
converter = something::startsWith;
String converted = converter.convert("Java");
System.out.println(converted);
五、Lambda 作用域
在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
六、访问局部变量
可以直接在lambda表达式中访问外层的局部变量:
七、访问对象字段与静态变量
和本地变量不同的是,lambda内部对于实例的字段以及静态变量是即可读又可写。该行为和匿名对象是一致的:
八、访问接口的默认方法
JDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runnable接口,这些接口都增加了@FunctionalInterface注解以便能用在lambda上。
Java 8 API同样还提供了很多全新的函数式接口来让工作更加方便,有一些接口是来自Google Guava库里的,即便你对这些很熟悉了,还是有必要看看这些是如何扩展到lambda上使用的。
日期:2003-03-07
作为第一个真正的“高速”病毒:“2003蠕虫王”的传播数度比当年的“红色代码”快两个数量级:在头一分钟之内,感染主机数量每8.5秒增长一倍;3分钟后该病毒的传播速度达到峰值(每秒钟进行5500万次扫描);接下来,其传播速度由于自身挤占了绝大部分网络带宽而开始下降;10分钟后,易受攻击的主机基本上已经被感染殆尽。题图是“2003蠕虫王”发作30分钟后在全球的感染面积,其传播速度、破坏力可见一斑。
1月25日上午,美国的银行网络开始瘫痪,大部分银行的柜员机停止工作。银行门口、街头柜员机旁边、商店和各种消费场所里,都站满了束手无策的人。
1月25日下午,韩国情报通信部发现有黑客攻击服务器的迹象,且攻势猛烈,掌握全国互联网服务命脉的服务器最终被迫停止工作,导致全国网络服务全面中断。
与此同时,中国、日本、加拿大和澳大利亚等国家也遭遇类似的网络灾难。几乎在眨眼间,“2003蠕虫王”蠕虫病毒就在世界各国掀起波澜。
似曾相识的罪恶
而让人们万万没有想到的是,颠覆所有互联网骨干网的罪魁祸首仅仅是一个利用了SQL Server 2000早就发现的一个漏洞进行攻击的蠕虫病毒—“2003蠕虫王”,一个不知道来自何方的蠕虫病毒、一小段可以自身飞速复制和传送的程序。
这让我们再一次回想起,2001年春天出现的利用微软IIS漏洞进行攻击的“红色代码”病毒、去年10月基于Unix的Internet根域名服务器遭受到的DDoS攻击等。与“红色代码” 相比,“2003蠕虫王”的扩散速度要快两个数量级,它能在15分钟内感染整个互联网,在病毒爆发的头5分钟内就导致了9.5亿美元到12亿美元的生产力损失。
万幸的是,“2003蠕虫王”的传播在一定程度上受到其程序设计缺陷的限制。病毒程序的随机数产生器有缺陷,这使得蠕虫病毒无法对所有互联网地址进行扫描。而且,互联网数据分析合作协会(Cooperative Association for Internet Data Analysis)研究员表示,其随机扫描方式非常具有攻击性,在它的强势攻击下,网络很快便陷于瘫痪,从而导致该蠕虫病毒无法继续进行阻塞攻击。这倒也应了一句中国古话:“多行不义必自毙”。
美国阿巴拉契亚山脉的查图嘎国家公园岩洞群,朱诺(Natalie Jackson Mendoza 饰)、莎拉(Shauna Macdonald 饰)一行六人在此经历了一生中最恐怖的时刻,最终只有莎拉一人侥幸逃生。在此之后,警方派出大批搜救人员进山寻找遇难者的尸体以及可能的幸存者,但是最终却一无所获。女警官萝丝(Krysten Cummings 饰)负责询问莎拉失踪事件的始末,但是莎拉对过往发生的事情没有任何记忆。为了寻找幸存者和事实真相,萝丝带着莎拉再次来到岩洞群,并在此与搜救人员凯西(Anna Skellern 饰)和格雷格(Joshua Dallas 饰)等碰头。他们从废弃的矿井口进入岩洞,不久便发现贝丝等人的尸体。
数据是平台运营商的重要资产,可能提供API接口允许第三方有限度地使用,但是显然是为了增强自身的业务,与此目的抵触的行为都会受到约束。
收集数据主要是通过计算机和网络。凡是经过计算机处理的数据都很容易收集,比如浏览器里的搜索、点击、网上购物、……其他数据(比如气温、海水盐度、地震波)可以通过传感器转化成数字信号输入计算机。
收集到的数据一般要先经过整理,常用的软件:Tableau和Impure是功能比较全面的,Refine和Wrangler是比较纯粹的数据整理工具,Weka用于数据挖掘。
Hadoop是一个能够对大量数据进行分布式处理的软件框架。用于统计分析的R语言有个扩展R + Hadoop,可以在Hadoop集群上运行R代码。更具体的自己搜索吧。
可视化输出的工具很多。建议参考wikipedia的“数据可视化”条目。
Tableau、Impure都有可视化功能。R语言也可以绘图。
还有很多可以用来在网页上实现可视化输出的框架或者控件。
大致基于四种技术:Flash(Flex)或者JS(HTML5)或者Java或者ASP.NET(Silverlight)
Flash的有Degrafa、BirdEye、Axiis、Open Flash Chart
JS的有Ajax.org、Sencha Ext JS、Filament、jQchart、Flot、Sparklines、gRaphael、TufteGraph、Exhibit、PlotKit、ExplorerCanvas、MilkChart、Google Chart API、Protovis
Java的有Choosel、google-visualization-java、GWT Chronoscope、JFreeChart
ASP.NET的有Telerik Charts、Visifire、Dundas Chart
目前我比较喜欢d3(Data-Driven Documents),图形种类丰富,有交互能力,你可以去d3js.org看看,有很多种图形的demo。
用 regexp_like这个函数来解决,正则表达式为:[[:punct:]]+这个正则可以找出任何标点符号。
查询value中包含任何标点符号的记录如下:
select * from xxx where regexp_like(value,'[[:punct:]]+');
POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。