输入输出IO流

news2024/11/25 6:18:19

文章目录

  • 1.数据源
  • 2.流
  • 3.IO流的分类
  • 4.字节流
    • 4.1文件字节输入流
      • 1. FileInputStream类概述
      • 2. FileInputStream类构造方法
      • 3. FileInputStream类常用方法
    • 4.2文件字节输出流
      • 1. FileOutputStream类概述
      • 2. FileOutputStream类构造方法
      • 3. FileOutputStream类常用方法
  • 5字符流
    • 5.1. FileWriter类
      • 1. FileWriter类概述
      • 2. FileWriter类构造方法
      • 3. FileWriter类常用方法
    • 5.2. FileReader类
      • 1. FileReader类概述
      • 2. FileReader类构造方法
      • 3. FileReader类常用方法
  • 6.缓冲流
    • 6.1. 字节缓冲流
      • 1. 字节缓冲输出流对象BufferedOutputStream
        • 1. 字节缓冲输出流对象BufferedOutputStream构造方法
        • 2. 字节缓冲输出流对象BufferedOutputStream常用方法
      • 2. 字节缓冲输入流对象BufferedInputStream
        • 1. 字节缓冲输入流对象BufferedInputStream构造方法
        • 2. 字节缓冲输入流对象BufferedInputStream常用方法
    • 6.2. 字符缓冲流
      • 1. 字符缓冲输出流对象BufferedWriter
        • 1. 字符缓冲输出流对象BufferedWriter构造方法
        • 2. 字符缓冲输出流对象BufferedWriter常用方法
      • 2. 字符缓冲输入流对象BufferedReader
        • 1. 字符缓冲输入流对象BufferedReader构造方法
        • 2. 字符缓冲输入流对象BufferedReader常用方法

1.数据源

数据源:提供数据的原始媒介。
数据源分为:源设备、目标设备。
源设备:为程序提供数据,一般对应输入流。
目标设备:程序数据的目的地,一般对应输出流

2.流

数据源就像水箱,流(stream)就像水管中流着的水流,程序就是我们最终的用户。 流是一个抽象、动态的概念,是一连串连续动态的数据集合。
在这里插入图片描述

当程序需要读取数据源的数据时,就会通过IO流对象开启一个通向数据源的流,通过这个IO流对象相关方法可以顺序读取流中的数据。

3.IO流的分类

输入(Input)指的是:将外部(硬盘、数据库、浏览器等)数据写入到程序中(核心含义是“读”,读取外部数据)。
输出(Output)指的是:将程序中的数据写出到外界(核心含义是“写”,将数据写出到外部系统)。
1、 按流的方向分类
输入流:数据流向是数据源到程序(InputStream、Reader结尾的流)
输出流:数据流向是程序到目的地(OutPutStream、Writer结尾的流)
2、 按处理的数据单元分类
字节流:按照字节读取数据(InputStream、OutputStream),命名上以stream结尾的流一般是字节流。
字符流:按照字符读取数据(Reader、Writer),命名上以Reader/Writer结尾的流一般是字符流。
3、按处理对象不同分类
节点流(普通流):可以直接从数据源或目的地读写数据。
处理流(包装流):不直接连接到数据源或目的地,是“处理流的流”。通过对其它流进行封装,目的主要是简化操作和提高程序的性能。
节点流处于IO操作的第一线,所有操作必须通过他们进行;处理流可以对节点流进行包装,提高性能或提高程序的灵活性。
在这里插入图片描述

4.字节流

字节流是以字节(二进制数据)方式读写数据,主要用于操作二进制数据,Java中字节流对象分为两种:字节输入流对象InputStream,字节输出流对象OutputStream,这两个是抽象类所以无法直接创建对象,需要使用其子孙类创建:
字节输入流对象InputStream子类FileInputStream
字节输出流对象OutputStream子类FileOutputStream
字节流是万能流,他可以读取计算机中的任意类型文件或程序或音频视频等等。

4.1文件字节输入流

1. FileInputStream类概述

FileInputStream类是InputStream的子类,实现类父类中所有的方法,方法与父类也是相同的,主要用于数据的读取
FileInputStream类是节点流(普通流),是操作文件数据的基本流

2. FileInputStream类构造方法

  1. public FileInputStream(String name):创建对象并指定文件位置
    1. name:String类型指定文件位置
  2. public FileInputStream(File file):创建对象并指定文件位置
    1. file:File类型指定文件位置

