




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一 Lambda函數(shù)(箭頭函數(shù))Lambda 表達(dá)式,也可稱為閉包,它是推動(dòng) Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡(jiǎn)潔緊湊。(parameters) - expression或(parameters) - statement1;statement2;. lambda表達(dá)式的重要特征:可選類(lèi)型聲明:不需要聲明參數(shù)類(lèi)型,編譯器可以統(tǒng)一識(shí)別參數(shù)值??蛇x的參數(shù)圓括號(hào):一個(gè)參數(shù)無(wú)需定義圓括號(hào),但多個(gè)參數(shù)需要定義圓括號(hào)??蛇x的大括號(hào):如果主體包含了一個(gè)語(yǔ)句,就不需要使用大括號(hào)??蛇x的返回關(guān)鍵字
2、:如果主體只有一個(gè)表達(dá)式返回值則編譯器會(huì)自動(dòng)返回,大括號(hào)需指定表達(dá)式返回?cái)?shù)值。本質(zhì)上,Lambda函數(shù)是對(duì)匿名內(nèi)部類(lèi)對(duì)象的簡(jiǎn)寫(xiě)。應(yīng)用舉例1(比較JAVA7與JAVA8):Lambda函數(shù)做類(lèi)的屬性運(yùn)行結(jié)果:應(yīng)用舉例2(比較JAVA7與JAVA8):Lambda函數(shù)做main函數(shù)變量應(yīng)用舉例3:應(yīng)用舉例4:多線程啟動(dòng)時(shí)使用Lambda函數(shù)應(yīng)用舉例5:在1.7中,匿名內(nèi)部類(lèi)只能使用定義為final的外部變量,1.8會(huì)自動(dòng)為L(zhǎng)ambda函數(shù)使用的外部變量加上final,因此final可以省略不寫(xiě)。二 方法引用 (:方法名 -調(diào)用了方法對(duì)象)應(yīng)用舉例1:應(yīng)用舉例2:三 函數(shù)式接口函數(shù)式接口(Funct
3、ional Interface)就是一個(gè)具有一個(gè)方法的普通接口。函數(shù)式接口可以被隱式轉(zhuǎn)換為lambda表達(dá)式。函數(shù)式接口可以現(xiàn)有的函數(shù)友好地支持 lambda。JDK 1.8之前已有的函數(shù)式接口:java.lang.Runnablejava.util.concurrent.Callablejava.security.PrivilegedActionjava.util.Comparatorjava.io.FileFilterjava.nio.file.PathMatcherjava.lang.reflect.InvocationHandlerjava.beans.PropertyChangeLi
4、stenerjava.awt.event.ActionListenerjavax.swing.event.ChangeListenerJDK 1.8 新增加的函數(shù)接口:java.util.functionjava.util.function 它包含了很多類(lèi),用來(lái)支持 Java的 函數(shù)式編程,該包中的函數(shù)式接口有:序號(hào)接口 & 描述1BiConsumer代表了一個(gè)接受兩個(gè)輸入?yún)?shù)的操作,并且不返回任何結(jié)果2BiFunction代表了一個(gè)接受兩個(gè)輸入?yún)?shù)的方法,并且返回一個(gè)結(jié)果3BinaryOperator代表了一個(gè)作用于于兩個(gè)同類(lèi)型操作符的操作,并且返回了操作符同類(lèi)型的結(jié)果4BiPredicat
5、e代表了一個(gè)兩個(gè)參數(shù)的boolean值方法5BooleanSupplier代表了boolean值結(jié)果的提供方6Consumer代表了接受一個(gè)輸入?yún)?shù)并且無(wú)返回的操作7DoubleBinaryOperator代表了作用于兩個(gè)double值操作符的操作,并且返回了一個(gè)double值的結(jié)果。8DoubleConsumer代表一個(gè)接受double值參數(shù)的操作,并且不返回結(jié)果。9DoubleFunction代表接受一個(gè)double值參數(shù)的方法,并且返回結(jié)果10DoublePredicate代表一個(gè)擁有double值參數(shù)的boolean值方法11DoubleSupplier代表一個(gè)double值結(jié)構(gòu)的提供
6、方12DoubleToIntFunction接受一個(gè)double類(lèi)型輸入,返回一個(gè)int類(lèi)型結(jié)果。13DoubleToLongFunction接受一個(gè)double類(lèi)型輸入,返回一個(gè)long類(lèi)型結(jié)果14DoubleUnaryOperator接受一個(gè)參數(shù)同為類(lèi)型double,返回值類(lèi)型也為double 。15Function接受一個(gè)輸入?yún)?shù),返回一個(gè)結(jié)果。16IntBinaryOperator接受兩個(gè)參數(shù)同為類(lèi)型int,返回值類(lèi)型也為int 。17IntConsumer接受一個(gè)int類(lèi)型的輸入?yún)?shù),無(wú)返回值 。18IntFunction接受一個(gè)int類(lèi)型輸入?yún)?shù),返回一個(gè)結(jié)果 。19IntPred
7、icate:接受一個(gè)int輸入?yún)?shù),返回一個(gè)布爾值的結(jié)果。20IntSupplier無(wú)參數(shù),返回一個(gè)int類(lèi)型結(jié)果。21IntToDoubleFunction接受一個(gè)int類(lèi)型輸入,返回一個(gè)double類(lèi)型結(jié)果 。22IntToLongFunction接受一個(gè)int類(lèi)型輸入,返回一個(gè)long類(lèi)型結(jié)果。23IntUnaryOperator接受一個(gè)參數(shù)同為類(lèi)型int,返回值類(lèi)型也為int 。24LongBinaryOperator接受兩個(gè)參數(shù)同為類(lèi)型long,返回值類(lèi)型也為long。25LongConsumer接受一個(gè)long類(lèi)型的輸入?yún)?shù),無(wú)返回值。26LongFunction接受一個(gè)long類(lèi)
8、型輸入?yún)?shù),返回一個(gè)結(jié)果。27LongPredicateR接受一個(gè)long輸入?yún)?shù),返回一個(gè)布爾值類(lèi)型結(jié)果。28LongSupplier無(wú)參數(shù),返回一個(gè)結(jié)果long類(lèi)型的值。29LongToDoubleFunction接受一個(gè)long類(lèi)型輸入,返回一個(gè)double類(lèi)型結(jié)果。30LongToIntFunction接受一個(gè)long類(lèi)型輸入,返回一個(gè)int類(lèi)型結(jié)果。31LongUnaryOperator接受一個(gè)參數(shù)同為類(lèi)型long,返回值類(lèi)型也為long。32ObjDoubleConsumer接受一個(gè)object類(lèi)型和一個(gè)double類(lèi)型的輸入?yún)?shù),無(wú)返回值。33ObjIntConsumer接受一個(gè)
9、object類(lèi)型和一個(gè)int類(lèi)型的輸入?yún)?shù),無(wú)返回值。34ObjLongConsumer接受一個(gè)object類(lèi)型和一個(gè)long類(lèi)型的輸入?yún)?shù),無(wú)返回值。35Predicate接受一個(gè)輸入?yún)?shù),返回一個(gè)布爾值結(jié)果。36Supplier無(wú)參數(shù),返回一個(gè)結(jié)果。37ToDoubleBiFunction接受兩個(gè)輸入?yún)?shù),返回一個(gè)double類(lèi)型結(jié)果38ToDoubleFunction接受一個(gè)輸入?yún)?shù),返回一個(gè)double類(lèi)型結(jié)果39ToIntBiFunction接受兩個(gè)輸入?yún)?shù),返回一個(gè)int類(lèi)型結(jié)果。40ToIntFunction接受一個(gè)輸入?yún)?shù),返回一個(gè)int類(lèi)型結(jié)果。41ToLongBiFunct
10、ion接受兩個(gè)輸入?yún)?shù),返回一個(gè)long類(lèi)型結(jié)果。42ToLongFunction接受一個(gè)輸入?yún)?shù),返回一個(gè)long類(lèi)型結(jié)果。43UnaryOperator接受一個(gè)參數(shù)為類(lèi)型T,返回值類(lèi)型也為T(mén)。四 接口的默認(rèn)方法默認(rèn)方法就是接口可以有實(shí)現(xiàn)方法,而且不需要實(shí)現(xiàn)類(lèi)去實(shí)現(xiàn)其方法。我們只需在方法名前面加個(gè)default關(guān)鍵字即可實(shí)現(xiàn)默認(rèn)方法。為什么要有這個(gè)特性?1.8之前,修改接口意味著要修改全部實(shí)現(xiàn)該接口的類(lèi),例如,java 8之前的集合框架沒(méi)有foreach方法,通常的解決辦法是在JDK里給相關(guān)的接口添加新的方法及實(shí)現(xiàn)類(lèi)。對(duì)于已經(jīng)發(fā)布的版本,會(huì)影響已有的實(shí)現(xiàn)。接口引進(jìn)了的默認(rèn)方法的機(jī)制。最大化的
11、解決了接口的修改與現(xiàn)有的實(shí)現(xiàn)不兼容的問(wèn)題。需求變更,需要修改接口,此時(shí)使用java8新特性中的接口默認(rèn)方法,實(shí)現(xiàn)類(lèi)TestImpl無(wú)需改變代碼,ITest接口即可提供服務(wù)。當(dāng)然TestImpl也可以覆蓋接口中的變更方法print五 JAVA8 StreamStream 使用一種類(lèi)似用 SQL 語(yǔ)句從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)的直觀方式來(lái)提供一種對(duì) Java 集合運(yùn)算和表達(dá)的高階抽象。Stream API可以極大提供Java程序員的生產(chǎn)力,讓程序員寫(xiě)出高效率、干凈、簡(jiǎn)潔的代碼。這種風(fēng)格將要處理的元素集合看作一種流, 流在管道中傳輸, 并且可以在管道的節(jié)點(diǎn)上進(jìn)行處理, 比如篩選, 排序,聚合等,最后由最終操作
12、(terminal operation)得到前面處理的結(jié)果。+-+ +-+ +-+ +-+ +-+| stream of elements +- |filter+- |sorted+- |map+- |collect|+-+ +-+ +-+ +-+ +-+以上的流程轉(zhuǎn)換為 Java 代碼為:List transactionsIds = widgets.stream() .filter(b - b.getColor() = RED) .sorted(x,y) - x.getWeight() - y.getWeight() .mapToInt(Widget:getWeight) .sum();5.
13、1生成流:在 Java 8 中, 集合接口有兩個(gè)方法來(lái)生成流:stream() 為集合創(chuàng)建串行流。parallelStream() 為集合創(chuàng)建并行流?!敬信c并行】5.2 forEach遍歷方法5.3 map方法map用于映射每個(gè)元素到對(duì)應(yīng)的運(yùn)行結(jié)果5.4 filter、limit、sorted、parallelStreamfilter 方法用于通過(guò)設(shè)置的條件過(guò)濾出元素。limit 獲取指定數(shù)量的流sorted 對(duì)流對(duì)象進(jìn)行排序parallelStream 并行流替代串行流5.5 collect方法及Collectors類(lèi)Collectors.toList方法 由流轉(zhuǎn)變?yōu)長(zhǎng)ist集合Colle
14、ctors.joining(,)方法,由流轉(zhuǎn)變?yōu)樽址?.6 IntSummaryStatistics統(tǒng)計(jì)收集器5.7 綜合比較JAVA7與JAVA8package pany.java8.stream;import java.util.ArrayList;import java.util.Arrays;import java.util.IntSummaryStatistics;import java.util.List;import java.util.Random;import java.util.stream.Collectors;public class Stream7 /Java7計(jì)算
15、空字符串?dāng)?shù)量private static int getCountEmptyStringUsingJava7(List strings) int count = 0;for (String string : strings) if (string.isEmpty() count+;return count;/Java7計(jì)算長(zhǎng)度為3的字符串?dāng)?shù)量private static int getCountLength3UsingJava7(List strings) int count = 0;for (String string : strings) if (string.length() = 3)
16、count+;return count;/Java7將非空字符串整合成List集合private static List deleteEmptyStringsUsingJava7(List strings) List filteredList = new ArrayList();for (String string : strings) if (!string.isEmpty() filteredList.add(string);return filteredList;/Java7將非空字符串合并成指定分隔符的字符串private static String getMergedStringUs
17、ingJava7(List strings, String separator) StringBuilder stringBuilder = new StringBuilder();for (String string : strings) if (!string.isEmpty() stringBuilder.append(string);stringBuilder.append(separator);String mergedString = stringBuilder.toString();return mergedString.substring(0, mergedString.len
18、gth() - 2);/Java7獲取平方集合private static List getSquares(List numbers) List squaresList = new ArrayList();for (Integer number : numbers) Integer square = new Integer(Value() * Value();if (!squaresList.contains(square) squaresList.add(square);return squaresList;/Java7獲取最大值private sta
19、tic int getMax(List numbers) int max = numbers.get(0);for (int i = 1; i max) max = Value();return max;/Java7獲取最小值private static int getMin(List numbers) int min = numbers.get(0);for (int i = 1; i numbers.size(); i+) Integer number = numbers.get(i);if (Value() min) min = number.in
20、tValue();return min;/Java7獲取總數(shù)private static int getSum(List numbers) int sum = (int) (numbers.get(0);for (int i = 1; i numbers.size(); i+) sum += (int) numbers.get(i);return sum;/Java7獲取平均值private static int getAverage(List numbers) return getSum(numbers) / numbers.size();/主函數(shù)public static void mai
21、n(String args) System.out.println(*);System.out.println(使用 Java 7: );/ 計(jì)算空字符串List strings = Arrays.asList(abc, , bc, efg, abcd, , jkl);System.out.println(列表: + strings);long count = getCountEmptyStringUsingJava7(strings);System.out.println(空字符數(shù)量為: + count);count = getCountLength3UsingJava7(strings);
22、System.out.println(字符串長(zhǎng)度為 3 的數(shù)量為: + count);/ 刪除空字符串List filtered = deleteEmptyStringsUsingJava7(strings);System.out.println(篩選后的列表: + filtered);/ 刪除空字符串,并使用逗號(hào)把它們合并起來(lái)String mergedString = getMergedStringUsingJava7(strings, , );System.out.println(合并字符串: + mergedString);List numbers = Arrays.asList(3,
23、2, 2, 3, 7, 3, 5);/ 獲取列表元素平方數(shù)List squaresList = getSquares(numbers);System.out.println(平方數(shù)列表: + squaresList);List integers = Arrays.asList(1, 2, 13, 4, 15, 6, 17, 8, 19);System.out.println(列表: + integers);System.out.println(列表中最大的數(shù) : + getMax(integers);System.out.println(列表中最小的數(shù) : + getMin(integers)
24、;System.out.println(所有數(shù)之和 : + getSum(integers);System.out.println(平均數(shù) : + getAverage(integers);System.out.println(隨機(jī)數(shù): );/ 輸出10個(gè)隨機(jī)數(shù)Random random = new Random();for (int i = 0; i string.isEmpty().count();System.out.println(空字符串?dāng)?shù)量為: + count);count = strings.stream().filter(string - string.length() = 3
25、).count();System.out.println(字符串長(zhǎng)度為 3 的數(shù)量為: + count);filtered = strings.stream().filter(string - !string.isEmpty().collect(Collectors.toList();System.out.println(篩選后的列表: + filtered);mergedString = strings.stream().filter(string - !string.isEmpty().collect(Collectors.joining(, );System.out.println(合并
26、字符串: + mergedString);squaresList = numbers.stream().map(i - i * i).distinct().collect(Collectors.toList();System.out.println(Squares List: + squaresList);System.out.println(列表: + integers);IntSummaryStatistics stats = integers.stream().mapToInt(x) - x).summaryStatistics();System.out.println(列表中最大的數(shù)
27、: + stats.getMax();System.out.println(列表中最小的數(shù) : + stats.getMin();System.out.println(所有數(shù)之和 : + stats.getSum();System.out.println(平均數(shù) : + stats.getAverage();System.out.println(隨機(jī)數(shù): );s().limit(10).sorted().forEach(System.out:println);/ 并行處理count = strings.parallelStream().filter(string - str
28、ing.isEmpty().count();System.out.println(空字符串的數(shù)量為: + count);六 JAVA8 Optional類(lèi)Optional 類(lèi)是一個(gè)可以為null的容器對(duì)象,它可以保存類(lèi)型T的值,或者僅僅保存null。如果值存在,則isPresent()方法會(huì)返回true,調(diào)用get()方法會(huì)返回該對(duì)象。這樣我們就不用顯式進(jìn)行空值檢測(cè)。Optional 類(lèi)的引入很好的解決空指針異常。類(lèi)聲明以下是一個(gè)java.util.Optional類(lèi)的聲明:public final class Optional extends Object類(lèi)方法序號(hào)方法 & 描述1stati
29、c Optional empty()返回空的 Optional 實(shí)例。2boolean equals(Object obj)判斷其他對(duì)象是否等于 Optional。3Optional filter(Predicate? super predicate)如果值存在,并且這個(gè)值匹配給定的 predicate,返回一個(gè)Optional用以描述這個(gè)值,否則返回一個(gè)空的Optional。4 Optional flatMap(Function? super T,Optional mapper)如果值存在,返回基于Optional包含的映射方法的值,否則返回一個(gè)空的Optional5T get()如果在這個(gè)
30、Optional中包含這個(gè)值,返回值,否則拋出異常:NoSuchElementException6int hashCode()返回存在值的哈希碼,如果值不存在 返回 0。7void ifPresent(Consumer consumer)如果值存在則使用該值調(diào)用 consumer , 否則不做任何事情。8boolean isPresent()如果值存在則方法會(huì)返回true,否則返回 false。9Optional map(Function mapper)如果存在該值,提供的映射方法,如果返回非null,返回一個(gè)Optional描述結(jié)果。10static Optional of(T value)
31、返回一個(gè)指定非null值的Optional。11static Optional ofNullable(T value)如果為非空,返回 Optional 描述的指定值,否則返回空的 Optional。12T orElse(T other)如果存在該值,返回值, 否則返回 other。13T orElseGet(Supplier other)如果存在該值,返回值, 否則觸發(fā) other,并返回 other 調(diào)用的結(jié)果。14 T orElseThrow(Supplier exceptionSupplier)如果存在該值,返回包含的值,否則拋出由 Supplier 繼承的異常15String toS
32、tring()返回一個(gè)Optional的非空字符串,用來(lái)調(diào)試七 JAVA8 Nashorn引擎Nashorn是一個(gè) javascript 引擎,從JDK 1.8開(kāi)始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成為Java的嵌入式JavaScript引擎。Nashorn完全支持ECMAScript 5.1規(guī)范以及一些擴(kuò)展,可以將JavaScript編譯成Java字節(jié)碼,帶來(lái)了2到10倍的性能提升。7.1 jjs命令行工具jjs是個(gè)基于Nashorn引擎的命令行工具。它接受一些JavaScript源代碼為參數(shù),并且執(zhí)行這些源代碼。/print語(yǔ)句,瀏覽器執(zhí)行就是直接調(diào)打印程序,
33、控制臺(tái)執(zhí)行就是在控制臺(tái)顯示信息7.2 JAVA調(diào)用Javascript程序使用 ScriptEngineManager, JavaScript 代碼可以在 Java 中執(zhí)行.7.3 Javascript調(diào)用JAVA程序八 JAVA8 日期時(shí)間APIJava 8通過(guò)發(fā)布新的Date-Time API 來(lái)進(jìn)一步加強(qiáng)對(duì)日期與時(shí)間的處理。在 Java7之前的版本中,日期時(shí)間 API 存在的問(wèn)題如下:非線程安全 java.util.Date 是異步的,非線程安全的,這是Java日期類(lèi)最大的問(wèn)題之一。設(shè)計(jì)很差 Java的日期/時(shí)間類(lèi)的定義并不一致,在java.util和java.sql的包中都有日期類(lèi),此
34、外用于格式化和解析的類(lèi)在java.text包中定義。java.util.Date同時(shí)包含日期和時(shí)間,而java.sql.Date僅包含日期。另外這兩個(gè)類(lèi)都有相同的名字,這本身就是一個(gè)非常糟糕的設(shè)計(jì)。時(shí)區(qū)處理麻煩 日期類(lèi)并不提供國(guó)際化,沒(méi)有時(shí)區(qū)支持,因此Java引入了java.util.Calendar和java.util.TimeZone類(lèi),但他們同樣存在上述所有的問(wèn)題。Java 8 在java.time包下提供了很多新的 API。以下為兩個(gè)比較重要的 API:Local(本地) 簡(jiǎn)化了日期時(shí)間的處理,沒(méi)有時(shí)區(qū)的問(wèn)題。Zoned(時(shí)區(qū)) 通過(guò)制定的時(shí)區(qū)處理日期時(shí)間。Java8中新的java.t
35、ime包涵蓋了所有處理日期,時(shí)間,日期/時(shí)間,時(shí)區(qū),時(shí)刻(instants),過(guò)程(during)與時(shí)鐘(clock)的操作。8.1 本地化日期時(shí)間APIpackage pany.java8.time;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.Month;public class LocalTimeDemo public static void main(String args) LocalTimeDemo lt = new Loca
36、lTimeDemo();lt.testLocalDateTime();public void testLocalDateTime() / 獲取當(dāng)前的日期時(shí)間LocalDateTime currentTime = LocalDateTime.now();System.out.println(當(dāng)前時(shí)間: + currentTime);LocalDate date1 = currentTime.toLocalDate();System.out.println(date1: + date1);Month month = currentTime.getMonth();int day = currentT
37、ime.getDayOfMonth();int seconds = currentTime.getSecond();System.out.println(月: + month + , 日: + day + , 秒: + seconds);LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);System.out.println(date2: + date2);/ 12 december 2014LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);Sys
38、tem.out.println(date3: + date3);/ 22 小時(shí) 15 分鐘LocalTime date4 = LocalTime.of(22, 15);System.out.println(date4: + date4);/ 解析字符串LocalTime date5 = LocalTime.parse(20:15:30);System.out.println(date5: + date5);8.2 使用時(shí)區(qū)的時(shí)間API九 JAVA8 Base64Java 8 內(nèi)置了 Base64 編碼的編碼器和解碼器。Base64工具類(lèi)提供了一套靜態(tài)方法獲取下面三種BASE64編解碼器:基本:
39、輸出被映射到一組字符A-Za-z0-9+/,編碼不添加任何行標(biāo),輸出的解碼僅支持A-Za-z0-9+/。URL:輸出映射到一組字符A-Za-z0-9+_,輸出是URL和文件。MIME:輸出隱射到MIME友好格式。輸出每行不超過(guò)76字符,并且使用r并跟隨n作為分割。編碼輸出最后沒(méi)有行分割。內(nèi)嵌類(lèi)序號(hào)內(nèi)嵌類(lèi) & 描述1static class Base64.Decoder該類(lèi)實(shí)現(xiàn)一個(gè)解碼器用于,使用 Base64 編碼來(lái)解碼字節(jié)數(shù)據(jù)。2static class Base64.Encoder該類(lèi)實(shí)現(xiàn)一個(gè)編碼器,使用 Base64 編碼來(lái)編碼字節(jié)數(shù)據(jù)。方法序號(hào)方法名 & 描述1static Base6
40、4.Decoder getDecoder()返回一個(gè) Base64.Decoder ,解碼使用基本型 base64 編碼方案。2static Base64.Encoder getEncoder()返回一個(gè) Base64.Encoder ,編碼使用基本型 base64 編碼方案。3static Base64.Decoder getMimeDecoder()返回一個(gè) Base64.Decoder ,解碼使用 MIME 型 base64 編碼方案。4static Base64.Encoder getMimeEncoder()返回一個(gè) Base64.Encoder ,編碼使用 MIME 型 base64 編碼方案。5static Base64.Encoder getMimeEncoder(int lineLength, byte lineSeparator)返回一個(gè) Base64.Encoder ,編碼使用 MIME 型 base64 編碼方案,可以通過(guò)參數(shù)指定每行的長(zhǎng)度及行的分隔符。6static Base64.Decoder getUrlDecoder()返回一個(gè) Base64.Decoder ,解碼使用 URL 和文件名安全型 base64 編碼方案。7static Base64.Encoder getUrlEncoder()返回一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (高清版)DB3715∕T 7-2022 黑水虻飼養(yǎng)技術(shù)規(guī)程
- 統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)下冊(cè)第3課《開(kāi)滿鮮花的小路》精美課件
- Unit 7 Days and Months Lesson 5 colorful seasons 教學(xué)設(shè)計(jì) 2024-2025學(xué)年冀教版(2024)七年級(jí)英語(yǔ)上冊(cè)
- 固態(tài)電池知識(shí)培訓(xùn)課件
- 能源行業(yè):石油工程師簡(jiǎn)歷
- 初中體育與健康 初二上 水平四 八年級(jí)(第一學(xué)期)籃球大單元教學(xué)設(shè)計(jì)+體前變向換手運(yùn)球突破投籃教學(xué)設(shè)計(jì)
- 2025年益陽(yáng)貨運(yùn)上崗證考試多少道題
- 2025年成都貨運(yùn)從業(yè)資格證考試試題
- 《美麗的校園-面積單位》教學(xué)設(shè)計(jì)-2024-2025學(xué)年三年級(jí)上冊(cè)數(shù)學(xué)浙教版
- 2025年神奇的指紋大班科學(xué)標(biāo)準(zhǔn)教案
- 沒(méi)頭腦和不高興-竇桂梅.精選優(yōu)秀PPT課件
- 第三方單位考核管理辦法
- 造粒塔外壁清洗施工方案
- 鋼棧橋計(jì)算書(shū)(excel版)
- MTBE裂解工藝交流材料
- 中醫(yī)診斷學(xué)第七章第二節(jié)六經(jīng)辨證
- 租賃合同審批表
- 數(shù)據(jù)庫(kù)及其應(yīng)用-重點(diǎn)復(fù)習(xí)資料.代碼02120
- 巖石堅(jiān)固性和穩(wěn)定性分級(jí)表
- 律師事務(wù)所函[]第號(hào)
- 物流經(jīng)典游戲啤酒游戲(完全操作版)
評(píng)論
0/150
提交評(píng)論