日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

別瞎寫工具類了,Spring自帶的不香嗎?

來源: 責(zé)編: 時(shí)間:2024-02-01 12:46:46 265觀看
導(dǎo)讀前言最近有些小伙伴,希望我分享一些好用的工具類,幫他們提升開發(fā)效率。今天這篇文章專門跟大家一起總結(jié)一下,Spring框架本身自帶的一些好用的工具類,希望對(duì)你會(huì)有所幫助。1、Assert很多時(shí)候,我們需要在代碼中做判斷:如果不

DsR28資訊網(wǎng)——每日最新資訊28at.com

前言

最近有些小伙伴,希望我分享一些好用的工具類,幫他們提升開發(fā)效率。DsR28資訊網(wǎng)——每日最新資訊28at.com

今天這篇文章專門跟大家一起總結(jié)一下,Spring框架本身自帶的一些好用的工具類,希望對(duì)你會(huì)有所幫助。DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

1、Assert

很多時(shí)候,我們需要在代碼中做判斷:如果不滿足條件,則拋異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

有沒有統(tǒng)一的封裝呢?DsR28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)Spring給我們提供了Assert類,它表示斷言。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)斷言參數(shù)是否為空

斷言參數(shù)是否空,如果不滿足條件,則直接拋異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

String str = null;Assert.isNull(str, "str必須為空");Assert.isNull(str, () -> "str必須為空");Assert.notNull(str, "str不能為空");

如果不滿足條件就會(huì)拋出IllegalArgumentException異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

(2)斷言集合是否為空

斷言集合是否空,如果不滿足條件,則直接拋異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

List<String> list = null;Map<String, String> map = null;Assert.notEmpty(list, "list不能為空");Assert.notEmpty(list, () -> "list不能為空");Assert.notEmpty(map, "map不能為空");

如果不滿足條件就會(huì)拋出IllegalArgumentException異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

(3)斷言條件是否為空

斷言是否滿足某個(gè)條件,如果不滿足條件,則直接拋異常。DsR28資訊網(wǎng)——每日最新資訊28at.com

List<String> list = null;Assert.isTrue(CollectionUtils.isNotEmpty(list), "list不能為空");Assert.isTrue(CollectionUtils.isNotEmpty(list), () -> "list不能為空");

當(dāng)然Assert類還有一些其他的功能,這里就不多介紹了。DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

2、StringUtils

在我們?nèi)粘i_發(fā)過程中,對(duì)字符串的操作是非常頻繁的,但JDK提供的對(duì)于字符串操作的方法,過于簡(jiǎn)單,無法滿足我們開發(fā)中的需求。DsR28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)Spring提供了工具類StringUtils,對(duì)JDK中一些字符串的操作進(jìn)行了擴(kuò)展。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)判空

StringUtils類其實(shí)有個(gè)isEmpty()方法判斷,不過已經(jīng)被廢棄了。DsR28資訊網(wǎng)——每日最新資訊28at.com

我們可以改成使用hasLength()方法判斷,例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

if (!StringUtils.hasLength("")) {  System.out.println("字符串為空");}

(2)去掉空格

對(duì)于后端的很多接口,經(jīng)常需要去掉前后空格,我們可以使用String類的trim(),但是如果要同時(shí)去掉中間的空格呢?DsR28資訊網(wǎng)——每日最新資訊28at.com

可以使用StringUtils類的trimAllWhitespace方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testEmpty() {    System.out.println("1" + StringUtils.trimAllWhitespace(" 蘇三說技術(shù) 測(cè)試 ") + "1");}

這個(gè)方法執(zhí)行接口:1蘇三說技術(shù)測(cè)試1,會(huì)把中間的空格也去掉了。DsR28資訊網(wǎng)——每日最新資訊28at.com

(3)判斷開頭或結(jié)尾字符串

要判斷一個(gè)字符串,是不是以某個(gè)固定字符串開頭或者結(jié)尾,是非常常見的需求。DsR28資訊網(wǎng)——每日最新資訊28at.com