3. FileInputStream类常用方法

  1. public abstract int read():读取数据到Java应用程序,一次读取一个字节数据
  2. public int read(byte b[]):读取数据到Java应用程序,一次读取一个字节数组数据
  3. public int read(byte b[], int off, int len):读取数据到Java应用程序,一次读取一个字节数组数据,并指定数据的起始位置以及数据长度
  4. public int available():读取数据的总长度(总字节数)
  5. public void close():关闭输入流并释放资源

4.2文件字节输出流

1. FileOutputStream类概述

FileOutputStream类是OutputStream的子类,实现类父类中所有的方法,方法与父类也是相同的,主要用于数据的写出
FileOutputStream类是节点流(普通流),是操作文件数据的基本流

2. FileOutputStream类构造方法

  1. public FileOutputStream(String name):创建对象并指定文件输出的位置
    1. name:String类型指定文件位置
  2. public FileOutputStream(String name, boolean append):创建对象并指定文件输出的位置,以及是否为追加文本
    1. name:String类型指定文件位置
    2. append:true为追加文本,false为不追加文本(默认为false)
  3. public FileOutputStream(File file):创建对象并指定文件输出的位置
    1. file:File类型指定文件位置
    2. append:true为追加文本,false为不追加文本(默认为false)
  4. public FileOutputStream(File file, boolean append):创建对象并指定文件输出的位置,以及是否为追加文本
    1. file:File类型指定文件位置
    2. append:true为追加文本,false为不追加文本(默认为false)

3. FileOutputStream类常用方法

  1. public abstract void write(int b):从Java应用程序写出数据到文件,一次写出一个字节数据
  2. public void write(byte b[]):从Java应用程序写出数据到文件,一次写出一个字节数组数据
  3. public void write(byte b[], int off, int len):从Java应用程序写出数据到文件,一次写出一个字节数组数据,并指定数据的起始位置以及数据长度
  4. public void flush():强制刷新流数据,将还在数据流中的数据强制写出
  5. public void close():关闭输出流并释放资源
    public static void main(String[] args) {
        //1.定义源文件
        String sourcePath = "text.txt";
		//2.定义目的地
        String targetPath = "src/Demo.txt";
//        copyFile(sourcePath,targetPath);
        //1.定义源文件
        //图片的绝对路径
        sourcePath = "C:\\Users\\huashuo\\Pictures\\Saved Pictures\\9.jpg";
        //2.定义目的地
        //拷贝的相对路径
        targetPath = "src/img/demo.gif";
//        copyFile(sourcePath,targetPath);
        //1.定义源文件
        //视频的绝对路径
        sourcePath = "C:\\Users\\huashuo\\Videos\\MgtvVideos\\Myvedio\\FamilyTime.mp4";
        //2.定义目的地
        //拷贝的相对路径
        targetPath = "src/video/demo.avi";
//        copyFile(sourcePath,targetPath);
        //1.定义源文件
        //软件的绝对路径
        sourcePath = "D:\\软件\\Install Termius.exe";
        // 2. 定义目的地
        // 拷贝的相对路径
        targetPath = "src/soft/Install Termius.exe";
        copyFile(sourcePath,targetPath);
    }
    private static void copyFile(String sourcePath, String targetPath){
        // 使用JDK1.7新特性try...with...resource
        try(
               //1.字节输入流对象
               InputStream fis = new FileInputStream(sourcePath);
               //2.字节输出流对象
               OutputStream fos = new FileOutputStream(targetPath);
       ){
           //3.定义一个接收数据的字节数组
           byte[] bytes = new byte[1024];
           //4.声明length属性,用于接收读取数据的长度
           int length;
           //5.循环读取字节数据
           while((length=fis.read(bytes)) != -1){
               //6.循环写出数据
               fos.write(bytes,0,length);
               //7.强制刷新流数据
               fos.flush();
           }
       }catch (Exception e){
           e.printStackTrace();
       }
    }
   /**
     * 拷贝文件步骤
     * // 1. 字节输入流对象
     * // 2. 字节输出流对象
     * // 3. 定义byte数组,用于接收读取的数据
     * // 4. 声明length属性,用于接收读取数据的长度
     * // 5. while循环读取数据
     * // 6. 循环写出数据
     * // 7. 强制刷新流数据
     * // 8. 释放资源
     */

5字符流

