導航:首頁 > 編程語言 > nashornjavafx

nashornjavafx

發布時間:2023-01-22 04:00:45

1. java se8的新特性有哪些

java se8新特性如下:

Java Programming Language
1、lambda expressions,一個新的語言特性,它可以將功能作為方法的參數or代碼作為數據,它使你表達單一方法介面的實例更加簡潔。
2、對已經有方法名的方法提供一個更加可讀的lambda expressions為方法的引用。
3、默認方法使新的功能添加到庫的介面,確保與舊版本的介面編寫的代碼的二進制兼容
4、重復註解提供不止一次應用同樣的註解類型
5、類型註解提供應用註解的能力,任何一個類型的使用,不僅在聲明上使用。用於一個可插拔式的系統,此功能提高你代碼的類型檢查。
6、提高類型的推斷
7、方法參數的反射

Collections

1、新的java.util.stream包,提供了stream api支持流元素上的功能性操作。stream api集成到collections api中,使用批量操作,如串列or並行 map-rece 轉換。
2、使用key collisions改進HashMap的性能
compact profiles
包含java SE平台預定義的子集和使不需要整個平台被部署和運行在小型設備中的應用

security

1、客戶端默認啟用TLS1.2
2、新的AccessController.doPrivileged,用代碼斷言它的privileges的子集,沒有防止全棧遍歷時檢查其他許可權
3、更強的基於密碼的加密演算法
4、SSL/TLS SNI擴展在jsSE伺服器中支持
5、支持AEAD演算法:SunJCE提供增強的支持AES / GCM / nopadding密碼的實現以及GCM演算法參數,SunJSSE提供基於密碼套件的AEAD模式增強
6、keystore增強,包含新的keystore類型java.security.DomainLoadStoreParameter,和新的命令行選項-importpassword
7、SHA-224 Message Digests
8、NSA Suite B加密支持
9、更好的支持High Entropy 隨機數生成
10、新的java.security.cert.PKIXRevocationChecker類為配置撤銷X.509證書
11、win下64-bit PKCS11
12、新的rcache 類型在Kerberos 5 Replay Caching
13、支持Kerberos 5協議轉換和約束代理
14、默認禁用Kerberos 5弱的加密
15、未綁定SASL為GSS-API/Kerberos 5機制
16、多主機名下SASL服務
17、在Mac OS X上JNI橋接到native JGSS
18、在sunjsse提供更強的實力,EDH鍵的支持
19、在JSSE支持伺服器端密碼套件個性設置

JavaFX
1、新Modena theme實現
2、新SwingNode類容許開發者嵌套Swing內容到javaFX應用中
3、新UI Controls 包含DatePicker 和TreeTableView
4、javafx.print包為JavaFX提供公共printing API
5、三維圖形特性,目前包含3D shapes、camera、lights、subscene、material、picking和antialiasing
6、WebView類提供的新功能和改進,支持更多關於HTML5的特性,Web Scokets,Web Workers和Web Fonts
7、增強文本的支持
8、支持Hi-DPI 顯示
9、css樣式類變成公共API
10、新的ScheledService類允許自動重啟服務
11、ARM平台可用JavaFX

tools
1、jjs命令調用Nashorn引擎
2、java命令允許JavaFX應用
3、java man page已經更新
4、jdeps命令行工具提供分析類文件
5、Java Management Extensions (JMX) 提供遠程診斷命令
6、jarsiger工具可選,從TSA請求簽名時間抽
7、javac tool
7.1、-parameters選項存儲正式的參數名和反射API檢索正式參數的名稱
7.2、JLS 15.21相等操作的類型規則通過javac命令正確的執行
7.3、javac工具現在支持檢查javadoc注釋的內容,該特性通過-Xdoclint選項
7.4、javac工具現在提供生成native header的能力。移除javah工具,通過javac的-h選項使用
8、javadoc tool
8.1、javadoc工具支持新DocTree API
8.2、javadoc工具支持新的javadoc 訪問API,允許在java 應用直接調用javadoc 工具,沒有執行新的進程
8.3、javadoc工具現在支持檢查javadoc注釋的內容,該特性通過-Xdoclint選項

Internationalization
1、unicode增強,支持unicode6.2.0
2、採用unicode CLDR數據和java.locale.providers 系統屬性
3、新的Calendar和Locale APIs
4、安裝一個自定義的資源包作為一個擴展的能力

