当前位置: 首页 > news >正文

进阶JAVA篇-深入了解 Stream 流对象的创建与中间方法、终结方法

目录

        1.0 Stream 流的说明

        2.0 Stream 流对象的创建

        2.1 对于 Collection 系列集合创建 Stream 流对象的方式

        2.2 对于 Map 系列集合创建 Stream 流对象的方式

        2.3 对于数组创建 Stream 流对象的方式

        3.0 Stream 流的中间方法

        3.1 Stream 流的 filter() 中间方法

        3.2 Stream 流的 sorted() 中间方法

        3.3 Stream 流的 limit(x) 中间方法

        3.4 Stream 流的 skip(x) 中间方法

        3.5 Stream 流的 map() 中间方法

        3.6 Stream 流的 distinct() 中间方法

        3.7 Stream 流的 concat() 中间方法

        4.0 Stream 流的终结方法

        4.1 Stream 流的 forEach 终结方法

        4.2 Stream 流的 count() 终结方法

        4.3 Stream 流的 max() 或者 min() 终结方法

        5.0 Stream 流的 collect() 收集方法


        1.0 Stream 流的说明

        Stream(流)是一种数据处理的概念,它可以用来处理集合数组输入/输出等数据源的元素序列。流可以看作是一个从源到目标的元素序列,可以通过一系列连续的操作对其进行处理。流的操作可以分为两种类型:中间操作和终端操作。中间操作是对流进行处理并返回一个新的流,而终端操作是对流进行最终的处理并返回一个结果或副作用。

        2.0 Stream 流对象的创建

        主要以数组集合来创建 Stream 流对象。

        2.1 对于 Collection 系列集合创建 Stream 流对象的方式

        直接用集合对象.stream() 实例方法创建 Stream 流对象。

以代码的形式来具体介绍:

        // List 集合系列来创建 Stream 流对象List<String> list = new ArrayList<>();Collections.addAll(list,"张三","李四","王五","张麻子");Stream<String> stream = list.stream();// Set 集合系列来创建 Stream 流对象Set<String> set = new HashSet<>();Collections.addAll(set,"张三","李四","王五","张麻子");Stream<String> stream1 = set.stream();

       

        2.2 对于 Map 系列集合创建 Stream 流对象的方式

        具体来介绍两种方式:第一种方法;把键值对“封装”成一个整体。第二种方法;分别把集合中的键和值全部获取出来,单独放在各个集合中。

以代码的形式来具体介绍:

        // Map 集合系列来创建 Stream 流对象Map<String,Integer> m = new HashMap<>();m.put("张三",19);m.put("李四",28);m.put("王五",33);m.put("张麻子",22);//第一种方法:把键值对“封装”成一个整体Set<Map.Entry<String,Integer>> entries = m.entrySet();Stream<Map.Entry<String,Integer>> stream2 = entries.stream();//第二种方法:分别把集合中的键和值全部获取出来,单独放在系列集合中Set<String> k = m.keySet();Collection<Integer> v = m.values();Stream<String> stream3 = k.stream();Stream<Integer> stream4 = v.stream();

        2.3 对于数组创建 Stream 流对象的方式

        具体来介绍有两种方式来创建对象:第一种方法;Arrays.stream() 方法来创建。第二种方法;Stream.of() 方法来创建。

以代码的形式来具体介绍:

        // 用数组来创建 Stream 流对象String[] strings = new String[]{"张三","李四","王五","张麻子"};//第一种方法:用 Arrays.stream() 方法来创建Stream<String> stream5 = Arrays.stream(strings);//第二种方法:用 Stream.of() 方法来创建Stream<String> stream6 = Stream.of(strings);

        

        3.0 Stream 流的中间方法

        Stream 流的中间方法主要用于对流中的元素进行处理,返回一个新的流对象。这些中间方法可以组合使用,形成流水线式的处理流程,方便进行复杂的数据处理操作。

        3.1 Stream 流的 filter() 中间方法

        用于对流中的数据进行过滤。