字符流是以字符方式读写数据,主要操作文字,文字并不是单指汉子,包括所有国家文字
Java中字符流对象分为两种:字符输入流对象Reader,字符输出流对象Writer,这两个是抽象类所以无法直接创建对象,需要使用其子孙类创建
字符输入流对象Reader子类FileReader
字符输出流对象Writer子类FileWriter
字符流只能读写使用文本文档打开后可以看的懂得文件,如果文本文档打开是乱码的则无法读写

5.1. FileWriter类

1. FileWriter类概述

FileWriter类是OutputStreamWriter的子类是Writer类的孙子,所有的方法全都来自于OutputStreamWriter类,方法与父类也是相同的,主要用于数据的写出
FileWriter类是节点流(普通流),是操作文件数据的基本流

2. FileWriter类构造方法

  1. public FileWriter(String fileName):创建对象并指定文件输出的位置
  2. public FileWriter(String fileName, boolean append):创建对象并指定文件输出的位置,以及是否为追加内容
  3. public FileWriter(File file):创建对象并指定文件输出的位置
  4. public FileWriter(File file, boolean append):创建对象并指定文件输出的位置,以及是否为追加内容

3. FileWriter类常用方法

  1. public void write(int c):从Java应用程序写出数据到文件,一次写出一个字符数据
  2. public void write(char cbuf[]):从Java应用程序写出数据到文件,一次写出一个字符数组数据
  3. abstract public void write(char cbuf[], int off, int len):从Java应用程序写出数据到文件,一次写出一个字符数组数据,并指定数据起始位置和数据长度
  4. public void write(String str):从Java应用程序写出数据到文件,一次写出一个字符串数据
  5. public void write(String str, int off, int len):从Java应用程序写出数据到文件,一次写出一个字符串数据,并指定数据起始位置和数据长度
  6. public void flush():强制刷新流数据,将还在数据流中的数据强制写出
  7. public void close():关闭输出流并释放资源

5.2. FileReader类

1. FileReader类概述

FileReader类是InputStreamReader的子类是Reader类的孙子,所有的方法全都来自于InputStreamReader类,方法与父类也是相同的,主要用于数据的写出
FileReader类是节点流(普通流),是操作文件数据的基本流

2. FileReader类构造方法

  1. public FileReader(String fileName):创建对象并指定文件位置
  2. public FileReader(File file):创建对象并指定文件位置

3. FileReader类常用方法

  1. public int read():读取数据到Java应用程序,一次读取一个字符数据
  2. public int read(char cbuf[]):读取数据到Java应用程序,一次读取一个字符数组数据
  3. abstract public int read(char cbuf[], int off, int len):读取数据到Java应用程序,一次读取一个字符数组数据,并指定数据起始位置和数据长度
  4. abstract public void close():关闭输入流对象释放资源
   public static void main(String[] args) {
        //1.定义源文件
        String sourcePath = "text.txt";
        //2.定义目的地
        String targetPath = "src/Demo.txt";
//        copyFile(sourcePath,targetPath);
        //1.定义源文件
        //图片的绝对路径
        sourcePath = "C:\\Users\\huashuo\\Pictures\\Saved Pictures\\8.jpg";
        //2.定义目的地
        //拷贝的相对路径
        targetPath = "src/img/demo2.jpg";
//        copyFile(sourcePath,targetPath);
        //1.定义源文件
        //视频的绝对路径
        sourcePath = "C:\\Users\\huashuo\\Videos\\MgtvVideos\\Myvedio\\FamilyTime.mp4";
        //2.定义目的地
        //拷贝的相对路径
        targetPath = "src/video/demo2.avi";
        copyFile(sourcePath,targetPath);

    }
    /**
     * 拷贝文件步骤
     * // 1. 字符输入流对象
     * // 2. 字符输出流对象
     * // 3. 定义char数组,用于接收读取的数据
     * // 4. 声明Length属性,用于接收读取数据的长度
     * // 5. while循环读取数据
     * // 6. 循环将读取的数据写出到文件
     * // 7. 强制刷新流数据
     * // 8. 释放资源
     * 因为图片和视频是二进制数据传输的,拷贝时用的是字符拷贝,会对源数据造成损毁无法正常展示。
     */
    private static void copyFile(String sourcePath, String targetPath){
        // 使用JDK1.7新特性try...with...resource
        try(
               //1.创建源文件输入流对象
               Reader fr = new FileReader(sourcePath);
               //2.创建目的地输出流对象
               Writer fw = new FileWriter(targetPath)
        ){
            //3.创建一个接收数据的字符数组
            char[] chars = new char[1024];
            //4.创建length变量,声明接收的数据长度
            int length;
            //5.循环遍历数据
            while((length = fr.read(chars)) != -1){
                //6.将每次遍历读取到chars中的数据输出到目的地
                fw.write(chars,0,length);
                //7.强制刷新流数据
                fw.flush();
            }
            //8.释放资源使用JDK1.7新特性try...with...resource自动释放资源
        }catch (IOException e){
            e.printStackTrace();
        }
    }