我們可以使用StringUtils類的startsWithIgnoreCase和endsWithIgnoreCase,可以忽略大小寫比較字符串。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testEmpty() {    System.out.println(StringUtils.startsWithIgnoreCase("蘇三說技術(shù)", "蘇三"));    System.out.println(StringUtils.endsWithIgnoreCase("蘇三說技術(shù)", "技術(shù)"));}

該方法的執(zhí)行結(jié)果會(huì)返回兩個(gè)true。DsR28資訊網(wǎng)——每日最新資訊28at.com

(4)集合拼接字符串

有時(shí)候我們需要將某個(gè)字符串集合的所有元素,拼接成一個(gè)字符串,用逗號(hào)隔開。DsR28資訊網(wǎng)——每日最新資訊28at.com

這種場(chǎng)景可以使用StringUtils類的collectionToCommaDelimitedString方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testEmpty() {    List<String> list = new ArrayList<>();    list.add("a");    list.add("b");    list.add("c");    System.out.println(StringUtils.collectionToCommaDelimitedString(list));}

該方法的執(zhí)行結(jié)果:a,b,cDsR28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)工具類里面還有很多有用的方法:DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

3、CollectionUtils

在我們?nèi)粘i_發(fā)當(dāng)中,經(jīng)常會(huì)遇到集合,比如:list判空的情況。DsR28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)Spring專門為我們提供了,給集合判空的工具類:CollectionUtils,它位于org.springframework.util包下。DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

對(duì)于一些簡(jiǎn)單的集合判斷,集合中是否包含某個(gè)元素,集合轉(zhuǎn)數(shù)組,用這個(gè)工具還是非常方便的。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)集合判空

通過CollectionUtils工具類的isEmpty方法可以輕松判斷集合是否為空。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

List<Integer> list = new ArrayList<>();list.add(2);list.add(1);list.add(3);if (CollectionUtils.isEmpty(list)) {    System.out.println("集合為空");}

(2)判斷元素是否存在

通過CollectionUtils工具類的contains方法,可以判斷元素在集合中是否存在。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

List<Integer> list = new ArrayList<>();list.add(2);list.add(1);list.add(3);if (CollectionUtils.contains(list.iterator(), 3)) {    System.out.println("元素存在");}

在判斷時(shí)需要先調(diào)用集合的iterator()方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

4、ObjectUtils

Spring為我們專門提供了一個(gè)對(duì)象操作工具:ObjectUtils,也在org.springframework.util包下。DsR28資訊網(wǎng)——每日最新資訊28at.com

里面有很多非常有用的方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)判空

之前已經(jīng)介紹過字符串判空工具類StringUtils,和集合的判空工具類CollectionUtils。DsR28資訊網(wǎng)——每日最新資訊28at.com

而ObjectUtils工具的判空更強(qiáng)大,支持:對(duì)象、字符串、集合、數(shù)組、Optional、Map的判斷。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testEmpty() {    String a = "123";    Integer b = new Integer(1);    List<String> c = new ArrayList<>();    Integer[] d = new Integer[];    c.add(a);    Map<String, String> e = new HashMap<>();    e.put(a, a);    Optional<String> f = Optional.of(a);    if (!ObjectUtils.isEmpty(a)) {        System.out.println("a不為空");    }    if (!ObjectUtils.isEmpty(b)) {        System.out.println("b不為空");    }    if (!ObjectUtils.isEmpty(c)) {        System.out.println("c不為空");    }    if (!ObjectUtils.isEmpty(d)) {        System.out.println("d不為空");    }    if (!ObjectUtils.isEmpty(e)) {        System.out.println("e不為空");    }    if (!ObjectUtils.isEmpty(f)) {        System.out.println("f不為空");    }}

這6種對(duì)象的判空都支持,非常強(qiáng)大。DsR28資訊網(wǎng)——每日最新資訊28at.com

(2)判斷兩個(gè)對(duì)象相等