Deployment
1、對sandbox applet和 java web start app,URLPermission現在是用來允許連接到伺服器從它們啟動完成後。SocketPermission不再授權
2、在所有安全級別,在主要jar文件的jar文件的manifest中必須給定許可權屬性

Date-Time Package
一個新的軟體包,提供更加全面的日期-時間模型

Scripting
Nashorn js 引擎

Pack200
1、Pack200支持常量池條目和由JSR 292引入了新的位元組碼
2、JDK8支持由JSR-292, JSR-308 and JSR-335指定類文件的變化

IO and NIO
1、基於Solaris在Solaris事件埠機制實現新的SelectorProvider。使用系統屬性java.nio.channels.spi.Selector設置的值sun.nio.ch.EventPortSelectorProvder運行
2、減少<JDK_HOME>/jre/lib/charsets.jar文件中數量
3、提高java.lang.String(byte[], *)構造器和java.lang.String.getBytes()方法的性能

java.lang and java.util.Pack ages
1、並發的數組排序
2、標準的編碼和解碼Base64
3、無符號運算的支持

JDBC
1、移除JDBC-ODBC橋
2、JDBC4.2引入新的功能

Java DB
1、JDK8 包含 Java DB 10.10

Networking
1、添加java.net.URLPermission類
2、在java.net.HttpURLConnection中,如果安裝安全管理,請求要求打開一個連接請求的許可權

Concurrency
1、在java.util.concurrent包中新增類和介面
2、java.util.concurrent.ConcurrentHashMap類添加方法支持聚合操作,基於新的流設施和lambda expressions
3、java.util.concurrent.atomic包中添加類支持可擴展可更新的變數
4、 java.util.concurrent.ForkJoinPool類中添加方法支持通用池
5、 java.util.concurrent.locks.StampedLock類已經添加使用3種模式控制讀/寫訪問的基於能力的鎖

Java XML – JAXP

HotSpot
1、硬體特性增加了AES,UseAES和UseAESIntrinsics標簽在打開基於硬體AES可用(Inter 硬體),硬體必須是2010或更新Westmere硬體,如:打開硬體AES,使用下面標記
-XX:+UseAES -XX:+UseAESIntrinsics
關閉硬體AES:
-XX:-UseAES -XX:-UseAESIntrinsics
2、移除PermGen
3、通過為方法調用引入位元組碼指令支持默認方法

2. Java8新特性有哪些

【注意】本文節選自是 DZone 指南&#8194;Java 生態系統的專題文章,作者Trisha Gee是Java資深工程師和佈道者。在本文中,Trisha Gee闡述了Java 8的重要特性以及使用的原因,由OneAPM工程師翻譯。

一、要點速遞

1、在很多情況下,Java8 都能提升應用性能,而無需任何改變或性能調優。

2、Lambda 表達式、 Streams API 以及現有類的新方法都是提高生產力的重要工具。

3、Java8 新推出的 Optional 類型在處理 null 值時,能減少 NullPointerExceptions 的可能性,給開發者極大的靈活度。

二、其他特性:

速度更快

可以取悅老闆、滿足業務或運營人員的一大賣點是:Java8 運行應用時速度更快。通常,升級至 Java8 的應用都能得到速度上的提升,即便沒有做任何改變或調優。對於為了迎合特定 JVM 而做出調整的應用,這或許並不適用。但 Java8 性能更優的理由還有很多:

80%以上的高端企業級應用都使用JAVA平台(電信、銀行等)。JAVA是成熟的產品,已經有10年的歷史。如果你想在Java行業有所建樹,想要系統的進行java的學習,那麼你可以來這個群,前面是二三一,中間是三一四,後面是零二八。連起來就可以了。這里有很多互聯網大牛教你學習,還有免費的課程。不是想學習的就不要加了。

常見數據結構的性能提升:對廣受歡迎的 HashMap 進行的基準測試表明,它們在 Java8 中的性能更好。這種提升非常吸引人——你無需學習新的 Streams API 或 Lambda 語法,甚至不需要改變現有的代碼,就能提升應用的性能。

