最新要闻
- 世界实时:20年来最优秀游戏处理器!AMD锐龙7 7800X3D首发评测:大幅超越i9-13900KS
- 周鸿祎离婚给前妻90亿 李国庆羡慕:没争夺控制权 他就乐吧
- RTX 3060登顶Steam神卡 AMD显卡被黑?竟是国内玩家的锅
- 全球快资讯丨“索要千万逼死老公案”五年后一审宣判:妻子翟欣欣退还男方上千万财产
- 天天精选!00后都开始立遗嘱了:微信号、QQ号、游戏账号成热门虚拟财产
- 《他是谁》烂尾 编剧疑似甩锅剧本总监:感谢你把剧本改成这
- 世界快讯:莱万:若留拜仁或会失去踢球的乐趣 在巴萨除了进球我有不同角色
- 【全球热闻】上映25周年纪念!《泰坦尼克号》4K重映版票房破2000万
- 每日热点:全球首例真人状告机器人!澳大利亚一市长准备告ChatGPT诽谤
- 胖东来创始人称加班不道德:不能只挣钱
- 世界热头条丨在Steam上买了个假冒黄游 结果居然给我玩爽了
- 焦点热文:女子称使用化妆品后流产 送检发现:汞含量超标30万倍!
- 每日消息!俄罗斯一男子19楼坠落后自行上救护车:还给医务人员唱了歌
- 全球热文:速速电影院-尽情泡约网电影院
- 索尼推出WF-C700N无线耳机:15小时长续航、支持空间音频
- GT2大探成最后一款!真我手机将不再有“大师探索版”
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
焦点热讯:Lambda
Lambda
前言 之前在学校,老师说,最好不要使用jdk8的一些新特性....代码阅读不方便。然后我天真的以为,是新特性不好用,是新特性阅读体验不好,所以,我就从未使用,也从未了解。直到参加工作,发现了同事使用新特性,跟同事交流了这个新特性的事情,才知道是大学老师怕我们糊涂,于是在假日深入研究了一下
从JDK1.8开始为了简化使用者进行代码的开发,专门提供有Lambda表达式的支持,利用此操作可以实现函数式的编程,对于函数式编程比较著名的语言有:Haskell、Scala,利用函数式的编程可以避免掉面向对象编程之中一些繁琐的处理问题。
(相关资料图)
Lambda入门小案例:
这是我自己写的工具方法
public static int calculateNum(IntBinaryOperator operator){ int a = 10; int b = 20; return operator.applyAsInt(a, b); }
在用这个方法的时候,发现参数的类型是 IntBinaryOperator ,那么就直接查看源码
发现有个 方法叫applyAsInt ,含义就是说 接收 int 类型的 left、right 两个参数,最终我要返回得是 int 类型
那么我先用一个老式得方式来调用 这个 calculateNum 工具方法
// calculateNum 原始写法 /* * IntBinaryOperator 是一个接口 在 idea 中,如果先写常规的语法的话,此时我想要用 Lambda 的话 , */ int param = calculateNum(new IntBinaryOperator() { @Override public int applyAsInt(int left, int right) { return left + right; } });
这是老式得写法了。
(小技巧:如果你使用得IDEA 那么可以使用 Alt + enter 快速生成匿名内部类 转变为Lambda表达式 或者 是Lambda表达式 生成匿名内部类)
那么我使用Lambda如何写呢?
int params = calculateNum( ( int a,int b) -> { return a+b; });
函数式接口 Functional Interface
抛出一个疑问:在我们书写一段 Lambda 表达式后(比如上一章节中匿名内部类的 Lambda 表达式缩写形式),Java 编译器是如何进行类型推断的,它又是怎么知道重写的哪个方法的?
需要说明的是,不是每个接口都可以缩写成 Lambda 表达式。只有那些函数式接口(Functional Interface)才能缩写成 Lambda 表示式。
那么什么是函数式接口(Functional Interface)呢?
所谓函数式接口(Functional Interface)就是只包含一个抽象方法的声明。针对该接口类型的所有 Lambda 表达式都会与这个抽象方法匹配。
注意:你可能会有疑问,Java 8 中不是允许通过 defualt 关键字来为接口添加默认方法吗?那它算不算抽象方法呢?答案是:不算。因此,你可以毫无顾忌的添加默认方法,它并不违反函数式接口(Functional Interface)的定义。
总结一下:只要接口中仅仅包含一个抽象方法,我们就可以将其改写为 Lambda 表达式。为了保证一个接口明确的被定义为一个函数式接口(Functional Interface),我们需要为该接口添加注解:@FunctionalInterface
。这样,一旦你添加了第二个抽象方法,编译器会立刻抛出错误提示。
示例代码:
@FunctionalInterfaceinterface Converter { T convert(F from);}
注意:上面的示例代码,即使去掉
@FunctionalInterface
也是好使的,它仅仅是一种约束而已。
Lambda错误示例
interface IMessage { public void send(String str); public void say();}public class JavaDemo { public static void main(String[] args) { IMessage i = (str) -> { System.out.println(str); }; i.send("www.baidu.com"); }}
Lambda表达式的几种格式
- 方法没有参数: () -> {};
- 方法有参数::(参数,…,参数) -> {};
demo
package com.yhn.Lambda;import java.util.function.Function;import java.util.function.IntBinaryOperator;import java.util.function.IntConsumer;import java.util.function.IntPredicate;/** 一、什么情况下可以使用 Lambda 表达式? Lambda表达式如果要想使用,那么必须要有一个重要的实现要求:SAM(Single Abstract Method),接口中只有一个抽象方法。 以IMessage接口为例,这个接口里面只是提供有一个send()方法, interface IMessage { public void send(String str); } 除此之外没有任何其他方法定义,所以这样的接口就被称为函数式接口, 而只有函数式接口才能被Lambda表达式所使用。 二、 Lambda 表达式的格式 Lambda 表达式在Java语言中引入了一个操作符**“->”**,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分: 左侧:指定了Lambda表达式需要的所有参数 右侧:制定了Lambda体,即Lambda表达式要执行的功能。 方法没有参数: () -> {}; 方法有参数::(参数,…,参数) -> {}; 省略规则 参数类型可以省略 方法体只有一句代码时大括号return和唯一一句代码的分号可以省略 方法只有一个参数时小括号可以省略 以上这些规则都记不住也可以省略不记 * */public class LambdaDemo { public static void main(String[] args) { printNum2(value -> value % 2 == 0, value -> value>4); /* ------------------------------------------------------------------------------------------ */ // calculateNum 原始写法 /* * IntBinaryOperator 是一个接口 在 idea 中,如果先写常规的语法的话,此时我想要用 Lambda 的话 , * 可以使用 Alt + enter 快速生成匿名内部类 转变为Lambda表达式 或者 是Lambda表达式 生成匿名内部类 */ int param = calculateNum(new IntBinaryOperator() { @Override public int applyAsInt(int left, int right) { return left + right; } }); // 使用 Lambda 写法 int params = calculateNum( ( int a,int b) -> { return a+b; }); /* ------------------------------------------------------------------------------------------ */ /* * printNum IntPredicate 接口只有一个方法 test */ printNum(new IntPredicate() { @Override public boolean test(int value) { return value%2==0; } }); printNum( (int a) -> { return a%2 == 0; }); /* ------------------------------------------------------------------------------------------ */ // 先解释 Function 接口 - > Function // Function 接口 有个方法叫 apply 含义就是说 R 传什么类型 , 我最终都是要返回的是 T 类型 在此处是 String 类型 // 此时 我只需要 设定一个泛型即可 Integer result = typeConver(new Function() { @Override public Integer apply(String s) { return Integer.valueOf(s); } }); Integer results = typeConver( (String s) ->{ return Integer.valueOf(s); }); // 扩展 String s1 = typeConver(s -> { return s + "new"; }); /* ------------------------------------------------------------------------------------------ */ foreachArr(new IntConsumer() { @Override public void accept(int value) { System.out.println(value); } }); foreachArr((int value ) -> { System.out.println(value); }); // 进行省略 foreachArr( value -> System.out.println(value)); /* ------------------------------------------------------------------------------------------ */ } public static void foreachArr(IntConsumer consumer){ int[] arr = {1,2,3,4,5,6,7,8,9,10}; for (int i : arr) { consumer.accept(i); } } public static R typeConver(Function function){ String str = "1235"; R result = function.apply(str); return result; } public static void printNum2(IntPredicate predicate,IntPredicate predicate2){ int[] arr = {1,2,3,4,5,6,7,8,9,10}; for (int i : arr) { if(predicate.and(predicate2).test(i)){ System.out.println(i); } } } public static void printNum(IntPredicate predicate){ int[] arr = {1,2,3,4,5,6,7,8,9,10}; for (int i : arr) { if(predicate.test(i)){ System.out.println(i); } } } public static int calculateNum(IntBinaryOperator operator){ int a = 10; int b = 20; return operator.applyAsInt(a, b); }}
总结:
Lambda 表达式在Java语言中引入了一个操作符“->”,该操作符被称为Lambda操作符或箭头操作符。它将Lambda分为两个部分: 左侧:指定了Lambda表达式需要的所有参数 右侧:制定了Lambda体,即Lambda表达式要执行的功能。 方法没有参数: () -> {}; 方法有参数::(参数,…,参数) -> {};
省略规则 参数类型可以省略 方法体只有一句代码时大括号return和唯一一句代码的分号可以省略 方法只有一个参数时小括号可以省略 以上这些规则都记不住也可以省略不记
方法引用
方法引用的三种形式
对象 :: 非静态方法
类 :: 静态方法
类 :: 非静态方法
类引用静态方法
语法格式: 类名称::static方法名称
第一步,我们自定义一个接口,该接口中只有一个抽象方法,是一个函数式接口。
第二步,随便建立一个类,创建一个方法。这里要注意,创建的方法返回值类型和形参列表必须和函数式接口中的抽象方法相同。
第三步,创建函数式接口的实现类,我们可以使用方法引用。相当于实现类里的重写的方法,就是方法引用的方法。这样才能方法引用。
public class LambdaDemoLei { /** * @FunctionalInterface,主要用于编译级错误检查,加上该注解,当你写的接口不符合函数式接口定义的时候,编译器会报错。 */ @FunctionalInterface interface IMessage { public T transfer(P p); } static class Supplier{ public static String getStr(Integer integer) { return String.valueOf(integer); } } public static void main(String[] args) { // 类引用静态方法 类名称::static方法名称 IMessage msg = Supplier::getStr; System.out.println(msg.transfer(31415926)); } // 输出 31415926
对象引用非静态方法
语法格式: 实例化对象::普通方法;
有了类引用静态方法的基础,相信大家已经有了一点感觉。
对象引用非静态方法,和类引用静态方法一致。要求我们对象引用的方法,返回值和形参列表要和函数式接口中的抽象方法相同。
public class LambdaDemoLei { @FunctionalInterface interface IMessage1 { public double get(); } static class Supplier1{ private Double salary; public Supplier1() { } public Supplier1(Double salary){ this.salary = salary; } public Double getSalary() { return this.salary; } } public static void main(String[] args) {// 对象引用非静态方法 语法格式: 实例化对象::普通方法 Supplier1 supplier = new Supplier1(9999.9); IMessage1 msg1 = supplier::getSalary; System.out.println(msg1.get()); } // 输出 9999.9}
类引用非静态方法
语法格式: 类::普通方法
类引用普通方法就有点难以理解了。
当抽象方法中有两个参数,且第一个参数是调用者,第二个参数是形参,则可以使用类::实例方法。
package com.yhn.Lambda;import lombok.Data;/** * @Description * @Author TuiMao * @Date 2023/4/4 16:19 * @Version 1.0 */@Datapublic class Person { @FunctionalInterface interface IMessage { // 要看成 T res = p1.compare(p2); public T compare(P p1, P p2); } @FunctionalInterface interface IMessage2 { // public T create(P p1, V p2); 符合抽象方法的要求 public T create(P p1, V p2); } @FunctionalInterface interface IMessage1 { // 看成 T res = p1.compare(p2); // public int compareTo(String anotherString){} 符合抽象方法的格式 // int res = str1.compare(str2); public T compare(P p1, V p2); } public Person() { } public Person(String name, Integer age) { this.name = name; this.age = age; } private String name; private Integer age; public boolean equal(Person per) { return this.name.equals(per.getName()) && this.age.equals(per.getAge()); } public static void main(String[] args) { Person person1 = new Person("张三", 22); Person person2 = new Person("张三", 23); // 符合T res = p1.compare(p2); IMessage msg = Person::equal; System.out.println(msg.compare(person1, person2)); System.out.println("----------"); // 类引用普通方法 语法格式: 类::普通方法 当抽象方法中有两个参数,且第一个参数是调用者,第二个参数是形参,则可以使用类::实例方法。 IMessage1 stringCompare = String::compareTo; Integer compare = stringCompare.compare("adc", "abd"); System.out.println(compare); System.out.println("----------"); // 构造引用 语法格式: 类名称::new IMessage2 msg1 = Person::new; Person person = msg1.create("张三", 20); System.out.println(person); }}
Lambda 访问外部变量及接口默认方法
在本章节中,我们将会讨论如何在 lambda 表达式中访问外部变量(包括:局部变量,成员变量,静态变量,接口的默认方法.),它与匿名内部类访问外部变量很相似。
访问局部变量
在 Lambda 表达式中,我们可以访问外部的 final
类型变量,如下面的示例代码:
// 转换器@FunctionalInterfaceinterface Converter { T convert(F from);}
final int num = 1;Converter stringConverter = (from) -> String.valueOf(from + num);stringConverter.convert(2); // 3
与匿名内部类不同的是,我们不必显式声明 num
变量为 final
类型,下面这段代码同样有效:
int num = 1;Converter stringConverter = (from) -> String.valueOf(from + num);stringConverter.convert(2); // 3
但是 num
变量必须为隐式的 final
类型,何为隐式的 final
呢?就是说到编译期为止,num
对象是不能被改变的,如下面这段代码,就不能被编译通过:
int num = 1;Converter stringConverter = (from) -> String.valueOf(from + num);num = 3;
在 lambda 表达式内部改变 num
值同样编译不通过,需要注意, 比如下面的示例代码:
int num = 1;Converter converter = (from) -> {String value = String.valueOf(from + num);num = 3;return value;};
访问成员变量和静态变量
上一章节中,了解了如何在 Lambda 表达式中访问局部变量。与局部变量相比,在 Lambda 表达式中对成员变量和静态变量拥有读写权限:
@FunctionalInterface interface Converter { T convert(F from); }
class Lambda4 { // 静态变量 static int outerStaticNum; // 成员变量 int outerNum; void testScopes() { Converter stringConverter1 = (from) -> { // 对成员变量赋值 outerNum = 23; return String.valueOf(from); }; Converter stringConverter2 = (from) -> { // 对静态变量赋值 outerStaticNum = 72; return String.valueOf(from); }; } }
访问接口的默认方法
@FunctionalInterfaceinterface Formula {// 计算double calculate(int a);// 求平方根default double sqrt(int a) {return Math.sqrt(a);}}
当时,我们在接口中定义了一个带有默认实现的 sqrt
求平方根方法,在匿名内部类中我们可以很方便的访问此方法:
Formula formula = new Formula() {@Overridepublic double calculate(int a) {return sqrt(a * 100);}};
但是在 lambda 表达式中可不行:
Formula formula = (a) -> sqrt(a * 100);
带有默认实现的接口方法,是不能在 lambda 表达式中访问的,上面这段代码将无法被编译通过。
JDK8自带函数式接口
在JDK1.8之中,提供有Lambda表达式和方法引用,但是你会发现如果由开发者自己定义函数式的接口,往往都需要使用@FunctionalInterface来进行大量的声明,于是很多的情况下如果为了方便则可以引用系统中提供的函数式接口。
在系统之中专门提供有一个java.util.functional的开发包,里面可以直接使用函数式接口,在这个包下面一共有如下几个核心的接口供我们使用。
功能型函数式接口
接口定义 | 接口作用 | 接口使用 |
---|---|---|
@FunctionalInterfacepublic interface Function | 消费 T 类型参数,返回 R 类型结果 | 如下所示 |
function 相当于是给一个参数,然后返回一个结果。如果是给两个参数,返回一个结果,那么就是 BiFunction。Bi 前缀即使 binary 的缩写。
import java.util.function.*;/* @FunctionalInterface T是参数类型 R是返回类型 public interface Function{ public R apply(T t); } */class StringCompare {// 给一个 String 类型的参数,返回布尔类型,符合功能性函数式接口的抽象方法 public static boolean test(String t) { return t == null; }}public class JavaDemo { public static void main(String[] args) { // 直接静态引用 Function func1 = StringCompare::test; System.out.println(func1.apply(null)); }}// true
消费型函数式接口
消费性函数式接口,只能进行数据的处理操作,而没有返回值
· 在进行系统输出的时候使用的是:System.out.println();这个操作只是进行数据的输出和消费,而不能返回,这就是消费性接口。
接口定义 | 接口作用 | 接口使用 |
---|---|---|
@FunctionalInterface public interface Consumer | 接收一个 T 类型参数,但是不返回任何东西,消费型接口 | 如下 |
其实最常见的消费型接口的实现,就是 System.out.println(xxx) 了。 我们只管往方法中输入参数,但是并没有返回任何值。Consumer 相当于是有来无回,给一个参数,但是无返回。而如果是两个参数,无返回,那么就是 BiConsumer。
public class JavaDemo { public static void main(String[] args) { Consumer consumer = System.out::println; consumer.accept("Hello World!"); }}// Hello World!
当然我们也可以自定义消费性接口
class StringCompare {// 接收 StringBuilder ,但是不返回任何数据。 public void fun(StringBuilder sb) { sb.append("World!"); }}public class JavaDemo { public static void main(String[] args) { StringBuilder sb = new StringBuilder(); sb.append("Hello "); Consumer consumer = new StringCompare()::fun; consumer.accept(sb); System.out.println(sb.toString()); }}
供给型函数式接口
接口定义 | 接口作用 | 接口使用 |
---|---|---|
@FunctionalInterfacepublic interface Supplier | 啥也不接受,但是却返回 T 类型数据,供给型接口 | 如下 |
Supplier 相当于是无中生有,什么也不传,但是返回一个结果。像 String 类里的 toUpperCase() 方法,也是不接受参数,但是返回 String 类型,就可以看成这个供给型函数式接口的一个实现。
public String toUpperCase() { return toUpperCase(Locale.getDefault()); }
import java.util.function.*;public class Demo01 {public static void main(String[] args) {Supplier sup = "WWW.BAIDU.COM" :: toLowerCase;System.out.println(sup.get());}}
断言型函数式接口
接口定义 | 接口作用 | 接口使用 |
---|---|---|
@FunctionalInterface public interface Predicate | 传入 T 类型参数,返回布尔类型,常常用于对入参进行判断 | 如下 |
class StringFilter {// 对集合中的数据进行过滤,传入断言型接口进行判断 public static List filter(List list, Predicate predicate) { List stringList = new ArrayList<>(); for (String str : list) { if (predicate.test(str)) { stringList.add(str); } } return stringList; }}public class JavaDemo { public static void main(String[] args) { List stringList = Arrays.asList("好诗", "好文", "好评", "好汉", "坏蛋", "蛋清", "清风", "风间"); List filterList = StringFilter.filter(stringList, list -> list.contains("好")); System.out.println(filterList); }}
如果JDK本身提供的函数式接口可以被我们所使用,那么就没必要重新去定义了。
关键词:
-
TVM Deploy Runtime[施工中]
本文地址:https: www cnblogs com wanger-sjtu p 17291070 htmltvm中在部署时有多个选择,最开始的graphexectuorruntime、
来源: -
世界实时:20年来最优秀游戏处理器!AMD锐龙7 7800X3D首发评测:大幅超越i9-13900KS
20年来最优秀游戏处理器!AMD锐龙77800X3D首发评测:大幅超越i9-13900KS
来源: 焦点热讯:Lambda
TVM Deploy Runtime[施工中]
环球精选!股债二八平衡策略
世界实时:20年来最优秀游戏处理器!AMD锐龙7 7800X3D首发评测:大幅超越i9-13900KS
周鸿祎离婚给前妻90亿 李国庆羡慕:没争夺控制权 他就乐吧
RTX 3060登顶Steam神卡 AMD显卡被黑?竟是国内玩家的锅
全球快资讯丨“索要千万逼死老公案”五年后一审宣判:妻子翟欣欣退还男方上千万财产
环球热头条丨我的第一个项目(九) :飞机大战Vue版本塞到主页
Unity开发Hololens2—环境配置
设计模式(三十二)----综合应用-自定义Spring框架-自定义Spring IOC-自定义Spring IOC总结
CS50-Python实验3,4
天天精选!00后都开始立遗嘱了:微信号、QQ号、游戏账号成热门虚拟财产
《他是谁》烂尾 编剧疑似甩锅剧本总监:感谢你把剧本改成这
世界快讯:莱万:若留拜仁或会失去踢球的乐趣 在巴萨除了进球我有不同角色
【全球热闻】上映25周年纪念!《泰坦尼克号》4K重映版票房破2000万
每日热点:全球首例真人状告机器人!澳大利亚一市长准备告ChatGPT诽谤
Cesium 案例(二)Web MapTile Service with Time
渗透测试——简单的流程化信息收集
胖东来创始人称加班不道德:不能只挣钱
世界热头条丨在Steam上买了个假冒黄游 结果居然给我玩爽了
焦点热文:女子称使用化妆品后流产 送检发现:汞含量超标30万倍!
每日消息!俄罗斯一男子19楼坠落后自行上救护车:还给医务人员唱了歌
全球热文:速速电影院-尽情泡约网电影院
索尼推出WF-C700N无线耳机:15小时长续航、支持空间音频
GT2大探成最后一款!真我手机将不再有“大师探索版”
福布斯发布2023亿万富豪榜:亚马逊贝索斯最惨 资产流失近4000亿
焦点播报:AOC公布小苔藓M6迷你主机:i5-13420H、配全功能USB-C
101岁杨振宁罕见露面 获香港大学名誉博士学位
天天热门:java字节流和字符流
如何设计一个 70w 在线人数的弹幕系统 ?
vivo X Fold2通过3C认证:4800mAh电池+120W快充
当前快播:比尔盖茨回应暂停训练AI:并不能解决问题 重点是最大程度利用
今日最新!告别Mini LED!MacBook Pro屏幕将升级为OLED:三星供货
回国在即!旅美熊猫丫丫上海检疫后将被北京动物园接走
每日热文:汇编第三章复习之七种寻址
请注意!武汉全民健身中心游泳馆营业时间调整
199元一人!金山办公推出WPS 365“全家桶”服务
最资讯丨飞利浦推出新款44.5寸带鱼屏:弹出式摄像头 售价近9000元
头条焦点:真人电影《芭比》新预告:小丑女尽显修长美腿
女子请假照顾病危丈夫被公司开除!法院判了:公司赔13万
世界热议:sms-activate操作简便易上手且好用的接码工具【保姆级教程】
环球新消息丨5岁娃上坟藏冥币带回家要送朋友:还有男孩在奶奶坟前跪求不写作业不挨打
新势力老大换了!理想汽车周交付超6000辆:超蔚来、小鹏总和
环球热点评!2023年清明档票房破亿!任天堂《超级马力欧兄弟大电影》暂列亚军
天天热消息:立省4万!商家上线理想L7、L8“激光雷达”改装件:自己都能装
全球观天下!李子柒油管广告收益登顶热搜 停更一年收入78万元
世界热讯:宿迁贷款利率2022最新利率表,宿迁贷款利息
沙特俄罗斯等减产拉高油价后 黄金大涨近2%逼近历史最高纪录:美国难受
焦点速读:豆瓣8.0分!电影《忠犬八公》票房破亿:冯小刚主演
自建堆排序:
焦点!JavaScript快速入门(二)
微头条丨你坐过吗?这款双层火车全国仅此一列
焦点快播:必看?迪士尼《小美人鱼》内地定档5月26日 最新剧照黑小美人鱼亮相
全球热讯:时隔6年 任天堂马里奥之父宫本茂暗示新作要来了:告别手游平台
特斯拉法务部要玩真的了 马斯克:我们找了许多有才的律师
环球视点!666元起!国内一公司推出太空葬 创始人:逝去亲人快到头顶会手机提醒
福布斯发布2023亿万富豪榜 全球新首富诞生:要把股份平均分给五个子女
法拉利F1车手莱克莱尔签名时200万名表被抢走 小偷今落网
民主失真、政治失能严重侵蚀美式人权根基(钟声)——美国已成为全球人权发展的搅局者和阻碍者④
【独家】虚拟机磁盘扩容(parted、lvm)
环球今头条!【环球财经】英镑兑美元汇率创10个月新高
涨见识!清明节南北习俗有何不同:北方注重修坟 南方烧纸钱等
环球微头条丨特斯拉不要的技术 蔚来当个宝?
媒体:第一批因AI失业的人已经出现!公司不会养闲人 这些职业最容易被AI取代
在四川买一个新的房子买房子需要哪些手续费
天天观察:今日清明节 专家科普都有哪些习俗:其实是三个节日融合而来
升级iOS 16.4的用户被苹果坑了!Wi-Fi/天气崩溃、电池续航大缩水
环球看热讯:95后寿衣模特回应被说阴气重 本人回应坚持做自己:任何职业都该被尊重
世界微资讯!读SQL进阶教程笔记08_处理数列
【播资讯】NVIDIA全景光追模式成硬件杀手!RTX 4090仅16帧:不开DLSS没法玩
车主集体投诉宝马id7系统虚假宣传 宝马中国回应
速看:JR:我打NBA只因为热爱篮球 从来都不是为了钱和名利
为啥天空是蓝色的?而不是彩虹一般的七彩颜色呢?
环球聚焦:一亩地几百个洞 青藏高原的鼠害泛滥成灾:但其实不怪它们
全球实时:阿里搞出脱口秀版GPT 把“鸟鸟”塞进去了?官方回应
百事通!全球河马数量锐减 哥伦比亚却泛滥成灾:花350万美元送走70头
全球微速讯:含赶尸、傀儡 中式恐怖游戏《过阴》公开Demo试玩
工作总结经验材料(实用13篇)
微信封号解封的6种方法
天天百事通!游戏主播世界前30记录被熊孩子清零引围观 本人回应:痛苦又幸运
快讯:中国智能电视盒子销量榜:小米第三 腾讯太猛了
第一皇妃(关于第一皇妃的介绍)
世界热文:数据库系统原理之数据库应用设计与开发实例
别再用这姿势睡觉了 冲上热搜的“还阳卧”小心睡出毛病
天天热消息:周鸿祎突然离婚!360官方回应:12个月内不会减持
速读:解决Abp设置DefaultLanguage默认语言不生效的问题
【全球播资讯】光云科技:预计未来几年公司SaaS业务收入占比将持续提高
位居国内日本动画票房榜首:《铃芽之旅》获IGN 9分好评
天天时讯:富豪也玩不起大火箭!又一火箭公司破产
福布斯2023全球亿万富豪榜发布:新世界首富出炉!钟睒睒连续三年蝉联中国首富
天天微动态丨创始人周鸿祎离婚 360:周鸿祎拟将6.25%公司股份分割至胡欢名下
超级小桀回应"存档被清"上热搜:谢谢大家帮我想办法
java -- Object类和String类
债市日报:4月4日
全球看热讯:4月江南等地存在洪涝灾害风险 南方部分河流可能发生超警洪水
每日速看!精度优于10米 我国海上垂直回收火箭试验圆满成功
焦点信息:想不想要RTX 4070 Ti?七彩虹iGame动图设计大赛免费送
2023全球汽车品牌价值100强发布:特斯拉第一、26家中国车企上榜
【世界独家】《暗黑4》玩家反对买豪华版早玩4天 凭啥买标准版要晚玩
今日精选:一女子睡觉未摘耳钉 1个月后取下耳垂裂成两瓣:画面可怕