之前我們用Objects.equals方法,判斷兩個(gè)對(duì)象是否相等,經(jīng)常會(huì)出現(xiàn)空指針問題。DsR28資訊網(wǎng)——每日最新資訊28at.com

而ObjectUtils類提供了安全的判斷兩個(gè)對(duì)象相等的方法:nullSafeEquals。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testEquals() {    String a = "123";    String b = null;    System.out.println(ObjectUtils.nullSafeEquals(a, b));}

這個(gè)例子返回的是false,不會(huì)出現(xiàn)空指針的問題。DsR28資訊網(wǎng)——每日最新資訊28at.com

甚至可以判斷兩個(gè)數(shù)組是否相等。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testArrayEquals() {    String[] a = new String[]{"123"};    String[] b = new String[]{"123"};    System.out.println(ObjectUtils.nullSafeEquals(a, b));}

這個(gè)例子的執(zhí)行結(jié)果返回的是true。DsR28資訊網(wǎng)——每日最新資訊28at.com

(3)獲取對(duì)象的hashCode

如果想要快速獲取某個(gè)對(duì)象十六進(jìn)制的hashCode,則可以調(diào)用getIdentityHexString方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testIdentityHex() {    String a = "123";    System.out.println(ObjectUtils.getIdentityHexString(a));}

執(zhí)行結(jié)果:2925bf5bDsR28資訊網(wǎng)——每日最新資訊28at.com

5、ClassUtils

Spring的org.springframework.util包下的ClassUtils類,它里面有很多讓我們驚喜的功能。DsR28資訊網(wǎng)——每日最新資訊28at.com

它里面包含了類和對(duì)象相關(guān)的很多非常實(shí)用的方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)獲取對(duì)象的所有接口

如果你想獲取某個(gè)對(duì)象的所有接口,可以使用ClassUtils的getAllInterfaces方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Class<?>[] allInterfaces = ClassUtils.getAllInterfaces(new User());

(2)獲取某個(gè)類的包名

如果你想獲取某個(gè)類的包名,可以使用ClassUtils的getPackageName方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

String packageName = ClassUtils.getPackageName(User.class);System.out.println(packageName);

(3)判斷某個(gè)類是否內(nèi)部類

如果你想判斷某個(gè)類是否內(nèi)部類,可以使用ClassUtils的isInnerClass方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

System.out.println(ClassUtils.isInnerClass(User.class));

(4)判斷對(duì)象是否代理對(duì)象

如果你想判斷對(duì)象是否代理對(duì)象,可以使用ClassUtils的isCglibProxy方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

System.out.println(ClassUtils.isCglibProxy(new User()));

ClassUtils還有很多有用的方法,等待著你去發(fā)掘。感興趣的朋友,可以看看下面內(nèi)容:DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

6、BeanUtils

Spring給我們提供了一個(gè)JavaBean的工具類,它在org.springframework.beans包下面,它的名字叫做:BeanUtils。DsR28資訊網(wǎng)——每日最新資訊28at.com

讓我們一起看看這個(gè)工具可以帶給我們哪些驚喜。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)拷貝對(duì)象的屬性

曾幾何時(shí),你有沒有這樣的需求:把某個(gè)對(duì)象中的所有屬性,都拷貝到另外一個(gè)對(duì)象中。這時(shí)就能使用BeanUtils的copyProperties方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

User user1 = new User();user1.setId(1L);user1.setName("蘇三說技術(shù)");user1.setAddress("成都");User user2 = new User();BeanUtils.copyProperties(user1, user2);System.out.println(user2);

(2)實(shí)例化某個(gè)類

如果你想通過反射實(shí)例化一個(gè)類的對(duì)象,可以使用BeanUtils的instantiateClass方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

User user = BeanUtils.instantiateClass(User.class);System.out.println(user);

(3)獲取指定類的指定方法

如果你想獲取某個(gè)類的指定方法,可以使用BeanUtils的findDeclaredMethod方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Method declaredMethod = BeanUtils.findDeclaredMethod(User.class, "getId");System.out.println(declaredMethod.getName());