垃圾回收器提升:通常,Java 應用性能取決於垃圾回收的效率。的確,糟糕的垃圾回收會很大程度上影響應用性能。Java8 對垃圾回收做了很多改變,能有效提升性能並簡化調優。最為人熟知的改變是 PermGen 的移除與 Metaspace 的引入。

Fork/Join 速度提升:fork/join 框架是在 Java7 中首次引入的,目的是簡化使用 JVM 的並發程序。Java8 中投入了很多努力進一步提升該框架。現在,fork/join 在 Streams API 中用於並發操作。

此外,Java8 中還包含諸多改進以支持並發。Oracle 在 JDK 8 中總結了這些性能提升。

代碼行更少

Java 經常被人們詬病其樣本代碼太多。為此,Java8 新的 API 採用了更具功能性的方式,專注於實現什麼而不是如何實現。

Lambda 表達式

Java8 中的 Lambda 表達式不僅是 Java 已有的匿名內部類—— Java8 推出之前傳遞行為的方法之外的語法糖衣。Lambda 表達式採用了 Java 7 的內部改變,因此運用起來相當流暢。想了解如何使用 Lambda 表達式簡化代碼,請繼續閱讀。

集合新方法介紹

Lambda 表達式與 Streams 可能是 Java8 最大的兩個賣點,較少為人知的是 Java 現在允許開發者給現有類添加新的方法,而無需為了向後兼容性折中。這樣,新的方法,結合 Lambda 表達式,能在很大程序上簡化代碼。比如,我們常常需要判斷 Map 中的某個成員是否已經存在,如果不存在則創建之。在 Java8 之前,你可能會這么做:

privatefinalMap<CustomerId,Customer>customers=newHashMap<>();

(CustomerIdcustomerId){
Customercustomer=customers.get(customerId);
if(customer==null){
customer=newCustomer(customerId);
customers.put(customerId,customer);
}
customer.incrementOrders();
}

操作「檢查某個成員在 map 中是否存在,若不存在則添加之」是如此常用,Java 現在為 Map 添加了一個新方法 computeIfAbsent 來支持這個操作。該方法的第二個參數是一個 Lambda 表達式,該表達式定義了如何創建缺少的成員。

(CustomerIdcustomerId){
Customercustomer=customers.computeIfAbsent(customerId,
id->newCustomer(id));
customer.incrementOrders();
}

其實,Java8 還有一個新的特性,稱為方法引用(method references),它能使我們用更簡潔的代碼實現該功能:

(CustomerIdcustomerId){
Customercustomer=customers.computeIfAbsent(customerId,Customer::new);
customer.incrementOrders();
}

Java8 為 Map 與 List 都添加了新方法。你可以了解一下這些新方法,看它們能節省多少行代碼。

Streams API

Streams API 為查詢、操縱數據提供了更多靈活度。這是一個很強大的功能。閱讀這些文章能對 Streams API 有更全面的了解。在大數據時代建立流暢的數據查詢會非常有趣,而且也是常用的操作。比如,你有一列書,你希望按照字母表順序排列這些書的作者名,且不含重復。

publicList<Author>getAllAuthorsAlphabetically(List<Book>books){
List<Author>authors=newArrayList<>();
for(Bookbook:books){
Authorauthor=book.getAuthor();
if(!authors.contains(author)){
authors.add(author);
}
}
Collections.sort(authors,newComparator<Author>(){
publicintcompare(Authoro1,Authoro2){
returno1.getSurname().compareTo(o2.getSurname());
}
});
returnauthors;
}

在上面的代碼中,我們首先遍歷這列書,如果書的作者從未在作者列表出現,則添加之。之後,我們根據作者的姓氏按字母表順序對這些作者排序。這種排序操作正是 Streams 擅長解決的領域:

publicList<Author>getAllAuthorsAlphabetically(List<Book>books){
returnbooks.Streams()
.map(book->book.getAuthor())
.distinct()
.sorted((o1,o2)->o1.getSurname().compareTo(o2.getSurname()))
.collect(Collectors.toList());
}

上面的做法不僅代碼行更少,而且描述性更強——後來的開發者讀到這段代碼能夠輕易理解:1、代碼從書中獲取作者姓名。2、只在意從未出現過的作者。3、返回的列表按照作者姓氏排序。將 Streams API 與其他新特性——方法引用(method references)、比較器(Comparator)的新方法結合使用,可以得到更加簡潔的版本:

