超强的Lambda Stream流操作

  1. Stream 流介绍
    Stream 不同于其他集合框架,它也不是某种数据结构,也不会保存数据,但是它负责相关计算,使用起来更像一个高级的迭代器。在之前的迭代器中,我们只能先遍历然后在执行业务操作,而现在只需要指定执行什么操作, Stream 就会隐式的遍历然后做出想要的操作。另外 Stream 和迭代器一样的只能单向处理,如同奔腾长江之水一去而不复返。

由于 Stream 流提供了惰性计算和并行处理的能力,在使用并行计算方式时数据会被自动分解成多段然后并行处理,最后将结果汇总。所以 Stream 操作可以让程序运行变得更加高效。

  1. Stream 流概念
    Stream 流的使用总是按照一定的步骤进行,可以抽象出下面的使用流程。

数据源(source) -> 数据处理/转换(intermedia) -> 结果处理(terminal )

2.1. 数据源
数据源(source)也就是数据的来源,可以通过多种方式获得 Stream 数据源,下面列举几种常见的获取方式。

Collection.stream(); 从集合获取流。
Collection.parallelStream(); 从集合获取并行流。
Arrays.stream(T array) or Stream.of(); 从数组获取流。
BufferedReader.lines(); 从输入流中获取流。
IntStream.of() ; 从静态方法中获取流。
Stream.generate(); 自己生成流
2.2. 数据处理
数据处理/转换(intermedia)步骤可以有多个操作,这步也被称为intermedia(中间操作)。在这个步骤中不管怎样操作,它返回的都是一个新的流对象,原始数据不会发生任何改变,而且这个步骤是惰性计算处理的,也就是说只调用方法并不会开始处理,只有在真正的开始收集结果时,中间操作才会生效,而且如果遍历没有完成,想要的结果已经获取到了(比如获取第一个值),会停止遍历,然后返回结果。惰性计算可以显著提高运行效率。

数据处理演示。

@Test
public void streamDemo(){List<String> nameList = Arrays.asList("Darcy", "Chris", "Linda", "Sid", "Kim", "Jack", "Poul", "Peter");// 1. 筛选出名字长度为4的// 2. 名字前面拼接 This is// 3. 遍历输出nameList.stream().filter(name -> name.length() == 4).map(name -> "This is "+name).forEach(name -> System.out.println(name));
}
// 输出结果
// This is Jack
// This is Poul

数据处理/转换操作自然不止是上面演示的过滤 filter 和 map映射两种,另外还有 map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered 等。

2.3. 收集结果
结果处理(terminal )是流处理的最后一步,执行完这一步之后流会被彻底用尽,流也不能继续操作了。也只有到了这个操作的时候,流的数据处理/转换等中间过程才会开始计算,也就是上面所说的惰性计算。结果处理也必定是流操作的最后一步。

常见的结果处理操作有 forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator 等。

下面演示了简单的结果处理的例子。

/*** 转换成为大写然后收集结果,遍历输出*/
@Test
public void toUpperCaseDemo() {List<String> nameList = Arrays.asList("Darcy", "Chris", "Linda", "Sid", "Kim", "Jack", "Poul", "Peter");List<String> upperCaseNameList = nameList.stream().map(String::toUpperCase).collect(Collectors.toList());upperCaseNameList.forEach(name -> System.out.println(name + ","));
}
// 输出结果
// DARCY,CHRIS,LINDA,SID,KIM,JACK,POUL,PETER,

2.4. short-circuiting
有一种 Stream 操作被称作 short-circuiting ,它是指当 Stream 流无限大但是需要返回的 Stream 流是有限的时候,而又希望它能在有限的时间内计算出结果,那么这个操作就被称为short-circuiting。例如 findFirst 操作。

  1. Stream 流使用
    Stream 流在使用时候总是借助于 Lambda 表达式进行操作,Stream 流的操作也有很多种方式,下面列举的是常用的 11 种操作。