(4)獲取指定方法的參數(shù)

如果你想獲取某個(gè)方法的參數(shù),可以使用BeanUtils的findPropertyForMethod方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Method declaredMethod = BeanUtils.findDeclaredMethod(User.class, "getId");PropertyDescriptor propertyForMethod = BeanUtils.findPropertyForMethod(declaredMethod);System.out.println(propertyForMethod.getName());

如果你對(duì)BeanUtils比較感興趣,可以看看下面內(nèi)容:DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

7、ReflectionUtils

有時(shí)候,我們需要在項(xiàng)目中使用反射功能,如果使用最原始的方法來開發(fā),代碼量會(huì)非常多,而且很麻煩,它需要處理一大堆異常以及訪問權(quán)限等問題。DsR28資訊網(wǎng)——每日最新資訊28at.com

好消息是Spring給我們提供了一個(gè)ReflectionUtils工具,它在org.springframework.util包下面。DsR28資訊網(wǎng)——每日最新資訊28at.com

(1)獲取方法

如果你想獲取某個(gè)類的某個(gè)方法,可以使用ReflectionUtils類的findMethod方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Method method = ReflectionUtils.findMethod(User.class, "getId");

(2)獲取字段

如果你想獲取某個(gè)類的某個(gè)字段,可以使用ReflectionUtils類的findField方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Field field = ReflectionUtils.findField(User.class, "id");

(3)執(zhí)行方法

如果你想通過反射調(diào)用某個(gè)方法,傳遞參數(shù),可以使用ReflectionUtils類的invokeMethod方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

ReflectionUtils.invokeMethod(method, springContextsUtil.getBean(beanName), param);

(4)判斷字段是否常量

如果你想判斷某個(gè)字段是否常量,可以使用ReflectionUtils類的isPublicStaticFinal方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Field field = ReflectionUtils.findField(User.class, "id");System.out.println(ReflectionUtils.isPublicStaticFinal(field));

(5)判斷是否equals方法

如果你想判斷某個(gè)方法是否equals方法,可以使用ReflectionUtils類的isEqualsMethod方法。例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Method method = ReflectionUtils.findMethod(User.class, "getId");System.out.println(ReflectionUtils.isEqualsMethod(method));

當(dāng)然這個(gè)類還有不少有趣的方法,感興趣的朋友,可以看看下面內(nèi)容:DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

8、Base64Utils

有時(shí)候,為了安全考慮,需要將參數(shù)只用base64編碼。DsR28資訊網(wǎng)——每日最新資訊28at.com

這時(shí)就能直接使用org.springframework.util包下的Base64Utils工具類。DsR28資訊網(wǎng)——每日最新資訊28at.com

它里面包含:encode和decode方法,用于對(duì)數(shù)據(jù)進(jìn)行編碼和解碼。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

String str = "abc";String encode = new String(Base64Utils.encode(str.getBytes()));System.out.println("編碼后:" + encode);try {    String decode = new String(Base64Utils.decode(encode.getBytes()), "utf8");    System.out.println("解碼:" + decode);} catch (UnsupportedEncodingException e) {    e.printStackTrace();}

執(zhí)行結(jié)果:DsR28資訊網(wǎng)——每日最新資訊28at.com

編碼后:YWJj解碼后:abc

9、SerializationUtils

有時(shí)候,我們需要把數(shù)據(jù)進(jìn)行序列化和反序列化處理。DsR28資訊網(wǎng)——每日最新資訊28at.com

傳統(tǒng)的做法是某個(gè)類實(shí)現(xiàn)Serializable接口,然后重新它的writeObject和readObject方法。DsR28資訊網(wǎng)——每日最新資訊28at.com

但如果使用org.springframework.util包下的SerializationUtils工具類,能更輕松實(shí)現(xiàn)序列化和反序列化功能。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