publicList<Author>getAllAuthorsAlphabetically(List<Book>books){
returnbooks.Streams()
.map(Book::getAuthor)
.distinct()
.sorted(Comparator.comparing(Author::getSurname))
.collect(Collectors.toList());
}

這里,排序方法按照作者姓氏排序,更加顯而易見了。

便於並行

此前我們淺聊過更利於開箱即用的性能,除了前面提到過的特性,Java8 能更好地利用 CPU 內核。將前例中的 Streams 方法替換為 parallelStreams,JVM 會將此運算分解為不同的任務,使用 fork/join 將這些任務運行在多個核上。然而,並行化並不是加速所有運算的魔法。並行化運算總是會帶來更多工作——分解運算,整合結果,因此無法總是減少時間。但是,對適合並行化的例子,這么做還是頗有效率的。

最大化減少 Null 指針

Java8 的另一個新特性是全新的 Optional 類型。該類型的含義是「我可能有值,也可能是 null。「這樣一來,API 就可以區分可能為 null 的返回值與絕對不會是 null 的返回值,從而最小化 NullPointerException 異常的發生幾率。

Optional 最贊的用處是處理 null。例如,假設我們要從一個列表中找一本特定的書,新創建的 findFirst() 方法會返回 Optional 類型的值,表明它無法確保是否找到特定的值。有了這個可選擇的值,我們接下來可以決定,如果是 null 值要如何處理。如果想要拋出一個自定義的異常,我們可以使用 orElseThrow:

publicBookfindBookByTitle(List<Book>books,Stringtitle){
Optional<Book>foundBook=books.Streams()
.filter(book->book.getTitle().equals(title))
.findFirst();
returnfoundBook.orElseThrow(()->newBookNotFoundException("Didnotfindbookwithtitle"+title));
}

或者,你可以返回其他書:

returnfoundBook.orElseGet(()->getRecommendedAlternativeBook(title));

或者,返回 Optional 類型,這樣,該方法的調用者可以自己決定書沒找到時要怎麼做。

總結:Java8 作為 Java 語言的一次重大發布,包含語法上的更改、新的方法與數據類型,以及一些能默默提升應用性能的隱性改善。Oracle 已經不再支持 Java 7,因此許多公司都被迫向 Java8 轉移。好消息是,Java8 對業務、現有的應用以及期望提高生產力的開發者都好好多。

3. java nashorm怎麼用

從JDK 6開始,Java就已經捆綁了JavaScript引擎,該引擎基於Mozilla的Rhino。該特性允許開發人員將JavaScript代碼嵌入到Java中,甚至從嵌入的JavaScript中調用Java。此外,它還提供了使用jrunscript從命令行運行JavaScript的能力。如果不需要非常好的性能,並且可以接受ECMAScript 3有限的功能集的話,那它相當不錯了。
從JDK 8開始,Nashorn取代Rhino成為Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1規范以及一些擴展。它使用基於JSR 292的新語言特性,其中包含在JDK 7中引入的invokedynamic,將JavaScript編譯成Java位元組碼。
與先前的Rhino實現相比,這帶來了2到10倍的性能提升,雖然它仍然比Chrome和Node.js中的V8引擎要差一些。如果你對實現細節感興趣,那麼可以看看這些來自2013 JVM語言峰會的幻燈片。
相關廠商內容
滴滴出行iOS客戶端架構演進之路!
微信客戶端如何應對弱網路
函數式編程中的Swift與Swift中的函數式編程!
AWS Webinar 5月24日在線課堂|利用AWS Lambda創建應用
國際范 最前沿 不容錯過的容器技術盛會
相關贊助商

GMTC全球移動技術大會2016年6月24日-25日,北京,點擊了解詳情!
由於Nashorn隨JDK 8而來,它還增加了簡潔的函數式介面支持。接下來,我們很快就會看到更多細節。
讓我們從一個小例子開始。首先,你可能需要安裝JDK 8和NetBeans、IntelliJ IDEA或者Eclipse。對於集成JavaScript開發,它們都至少提供了基本的支持。讓我們創建一個簡單的Java項目,其中包含下面兩個示例文件,並運行它:
(點擊圖片可以查看大圖)