6.缓冲流

缓冲流属于处理流(包装流),主要作用是用于包装节点流(普通流)对象,可以包装的由字节流字符流,包装后可以提升读写的效率
缓冲流原理:缓冲流是将读取的数据线存放在内存,当读取的数据存满时再从内存写出到文件或读取到程序
缓冲流分为两类:1. 字节缓冲流,2. 字符缓冲流,提升字节流与字符流的读写效率

6.1. 字节缓冲流

字节缓冲流用于包装字节流对象,提升字节流读写速度
字节缓冲输入流对象BufferedInputStream
字节缓冲输出流对象BufferedOutputStream

1. 字节缓冲输出流对象BufferedOutputStream

1. 字节缓冲输出流对象BufferedOutputStream构造方法

  1. public BufferedOutputStream(OutputStream out):创建对象并指定字节输出流对象
  2. public BufferedOutputStream(OutputStream out, int size):创建对象并指定字节输出流对象,并指定缓冲区大小

2. 字节缓冲输出流对象BufferedOutputStream常用方法

  1. public synchronized void write(byte b[], int off, int len):从Java应用程序写出数据到文件,一次写出一个字节数组数据,并指定数据起始位置和数据长度
  2. public void flush():强制刷新流数据,将还在数据流中的数据强制写出
  3. public void close():关闭输出流并释放资源

2. 字节缓冲输入流对象BufferedInputStream

1. 字节缓冲输入流对象BufferedInputStream构造方法

  1. public BufferedInputStream(InputStream in):创建对象并指定字节输入流对象
  2. public BufferedInputStream(InputStream in, int size):创建对象并指定字节输入流对象,以及缓冲区大小