Map<String, String> map = Maps.newHashMap();map.put("a", "1");map.put("b", "2");map.put("c", "3");byte[] serialize = SerializationUtils.serialize(map);Object deserialize = SerializationUtils.deserialize(serialize);System.out.println(deserialize);

10、HttpStatus

很多時(shí)候,我們會(huì)在代碼中定義http的返回碼,比如:接口正常返回200,異常返回500,接口找不到返回404,接口不可用返回502等。DsR28資訊網(wǎng)——每日最新資訊28at.com

private int SUCCESS_CODE = 200;private int ERROR_CODE = 500;private int NOT_FOUND_CODE = 404;

其實(shí)org.springframework.http包下的HttpStatus枚舉,或者org.apache.http包下的HttpStatus接口,已經(jīng)把常用的http返回碼給我們定義好了,直接拿來用就可以了,真的不用再重復(fù)定義了。DsR28資訊網(wǎng)——每日最新資訊28at.com

DsR28資訊網(wǎng)——每日最新資訊28at.com

11、HtmlUtils

有時(shí)候,用戶輸入的內(nèi)容中包含了一些特殊的標(biāo)簽,比如<,如果不錯(cuò)處理程序可能會(huì)報(bào)錯(cuò)。DsR28資訊網(wǎng)——每日最新資訊28at.com

而且為了安全性,對(duì)用戶輸入的特色字符,也需要做轉(zhuǎn)義,防止一些SQL注入,或者XSS攻擊等。DsR28資訊網(wǎng)——每日最新資訊28at.com

其實(shí)Spring給我們提供了一個(gè)專門處理html的工具:HtmlUtils,我們可以直接用它來做轉(zhuǎn)義,使用起來非常方便。DsR28資訊網(wǎng)——每日最新資訊28at.com

例如:DsR28資訊網(wǎng)——每日最新資訊28at.com

@Testpublic void testHtml() {    String specialStr = "<div id=/"testDiv/">test1;test2</div>";    String str1 = HtmlUtils.htmlEscape(specialStr);    System.out.println(str1);}

執(zhí)行結(jié)果:&lt;div id=&quot;testDiv&quot;&gt;test1;test2&lt;/div&gt。DsR28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-70402-0.html別瞎寫工具類了,Spring自帶的不香嗎?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: Spring MVC核心擴(kuò)展點(diǎn)及使用技巧總結(jié)和使用案例

