Stream学习笔记
Stream入门
-
Stream 不是集合 , 也不是数据结构 , 不可以保存数据
-
Stream 有点类似于高级 的 Iterator , 可以用于算法和计算
-
不同于迭代器 , Stream 可以并行化操作 , 数据被分为很多段 , 在不同的线程中进行处理
-
数据源、零个或多个中间操作 ( intermediate ) 以及零个或一个终端操作 (terminal )
-
所有中间操作都是惰性的 , 在管道开始工作之前,任何操作都不会产生任何效果
-
终端操作有点像水龙头 , 开启了水龙头后 , 水才会流动 , 中间操作才会执行
一、Strean如何创建?[Strean数据源]
数据源是数组
stream = Stream.of("1", "2", "3");
//等同于
String[] arr = new String[]{"1", "2", "3"};
Stream<String> stream = Arrays.stream(arr);
数据源是集合
//集合 List ,ap set 都可以
List<String> list = new ArrayList<>();list.add("我");list.add("是");list.add("集合");Stream<String> stream = list.stream(); //顺序流ParallelStream<String> parallelStream =list.parallelStream(); //并行流
通过parallelStream()
可以创建并行流,默认线程池不是我们常用的ThreadPoolTaskExecutor
而是ForkJoinPool
二、Stream 流是如何工作的?[中间操作和终端操作]
流表示包含着一系列元素的集合,我们可以对其做不同类型的操作,用来对这些元素执行计算。听上去可能有点拗口,让我们用代码说话:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");myList.stream() // 创建流.filter(s -> s.startsWith("c")) // 执行过滤,过滤出以 c 为前缀的字符串.map(String::toUpperCase) // 转换成大写.sorted() // 排序.forEach(System.out::println); // for 循环打印// C1
// C2
我们可以对流进行中间操作或者终端操作。
什么是中间操作?什么又是终端操作?
Stream中间操作,终端操作
- ①:中间操作会再次返回一个流,所以,我们可以链接多个中间操作,注意这里是不用加分号的。上图中的
filter
过滤,map
对象转换,sorted
排序,就属于中间操作。 - ②:终端操作是对流操作的一个结束动作,一般返回
void
或者一个非流的结果。上图中的forEach
循环 就是一个终止操作。
看完上面的操作,感觉是不是很像一个流水线式操作呢。
实际上,大部分流操作都支持 lambda 表达式作为参数,正确理解,应该说是接受一个函数式接口的实现作为参数。
三、不同类型的 Stream 流
1.按照执行调度区分
1.1串行流
1.2并行流
Stream中并行流使用的线程池是ForkJoinPool
,特点是任务
@Test
public void case6(){List<Person> persons = Arrays.asList(new Person("Max", 18),new Person("Max", 18),new Person("Peter", 23),new Person("Pamela", 23),new Person("David", 12),new Person("David", 12),new Person("David", 12));//直接创建并行流 parallelStream()persons.parallelStream().peek((person)-> System.out.println(person.getName()+":"+Thread.currentThread().getName())).forEach(System.out::println);//先用串行再转并行 parallelpersons.stream().distinct().parallel().peek((person)-> System.out.println(person.getName()+":"+Thread.currentThread().getName())).forEach(System.out::println);
}
2.按照数据类型区分
2.1基本数据类型流(int,long,double)
- IntStream
- LongStream
- DoubleStream
2.2对象流(Object)
- Stream
四、中间操作
//先定义一个操作对象下面用
List<Person> persons = Arrays.asList(new Person("Max", 18),new Person("Max", 18),new Person("Peter", 23),new Person("Pamela", 23),new Person("David", 12));
1.map
遍历元素进行编辑,有返回值,可以类型转换
@Test
public void testMap() {Stream.of("apple", "banana", "orange", "watermelon", "grape").map(e -> {e = e.substring(1, 1);return e.length();}) //转成单词的长度 int.forEach(System.out::println); //输出
}
2.mapToInt
对象流转基本数据流,当然这些map都能做到,mapToLong、mapToDouble 与mapToInt 类似
@Test
public void testMapToInt(){Stream.of("apple", "banana", "orange", "waltermaleon", "grape").mapToInt(String::length) //转成int.forEach(System.out::println);
}
3.peek
遍历元素进行编辑,打印信息,无返回值,不可以类型转换(其实就是提供给我们来观察流的元素的)
@Test
public void tesPeek() {Stream.of( new StringBuilder("apple") ,new StringBuilder("banana"),new StringBuilder("orange"),new StringBuilder("watermelon"),new StringBuilder("grape")).peek(s-> s.append("aa")) //拼接上aa.map(StringBuilder::toString).forEach(System.out::println); //输出
}
4.flatMap
flatMap 作用就是将元素拍平拍扁 ,将拍扁的元素重新组成Stream,并将这些Stream 串行合并成一条Stream
//flatMap()参数,函数式接口的返回值也是一个Stream流
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
//map()的参数,函数式接口的返回值是Object
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
@Test
public void testFlatMap(){Stream.of("a-b-c-d","e-f-i-g-h").flatMap(e->Stream.of(e.split("-"))).forEach(System.out::println);
}
5.distinct
去重,将根据equals 方法进行判断,如果要对自己自定义的bean 去重,则需要 重写equals方法,但是这不是唯一的方法,还可以自定义过滤规则
@Test
public void testDistinct() {//Persons对象去重,默认根据equalspersons.stream().distinct().forEach(System.out::println);//Integer去重IntStream.of(1, 2, 2, 3).distinct().forEach(System.out::println);
}
6.Limit
限制元素的个数
@Testpublic void testLimit(){//Persons限制元素个数persons.stream().limit(3).forEach(System.out::println);//Integer限制元素个数Stream.of(1,2,3,4,5,6).limit(3) //限制三个.forEach(System.out::println); //将输出 前三个 1,2,3}
7.skip
跳过前n个元素
@Test
public void testSkip() {//Persons跳过前n个元素persons.stream().skip(3).forEach(System.out::println);//Integer跳过前n个元素Stream.of(1,2,3,4,5,6).skip(3) //限制三个.forEach(System.out::println); //将输出 前三个 1,2,3
}
8.sorted
排序比较器 底层依赖Comparable 实现,也可以提供自定义比较器
@Testpublic void testSorted() {///Persons排序,注意这里自定义排序规则persons.stream().sorted(Comparator.comparingInt(Person::getAge).thenComparing(Person::getName)).forEach(System.out::println);//Integer排序Stream.of(1,2,4,3,5,6).sorted().forEach(System.out::println);}
#IntStream(特有的方法)
- IntStream
- LongStream
- DoubleStream
1.mapToObj
基本数据流转对象流
@Test
public void testMapObject() {// 这里转成string对象,并给String开头+aIntStream.of(1, 2, 3).mapToObj(String::valueOf).map(s -> "a" + s).forEach(System.out::println);
}
2.boxed
自动装箱,将基本类型int转成对象类型Integer
@Test
public void testBoxed() {// 将基本类型转成对象类型IntStream.range(0, 10).boxed().forEach(System.out::println);//相当于IntStream.range(0, 10).mapToObj(Integer::valueOf).forEach(System.out::println);
}
五、终端操作
//还是先整个集合
List<Person> persons = Arrays.asList(new Person("Max", 18),new Person("Max", 18),new Person("Peter", 23),new Person("Pamela", 23),new Person("David", 12));
1.forEach
forEach不仅是Stream的终端操作,而且还是集合的语法糖
@Test
public void testForEach() {persons.forEach(System.out::println);
}
2.count
求集合长度
@Test
public void testCount() {long count = persons.stream().count();System.out.println(count);
}
3.findFirst
获取流中第一个元素
@Test
public void testFindFirst() {Optional<Person> optional = persons.stream().findFirst();Person person = optional.orElse(null);System.out.println(person);
}
4.findAny
获取流中任意一个元素
@Test
public void testFindAny() {Optional<Person> optional = persons.stream().findAny();Person person = optional.orElse(null);System.out.println(person);
}
5.max
求最大值 ,根据规则排序取最后那个
@Test
public void testMax() {Optional<Person> max1 = persons.stream().max((p1, p2) -> {return p1.getAge().compareTo(p2.getAge());});Person person1 = max1.orElse(null);System.out.println(person1);//简化Optional<Person> max2 = persons.stream().max(Comparator.comparing(Person::getAge));Person person2 = max2.orElse(null);System.out.println(person2);}
6.min
求最小值,根据规则排序取第一个
@Test
public void testMin() {Optional<Person> min1 = persons.stream().min((p1, p2) -> {return p2.getAge().compareTo(p1.getAge());});Person person1 = min1.orElse(null);System.out.println(person1);//简化Optional<Person> min2 = persons.stream().min(Comparator.comparing(Person::getAge));Person person2 = min1.orElse(null);System.out.println(person2);}
7.toArray
转数组
@Test
public void testToArray() {Object[] objects = persons.stream().toArray();Arrays.stream(objects).forEach(System.out::println);
}
8.reduce
归并
对流中的数据按照你指定的计算方式计算出一个结果(缩减操作)reduce的作用是把Stream中的元素结合起来,我们可以传入一个初始值,它会按照我们的计算方式依次拿流中的元素在基础值上计算,计算结果在后面的元素计算
//求最大年龄的值//可以使用max(其实基于reduce)或者reduce//reduce求和,求差集,求什么都有,其实就是一组数据的连续计算@Testpublic void case5(){List<Person> persons = Arrays.asList(new Person("Max", 18),new Person("Max", 18),new Person("Peter", 23),new Person("Pamela", 23),new Person("David", 12),new Person("David", 12),new Person("David", 12));//求最小年龄int minAge = persons.stream().mapToInt(Person::getAge).reduce(Integer.MAX_VALUE,new IntBinaryOperator(){@Overridepublic int applyAsInt(int left, int right) {return left > right?right:left;}});System.out.println(minAge);//求最大年龄,简写int maxAge = persons.stream().mapToInt(Person::getAge).reduce(Integer.MIN_VALUE, Math::max);System.out.println(maxAge);}
9.collect(最重要)
这里只介绍下简单的收集功能,也是最常用的,参考了这篇文章https://www.jianshu.com/p/6ee7e4cd5314
1.toList和toSet
@Test
public void testToListSet(){List<Person> persons = Arrays.asList(new Person("Max", 1),new Person("Max", 2),new Person("Peter", 3),new Person("Pamela", 4),new Person("David", 5));//toListList<Person> list1 = persons.stream().distinct().collect(Collectors.toList());list1.forEach(System.out::println);//toSetSet<Person> set = persons.stream().collect(Collectors.toSet());set.forEach(System.out::println);
}
2.toMap
@Testpublic void testToMap(){List<Person> persons = Arrays.asList(new Person("Max", 1),new Person("Max", 2),new Person("Peter", 3),new Person("Pamela", 4),new Person("David", 5));//key value 可以是对象本身(用Function.identity()表示)也可以是属性Map<Person, Person> collect1 = persons.stream().collect(Collectors.toMap(Function.identity(), Function.identity()));collect1.forEach((k,v)->{System.out.println(k+":"+v);});Map<Integer, String> collect2 = persons.stream().collect(Collectors.toMap(Person::getAge, Function.identity()));collect2.forEach((k,v)->{System.out.println(k+":"+v);});}
3.groupingBy
//有三个重载方法//groupingBy(Function)//groupingBy(Function , Collector)//groupingBy(Function, Supplier, Collector)//Function 自定义分组规则//Supplier 自定义Map的类型,默认HashMap::new//Collector 自定义每组的格式,默认Collectors.toList()@Testpublic void testGroup(){List<Person> persons = Arrays.asList(new Person("Max", 1),new Person("Min", 1),new Person("Peter", 2),new Person("Pamela", 3),new Person("David", 4));//1.按年龄分组System.out.println("按年龄分组");ConcurrentHashMap<Integer, Set<Person>> map1 = persons.stream().collect(Collectors.groupingBy(Person::getAge, ConcurrentHashMap::new, Collectors.toSet()));map1.forEach((k,v)->{System.out.println(k+":"+v);});//2.自定义分组规则System.out.println("自定义分组规则");Map<String, List<Person>> map2 = persons.stream().collect(Collectors.groupingBy((person -> {if (person.getAge().equals(1)){return "等于1";}if (person.getAge().equals(2) || person.getAge().equals(3)){return "等于2或3";}if (person.getAge().equals(4)){return "等于4";}return null;} )));map2.forEach((k,v)->{System.out.println(k+":"+v);});//3.partitioningBy 分区(只能分两组)//判断年龄是否为1Map<Boolean, List<Person>> map3 = persons.stream().collect(Collectors.partitioningBy(person -> person.getAge().equals(1)));map3.forEach((k,v)->{System.out.println(k+":"+v);});}
4.Collectors.joining()
//拼接字符串,有三个重载方法
//Collectors.joining()
//Collectors.joining(CharSequence delimiter)
//Collectors.joining(CharSequence delimiter,CharSequence prefix,CharSequence suffix)
//delimiter是分隔符号,默认为""
//prefix是前缀,默认为""
//suffix是后缀,默认为""
@Test
public void testJoining(){List<Person> persons = Arrays.asList(new Person("Max", 1),new Person("Peter", 2),new Person("Pamela", 3),new Person("David", 4));String s1 = persons.stream().map(Person::getName).collect(Collectors.joining());String s2 = persons.stream().map(Person::getName).collect(Collectors.joining("、"));String s3 = persons.stream().map(Person::getName).collect(Collectors.joining("、","name:",";"));System.out.println(s1);System.out.println(s2);System.out.println(s3);}
#IntStream(特有的方法)
- IntStream
- LongStream
- DoubleStream
1.Reduce
归并操作
//reduce 有两个重载方法
//1.参数为起始值和运算规则,返回值是int 有起始值,有运算规则,两个参数,此时返回的类型和起始值类型一致。
T reduce(T identity, BinaryOperator<T> accumulator)
//2.参数为运算规则,返回值是Optional...
OptionalInt reduce(IntBinaryOperator op);
@Test
public void testReduce() {//有起始值,有运算规则int sum = IntStream.range(0, 10).reduce(0, (v1, v2) -> v1 - v2);System.out.println(sum);// 规约操作返回 optionalInt,不一定有值OptionalInt reduce = IntStream.of().reduce((v1, v2) -> v1/v2);reduce.ifPresent(System.out::println);
}
2.sum
求和
@Testpublic void testSum() {int sum = IntStream.rangeClosed(0, 10).sum();System.out.println(sum);}
3.average
求平均值
@Test
public void testAverage() {OptionalDouble optionalDouble = IntStream.of(-2, 2, -9, 10, 9).average();double average = optionalDouble.getAsDouble();System.out.println(average);
}
六、注意事项
- 惰性求值(如果没有终结操作,只有中间操作是不会执行的)
- 流是一次性的(一旦一个流经过了一个终结操作,这个流就不能再被使用)
- 对流的操作不会影响原数据
无状态:指元素的处理不受之前元素的影响;
有状态:指该操作只有拿到所有元素之后才能继续下去。
非短路操作:指必须处理所有元素才能得到最终结果;
短路操作:指遇到某些符合条件的元素就可以得到最终结果,如 A || B,只要A为true,则无需判断B的结果。
七、Optional
Optional是为了解决空指针的校验的臃肿
1.创建Optional
Optional.ofNullable(author)
推荐使用
Optional.of(author)
如果author==null 会报空指针
public class OptionalDemo {public static void main(String[] args) {//当不知道author是否为空,为了防止空指针异常Author author = OptionalDemo.getAuthor();//1.以前我们这样做非空if (author != null) {System.out.println(author.getAge());}//2.jdk8后可以将这个对象包装为Optional<Author>对象Optional<Author> optionalAuthor = Optional.ofNullable(author);System.out.println("optionalAuthor:" + optionalAuthor);//然后进行判断optionalAuthor.ifPresent(author1 -> System.out.println(author1.getName()));//3.在方法中就包装好OptionalOptional<Author> optionalAuthor2 = OptionalDemo.getOptionalAuthor();System.out.println("optionalAuthor2:" + optionalAuthor2);optionalAuthor2.ifPresent(author1 -> System.out.println(author1.getName()));}public static Author getAuthor() {Author author = new Author();author.setAge(18);author.setName("赵云");// return null;return author;}public static Optional<Author> getOptionalAuthor() {Author author = new Author();author.setAge(20);author.setName("张飞");author = null;//return Optional.of(author); //传入对象不可为空return Optional.ofNullable(author);}
}
2.安全的消费
ifPresent()
public void ifPresent(Consumer<? super T> consumer) {if (value != null)consumer.accept(value);}
3.获取对象
1.get(不推荐使用,对象为null报错NoSuchElementException)
Author author1 = optionalAuthor2.get();
2.orElseGet(对象如果为null,自定义返回对象)
optionalAuthor2.orElseGet(new Supplier<Author>() {@Overridepublic Author get() {Author author2 = new Author();author2.setAge(18);author2.setName("曹操");return author2;}});
3.orElseThrow(对象如果为null,抛出自已定义的异常)
optionalAuthor2.orElseThrow(new Supplier() {@Overridepublic Exception get() {return new Exception("我靠");}});
//简化
optionalAuthor2.orElseThrow((Supplier<Throwable>) () -> new RuntimeException("我靠"));
4.过滤
filter
判断对象是否符合标准,不符合的会被当作对象为null
public Optional<T> filter(Predicate<? super T> predicate) {Objects.requireNonNull(predicate);if (!isPresent())return this;elsereturn predicate.test(value) ? this : empty();}
5.判断
ifPresent 判断对象是否为空,为空返回false,不为空返回true
public void ifPresent(Consumer<? super T> consumer) {if (value != null)consumer.accept(value);}
6.数据转换
map
对数据进行类型转换,和Stream中的一样
public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {Objects.requireNonNull(mapper);if (!isPresent())return empty();else {return Optional.ofNullable(mapper.apply(value));}}
//返回值 也是Optional对象
Optional<String> optionalName = optionalAuthor2.map(Author::getName);
icate);
if (!isPresent())
return this;
else
return predicate.test(value) ? this : empty();
}
##### 5.判断**ifPresent 判断对象是否为空,为空返回false,不为空返回true**```javapublic void ifPresent(Consumer<? super T> consumer) {if (value != null)consumer.accept(value);}
6.数据转换
map
对数据进行类型转换,和Stream中的一样
public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {Objects.requireNonNull(mapper);if (!isPresent())return empty();else {return Optional.ofNullable(mapper.apply(value));}}
//返回值 也是Optional对象
Optional<String> optionalName = optionalAuthor2.map(Author::getName);
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- windows的cmd和powershell的区别(学习笔记,摘抄版)
PowerShell是跨平台的,cmd是Windows专用的。 PowerShell有面向对象的管道。 PowerShell能够调用.NET的很多功能。 在windows上cmd和powershell都是命令行执行窗口,Powershell 从 Windows7 时代开始内置于 Windows 系统当中,可以看作是微软…...
2024/4/14 16:36:11 - wpsapi.tlh(11) : fatal error C1083: 无法打开包括文件:“”: No such file or directory
环境:cpu64,win7 64操作系统,vs2008,office2013,wps2013个人版 1.由于换了一个笔记本,xp->win7,office2010->2013,wps2012->2013,导致原来的代码不能用了 源代码stdafx.h#import "..\Lib\wps\2013.9.1.0.4715\wpsapi.dll" //rename("RGB", "…...
2024/5/8 12:28:55 - ubuntu root用户无法登录filezilla的问题
1、问题 2、解决方法 step1、 vim /etc/ssh/sshd_configstep2、 service ssh restart 3、测试效果...
2024/4/19 9:07:02 - 中国流量控制阀行业市场供需与战略研究报告
出版商:贝哲斯咨询 获取报告样本:流量控制阀调节液体的运动或压力。控制阀通常对流量计或温度计等独立设备发出的信号作出反应。 企业竞争态势 该报告涉及的主要国际市场参与者有Parker Hannifin、Equilibar、Flomatic、STAUFF、Cla-Val、Pneumadyne、…...
2024/4/14 5:24:43 - 【C入门总结】
C语言入门学习欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释…...
2024/4/14 5:24:23 - JFinal中json的使用
之前java开发一直使用的是经典的ssh,去年接触了jfinal,觉得jfinal的魅力非常之大,让我无法自拔,现在还深深地陷在其中。 简单的介绍一下jfinal,jfinal短小精悍,让java有了php一般的开发速度,急速的开发速度之外其他的方面毫不逊色,我谈谈几点自己使用jfinal的感受吧。…...
2024/4/14 5:25:19 - 中国无痛塞市场趋势报告、技术动态创新及市场预测
出版商:贝哲斯咨询 获取报告样本: 企业竞争态势 无痛塞市场报告涉及的主要国际市场参与者有FCI、Spectrum Surgical、I-MED Pharma、Eaglevision、US-IOL、Delta Life Science、Odyssey、Angiotech、Medenium、Lacrimedics、Oasis等。这些参与者的市场…...
2024/4/14 5:25:44 - yield的用法
def fab1(max):n, a, b 0, 0, 1while n < max:print(b)a, b b, a bn n 1def fab2(max):n, a, b 0, 0, 1while n < max:yield ba, b b, a bn n 1 方法fab2与fab1比较,只是把print(b)换成了yield b,这样在max很大的时候,输出的…...
2024/4/14 5:25:19 - Python高频使用的代码片段
目录 日期生成 获取过去 N 天的日期 生成一段时间区间内的日期 保存数据到CSV requests 库调用 Python 操作各种数据库 操作 Redis 操作 MongoDB 操作 MySQL 本地文件整理 多线程代码 异步编程代码 针对工作生活中基础的功能和操作,梳理了下对应的几个P…...
2024/4/15 10:26:41 - OpenCV和Luxonis推出更小、更轻、更便宜的OAK-D-Lite智能深度相机
"79美元的众筹价格使OAK-D-Lite成为迄今为止最便宜的OAK相机,其外观设计时尚,功能令人印象深刻。"— Gareth Halfacree(两本国际畅销书《树莓派用户指南》和《认识树莓派》的作者)本文首发于oakchina.cnOpenCV和Luxonis…...
2024/5/8 15:25:03 - vue-admin-element,npm i 报错 tui-editor git
这个问题和上一篇文章出现的问题类似 node -v 查看自己的node版本 我的是12.17.0 尽量不要使用cnpm去下载,可以使用 npm install --registryhttps://registry.npm.taobao.org 解决思路:把node版本降低,可以去官网去下载具体版本或者百度云下载 链接&a…...
2024/4/14 5:25:29 - Cesium简介——环境搭建
Cesium是什么 Cesium是一个跨平台、跨浏览器的展示三维地球和地图的javascript库 Cesium使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL: Cesium是基于Apache20许可的开源程序。它可以免费的用于商业和非商业用途。 C…...
2024/5/8 12:02:58 - 虚幻引擎图文笔记:Lowpoly Asset低面几何资产开发技巧
文章目录前言范例建模细节碰撞体贴图细节基础色和花纹次要区域的颜色多样化处理前言 打算用虚幻开发一个Lowpoly风的游戏,参考了虚幻商城中Synty Studios所属Lowpoly资产的一些制作技巧,记录一下并提供给有需要的朋友。 Synty Studios家的资产大家应该不…...
2024/4/20 4:47:25 - npm install 报node-sass错误以及python2.7相关错误
安装node-sass报错了 #卸载node-sass npm uninstall node-sass #安装node-sass npm install node-sass 能安装成功但是后续npm run dev缺报不兼容错误了 Error:Node Sass version 6.0.0 is incompatible with ^4.0.0 说明node-sass版本太高,不兼容 用下面的命令逐…...
2024/4/19 18:03:32 - (linux) PID相关
/proc下有许多以pid号码为名称的目录。权限多半是555。硬连结数多半为9个。 ps $$或echo $$:现用bash的PID号。 ps aux或top :列出所有process的PID号 top -o -PID :将PID号由少到多排序 (-o PID由多到少) pidof 程序名 :抓单…...
2024/4/14 5:25:49 - CCF推荐|JCR3区计算机通信类SCI征稿~
各位学者, EA-ISET 协会重点期刊推荐,JCR3区计算机通信类SCI期刊,版面有限,录满即止,具体信息如下:一、期刊信息 JCR3区计算机通信类SCI源刊 【期刊简介】IF:2.0-2.5,JCR3区,中科院4区&#…...
2024/4/14 16:37:02 - TP5+Layui 多条件搜索框 时间范围搜索
最近开发需要用到开始时间到结束时间中间的时间范围搜索,加上姓名、电话多条件搜索,在网上找了一些参考,加上自己的修改最终完成,在这里记录一下,加深记忆方便以后直接用。 话不多说,上图片: ht…...
2024/5/8 15:47:25 - 无水氯化铝行业调研报告 - 市场现状分析与发展前景预测
【出版商】贝哲斯咨询 【免费目录下载】无水氯化铝是指具有低熔点和沸点的无味的白色或黄色结晶固体。无水氯化铝主要在化学工业中用作催化剂,用于各种应用,例如染料和颜料、农药、药物以及在化妆品中用作活性成分。 无水氯化铝市场的企业竞争态势 该报…...
2024/4/20 7:22:15 - Mysql之int(n)长度浅析
mysql数据库作为当前常用的关系型数据库,肯定会遇到设计表的需求,下面对设计表时int类型的设置进行分析。 如对用户表user添加一个user_id字段,数据类型为int,设置为:int(1); mysql中…...
2024/4/14 5:25:29 - 【C++】拷贝构造函数 Copy Constructor
拷贝构造拷贝构造函数 Copy Constructor继承父类浅拷贝、深拷贝对象型参数和返回值匿名对象(临时对象)隐式构造拷贝构造函数 Copy Constructor 也是构造函数的一种 当利用已存在的对象创建一个新对象时(类似于拷贝),就…...
2024/4/20 11:29:04
最新文章
- 【教学类-18-03】20240508《蒙德里安“红黄蓝黑格子画”-A4横版》(大小格子)
作品展示 背景需求: 2年前制作了蒙德里安随机线条 【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》(大班)_蒙德里安模版-CSDN博客文章浏览阅读1k次。【教学类-18-02】20221124《蒙德里安“红黄蓝黑格子画”-A4竖版》(大班)…...
2024/5/8 17:23:23 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - axios拦截器:每次请求自动带上 token
Step 1:创建Axios实例并添加拦截器 在你的Vue项目中,一般我们会先导入axios,然后创建一个axios实例。这样做是为了方便统一管理和配置。 import axios from axios; // 引入axios// 创建一个axios实例 const service axios.create();// 添加请…...
2024/5/4 22:20:25 - STM32实现软件SPI对W25Q64内存芯片实现读写操作
先看看本次实验的成果吧: 这么简单的一个程序,我学习了一个星期左右,终于把所有的关节都打通了。所有代码都能什么都不看背着敲出来了。为了使自己的记忆更为清晰,特意总结了一个思维导图,感觉自己即便是日后忘记了看一…...
2024/5/7 21:13:56 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) 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 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在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