在第12行,我們使用引擎的「eval」方法對任意JavaScript代碼求值。在本示例中,我們只是載入了上面的JavaScript文件並對其求值。你可能會發現那個「print」並不熟悉。它不是JavaScript的內建函數,而是Nashorn提供的,它還提供了其它方便的、在腳本環境中大有用武之地的函數。你也可以將 「hello world」的列印代碼直接嵌入到傳遞給「eval」方法的字元串,但將JavaScript放在它自己的文件中為其開啟了全新的工具世界。
Eclipse目前還沒有對Nashorn提供專門的支持,不過,通過JavaScript開發工具(JSDT)項目,它已經支持JavaScript的基本工具和編輯。
(點擊圖片可以查看大圖)

IntelliJ IDEA 13.1(社區版和旗艦版)提供了出色的JavaScript和Nashorn支持。它有一個全功能的調試器,甚至允許在Java和JavaScript之間保持重構同步,因此舉例來說,如果你重命名一個被JavaScript引用的Java類,或者重命名一個用於Java源代碼中的JavaScript文件,那麼該IDE將跨語言修改相應的引用。
下面是一個例子,展示如何調試從Java調用的JavaScript(請注意,NetBeans也提供了JavaScript調試器,如下截圖所示):
(點擊圖片可以查看大圖)

你可能會說,工具看上去不錯,而且新實現修復了性能以及一致性問題,但我為什麼應該用它呢?一個原因是一般的腳本編寫。有時候,能夠直接插入任何類型的字元串,並任由它被解釋,會很方便。有時候,沒有礙事的編譯器,或者不用為靜態類型擔心,可能也是不錯的。或者,你可能對Node.js編程模型感興趣,它也可以和Java一起使用,在本文的末尾我們會看到。另外,還有個情況不得不提一下,與Java相比,使用JavaScript進行JavaFX開發會快很多。
Shell腳本
Nashorn引擎可以使用jjs命令從命令行調用。你可以不帶任何參數調用它,這會將你帶入一個交互模式,或者你可以傳遞一個希望執行的JavaScript文件名,或者你可以用它作為shell腳本的替代,像這樣:
#!/usr/bin/env jjs

var name = $ARG[0];
print(name ? "Hello, ${name}!" : "Hello, world!");

向jjs傳遞程序參數,需要加「—」前綴。因此舉例來說,你可以這樣調用:
./hello-script.js – Joe

如果沒有「—」前綴,參數會被解釋為文件名。
向Java傳遞數據或者從Java傳出數據
正如上文所說的那樣,你可以從Java代碼直接調用JavaScript;只需獲取一個引擎對象並調用它的「eval」方法。你可以將數據作為字元串顯式傳遞……
ScriptEngineManager scriptEngineManager =
new ScriptEngineManager();
ScriptEngine nashorn =
scriptEngineManager.getEngineByName("nashorn");
String name = "Olli";
nashorn.eval("print('" + name + "')");

……或者你可以在Java中傳遞綁定,它們是可以從JavaScript引擎內部訪問的全局變數:
int valueIn = 10;
SimpleBindings simpleBindings = new SimpleBindings();
simpleBindings.put("globalValue", valueIn);
nashorn.eval("print (globalValue)", simpleBindings);

JavaScript eval的求值結果將會從引擎的「eval」方法返回:
Integer result = (Integer) nashorn.eval("1 + 2");
assert(result == 3);

在Nashorn中使用Java類
前面已經提到,Nashorn最強大的功能之一源於在JavaScript中調用Java類。你不僅能夠訪問類並創建實例,你還可以繼承他們,調用他們的靜態方法,幾乎可以做任何你能在Java中做的事。
作為一個例子,讓我們看下來龍去脈。JavaScript沒有任何語言特性是面向並發的,所有常見的運行時環境都是單線程的,或者至少沒有任何共享狀態。有趣的是,在Nashorn環境中,JavaScript確實可以並發運行,並且有共享狀態,就像在Java中一樣:
// 訪問Java類Thread
var Thread = Java.type("java.lang.Thread");

// 帶有run方法的子類
var MyThread = Java.extend(Thread, {
run: function() {
print("Run in separate thread");
}
});
var th = new MyThread();
th.start();
th.join();