下一篇: Reducer 和 Context 實(shí)現(xiàn)簡(jiǎn)單的 Redux

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 小米平板5 Pro 12.4簡(jiǎn)評(píng):多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網(wǎng)課,網(wǎng)課盤活了安卓平板,安卓平板市場(chǎng)雖然中途停滯了幾年,但好的一點(diǎn)就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 消息稱迪士尼要拍真人版《魔發(fā)奇緣》:女主可能也找黑人演員

    8月5日消息,迪士尼確實(shí)有點(diǎn)忙,忙著將不少動(dòng)畫改成真人版,繼《美人魚》后,真人版《白雪公主》、《魔發(fā)奇緣》也在路上了。據(jù)外媒消息稱,迪士尼將打造真人版
  • CSS單標(biāo)簽實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)logo

    轉(zhuǎn)轉(zhuǎn)品牌升級(jí)后更新了全新的Logo,今天我們用純CSS來實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個(gè)標(biāo)簽實(shí)現(xiàn),將最大化的使用CSS能力完成Logo的繪制與動(dòng)畫效果。新logo
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個(gè)數(shù)字。例如,一個(gè)擁有三個(gè)或更多子項(xiàng)的grid。你可能會(huì)想,為什么需要這樣做呢?在某些情況下,一個(gè)組件或一個(gè)布局可能會(huì)
  • 十個(gè)簡(jiǎn)單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強(qiáng)大而靈活的功能,用于修改或增強(qiáng)函數(shù)或類的行為。裝飾器本質(zhì)上是一個(gè)函數(shù),它接受另一個(gè)函數(shù)或類作為參數(shù),并返回一個(gè)新的函數(shù)或類。它們通常用
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動(dòng)設(shè)備上有一個(gè)固定元素,當(dāng)激活虛擬鍵盤時(shí),該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認(rèn)行為,在本文中,我們將探討這個(gè)問題、為什么會(huì)發(fā)生
  • 雅柏威士忌多款單品價(jià)格大跌,泥煤頂流也不香了?

    來源 | 烈酒商業(yè)觀察編 | 肖海林今年以來,威士忌市場(chǎng)開始出現(xiàn)了降溫跡象,越來越多不斷暴漲的網(wǎng)紅威士忌也開始悄然回歸市場(chǎng)理性。近日,LVMH集團(tuán)旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 品牌洞察丨服務(wù)本地,美團(tuán)直播成效幾何?

    來源:17PR7月11日,美團(tuán)App首頁推薦位出現(xiàn)&ldquo;美團(tuán)直播&rdquo;的固定入口。在直播聚合頁面,外賣&ldquo;神槍手&rdquo;直播間、美團(tuán)旅行直播間、美團(tuán)買菜直播間等均已上線,同時(shí)
  • 疑似小米14外觀設(shè)計(jì)圖曝光:后置相機(jī)模組變化不大

    下半年的大幕已經(jīng)開啟,而誰將成為下半年手機(jī)圈的主角就成為了大家關(guān)注的焦點(diǎn),其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲黄色在线| 国产麻豆精品久久一二三| 久久婷婷蜜乳一本欲蜜臀| 久久久青草青青国产亚洲免观| 久久久久欧美| 欧美另类久久久品| 国产精品毛片大码女人| 国产一区二区毛片| 91久久亚洲| 亚洲欧美日韩在线一区| 美腿丝袜亚洲色图| 欧美激情精品久久久久久大尺度| 欧美特黄一区| 好吊妞这里只有精品| 亚洲精品一品区二品区三品区| 亚洲综合视频一区| 蜜臀久久99精品久久久久久9 | 欧美激情亚洲激情| 国产精品久久久久久一区二区三区| 国产视频自拍一区| 亚洲精品国产欧美| 久久精品二区三区| 欧美三级免费| 亚洲成人自拍视频| 午夜亚洲影视| 欧美国产在线观看| 国产欧美日韩中文字幕在线| 亚洲欧洲日产国产综合网| 性高湖久久久久久久久| 国产日韩欧美夫妻视频在线观看| 在线观看免费视频综合| 亚洲午夜久久久久久久久电影院 | 欧美成人免费大片| 国产久一道中文一区| 亚洲精品一区二区三区福利| 久久国产精品网站| 欧美视频精品在线| 亚洲二区视频在线| 欧美一级视频免费在线观看| 欧美日韩国产999| 红桃视频国产精品| 亚洲欧美日韩精品综合在线观看| 久久中文字幕一区| 国产精品中文在线| 一区二区三区久久| 欧美激情一区在线观看| 国内精品视频在线播放| 亚洲欧美清纯在线制服| 欧美日韩在线精品一区二区三区| 亚洲国产精品ⅴa在线观看| 久久精品免费播放| 国产精一区二区三区| 亚洲一区二区三区精品在线观看 | 国产毛片精品视频| 亚洲手机在线| 欧美日韩成人一区二区三区| 亚洲国产精品久久久久| 久久久久久久久伊人| 国产日韩在线一区| 亚洲欧美国产视频| 国产精品国码视频| 亚洲五月婷婷| 欧美人与禽性xxxxx杂性| 亚洲国产天堂网精品网站| 久久国产视频网| 国产亚洲激情视频在线| 欧美一区二区三区精品电影| 国产精品久久久久久一区二区三区| 一本色道综合亚洲| 欧美日韩一级视频| 在线一区观看| 欧美天堂亚洲电影院在线播放 | 亚洲女性裸体视频| 国产精品久久久久免费a∨| 亚洲午夜视频在线| 国产精品久久| 亚洲欧美伊人| 国产精品青草久久| 亚洲欧美影院| 国产日韩在线视频| 久久久精彩视频| 在线观看中文字幕亚洲| 女仆av观看一区| 亚洲看片免费| 欧美日韩亚洲综合| 亚洲免费视频一区二区| 国产精品久99| 欧美一区二区三区四区在线观看地址| 国产美女精品一区二区三区 | 国产精品黄色| 午夜一级久久| 国内一区二区三区| 久久久亚洲午夜电影| 在线播放日韩| 欧美精品黄色| 亚洲色图制服丝袜| 国产精品综合| 久久美女艺术照精彩视频福利播放| 一区二区视频免费完整版观看| 狂野欧美激情性xxxx| 亚洲精品日韩在线| 欧美性猛交视频| 欧美在线免费看| 在线观看亚洲精品视频| 欧美精品18+| 亚洲字幕一区二区| 韩国精品一区二区三区| 欧美成人网在线| 亚洲婷婷在线| 国际精品欧美精品| 欧美成人免费网站| 亚洲网站在线看| 国产在线麻豆精品观看| 欧美大片免费观看在线观看网站推荐 | 六月婷婷久久| 一本色道久久88亚洲综合88| 国产精品色在线| 久久影院午夜论| 在线亚洲自拍| 好看的av在线不卡观看| 欧美精品二区三区四区免费看视频| 亚洲一二区在线| 韩日成人在线| 欧美日韩精品一区二区三区| 先锋亚洲精品| 亚洲人成绝费网站色www| 国产精品看片你懂得| 玖玖玖国产精品| 亚洲一级电影| 在线日韩一区二区| 国产精品久久久久毛片大屁完整版| 久久久欧美精品sm网站| 一区二区三区不卡视频在线观看 | 亚洲二区免费| 国产精品一区二区久久精品| 欧美日韩亚洲视频| 久久久高清一区二区三区| 99在线|亚洲一区二区| 国产一区二区看久久| 欧美理论电影在线播放| 欧美在线一区二区| 亚洲美女色禁图| 韩日欧美一区二区| 国产精品videosex极品| 久久久亚洲欧洲日产国码αv| 一本色道综合亚洲| 在线观看亚洲视频| 国产精品一区二区三区免费观看 | 午夜精品999| 亚洲免费观看视频| 永久域名在线精品| 国产精品网站在线| 欧美精品一区二区精品网| 久久精品一区中文字幕| 亚洲午夜一区| 亚洲精品美女免费| 激情综合久久| 国产日产欧美a一级在线| 欧美日韩一区二区在线观看 | 国产一区二区你懂的| 国产精品伦理| 欧美日韩一区二区三| 蜜乳av另类精品一区二区| 欧美一区三区三区高中清蜜桃| 一区二区三区 在线观看视| 亚洲电影在线看| 国产在线不卡视频| 国产欧美精品久久| 欧美性猛交一区二区三区精品| 欧美jizzhd精品欧美巨大免费| 久久精品国产v日韩v亚洲| 亚洲欧美激情四射在线日 | 国语自产精品视频在线看一大j8 | 欧美日韩一区二区视频在线| 欧美xart系列高清| 久久天堂精品| 久久国产精品亚洲va麻豆| 亚洲综合大片69999| 一区二区三区回区在观看免费视频| 亚洲人成网站在线观看播放| 伊人成人在线视频| 韩国美女久久| 国产自产2019最新不卡| 国产模特精品视频久久久久| 国产精品久久97| 欧美日韩一区二区在线观看| 欧美人与禽猛交乱配视频| 欧美黄色aa电影| 欧美激情aaaa| 欧美电影免费观看网站| 欧美成人一品| 欧美风情在线观看| 欧美成人免费在线观看| 欧美~级网站不卡| 嫩草国产精品入口| 欧美成人xxx| 免费成人av在线看| 欧美成人免费全部| 欧美国产先锋| 欧美日韩国产综合视频在线| 欧美激情自拍| 欧美日韩一区自拍| 国产精品久久久久久久第一福利 | 一区二区三区www|