2. 字节缓冲输入流对象BufferedInputStream常用方法

  1. public int read(byte b[]):读取数据到Java应用程序,一次读取一个字节数组数据
  2. public int available():获取数据的长度
  3. public void close():关闭输入流释放资源
  public static void main(String[] args) {
        // 1. 源文件位置
        String sourcePath = "D:/ideaIUPortable.zip";
        // 2. 目的地位置
        String targetPath = "src/ideaIUPortable.zip";
        // 3. 拷贝文件方法
        copyFile(sourcePath, targetPath);
    }

    /**
     * 缓冲流拷贝流程
     * // 1. 创建字节流对象
     * // 2. 创建缓冲流对象
     * // 3. 定义byte数组,用于接收读取的数据
     * // 4. 声明length属性,用于接收读取数据的长度
     * // 5. while循环读取数据
     * // 6. 循环读取的数据写出到文件
     * // 7. 强制刷新流数据
     * // 8. 释放资源
     */
    private static void copyFile(String sourcePath, String targetPath) {
        // 使用JDK1.7try...with...resource
        try (
                // 1. 创建字节流对象
                InputStream is = new FileInputStream(sourcePath);
                OutputStream os = new FileOutputStream(targetPath);
                // 2. 创建缓冲流对象
                BufferedInputStream bis = new BufferedInputStream(is);
                BufferedOutputStream bos = new BufferedOutputStream(os)
        ) {
            // 3. 定义byte数组,用于接收读取的数据
            byte[] bytes = new byte[1024 * 1024];
            // 4. 声明length属性,用于接收读取数据的长度
            int length;
            // 记录拷贝起始时间
            long start = System.currentTimeMillis();
            // 5. while循环读取数据
            while ((length = bis.read(bytes)) != -1) {
                // 6. 循环读取的数据写出到文件
                bos.write(bytes, 0, length);
                // 7. 强制刷新流数据
                bos.flush();
            }
            // 记录拷贝结束时间
            long end = System.currentTimeMillis();
            // 计算耗时
            System.out.println("拷贝耗时:" + (end - start));
            // 8. 释放资源使用JDK1.7try...with...resource自动释放资源
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

6.2. 字符缓冲流

字符缓冲流用于包装字符流对象,提升字符流读写速度
字符缓冲输入流对象BufferedReader
字符缓冲输出流对象BufferedWriter

1. 字符缓冲输出流对象BufferedWriter

1. 字符缓冲输出流对象BufferedWriter构造方法

  1. public BufferedWriter(Writer out):创建对象并指定字符输出流对象
  2. public BufferedWriter(Writer out, int sz):创建对象并指定字符输出流对象以及缓冲区大小

2. 字符缓冲输出流对象BufferedWriter常用方法

  1. public void write(String str):从Java应用程序写出数据到文件,一次写出一个字符串的数据
  2. public void newLine():新行,输出一个换行符(由于Windows,Linux,macOS系统的换行符不一样所以如果手写换行符则可能会出现在其他系统中失效的问题)
  3. public void flush():强制刷新流数据
  4. public void close():关闭输出流并释放资源

2. 字符缓冲输入流对象BufferedReader

1. 字符缓冲输入流对象BufferedReader构造方法

  1. public BufferedReader(Reader in):创建对象并指定字符输入流对象
  2. public BufferedReader(Reader in, int sz):创建对象并指定字符输入流对象以及缓冲区大小

2. 字符缓冲输入流对象BufferedReader常用方法

  1. public String readLine():读取数据到Java应用程序,一次读取一行数据
  2. public void close():关闭输入流并释放资源
    public static void main(String[] args) {
        // 1. 源文件位置
        String sourcePath = "src/com/powernode/demo12/Demo.java";
        // 2. 目的地位置
        String targetPath = "src/com/powernode/demo12/Demo.txt";
        // 3. 拷贝方法
        copyFile(sourcePath, targetPath);
    }

    /**
     * 拷贝文件方法
     * // 1. 创建字符流对象
     * // 2. 创建缓冲流对象
     * // 3. 定义String变量,接收读取的数据
     * // 4. while循环读取数据
     * // 5. 将读取的数据写出到文件
     * // 6. 强制刷新
     * // 7. 释放资源
     */
    private static void copyFile(String sourcePath, String targetPath) {
        // 使用JDK1.7新特性try...with...resource
        try (
                // 1. 创建字符流对象
                Reader r = new FileReader(sourcePath);
                Writer w = new FileWriter(targetPath);
                // 2. 创建缓冲流对象
                BufferedReader br = new BufferedReader(r);
                BufferedWriter bw = new BufferedWriter(w);
        ) {
            // 3. 定义String变量,接收读取的数据
            String readLine;
            // 4. while循环读取数据
            while ((readLine = br.readLine()) != null) {
                // 5. 将读取的数据写出到文件
                bw.write(readLine);
                // 输出换行符
                bw.newLine();
                // 6. 强制刷新
                bw.flush();
            }
            // 7. 释放资源使用JDK1.7新特性try...with...resource自动释放资源
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/531061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

philsolophy of life: blessing in disguise

有个成语叫: "塞翁失马" , 这个讲的是在战国时期,有个叫"塞翁"的老人养了很多马,有一天他丢了一匹马,邻居来劝说他,不要着急,说不定哪天就回来了,"丢了一匹马或许是好事&#xf…

【壁纸小程序】推荐一款壁纸小程序

壁纸很多 直接在手机切换下载即可 感兴趣的朋友可以看看 小程序二维码

第五章 介绍Productions - 业务流程和业务逻辑

文章目录 第五章 介绍Productions - 业务流程和业务逻辑业务流程和业务逻辑介绍业务流程的类型数据转换业务规则 第五章 介绍Productions - 业务流程和业务逻辑 业务流程和业务逻辑 本章描述业务流程中支持的逻辑种类。 介绍 业务流程是production的中间部分。它们接受来自…

Spring【Again】——复杂POJO的绑定

简单介绍: Again系列是将之前的内容我认为做的不好的地方或者是理解不到位的地方再来一次,加深记忆或者改错。我们就在来复习一下之前我们说过的复杂类型的数据绑定。 先来复习一下简单数据绑定: 简单数据绑定就是我们在传递参数的时候&am…

京东jd商品详情API接口(item_get-根据ID取商品详情)代码封装

item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片&#xf…

文件上传下载系列——大文件分片上传

文章目录 概述实现步骤:应用场景 代码实操:前端:文件切片:分片上传: 后端:校验和保存:合并文件片段:完成上传: 总结优点:缺点: 升华 概述 文件分片…

spring cache和SpEL表达式

spring cache的 CachePut如果方法体内容变了,缓存还有效吗 当使用CachePut注解时,其目的是更新缓存,即在方法执行完毕后将返回结果加入缓存中。如果方法体内容发生变化,则更新后的结果会被加入缓存中,而缓存中原来的数据会被替换…

ORACLE 新闻速递 ORACLE 23C 免费提供给开发者 为什么???

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

利用AI将脑信号解码为神经义肢控制

机器学习和人工智能的快速发展,它们已经产生了一系列能够学习大量数据之间复杂非线性关系的神经网络模型。深度学习算法在各种应用中取得了巨大的成功,包括计算机视觉、自然语言处理和机器人类等。最近,神经网络的中一项引人注目的应用是通过…

B 站构建实时数据湖的探索和实践

摘要:本文整理自 bilibili 大数据实时团队资深开发工程师周晖栋,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分: 1. 背景和痛点 2. 场景探索 3. 基建优化 4. 总结和展望 Tips:点击「阅读原文」查看原…

VMware之esxcli命令

一、esxcli命令简介 esxcli命令是用于管理VMware ESXi主机的命令行实用程序。它允许管理员在主机上执行各种管理任务,如配置网络设置、存储、虚拟机等。实际上我们在控制台的所有操作最终都会转换为命令在后台执行。以下是一些常见的esxcli命令: esxcli…

第三章 存储系统

1. 主存简单模型和寻址概念 存储器芯片的基本结构 寻址 2.存储器RAM 两种RAM的比较 DRAM的刷新 3.ROM(只读存储器) 为什么需要ROM? 因为RAM里面的数据容易丢失。 4.存储器基本概念 存储器的分类 性能指标 数据的宽度:在一个存储周期中存储的位数 层…

感烟探测器漂移补偿

3.8 慢速发展火灾响应性能 3.8.1 探测器的漂移补偿功能不应使探测器对慢速发展火灾的响应性能产生明显影响。 3.8.2 当无法用模拟烟气浓度缓慢增加的方法评估探测器对慢速发展火灾响应性能时,可以通过物理试验和模拟试验对电路和/或软件分析确定。 3.8.3 探测器评估…

丰富多彩 | Android 14 Beta 2 发布

作者 / Dave Burke, VP of Engineering Google I/O 的大幕已经拉开,我们也为大家带来了 Android 14 的第二个 Beta 版。我们在 Google I/O 上为大家准备了许多精彩的演讲,包括对 Android 14 许多新功能的详细介绍。这次发布的 Beta 2 聚焦相机和媒体、隐…

只要学会这些AI工具,一个人就是一家营销咨询公司

本教程收集于:AIGC从入门到精通教程 只要学会这些AI工具,一个人就是一家营销咨询公司 随着AI工具的不断涌现,您只需掌握市面上热门的AI工具,便可独自开展营销咨询公司。通过一系列AI工具,您可以为企业提供全案服务,收获丰厚回报。 例如,在协助一家美妆初创公司出海时,…

上下文工程:基于 Github Copilot 的实时能力分析与思考

上个月在计划为 AutoDev 添加多语言支持时候,发现 GitHub Copilot 的插件功能是语言无关的(通过 plugin.xml 分析),便想研究一下它是如何使用 TreeSitter 的。可惜的是,直到最近才有空,研究一下它是如何实现…

印刷和喷绘过程中高精度油墨流量和压力的串级控制解决方案

摘要:针对现有技术在印刷或喷绘设备中油墨流量控制不准确,使得油墨粘稠度产生异常造成批量性质量方面的问题,本文提出了相应的串级控制解决方案,即通过双回路形式同时控制油墨的流量和压力。本解决方案不仅可以保证油墨最终流量的…

【C++ 入坑指南】(07)判断

文章目录 一、if 语句1. 单行格式 if 语句2. 多行格式 if 语句 二、三目运算符三、switch 语句四、算法题4.1 分段函数 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句&am…

C++ - 使用RBTree来封装Set与Map

前面的文章中我们简单的实现了一个红黑树,实现了它的插入的功能,在本文中我们来对其进行修改并构建Set与Map。 下面我们来从源码中截取一点有关Map与Set的代码; 可以看出,在STL30中构建Map与Set使用的是同一个红黑树模板&#xf…

开箱即用!AI模型库全新发布,一站式在线开发部署!

人工智能学习与实训社区飞桨AI Studio模型库全新升级!支持模型创建、上传、托管并一键调用模型线上开发部署! 飞桨AI Studio已接入飞桨生态特色模型库,全面覆盖模型领域,包含文心系列大模型、CV、NLP、语音、科学计算、量子计算等…