請注意,從Nashorn訪問類的規范做法是使用Java.type,並且可以使用Java.extend擴展一個類。
令人高興的函數式
從各方面來說,隨著JDK 8的發布,Java——至少在某種程度上——已經變成一種函數式語言。開發人員可以在集合上使用高階函數,比如,遍歷所有的元素。高階函數是把另一個函數當作參數的函數,它可以用這個函數參數做些有意義的事情。請看下面Java中高階函數的示例:
List<Integer> list = Arrays.asList(3, 4, 1, 2);
list.forEach(new Consumer() {

@Override
public void accept(Object o) {
System.out.println(o);
}
});

對於這個例子,我們的傳統實現方式是使用一個「外部」循環遍歷元素,但現在,我們沒有那樣做,而是將一個「Consumer」函數傳遞給了「forEach」操作,一個高階的「內部循環」操作會將集合中的每個元素一個一個地傳遞給Consumer的「accept」方法並執行它。
如上所述,對於這樣的高階函數,函數式語言的做法是接收一個函數參數,而不是一個對象。雖然在傳統上講,傳遞函數引用本身超出了Java的范圍,但現在,JDK 8有一些語法糖,使它可以使用Lambda表達式(又稱為「閉包」)來實現那種表示方式。例如:
List<Integer> list = Arrays.asList(3, 4, 1, 2);
list.forEach(el -> System.out.println(el));

在這種情況下,「forEach」的參數是這樣一個函數引用的形式。這是可行的,因為Customer是一個函數式介面(有時稱為「單一抽象方法(Single Abstract Method)」類型或「SAM」)。
那麼,我們為什麼要在討論Nashorn時談論Lambda表達式呢?因為在JavaScript中,開發人員也可以這樣編寫代碼,而在這種情況下,Nashorn可以特別好地縮小Java和JavaScript之間的差距。尤其是,它甚至允許開發人員將純JavaScript函數作為函數式介面(SAM類型)的實現來傳遞。
讓我們來看一些純JavaScript代碼,它們與上述Java代碼實現一樣的功能。注意,在JavaScript中沒有內置的列表類型,只有數組;不過這些數組的大小是動態分配的,而且有與Java列表類似的方法。因此,在這個例子中,我們調用一個JavaScript數組的「for Each」方法:
var jsArray = [4,1,3,2];
jsArray.forEach(function(el) { print(el) } );

4. java8update351有什麼用

甲骨文公司OracleJavaDevelopmentKit(JDK)是一款Java開發工具包,包含Java運行環境(java運行庫),Java開發套件和Java基礎類庫源代碼.JavaRuntimeEnvironment(JRE)是運行Java程序的運行環境,不管是做Java開發還是從事安卓開發,都必須在系統安裝JRE運行環境.Java語言的貢獻力量是其他任何技術無可比擬的.

新版變化

2022年10月18日JDK8u351Update發行說明

Java™SEDevelopmentKit8,Update351(JDK8u351)

https://pan..com/s/1ZtDZYZGlz69ikS4vsHAp3Q

[JDK]JavaSEDevelopmentKit穩定版官方下載頁面(需注冊登陸)

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[JRE]JavaRuntimeEnvironment穩定版官方下載頁面(需注冊登陸)

https://java.com/en/download/manual.jsp

閱讀全文

與nashornjavafx相關的資料

熱點內容
天下游舊版本 瀏覽:622
iphone6按鍵震動 瀏覽:528
u盤沒有顯示怎麼打開文件夾 瀏覽:13
win7升級win10激活失敗 瀏覽:914
win10系統文件缺失介質修復 瀏覽:900
怎麼樣系統升級 瀏覽:518
魔客吧傳奇網站模板 瀏覽:365
一段代碼解決html多瀏覽器兼容 瀏覽:803
淘車大師app官方下載 瀏覽:953
win10系統怎麼能找回桌面文件 瀏覽:423
換主板怎麼裝驅動程序 瀏覽:563
宜搜小說舊版本 瀏覽:310
win10凈網大師 瀏覽:262
蘋果5s移動網路設置 瀏覽:680
主文件名的格式 瀏覽:336
如何找吃的app 瀏覽:11
js判斷跳轉前的頁面地址 瀏覽:555
qq瀏覽器儲存密碼 瀏覽:309
網站字體陰影特效代碼 瀏覽:187
g10刀軌銑內腔該如何編程 瀏覽:295

友情鏈接