在JDK1.7的新特性方面主要有下面幾方面的增強(qiáng):
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的新河網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1.jdk7語(yǔ)法上
1.1二進(jìn)制變量的表示,支持將整數(shù)類(lèi)型用二進(jìn)制來(lái)表示,用0b開(kāi)頭。
1.2 Switch語(yǔ)句支持string類(lèi)型
1.3 Try-with-resource語(yǔ)句
注意:實(shí)現(xiàn)java.lang.AutoCloseable接口的資源都可以放到try中,跟final里面的關(guān)閉資源類(lèi)似; 按照聲明逆序關(guān)閉資源 ;Try塊拋出的異常通過(guò)Throwable.getSuppressed獲取
1.4 Catch多個(gè)異常 說(shuō)明:Catch異常類(lèi)型為final; 生成Bytecode 會(huì)比多個(gè)catch??; Rethrow時(shí)保持異常類(lèi)型
1.5 數(shù)字類(lèi)型的下劃線表示 更友好的表示方式,不過(guò)要注意下劃線添加的一些標(biāo)準(zhǔn)
1.6 泛型實(shí)例的創(chuàng)建可以通過(guò)類(lèi)型推斷來(lái)簡(jiǎn)化 可以去掉后面new部分的泛型類(lèi)型,只用就可以了
1.7在可變參數(shù)方法中傳遞非具體化參數(shù),改進(jìn)編譯警告和錯(cuò)誤
1.8 信息更豐富的回溯追蹤 就是上面try中try語(yǔ)句和里面的語(yǔ)句同時(shí)拋出異常時(shí),異常棧的信息
2. NIO2的一些新特性
1.java.nio.file 和java.nio.file.attribute包 支持更詳細(xì)屬性,比如權(quán)限,所有者
2. symbolic and hard links支持
3. Path訪問(wèn)文件系統(tǒng),F(xiàn)iles支持各種文件操作
4.高效的訪問(wèn)metadata信息
5.遞歸查找文件樹(shù),文件擴(kuò)展搜索
6.文件系統(tǒng)修改通知機(jī)制
7.File類(lèi)操作API兼容
8.文件隨機(jī)訪問(wèn)增強(qiáng) mapping a region,locl a region,絕對(duì)位置讀取
9. AIO Reactor(基于事件)和Proactor
2.1IO and New IO 監(jiān)聽(tīng)文件系統(tǒng)變化通知
通過(guò)FileSystems.getDefault().newWatchService()獲取watchService,然后將需要監(jiān)聽(tīng)的path目錄注冊(cè)到這個(gè)watchservice中,對(duì)于這個(gè)目錄的文件修改,新增,刪除等實(shí)踐可以配置,然后就自動(dòng)能監(jiān)聽(tīng)到響應(yīng)的事件。
2.2 IO and New IO遍歷文件樹(shù) ,通過(guò)繼承SimpleFileVisitor類(lèi),實(shí)現(xiàn)事件遍歷目錄樹(shù)的操作,然后通過(guò)Files.walkFileTree(listDir, opts, Integer.MAX_VALUE, walk);這個(gè)API來(lái)遍歷目錄樹(shù)
2.3 AIO異步IO 文件和網(wǎng)絡(luò) 異步IO在java
NIO2實(shí)現(xiàn)了,都是用AsynchronousFileChannel,AsynchronousSocketChanne等實(shí)現(xiàn),關(guān)于同步阻塞IO,同步非阻塞IO,異步阻塞IO和異步非阻塞IO。Java NIO2中就實(shí)現(xiàn)了操作系統(tǒng)的異步非阻塞IO。
3. JDBC 4.1
3.1.可以使用try-with-resources自動(dòng)關(guān)閉Connection, ResultSet, 和 Statement資源對(duì)象
3.2. RowSet 1.1:引入RowSetFactory接口和RowSetProvider類(lèi),可以創(chuàng)建JDBC driver支持的各種 row sets,這里的rowset實(shí)現(xiàn)其實(shí)就是將sql語(yǔ)句上的一些操作轉(zhuǎn)為方法的操作,封裝了一些功能。
3.3. JDBC-ODBC驅(qū)動(dòng)會(huì)在jdk8中刪除
4. 并發(fā)工具增強(qiáng)
4.1.fork-join
最大的增強(qiáng),充分利用多核特性,將大問(wèn)題分解成各個(gè)子問(wèn)題,由多個(gè)cpu可以同時(shí)解決多個(gè)子問(wèn)題,最后合并結(jié)果,繼承RecursiveTask,實(shí)現(xiàn)compute方法,然后調(diào)用fork計(jì)算,最后用join合并結(jié)果。
4.2.ThreadLocalRandon 并發(fā)下隨機(jī)數(shù)生成類(lèi),保證并發(fā)下的隨機(jī)數(shù)生成的線程安全,實(shí)際上就是使用threadlocal
4.3. phaser 類(lèi)似cyclebarrier和countdownlatch,不過(guò)可以動(dòng)態(tài)添加資源減少資源
5. Networking增強(qiáng)
新增URLClassLoader close方法,可以及時(shí)關(guān)閉資源,后續(xù)重新加載class文件時(shí)不會(huì)導(dǎo)致資源被占用或者無(wú)法釋放問(wèn)題
URLClassLoader.newInstance(new URL[]{}).close();
新增Sockets Direct Protocol
繞過(guò)操作系統(tǒng)的數(shù)據(jù)拷貝,將數(shù)據(jù)從一臺(tái)機(jī)器的內(nèi)存數(shù)據(jù)通過(guò)網(wǎng)絡(luò)直接傳輸?shù)搅硗庖慌_(tái)機(jī)器的內(nèi)存中
6. Multithreaded Custom Class Loaders
解決并發(fā)下加載class可能導(dǎo)致的死鎖問(wèn)題,這個(gè)是jdk1.6的一些新版本就解決了,jdk7也做了一些優(yōu)化。有興趣可以仔細(xì)從官方文檔詳細(xì)了解
JDK1.8的新特性
一、接口的默認(rèn)方法
Java 8允許我們給接口添加一個(gè)非抽象的方法實(shí)現(xiàn),只需要使用 default關(guān)鍵字即可,這個(gè)特征又叫做擴(kuò)展方法。
二、Lambda 表達(dá)式
在Java 8 中你就沒(méi)必要使用這種傳統(tǒng)的匿名對(duì)象的方式了,Java 8提供了更簡(jiǎn)潔的語(yǔ)法,lambda表達(dá)式:
Collections.sort(names, (String a, String b) - {
return b.compareTo(a);
});
三、函數(shù)式接口
Lambda表達(dá)式是如何在java的類(lèi)型系統(tǒng)中表示的呢?每一個(gè)lambda表達(dá)式都對(duì)應(yīng)一個(gè)類(lèi)型,通常是接口類(lèi)型。而“函數(shù)式接口”是指僅僅只包含一個(gè)抽象方法的接口,每一個(gè)該類(lèi)型的lambda表達(dá)式都會(huì)被匹配到這個(gè)抽象方法。因?yàn)?默認(rèn)方法 不算抽象方法,所以你也可以給你的函數(shù)式接口添加默認(rèn)方法。
四、方法與構(gòu)造函數(shù)引用
Java 8 允許你使用 :: 關(guān)鍵字來(lái)傳遞方法或者構(gòu)造函數(shù)引用,上面的代碼展示了如何引用一個(gè)靜態(tài)方法,我們也可以引用一個(gè)對(duì)象的方法:
converter = something::startsWith;
String converted = converter.convert("Java");
System.out.println(converted);
五、Lambda 作用域
在lambda表達(dá)式中訪問(wèn)外層作用域和老版本的匿名對(duì)象中的方式很相似。你可以直接訪問(wèn)標(biāo)記了final的外層局部變量,或者實(shí)例的字段以及靜態(tài)變量。
六、訪問(wèn)局部變量
可以直接在lambda表達(dá)式中訪問(wèn)外層的局部變量:
七、訪問(wèn)對(duì)象字段與靜態(tài)變量
和本地變量不同的是,lambda內(nèi)部對(duì)于實(shí)例的字段以及靜態(tài)變量是即可讀又可寫(xiě)。該行為和匿名對(duì)象是一致的:
八、訪問(wèn)接口的默認(rèn)方法
JDK 1.8 API包含了很多內(nèi)建的函數(shù)式接口,在老Java中常用到的比如Comparator或者Runnable接口,這些接口都增加了@FunctionalInterface注解以便能用在lambda上。
Java 8 API同樣還提供了很多全新的函數(shù)式接口來(lái)讓工作更加方便,有一些接口是來(lái)自Google Guava庫(kù)里的,即便你對(duì)這些很熟悉了,還是有必要看看這些是如何擴(kuò)展到lambda上使用的。
日期:2003-03-07
作為第一個(gè)真正的“高速”病毒:“2003蠕蟲(chóng)王”的傳播數(shù)度比當(dāng)年的“紅色代碼”快兩個(gè)數(shù)量級(jí):在頭一分鐘之內(nèi),感染主機(jī)數(shù)量每8.5秒增長(zhǎng)一倍;3分鐘后該病毒的傳播速度達(dá)到峰值(每秒鐘進(jìn)行5500萬(wàn)次掃描);接下來(lái),其傳播速度由于自身擠占了絕大部分網(wǎng)絡(luò)帶寬而開(kāi)始下降;10分鐘后,易受攻擊的主機(jī)基本上已經(jīng)被感染殆盡。題圖是“2003蠕蟲(chóng)王”發(fā)作30分鐘后在全球的感染面積,其傳播速度、破壞力可見(jiàn)一斑。
1月25日上午,美國(guó)的銀行網(wǎng)絡(luò)開(kāi)始癱瘓,大部分銀行的柜員機(jī)停止工作。銀行門(mén)口、街頭柜員機(jī)旁邊、商店和各種消費(fèi)場(chǎng)所里,都站滿了束手無(wú)策的人。
1月25日下午,韓國(guó)情報(bào)通信部發(fā)現(xiàn)有黑客攻擊服務(wù)器的跡象,且攻勢(shì)猛烈,掌握全國(guó)互聯(lián)網(wǎng)服務(wù)命脈的服務(wù)器最終被迫停止工作,導(dǎo)致全國(guó)網(wǎng)絡(luò)服務(wù)全面中斷。
與此同時(shí),中國(guó)、日本、加拿大和澳大利亞等國(guó)家也遭遇類(lèi)似的網(wǎng)絡(luò)災(zāi)難。幾乎在眨眼間,“2003蠕蟲(chóng)王”蠕蟲(chóng)病毒就在世界各國(guó)掀起波瀾。
似曾相識(shí)的罪惡
而讓人們?nèi)f萬(wàn)沒(méi)有想到的是,顛覆所有互聯(lián)網(wǎng)骨干網(wǎng)的罪魁禍?zhǔn)變H僅是一個(gè)利用了SQL Server 2000早就發(fā)現(xiàn)的一個(gè)漏洞進(jìn)行攻擊的蠕蟲(chóng)病毒—“2003蠕蟲(chóng)王”,一個(gè)不知道來(lái)自何方的蠕蟲(chóng)病毒、一小段可以自身飛速?gòu)?fù)制和傳送的程序。
這讓我們?cè)僖淮位叵肫穑?001年春天出現(xiàn)的利用微軟IIS漏洞進(jìn)行攻擊的“紅色代碼”病毒、去年10月基于Unix的Internet根域名服務(wù)器遭受到的DDoS攻擊等。與“紅色代碼” 相比,“2003蠕蟲(chóng)王”的擴(kuò)散速度要快兩個(gè)數(shù)量級(jí),它能在15分鐘內(nèi)感染整個(gè)互聯(lián)網(wǎng),在病毒爆發(fā)的頭5分鐘內(nèi)就導(dǎo)致了9.5億美元到12億美元的生產(chǎn)力損失。
萬(wàn)幸的是,“2003蠕蟲(chóng)王”的傳播在一定程度上受到其程序設(shè)計(jì)缺陷的限制。病毒程序的隨機(jī)數(shù)產(chǎn)生器有缺陷,這使得蠕蟲(chóng)病毒無(wú)法對(duì)所有互聯(lián)網(wǎng)地址進(jìn)行掃描。而且,互聯(lián)網(wǎng)數(shù)據(jù)分析合作協(xié)會(huì)(Cooperative Association for Internet Data Analysis)研究員表示,其隨機(jī)掃描方式非常具有攻擊性,在它的強(qiáng)勢(shì)攻擊下,網(wǎng)絡(luò)很快便陷于癱瘓,從而導(dǎo)致該蠕蟲(chóng)病毒無(wú)法繼續(xù)進(jìn)行阻塞攻擊。這倒也應(yīng)了一句中國(guó)古話:“多行不義必自斃”。
美國(guó)阿巴拉契亞山脈的查圖嘎國(guó)家公園巖洞群,朱諾(Natalie Jackson Mendoza 飾)、莎拉(Shauna Macdonald 飾)一行六人在此經(jīng)歷了一生中最恐怖的時(shí)刻,最終只有莎拉一人僥幸逃生。在此之后,警方派出大批搜救人員進(jìn)山尋找遇難者的尸體以及可能的幸存者,但是最終卻一無(wú)所獲。女警官蘿絲(Krysten Cummings 飾)負(fù)責(zé)詢問(wèn)莎拉失蹤事件的始末,但是莎拉對(duì)過(guò)往發(fā)生的事情沒(méi)有任何記憶。為了尋找幸存者和事實(shí)真相,蘿絲帶著莎拉再次來(lái)到巖洞群,并在此與搜救人員凱西(Anna Skellern 飾)和格雷格(Joshua Dallas 飾)等碰頭。他們從廢棄的礦井口進(jìn)入巖洞,不久便發(fā)現(xiàn)貝絲等人的尸體。
數(shù)據(jù)是平臺(tái)運(yùn)營(yíng)商的重要資產(chǎn),可能提供API接口允許第三方有限度地使用,但是顯然是為了增強(qiáng)自身的業(yè)務(wù),與此目的抵觸的行為都會(huì)受到約束。
收集數(shù)據(jù)主要是通過(guò)計(jì)算機(jī)和網(wǎng)絡(luò)。凡是經(jīng)過(guò)計(jì)算機(jī)處理的數(shù)據(jù)都很容易收集,比如瀏覽器里的搜索、點(diǎn)擊、網(wǎng)上購(gòu)物、……其他數(shù)據(jù)(比如氣溫、海水鹽度、地震波)可以通過(guò)傳感器轉(zhuǎn)化成數(shù)字信號(hào)輸入計(jì)算機(jī)。
收集到的數(shù)據(jù)一般要先經(jīng)過(guò)整理,常用的軟件:Tableau和Impure是功能比較全面的,Refine和Wrangler是比較純粹的數(shù)據(jù)整理工具,Weka用于數(shù)據(jù)挖掘。
Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。用于統(tǒng)計(jì)分析的R語(yǔ)言有個(gè)擴(kuò)展R + Hadoop,可以在Hadoop集群上運(yùn)行R代碼。更具體的自己搜索吧。
可視化輸出的工具很多。建議參考wikipedia的“數(shù)據(jù)可視化”條目。
Tableau、Impure都有可視化功能。R語(yǔ)言也可以繪圖。
還有很多可以用來(lái)在網(wǎng)頁(yè)上實(shí)現(xiàn)可視化輸出的框架或者控件。
大致基于四種技術(shù):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),圖形種類(lèi)豐富,有交互能力,你可以去d3js.org看看,有很多種圖形的demo。
用 regexp_like這個(gè)函數(shù)來(lái)解決,正則表達(dá)式為:[[:punct:]]+這個(gè)正則可以找出任何標(biāo)點(diǎn)符號(hào)。
查詢value中包含任何標(biāo)點(diǎn)符號(hào)的記錄如下:
select * from xxx where regexp_like(value,'[[:punct:]]+');
POSIX 正則表達(dá)式由標(biāo)準(zhǔn)的元字符(metacharacters)所構(gòu)成: '$' 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表達(dá)式零次或一次。 '*' 匹配前面的子表達(dá)式零次或多次。