通过具体代码实现:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list,"张三","李四","王五","张麻子");//对一下代码解读:首先用 stream() 得到了该集合的流,//然后用 filter() 用于对流中的数据进行过滤,也可以理解成筛选字符串中带有“张”的,返回新流,//该新流中都是含“张”的字符串,接着把流中的数据进行用 forEach() 方法进行遍历。/*list.stream().filter(s -> s.contains("张")).forEach(s-> System.out.println(s));*///对以上代码稍微简化,如以下:list.stream().filter(s -> s.contains("张")).forEach(System.out::println);}
}

运行结果如下:

        3.2 Stream 流的 sorted() 中间方法

        按照指定规则排序。

通过具体代码实现:

        

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));//解读以下代码:首先先利用 stream() 方法来获取该集合的流,然后用 sorted() 方法,由于是自定义类型的对象,//默认的 sorted() 方法是搞不定,所以需要重写方法,因此可以接入这个匿名内部类来重写内部的具体方法,//排完序之后会得到一个新的流,然后经过 forEach 方法来遍历该流中的数据。list.stream().sorted((o1, o2)-> o1.getAge() - o2.getAge()).forEach(s-> System.out.println(s));//以上代码话可以继续简化,效果是一样的System.out.println("--------------------------------------------------------------------");list.stream().sorted((o1, o2)-> o1.getAge() - o2.getAge()).forEach(System.out::println);}
}

运行结果如下:

        3.3 Stream 流的 limit(x) 中间方法

        获取前面 x 个元素。

通过具体代码实现:

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));//对一下代码进行解读:先获取该集合的流,然后用 limit(2) 中间方法,获取前面2个元素,//返回新流,接着对新流进行遍历输出元素list.stream().limit(2).forEach(System.out::println);}
}

运行结果如下:

        3.4 Stream 流的 skip(x) 中间方法

        跳过前面 x 个元素。

通过具体代码实现:

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));//对一下代码进行解读:先得到该集合的流,然后用 skip(2) 中间方法,跳过前面2个元素,//得到的新流中包含后面两个元素,然后就进行遍历了。list.stream().skip(2).forEach(System.out::println);}
}

运行结果如下:

        3.5 Stream 流的 map() 中间方法

        对元素进行加工,并返回对应的新流。(映射

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));//解读以下代码: 先得到该集合的流,然后调用 map() 中间方法,//将对应的元素进行加工,简单的来说就是,将原先的元素加工成自己想要的形式,//以下就是将学生类对象加工成字符串,["张三",19] -> "张三",每一个元素都是一一对应、映射的。list.stream().map(s->s.getName()).forEach(System.out::println);}
}

运行结果如下:

        3.6 Stream 流的 distinct() 中间方法

        去除流中重复的元素。但是对于自定义类型的元素,默认的 distinct() 方法是不能完成去除重复的元素。希望内容一样就认为重复,这就需要重写 hashCode()equals() 方法。

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));list.add(new Student("张三",19));//解读以下代码: 先获取该集合中的流,然后调用 distinct() 方法,但是该流中的元素是自定义,//所以希望内容一样就认为重复,这就需要重写 hashCode() 与 equals() 方法。//去重后,返回一个新流。list.stream().distinct().forEach(System.out::println);}
}

运行结果如下:

         如果对重写 hashCode() equals() 方法不太熟悉,可以点击以下链接去了解以下:

        进阶JAVA篇-深入了解 Set 系列集合-CSDN博客

        3.7 Stream 流的 concat() 中间方法

        合并 a 和 b 两个流为一个流。

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));List<Student> list1 = new ArrayList<>();list1.add(new Student("李麻子",23));Stream<Student> stream = Stream.concat(list.stream(),list1.stream());stream.forEach(System.out::println);}
}