3.1. Stream 流获取
获取 Stream 的几种方式在上面的 Stream 数据源里已经介绍过了,下面是针对上面介绍的几种获取 Stream 流的使用示例。

@Test
public void createStream() throws FileNotFoundException {List<String> nameList = Arrays.asList("Darcy", "Chris", "Linda", "Sid", "Kim", "Jack", "Poul", "Peter");String[] nameArr = {"Darcy", "Chris", "Linda", "Sid", "Kim", "Jack", "Poul", "Peter"};// 集合获取 Stream 流Stream<String> nameListStream = nameList.stream();// 集合获取并行 Stream 流Stream<String> nameListStream2 = nameList.parallelStream();// 数组获取 Stream 流Stream<String> nameArrStream = Stream.of(nameArr);// 数组获取 Stream 流Stream<String> nameArrStream1 = Arrays.stream(nameArr);// 文件流获取 Stream 流BufferedReader bufferedReader = new BufferedReader(new FileReader("README.md"));Stream<String> linesStream = bufferedReader.lines();// 从静态方法获取流操作IntStream rangeStream = IntStream.range(1, 10);rangeStream.limit(10).forEach(num -> System.out.print(num+","));System.out.println();IntStream intStream = IntStream.of(1, 2, 3, 3, 4);intStream.forEach(num -> System.out.print(num+","));
}

3.2. forEach
forEach 是 Strean 流中的一个重要方法,用于遍历 Stream 流,它支持传入一个标准的 Lambda 表达式。但是它的遍历不能通过 return/break 进行终止。同时它也是一个 terminal 操作,执行之后 Stream 流中的数据会被消费掉。

如输出对象。

List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numberList.stream().forEach(number -> System.out.println(number+","));
// 输出结果
// 1,2,3,4,5,6,7,8,9,

3.3. map / flatMap
使用 map 把对象一对一映射成另一种对象或者形式。

/*** 把数字值乘以2*/
@Test
public void mapTest() {List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);// 映射成 2倍数字List<Integer> collect = numberList.stream().map(number -> number * 2).collect(Collectors.toList());collect.forEach(number -> System.out.print(number + ","));System.out.println();numberList.stream().map(number -> "数字 " + number + ",").forEach(number -> System.out.println(number));
}
// 输出结果
// 2,4,6,8,10,12,14,16,18,
// 数字 1,数字 2,数字 3,数字 4,数字 5,数字 6,数字 7,数字 8,数字 9,

上面的 map 可以把数据进行一对一的映射,而有些时候关系可能不止 1对 1那么简单,可能会有1对多。这时可以使用 flatMap。下面演示使用 flatMap把对象扁平化展开。

/*** flatmap把对象扁平化*/
@Test
public void flatMapTest() {Stream<List<Integer>> inputStream = Stream.of(Arrays.asList(1),Arrays.asList(2, 3),Arrays.asList(4, 5, 6));List<Integer> collect = inputStream.flatMap((childList) -> childList.stream()).collect(Collectors.toList());collect.forEach(number -> System.out.print(number + ","));
}
// 输出结果
// 1,2,3,4,5,6,

3.4. filter
使用 filter 进行数据筛选,挑选出想要的元素,下面的例子演示怎么挑选出偶数数字。

/*** filter 数据筛选* 筛选出偶数数字*/
@Test
public void filterTest() {List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);List<Integer> collect = numberList.stream().filter(number -> number % 2 == 0).collect(Collectors.toList());collect.forEach(number -> System.out.print(number + ","));
}
得到如下结果。2,4,6,8,

3.5. findFirst
findFirst 可以查找出 Stream 流中的第一个元素,它返回的是一个 Optional 类型,如果还不知道 Optional 类的用处,可以参考之前文章 Jdk14都要出了,还不能使用 Optional优雅的处理空指针? 。