运行结果如下:


 

        4.0 Stream 流的终结方法

        Stream 流的终结方法用于对流进行最终的处理并返回一个结果或副作用。对流进行最终的处理并获取结果。需要注意的是,终结方法只能对流进行一次操作,一旦流被消费,就不能再次使用。

        4.1 Stream 流的 forEach 终结方法

        对此流运算后的元素执行后遍历。

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));List<Student> list1 = new ArrayList<>();list1.add(new Student("李麻子",23));Stream.concat(list.stream(),list1.stream()).forEach(System.out::println);}
}

运行结果如下:

        4.2 Stream 流的 count() 终结方法

        统计此流运算后的元素个数。需要注意的是:返回值是 long 类型。

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三",19));list.add(new Student("李四",22));list.add(new Student("王五",17));list.add(new Student("张麻子",33));List<Student> list1 = new ArrayList<>();list1.add(new Student("李麻子",23));System.out.println(Stream.concat(list.stream(), list1.stream()).count());}
}

运行结果如下:

        4.3 Stream 流的 max() 或者 min() 终结方法

        获取此流运算后的最大值或者最小值元素。但是对于自定义的类型,默认的 max() 方法是不能获取此流的最大值元素,默认的 min() 方法是不能获取此流的最小值元素,会报异常,此时就需要用到比较器了。

通过代码具体实现:

import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三", 19));list.add(new Student("李四", 22));list.add(new Student("王五", 17));list.add(new Student("张麻子", 33));Student s1 = list.stream().max((o1, o2) -> o1.getAge() - o2.getAge()).get();System.out.println("最大年龄为:"+s1.getAge());Student s2 = list.stream().min((o1, o2) -> o1.getAge() - o2.getAge()).get();System.out.println("最小年龄为:"+s2.getAge());}
}

运行结果如下:

        5.0 Stream 流的 collect() 收集方法

        把流处理后的结果收集到一个指定的集合中去。

通过代码具体实现:

一. 收集到 list 系列集合中

import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.List;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三", 19));list.add(new Student("李四", 22));list.add(new Student("王五", 17));list.add(new Student("张麻子", 33));//对以下代码进行解读:先得到该集合的流,再筛选开头为“张”的名字,得到一个新流,再收集到 List 系列集合中。List<Student> list1 =  list.stream().filter(s->s.getName().startsWith("张")).collect(Collectors.toList());System.out.println(list1);}
}

运行结果如下:

二.收集到 Set 系列集合中

import java.util.*;
import java.util.stream.Collectors;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三", 19));list.add(new Student("李四", 22));list.add(new Student("王五", 17));list.add(new Student("张麻子", 33));//对一下代码进行解读: 先得到该集合的流,再进行筛选出年龄大于18的元素,// 最后再将这些集合中的元素收集到 Set 系列集合中。Set <Student> set = list.stream().filter(s->s.getAge() > 18).collect(Collectors.toSet());System.out.println(set);}
}

运行结果如下:

三.收集到 Map 系列集合中

import java.util.*;
import java.util.stream.Collectors;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三", 19));list.add(new Student("李四", 22));list.add(new Student("王五", 17));list.add(new Student("张麻子", 33));Map<String,Integer> map = list.stream().collect(Collectors.toMap(s-> s.getName(), s-> s.getAge()));System.out.println(map);}
}

运行结果如下:

四.收集到数组

import java.util.*;public class StreamIntermediateMethod {public static void main(String[] args) {List<Student> list = new ArrayList<>();list.add(new Student("张三", 19));list.add(new Student("李四", 22));list.add(new Student("王五", 17));list.add(new Student("张麻子", 33));Student[] students = list.stream().toArray(s->new Student[s]);//以上代码简化为如下:Student[] students1 = list.stream().toArray(Student[]::new);System.out.println(Arrays.toString(students));System.out.println(Arrays.toString(students1));}
}

运行结果如下:

         本篇就先讲到这里!!!点击以下链接有更多篇目:小扳_-CSDN博客



相关文章:

进阶JAVA篇-深入了解 Stream 流对象的创建与中间方法、终结方法

目录 1.0 Stream 流的说明 2.0 Stream 流对象的创建 2.1 对于 Collection 系列集合创建 Stream 流对象的方式 2.2 对于 Map 系列集合创建 Stream 流对象的方式 2.3 对于数组创建 Stream 流对象的方式 3.0 Stream 流的中间方法 3.1 Stream 流的 filter() 中间方法 3.2 Stream 流…...

原型制作的软件 Experience Design mac( XD ) 中文版软件特色

​XD是一个直观、功能强大的UI/UX开发工具&#xff0c;旨在设计、原型、用户之间共享材料以及通过数字技术进行设计交互。Adobe XD提供了开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。xd mac软件特色 体验设计的未来。 使用 Adobe XD 中快速直观、即取即…...

Kotlin中使用ViewBinding绑定控件并添加点击事件

文章目录 效果1、加入依赖2、与控件进行绑定在 Activity 中使用视图绑定 3、监听控件 效果 实现源码 class MainActivity : AppCompatActivity() {lateinit var binding:ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstan…...

Node学习笔记之MongoDB

一、简介 1.1 Mongodb 是什么 MongoDB 是一个基于分布式文件存储的数据库&#xff0c;官方地址 MongoDB: The Developer Data Platform | MongoDB 1.2 为什么选择 Mongodb 操作语法与 JavaScript 类似&#xff0c;容易上手&#xff0c;学习成本低 二、核心概念 Mongodb 中…...

awtk用C语言开发串口通信示例

awtk开发工具封装了串口&#xff0c;可以方便的异步调用&#xff0c;就做个程序试一下吧 在deepinlinux20.9版本调试通过&#xff0c;开始第一步先给系统增加usb串口线驱动 https://download.csdn.net/download/qiaozhangchi/87463972 串口控件ide里没有&#xff0c;需要自己…...

CICD 流程学习(五)Jenkins后端工程构建

案例1&#xff1a;数据库服务部署 MySQL部署 #安装MySQL服务 [rootServices ~]# yum clean all; yum repolist -v ... Total packages: 8,265 [rootServices ~]# yum -y install mysql.x86_64 mysql-server.x86_64 mysql-devel.x86_64 ... Complete! [rootServices ~]# #启动…...

NSS [SWPUCTF 2021 新生赛]sql

NSS [SWPUCTF 2021 新生赛]sql 很明显是sql&#xff0c;有waf。 参数是wllm get型传参&#xff0c;有回显&#xff0c;单引号闭合&#xff0c;回显位3 跑个fuzz看看waf 过滤了空格 and 报错注入 空格->%09 ->like and->&&爆库&#xff1a;test_db -1%27uni…...

【Python机器学习】零基础掌握RandomTreesEmbedding集成学习

如何在高维数据中找到隐藏的结构? 面临大量复杂、高维的数据,例如社交网络分析、电子商务推荐系统或医疗诊断,如何有效地分析和解读这些数据成为一大挑战。一个有效的方法是使用嵌入技术将高维数据转化为低维形式,同时保留其内在结构。这次将介绍一种称为“随机树嵌入”(…...

【C++基础入门】42.C++中同名覆盖引发的问题

一、父子间的赋值兼容 子类对象可以当作父类对象使用&#xff08;兼容性) 子类对象可以直接赋值给父类对象子类对象可以直接赋值给父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象 下面看一个子类对象兼容性的代码&#xff1a; #include <iostream>…...

【C++学习笔记】类和对象(上)

目录 1. 面向对象和面向过程的初步认识 2. 类的引入 3. 类的定义 3.1 类的两种定义方式 3.1.1声明和定义全部放在类体中 3.1.2.类声明放在.h文件中&#xff0c;成员函数定义放在.cpp文件中 4. 类的访问限定符及封装 4.1 访问限定符 4.2 面试题&#xff1a;C中struct…...

TinySnippet轻UI组件开发系列教程 — DataGrid选择事件

应用场景 DataGrid选择一条记录后&#xff0c;希望能够 调用纳流或者打开指定的页面 或者当鼠标悬停在一行时弱出一个指定的页面在右下角&#xff08;移开就关闭弹出页&#xff09; 这些都是我们能够实现的 实现过程 本文以调用纳流为例 下载UI组件 TinySnippet-v4.1.2导…...

热搜榜:最热门的话题文本排行榜API接口

近年来&#xff0c;随着社交媒体的兴起&#xff0c;热门话题的数量和更新速度都在不断增加&#xff0c;因此热门话题排行榜的需求也越来越大。在这篇文章中&#xff0c;我们将探讨如何使用#热搜榜# API接口获取最热门的话题文本排行榜&#xff0c;并给出相关代码示例。 一、API…...

vue中替换全局字体

一、背景 产品说项目要拿去展会展示&#xff0c;但现在项目字体是微软雅黑&#xff0c;不支持商用&#xff0c;需要全局替换思源字体。 二、下载字体 推荐一个网址&#xff0c;好用 字体天下&#xff0c;点击跳转 下载好的文件如下&#xff1a; 三、引入字体 1、在项目…...

【AGC】.p12证书文件如何获取MD5

近期在使用DevEco Studio3.1打包应用时遇到了一个问题&#xff0c;我使用Build—Generate Key and CSR创建了密钥库文件。 我这里需要获取到创建的.p12证书文件的MD5值&#xff0c;于是在控制台使用了keytool -list -v -keystore D:\myapp.p12命令获取证书指纹&#xff0c;但是…...

vue2 quill 视频上传 ,基于ruoyi vue,oss

包含两种上传方式&#xff0c;第一种点开弹新页面可选url和点击上传。本文中是第二种&#xff0c;自己拼的。像点击上传图片一样&#xff0c;直接传video文件&#xff0c;原创不易&#xff0c;纯纯踩坑&#xff1b; 因为现阶段能搜索到的内容&#xff0c;99.5%都是一样的内容&…...

YOLOv8改进实战 | 更换损失函数之MPDIOU(2023最新IOU)篇

前言 YOLOv8官方默认损失函数采用的是CIoU。本章节主要介绍如何将MPDIoU损失函数应用于目标检测YOLOv8模型。 目录 一、MPDIoU二、代码实现添加损失函数更换损失函数一、MPDIoU 论文链接:MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression MPDIoU是一种基于…...

图的应用1.0-----最小生成树问题

目录 前言 生成树 1.基本概念 2.生成树的特点 3.生成树形成过程 最小生成树(Minimum Spanning Tree) 1.基本概念 2.构造方法&#xff08;MST&#xff09; 普里姆(Prime)算法 1.算法思想 2.代码实现 克鲁斯卡尔&#xff08;Kruskal&#xff09;算法 1.算法思想 2.代码…...

【计算机网络笔记】网络应用对传输服务的需求

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…...

IDEA启动报错:Command line is too long的解决办法

文章目录 1.报错现象2.解决办法验证3.最佳实践4.问题原因5.参考文献1.报错现象 在idea中启动一个spring cloud项目时,编译完成后直接报错,报错内容如下: Error running XXXApplication:Command line is too long. Shorten command line for XXXApplication or also for Sp…...

Android 中的 本地广播LocalBroadcastManager

Android 中的 本地广播LocalBroadcastManager 文章目录 Android 中的 本地广播LocalBroadcastManager一、LocalBroadcastManager 的基本作用二 、LocalBroadcastManager 的基本使用1、包的导入&#xff08;1&#xff09;Android 源码中bp文件的导入&#xff1a;&#xff08;2&a…...

蓝牙UUID:从标准服务到自定义通信的密钥

1. 蓝牙UUID&#xff1a;智能设备的身份证 想象一下你走进一个满是蓝牙设备的房间——智能手环在测量心率&#xff0c;温湿度计在报告数据&#xff0c;智能灯泡等待你的指令。这些设备如何知道该响应哪个请求&#xff1f;答案就藏在那个128位的UUID&#xff08;通用唯一识别码…...

Modbus转EtherCAT网关开发秘笈:用AX58100实现120个命令自动映射(Web配置全图解)

Modbus转EtherCAT网关开发实战&#xff1a;AX58100零代码配置与工业部署全指南 工业自动化领域正经历着从传统串行通信向实时以太网协议的转型浪潮。作为这场变革的核心枢纽&#xff0c;协议转换网关的性能直接决定了整个系统的响应速度和稳定性。本文将深入探讨如何利用AX5810…...

三分钟掌握Android语音定制:tts-server-android让你的设备开口说话

三分钟掌握Android语音定制&#xff1a;tts-server-android让你的设备开口说话 【免费下载链接】tts-server-android 这是一个Android系统TTS应用&#xff0c;内置微软演示接口&#xff0c;可自定义HTTP请求&#xff0c;可导入其他本地TTS引擎&#xff0c;以及根据中文双引号的…...

ArcGIS实战:5分钟搞定正高转椭球体高度(附详细步骤)

ArcGIS高程转换实战&#xff1a;从正高到椭球体高度的精准跨越 在测绘与地理信息系统中&#xff0c;高程数据的精确转换是许多专业应用的基础环节。无论是卫星影像处理、无人机航测还是工程测量&#xff0c;不同高程基准之间的转换需求无处不在。本文将带您深入理解正高与椭球…...

PowerPaint-V1 Gradio与VSCode集成开发:图像修复插件开发指南

PowerPaint-V1 Gradio与VSCode集成开发&#xff1a;图像修复插件开发指南 1. 开发环境准备 开始之前&#xff0c;我们需要准备好开发环境。VSCode作为代码编辑器&#xff0c;配合Python环境&#xff0c;可以让你更高效地开发PowerPaint-V1的图像修复插件。 首先确保你的系统…...

Nunchaku-flux-1-dev快速上手:Python环境配置与基础调用代码详解

Nunchaku-flux-1-dev快速上手&#xff1a;Python环境配置与基础调用代码详解 你是不是也对最近火热的AI绘画模型感到好奇&#xff0c;想自己动手试试&#xff0c;但一看到复杂的代码和配置就头疼&#xff1f;别担心&#xff0c;今天我们就来聊聊如何从零开始&#xff0c;用Pyt…...

突破难关:AI专著撰写工具应用技巧,助你快速著书立说

学术专著写作困境与AI工具的崛起 对许多研究人员来说&#xff0c;撰写学术专著最大的挑战&#xff0c;就是“有限的精力”与“无尽的需求”之间的矛盾。专著的写作过程通常需要三到五年&#xff0c;甚至更长的时间&#xff0c;而研究者们在日常工作中还要应对教学、研究项目和…...

Steam创意工坊模组下载终极指南:告别平台限制,轻松获取海量游戏内容

Steam创意工坊模组下载终极指南&#xff1a;告别平台限制&#xff0c;轻松获取海量游戏内容 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为跨平台游戏无法下载Steam创意…...

FastAPI分块上传存储:对象存储集成完整指南

FastAPI分块上传存储&#xff1a;对象存储集成完整指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi 想要在FastAPI应用中实现大文件…...

墨语灵犀处理时序数据实战:基于LSTM的预测模型辅助开发

墨语灵犀处理时序数据实战&#xff1a;基于LSTM的预测模型辅助开发 最近在做一个销量预测的项目&#xff0c;团队里新来的同事看着一长串的时序数据和复杂的LSTM模型代码&#xff0c;有点无从下手。他问我&#xff1a;“这些参数到底该怎么调&#xff1f;预测出来的曲线波动这…...