/*** 查找第一个数据* 返回的是一个 Optional 对象*/
@Test
public void findFirstTest(){List<Integer> numberList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);Optional<Integer> firstNumber = numberList.stream().findFirst();System.out.println(firstNumber.orElse(-1));
}
// 输出结果
// 1

findFirst 方法在查找到需要的数据之后就会返回不再遍历数据了,也因此 findFirst 方法可以对有无限数据的 Stream 流进行操作,也可以说 findFirst 是一个 short-circuiting 操作。

3.6. collect / toArray
Stream 流可以轻松的转换为其他结构,下面是几种常见的示例。

 /*** Stream 转换为其他数据结构*/
@Test
public void collectTest() {List<Integer> numberList = Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5);// to arrayInteger[] toArray = numberList.stream().toArray(Integer[]::new);// to ListList<Integer> integerList = numberList.stream().collect(Collectors.toList());// to setSet<Integer> integerSet = numberList.stream().collect(Collectors.toSet());System.out.println(integerSet);// to stringString toString = numberList.stream().map(number -> String.valueOf(number)).collect(Collectors.joining()).toString();System.out.println(toString);// to string split by ,String toStringbJoin = numberList.stream().map(number -> String.valueOf(number)).collect(Collectors.joining(",")).toString();System.out.println(toStringbJoin);
}
// 输出结果
// [1, 2, 3, 4, 5]
// 112233445
// 1,1,2,2,3,3,4,4,5

3.7. limit / skip
获取或者扔掉前 n 个元素

/*** 获取 / 扔掉前 n 个元素*/
@Test
public void limitOrSkipTest() {// 生成自己的随机数流List<Integer> ageList = Arrays.asList(11, 22, 13, 14, 25, 26);ageList.stream().limit(3).forEach(age -> System.out.print(age+","));System.out.println();ageList.stream().skip(3).forEach(age -> System.out.print(age+","));
}
// 输出结果
// 11,22,13,
// 14,25,26,

3.8. Statistics
数学统计功能,求一组数组的最大值、最小值、个数、数据和、平均数等。

/*** 数学计算测试*/
@Test
public void mathTest() {List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);IntSummaryStatistics stats = list.stream().mapToInt(x -> x).summaryStatistics();System.out.println("最小值:" + stats.getMin());System.out.println("最大值:" + stats.getMax());System.out.println("个数:" + stats.getCount());System.out.println("和:" + stats.getSum());System.out.println("平均数:" + stats.getAverage());
}
// 输出结果
// 最小值:1
// 最大值:6
// 个数:6
// 和:21
// 平均数:3.5

3.9. groupingBy
分组聚合功能,和数据库的 Group by 的功能一致。

/*** groupingBy* 按年龄分组*/
@Test
public void groupByTest() {List<Integer> ageList = Arrays.asList(11, 22, 13, 14, 25, 26);Map<String, List<Integer>> ageGrouyByMap = ageList.stream()            .collect(Collectors.groupingBy(age -> String.valueOf(age / 10)));ageGrouyByMap.forEach((k, v) -> {System.out.println("年龄" + k + "0多岁的有:" + v);});
}
// 输出结果
// 年龄10多岁的有:[11, 13, 14]
// 年龄20多岁的有:[22, 25, 26]

3.10. partitioningBy

/*** partitioningBy* 按某个条件分组* 给一组年龄,分出成年人和未成年人*/
public void partitioningByTest() {List<Integer> ageList = Arrays.asList(11, 22, 13, 14, 25, 26);Map<Boolean, List<Integer>> ageMap = ageList.stream().collect(Collectors.partitioningBy(age -> age > 18));System.out.println("未成年人:" + ageMap.get(false));System.out.println("成年人:" + ageMap.get(true));
}
// 输出结果
// 未成年人:[11, 13, 14]
// 成年人:[22, 25, 26]

3.11. 进阶 - 自己生成 Stream 流

/*** 生成自己的 Stream 流*/
@Test
public void generateTest(){// 生成自己的随机数流Random random = new Random();Stream<Integer> generateRandom = Stream.generate(random::nextInt);generateRandom.limit(5).forEach(System.out::println);// 生成自己的 UUID 流Stream<UUID> generate = Stream.generate(UUID::randomUUID);generate.limit(5).forEach(System.out::println);
}// 输出结果
// 793776932
// -2051545609
// -917435897
// 298077102
// -1626306315
// 31277974-841a-4ad0-a809-80ae105228bd
// f14918aa-2f94-4774-afcf-fba08250674c
// d86ccefe-1cd2-4eb4-bb0c-74858f2a7864
// 4905724b-1df5-48f4-9948-fa9c64c7e1c9
// 3af2a07f-0855-455f-a339-6e890e533ab3

上面的例子中 Stream 流是无限的,但是获取到的结果是有限的,使用了 Limit 限制获取的数量,所以这个操作也是 short-circuiting 操作。

  1. Stream 流优点
    4.1. 简洁优雅
    正确使用并且正确格式化的 Stream 流操作代码不仅简洁优雅,更让人赏心悦目。下面对比下在使用 Stream 流和不使用 Stream 流时相同操作的编码风格。
/*** 使用流操作和不使用流操作的编码风格对比*/
@Test
public void diffTest() {// 不使用流操作List<String> names = Arrays.asList("Jack", "Jill", "Nate", "Kara", "Kim", "Jullie", "Paul", "Peter");// 筛选出长度为4的名字List<String> subList = new ArrayList<>();for (String name : names) {if (name.length() == 4) {subList.add(name);}}// 把值用逗号分隔StringBuilder sbNames = new StringBuilder();for (int i = 0; i < subList.size() - 1; i++) {sbNames.append(subList.get(i));sbNames.append(", ");}// 去掉最后一个逗号if (subList.size() > 1) {sbNames.append(subList.get(subList.size() - 1));}System.out.println(sbNames);
}
// 输出结果
// Jack, Jill, Nate, Kara, Paul

如果是使用 Stream 流操作。

// 使用 Stream 流操作

String nameString = names.stream().filter(num -> num.length() == 4).collect(Collectors.joining(", "));
System.out.println(nameString);

4.2. 惰性计算
上面有提到,数据处理/转换(intermedia) 操作 map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered 等这些操作,在调用方法时并不会立即调用,而是在真正使用的时候才会生效,这样可以让操作延迟到真正需要使用的时刻。

下面会举个例子演示这一点。

 /*** 找出偶数*/@Testpublic void lazyTest() {// 生成自己的随机数流List<Integer> numberLIst = Arrays.asList(1, 2, 3, 4, 5, 6);// 找出偶数Stream<Integer> integerStream = numberLIst.stream().filter(number -> {int temp = number % 2;if (temp == 0 ){System.out.println(number);}return temp == 0;});System.out.println("分割线");List<Integer> collect = integerStream.collect(Collectors.toList());}
如果没有 惰性计算,那么很明显会先输出偶数,然后输出 分割线。而实际的效果是。分割线
2
4
6

可见 惰性计算 把计算延迟到了真正需要的时候。

4.3. 并行计算
获取 Stream 流时可以使用 parallelStream 方法代替 stream 方法以获取并行处理流,并行处理可以充分的发挥多核优势,而且不增加编码的复杂性。

下面的代码演示了生成一千万个随机数后,把每个随机数乘以2然后求和时,串行计算和并行计算的耗时差异。

 /*** 并行计算*/@Testpublic void main() {// 生成自己的随机数流,取一千万个随机数Random random = new Random();Stream<Integer> generateRandom = Stream.generate(random::nextInt);List<Integer> numberList = generateRandom.limit(10000000).collect(Collectors.toList());// 串行 - 把一千万个随机数,每个随机数 * 2 ,然后求和long start = System.currentTimeMillis();int sum = numberList.stream().map(number -> number * 2).mapToInt(x -> x).sum();long end = System.currentTimeMillis();System.out.println("串行耗时:"+(end - start)+"ms,和是:"+sum);// 并行 - 把一千万个随机数,每个随机数 * 2 ,然后求和start = System.currentTimeMillis();sum = numberList.parallelStream().map(number -> number * 2).mapToInt(x -> x).sum();end = System.currentTimeMillis();System.out.println("并行耗时:"+(end - start)+"ms,和是:"+sum);}
得到如下输出。串行耗时:1005ms,和是:481385106
并行耗时:47ms,和是:481385106

效果显而易见,代码简洁优雅。

  1. Stream 流建议
    5.1 保证正确排版
    从上面的使用案例中,可以发现使用 Stream 流操作的代码非常简洁,而且可读性更高。但是如果不正确的排版,那么看起来将会很糟糕,比如下面的同样功能的代码例子,多几层操作呢,是不是有些让人头大?

// 不排版

String string = names.stream().filter(num -> num.length() == 4).map(name -> name.toUpperCase()).collect(Collectors.joining(","));
// 排版
String string = names.stream().filter(num -> num.length() == 4).map(name -> name.toUpperCase()).collect(Collectors.joining(","));

5.1 保证函数纯度
如果想要你的 Stream 流对于每次的相同操作的结果都是相同的话,那么你必须保证 Lambda 表达式的纯度,也就是下面亮点。

Lambda 中不会更改任何元素。
Lambda 中不依赖于任何可能更改的元素。
这两点对于保证函数的幂等非常重要,不然你程序执行结果可能会变得难以预测,就像下面的例子。

@Test
public void simpleTest(){List<Integer> numbers = Arrays.asList(1, 2, 3);int[] factor = new int[] { 2 };Stream<Integer> stream = numbers.stream().map(e -> e * factor[0]);factor[0] = 0;stream.forEach(System.out::println);
}
// 输出结果
// 0
// 0
// 0
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【辫儿哥大白话】到底什么是数据库三大范式?(Mysql数据库的设计范式)

    个人整理,心得体会,欢迎讨论指导.这童鞋们学了这么长时间了,对数据库操作肯定已经度过了蹭一蹭的阶段。准备开始设计数据表尝试微操一下~但是具体应该怎么设计呢?要符合什么规范呢?设计出来好不好看呢?实不实用呢?接下来让辫儿哥给你们讲一下关于数据表的一些规范!什么是…...

    2024/5/5 19:27:36
  2. 模特如何选择适合自己的比赛

    原标题:模特如何选择适合自己的比赛一、选择适合的赛事是模特参赛非常重要的一个环节 常言道:“知彼知己,百战不殆”。一个模特参赛选择适合的赛事是非常重要的一个环节,不同的模特大赛具有不同的选拔定位与方向,模特大赛的定位一般都是根据迎合市场的商业价值规律来定位…...

    2024/5/5 17:40:05
  3. 算法之动态规划(Fibonacci数列)

    Fibonacci 数列 概述Fibonacci 数列是以意大利数学家莱昂纳多斐波那契(Leonardo Fibonacci)的名字命名的一个数列。最初是 Fibonacci 在研究兔子繁殖问题时发现的一种规律,故又称 “兔子数列”。假设最开始(第 0 个月)有一对小兔,过一个月后就可以成长为一对成兔,每对成…...

    2024/5/4 1:51:21
  4. Zookeeper ——选举机制

    目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。服务器2启动,给自己投票,同时…...

    2024/5/4 1:51:17
  5. 2019 | 年度空瓶记

    原标题:2019 | 年度空瓶记终于!! 2019我也能写篇空瓶合集出来!!!不容易,老母亲(?)流下了感动的泪水。 果然像我这样懒癌晚期,只有以碎片的方式断断续续记录空瓶,最后才能整合成一篇hhh 之前发在微博的是相对来说比较简短的记录,现在把它们的使用感受详细写了出…...

    2024/5/4 1:51:13
  6. 速读原著-TCP/IP(TCP经受时延的确认)

    第19章 TCP的交互数据流 19.3 经受时延的确认 在图1 9 - 2中有一些与本节将要论及的时间有关的细微之处。图 1 9 - 3表示了图1 9 - 2中数据交换的时间系列(在该时间系列中,去掉了所有的窗口通告,并增加了一个记号来表明正在传输何种数据)。 把从b s d i发送到s r v 4的7个A…...

    2024/5/4 1:51:09
  7. linux--haproxy(介绍)

    ...

    2024/5/4 1:51:05
  8. 倒计时6小时!赏味期限的双十一新品&现货

    原标题:倒计时6小时!赏味期限的双十一新品&现货今天零点大家是不是都握着手机手抖抖地抢东西来着?抢完一波又想起来:啊什么东西没买,再加入购物车,一轮又一轮,熬到一点钟付完定金订单的余款,已经累到瘫在床上了。 但是双十一是一整天呀!而且全场包邮,除了预售、…...

    2024/5/4 1:51:01
  9. Python与协程从Python2—Python3

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 协程,又称微线程、纤程,英文名Coroutine;用一句话说明什么是线程的话:协程是一种用户态的轻量级线程。Python对于协程的支持在python2中还比较简单,但是也有可以使用的第三方库,在python3中开始全面…...

    2024/5/4 1:50:57
  10. linux grep不区分大小写查找字符串方法

    grep用来过滤字符串信息,grep默认对字母大小写敏感,不过可以通过选项对grep屏蔽大小写敏感,该选项为 -i。一、查看grep工具版本方法图1 grep版本查询二、grep -i 使用方法图2 grep不区分大小写备注:grep使用方法: grep [选项] PATTERN 文件grep -i "error" #忽略…...

    2024/5/4 1:50:53
  11. js 链式数据库查询库 legible-db

    基于egg-mysql 易用的链式数据库查询语句,因为egg原生的mysql使用上有很多不方便,受thinkphp链式数据库查询方式影响,因此做了类似封装。 在网上也找到另一个做了类似封装的,感觉使用起来没那么好用(地址如下):https://github.com/AspenLuoQiang/hyoga-mysql/所以还是自己…...

    2024/5/4 1:50:49
  12. 专访黄子佼:“时尚就是一个循环,就是一个骗局。​”

    原标题:专访黄子佼:“时尚就是一个循环,就是一个骗局。​”我们的潮咖系列已经做了 3 期,有前职业球员王信凯,有偶像团体出道的 “小鬼” 黄鸿升,有从综艺节目出道的阿达,不过看到今天的这位潮咖,他们都得喊声哥。 今天我们的主角是黄子佼,一个集才华与智慧于一身的男…...

    2024/5/4 1:50:45
  13. 第一篇数模论文——估计出租车的总数

    其实我也不太会写,第一次接触,就百度+课本写完了第一篇,大部分内容还是课本上的,只不过就是系统了一下而已。 题目: 也许有的时候,人们会记下驶过身旁汽车的号码,这些杂乱无章的数字,有的人用它来选择处于两难境地的决策,还有的人会把它当做与朋友打赌的“骰子”,做这…...

    2024/5/4 15:10:17
  14. eclipce不编译

    eclipce突然不编译了,maven update以后这个class文件全部没有了,查了很多资料,各种方式都不好使,最终只能自己一点点排查,最终发现是pom文件有重复的jar包,虽然版本不同,名字也不同...

    2024/4/13 23:50:30
  15. Tiffany蓝色婚礼,纯洁得让世界都变得安静

    原标题:Tiffany蓝色婚礼,纯洁得让世界都变得安静Tiffany&Co.是许多女孩心中的梦,它不仅代表着钻戒、求婚、爱情和婚姻,更意味着每个女人心中永远的小女孩形象。当拥有第一件Tiffany的珠宝后,我们悉心珍藏着那个象征着幸福的小盒子,而它的颜色,更直接被定义为Tiffany…...

    2024/5/4 1:50:41
  16. MySQL8关键词和保留词

    JavaWeb核心技术系列教程本专栏详细介绍JavaWeb核心技术谷哥的小弟49.00去订阅C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 HTML5前端开发实战系列教程 MySQL数据库实操教程(35篇图文版) 推翻自己和过往——自定义View系列教程(10篇) 走出思维困…...

    2024/5/5 3:08:01
  17. POPSHOW NO.85︱赵露思:传递快乐是一件幸福的事

    原标题:POPSHOW NO.85︱赵露思:传递快乐是一件幸福的事从见到赵露思的那一刻起,我们便从她脸上洋溢着的礼貌而宜人的微笑中,感到了一种油然而生的暖意。 作为娱乐圈95后女演员的代表之一,短短几年时间,她不断地挑战着自己的极限,如今已经成为了一名实力派青年演员。今年…...

    2024/5/4 1:50:33
  18. 专辑推荐 | Done Something Wonderful

    原标题:专辑推荐 | Done Something Wonderful写在前面 大家周末愉快 今天的推送我想做一次尝试、分享给大家一篇深得我心的黑泡专辑critique,来自【音乐与废话收集区】的三姑娘,我稍有改动。 我不知道我的订阅者中听南韩黑泡(K-Pop)的多不多,但既然这个公众号很大一部分…...

    2024/5/4 1:50:29
  19. 复古一点点

    原标题:复古一点点“我最闪耀的时刻是 …” 重返 80 年代「英式花园」 责任编辑:...

    2024/5/4 1:50:25
  20. 向雷锋同志学习!中国计生协启动全网“点赞一线最美的你”活动

    原标题:向雷锋同志学习!中国计生协启动全网“点赞一线最美的你”活动人生今天 2月6日, 中国计生协向全国会员、志愿者、工作者发起倡议,号召大家众志成城、同心抗疫!期间,全国各地计生协万千会员、志愿者、工作者积极参与疫情防控工作。特别是一些计生协会员、志愿者,他…...

    2024/5/4 1:50:21

最新文章

  1. 消除字符串 状压dp

    消除字符串 题目描述 小明喜欢中心对称的字符串&#xff0c;即回文字符串。现在小明手里有一个字符串 S&#xff0c; 小明每次都会进行这样的操作&#xff1a;从 S 中挑选一个回文的子序列&#xff0c;将其从字符串 S 中去除&#xff0c;剩下的字符重组成新的字符串 S。 小明…...

    2024/5/5 20:05:53
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. ensp设置远程登录路由器

    [AR1]aaa #aaa服务专门存储账号密码 [AR1-aaa]local-user 用户名 privilege level 15(1~15) password cipher 123456 #预设账号密码 [AR1-aaa]local-user 用户名 service-type telnet [AR1]user-interface vty 0 4 #虚拟接口调用&#xff0c;0~4口&#xff0c;可同时…...

    2024/5/4 2:28:17
  4. 汽车统一诊断服务UDS协议参考文章和视频

    UDS基础知识介绍-电子发烧友网 【图解UDS】UDS汽车诊断标准协议&#xff08;ISO14229&#xff09;带你入门到精通-有驾 车载测试之UDS诊断协议9&#xff1a;0x27服务&#xff1a;解锁ECU_哔哩哔哩_bilibili UDS诊断的22服务&#xff08;DID读取数据&#xff09;和2E服务&…...

    2024/5/5 4:34:45
  5. WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

    一. 简介 前面两篇文章&#xff0c;一篇文章实现了WIFI联网前要做的工作&#xff0c;另一篇文章配置了WIFI配置文件&#xff0c;进行了WIFI热点的连接。文章如下&#xff1a; WIFI驱动移植实验&#xff1a;WIFI 联网前的工作-CSDN博客 WIFI驱动移植实验&#xff1a;连接WIF…...

    2024/5/4 17:27:10
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57