精华内容
下载资源
问答
  • 常见的过流种类有
    2021-11-12 13:15:07

    什么是IO?

    I:input,O:Output

    通过IO可以完成硬盘文件的读和写。

    IO流的分类:

    1、按照流的方向来划分:(以内存作为参照物)往内存中去叫做:输入(Input),或者叫做:读(Read);从内存中和出来叫做:输出(Output),或者叫做:写(Write)。

    2、按照读取数据的方式不同划分:按照字节的方式读取数据,一次读取一个字节byte,等同于一次读取8个二进制位,这种流是万能的,什么类型的文件都可以读取;有的流是按照字符的方式读取,一次读取一个字符,这种流是为了方便读取普通文本文件而存在的。

    综上所述:流分为:输入流,输出流,字节流,字符流。

    IO流的四大家族:

    java.io.InputStream 字节输入流

    java.io.OutputStream 字节输出流

    java.io.Reader 字符输入流

    java.io.Writer 字符输出流

    *总结:Java中只要类名以Stream结尾的都是字节流,以Reader\Writer结尾的都是字符流。

    *所有的流都实现了:java.io.Closeable接口,都有Close()方法,都是可以关闭的;养成好习惯,流用完以后都要关闭。

    *所有的输出流都实现了:java.io.Flushable接口,都有Flush()方法,都是可以刷新的;养成好习惯,用过输出流以后都要使用Flush()方法,来将管道内的数据强行的输出完(清空管道)!!!

    Java.io包下需要掌握的流有16个:

    文件专属:

    java.io.FileInputStream

    java.io.FileOutputStream

    java.io.FileReader

    java.io.FileWriter

    转换流:(将字节流转化为字符流)

    java.io.InputStreamReader

    java.io.OutputStreamWriter

    缓冲流专属:

    java.io.BufferedReader

    java.io.BufferedWriter

    java.io.BufferedInputStream

    java.io.BufferedOutputStream

    数据流专属:

    java.io.DataInputStream

    java.io.DataOutptStream

    标准输出流:

    java.io.PrintWriter

    java.io.PrintReader

    对象专属流:

    java.io.ObjectInputStream

    java.io.ObjectOutPutStream

    常用流的使用:

    FileInputStream:

    public class FileInputStreamTest02 {
        public static void main(String[] args) {
            FileInputStream fis = null;
    //        准备一个长度自定义的byte数组
            byte[] bytes = new byte[4];
            try {
                fis = new FileInputStream("F:\\iotest\\test02.txt");
                //开始读
                int readCount = 0;
                while ((readCount = fis.read(bytes)) != -1) {
                    System.out.print(new String(bytes,0,readCount));
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
               if (fis != null) {
                   try {
                       fis.close();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
            }
        }
    }

    FileOutputStream:

    public class FileOutputStreamTest01 {
        public static void main(String[] args) {
            FileOutputStream fos = null;
            try {
    //            fos = new FileOutputStream("F:\\iotest\\test03.txt");//当文件不存在的时候,会自动新建文件
                开始写
                byte[] bytes = {97,98,99,100,101,102};
                将byte数组全部写出
    //            fos.write(bytes);
                将byte数组的一部分写出
    //            fos.write(bytes,0,2);
                **********以上方式谨慎使用,它会在写入之前将原文件清空
                fos = new FileOutputStream("F:\\iotest\\test03.txt",true);
                fos.write(bytes);
                String s = "啦啦啦啦啦啦啦";
                byte[] bytes1= s.getBytes(StandardCharsets.UTF_8);
                fos.write(bytes1);
    //            写完之后刷新
                fos.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                if (fos != null){
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    FileReader:

    public class FileReaderTest01 {
        public static void main(String[] args) {
            FileReader reader = null;
            try {
                reader = new FileReader("F:\\iotest\\test04.txt");
                char[] chars = new char[4];
                int readCount = 0;
                while ((readCount = reader.read(chars)) != -1) {
                    System.out.println(new String(chars,0,readCount));
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                if (reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    FileWriter:

    public class FileWriterTest01 {
        public static void main(String[] args) {
            FileWriter fileWriter = null;
            try {
                fileWriter = new FileWriter("F:\\iotest\\test04.txt",true);
                char[] chars = {'山','大','地','纬'};
                fileWriter.write(chars);
                fileWriter.write("我是一名Java软件工程师");
    //            输出流一定要刷新
                fileWriter.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally {
                if (fileWriter != null) {
                    try {
                        fileWriter.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    更多相关内容
  • 从外部设备流向中央处理器的数据成为“输入”,反之成为“输出”。 字符和字节的主要区别: 1.字节读取的时候,读到一个字节就返回一个字节;字符使用了字节读到一个或多个字节(中文对应的字节数...

    一、梳理总结一 

    流在Java中是指计算中流动的缓冲区。

    从外部设备流向中央处理器的数据流成为“输入流”,反之成为“输出流”。

    字符流和字节流的主要区别:

     1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

     2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

    1.字节流:

    字节输入流类:FileInputStream、BufferedInputStream和DataInputStream

    FileInputStream:此类用于从本地文件系统中读取文件内容。

    构造方法:

    ·FileInputStream(File file):打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定。

    ·FileInputStream(String name):打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。

    常用方法:

    ·int available():返回下一次对此输入流调用的方法不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

    ·void close():关闭此文件输入流并释放与该流关联的所有系统资源。

    BufferedInputStream:此类本身带有一个缓冲区,在读取数据时,先放到缓冲区中,可以减少对数据源的访问,提高运行的效率。

    构造方法:

    ·BufferedInputStream(InputStream in):创建一个BufferedInputStream并保存其参数,即输入流in,以便将来使用。

    ·BufferedInputStream(InputStream in,int size):创建一个具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便将来使用。

    常用方法:

    ·int available():返回下一次对此输入流调用的方法不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

    ·void close():关闭此输入流并释放与该流关联的所有系统资源。

    ·int read():从输入流中读取数据的下一个字节。

    ·int read(byte[] b,int off,int len):从此字节输入流中给定偏移量处开始将各字节读取到指定的byte数组中。

     DataInputStream:该类提供一些基于多字节读取方法,从而可以读取基本数据类型的数据。

    构造方法:

    ·DataInputStream(InputStream in):使用指定的底层InputStream创建一个DataInputStream。

    常用方法:

    ·int read(byte[] b):从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组b中。

    ·int read(byte[] b,int off,int len):从包含的输入流中将最多len个字节读入一个byte数组中。

    字节输出流类:FileOutputStream、BufferedOutputStream和DataOutputStream

    FileOutputStream:此类用于从本地文件系统的文件中写入数据。

    构造方法:

    ·FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流。

    ·FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。

    常用方法:

    ·void close():关闭此文件输出流并释放与此流有关的所有系统资源。

    ·FileDescriptor getFD():返回与此流有关的文件描述符。

    ·void write(byte[] b):将b.length个字节从指定byte数组写入此文件输出流中。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入此文件输出流。

    ·void write(int b):将指定字节写入此文件输出流。

    BufferedOutputStream:此类本身带有一个缓冲区,在写入数据时,先放到缓冲区中,实现缓冲的数据流。

    构造方法:

    ·BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,来将数据写入指定的底层输入流。

    ·BufferedOutputStream(OutputStream out,int size):创建一个新的缓冲输出流,来将具有指定缓冲区大小的数据写入指定的底层输出流。

    常用方法:

    ·void flush():刷新此缓冲的输出流。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入此缓冲的输出流。

    ·void write(int b):将指定的字节写入此缓冲的输出流。

    DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流。

    常用方法:

    ·void flush():清空此数据输出流。

    ·int size():返回计数器written的当前值,即到目前为止写入此数据输出流的字节数。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入基础输出流。

    ·void write(int b):将指定字节(参数b的八个低位)写入基础输出流。

    2.字符流:

    FileReader:用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。

    构造方法:

    ·FileReader(File file):在给定从中读取数据的File的情况下创建一个新的FileReader。

    ·FileReader(String fileName):在给定从中读取数据的文件名的情况下创建一个新的FileReader。

    BufferedReader类是Reader类的子类,为Reader对象添加字符缓冲器,为数据输入分配内存存储空间,存取数据更为有效。

    构造方法:

    ·BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。

    ·BufferedReader(Reader in,int sz):创建一个使用指定大小输入缓冲区的缓冲字符输入流。

    操作方法:

    ·void close():关闭该流并释放与之关联的所有资源。

    ·void mark(int readAheadLimit):标记流中的当前为止。

    ·boolean markSupported();判断此流是否支持mark()操作。

    ·int read():读取单个字符。

    ·int read(char[] cbuf,int off,int len):将字符读入数组的某一部分。

    ·String readLine():读取一个文本行。

    ·boolean ready():判断此流是否已准备好被读取。

    ·void reset():将流重置到最新的标记。

    ·long skip(long n):跳过字符。

    FileWriter:用来写入字符文件的便捷类,可用于写入字符流。

    构造方法:

    ·FileWriter(File file):根据给定的File对象构造一个FileWriter对象。

    ·FileWriter(String filename):根据给定的文件名构造一个FileWriter对象。

    BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

     


    Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义)

    注:下表中带下划线的是抽象类,不能创建对象。粗体部分是节点流,其他就是常用的处理流。

    流分类使用分类字节输入流字节输出流字符输入流字符输出流
     抽象基类InputStream

    OutputStream

    ReaderWriter
    节点流访问文件FileInputStreamFileOutStreamFileReaderFileWriter
    访问数值ByteArrayInputStreamByteArrayOutStreamCharArrayReaderCharArrayWriter
    访问管道PipedInputStreamPipedOutStreamPipedReaderPipedWriter
    访问字符串  StringReaderStringWriter
    处理流缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
    转换流  InputStreamReaderOutputStreamWriter
    对象流ObjectInputStreamObjectOutputStream  
    抽象基类(过滤)FilterInputStreamFilterOutputStreamFilterReaderFilterWriter
    打印流 PrintStream PrintWriter
    推回输入流PushbackInputStream PushbackReader 
    特殊流DataInputStreamDataOutputStream  

    ———————————————————————————————————————————————————————

    总结:

    1.Java IO是采用的是装饰模式,即采用处理流来包装节点流的方式,来达到代码通用性。

    2.处理流和节点流的区分方法,节点流在新建时需要一个数据源(文件、网络)作为参数,而处理流需要一个节点流作为参数。

    3.处理流的作用就是提高代码通用性,编写代码的便捷性,提高性能。

    4.节点流都是对应抽象基类的实现类,它们都实现了抽象基类的基础读写方法。其中read()方法如果返回-1,代表已经读到数据源末尾。

     

    参考链接:https://www.cnblogs.com/lca1826/p/6427177.html

    参考链接:https://www.cnblogs.com/moonpool/p/5488463.html

     

    二、梳理总结二

    什么是IO流

    首先我们要明白什么是流?流是计算机用来传输文件、保存文件的一种方式。我们在开发中会经常用到IO流,如:文件的上传和下载,文件的复制等。根据流的方向,分为输入流和输出流。通常二者搭配使用完成文件上传和下载。输入流就是你要让计算机知道他要操作的是哪个文件,什么文件,要读取到这个文件,这个从外到内的过程就是输入流(InputStream),如文件下载;那么,输出流就刚好相反,它是计算机已经有了这个文件,但开发者希望把这个文件保存到另外一个地方,这种从内到外的过程就是输出流(OutputStream)如文件上传。根据流的分类,输入流又包括字符输入流(FileReader)和字节输入流(InputStream),输出流包括字符输出流(FileWriter)和字节输出流(OutputStream)。虽然也还有其他的输入输出流,但最常用的还是这几种。

    如果你觉得IO流只有这些东西那你就大错特错了除了常见的这四种流的表现形式,还用一种很常用的流——缓冲流。但在介绍缓冲流之前,我们要先明白字符流和字节流的关系才能够更好的理解缓冲流

    字符流与字节流的关系

    说起字符流与字节流的关系,可能有的小伙伴就说了,我前面已经说过了:字符流就是按字符读取文件的形式,一般作用于文本类型的文件;而字节流就是按字节读取文件的形式,一般用来操作视频或图片等文件。但如果仅仅知道这些那就太简单了,为什么字符流通常操作String类、文本文件呢?为什么不能操作字符流操作视频和图片呢?那字节流可以操作文本类型的文件吗?为什么呢?

           其实,这是因为字符流每次按char读取文件,读取文本类型当然没有问题,但视频和图片都属于字节码文件,如果用字符流来输入或输出文件,就会造成乱码。想看效果的同学可以试一下,这就相当于我们把这个图片或视频文件直接以记事本的方式打开了,乱码是必然的。那字节流可以操作文本文件吗?答案是肯定的,为什么呢?我们都知道,计算机存储文件都是以二进制、十进制、十六进制等字节的方式存储的,包括文本文件,所以用字节流操作文本文件是没有问题的。说到这里,很多小伙伴就已经明白两者的关系了,没错,字节流包含字符流,为什么,因为字符流的底层实现也是字节流,它只不过是对字节流的封装罢了。但我们都知道,字符流是以char为单位读取文件的,这会大大影响我们程序的效率,那么怎么解决呢?没错,就是缓冲流。

    缓冲流BufferedReader/BufferedWriter,BufferedInputStream/BufferedOutputStream

     我们都知道,StringBuffer的效率远比String的效率高很多,流也一样,缓冲流就是把char类型封装成为了StringBuffer类型。下面我们看一下它的用法,其实都一样。

    这里就单举BufferedReader的用法,其他三种与它的方式一样,就不一一列举了。但值得注意的是:

    没有经过Buffered处理的IO, 意味着每一次读和写的请求都会由OS底层直接处理,这会导致非常低效的问题。

    经过Buffered处理过的输入流将会从一个buffer内存区域读取数据,本地API只会在buffer空了之后才会被调用(可能一次调用会填充很多数据进buffer)。

    经过Buffered处理过的输出流将会把数据写入到buffer中,本地API只会在buffer满了之后才会被调用。

     

    BufferedReader/BufferedWriter可以将字符流(Reader)包装成缓冲流,这是最常见用的做法。

    另外,BufferedReader提供一个readLine()可以方便地读取一行,而FileInputStream和FileReader只能读取一个字节或者一个字符,

    因此BufferedReader也被称为行读取器

    以上笔者只是讲解了笔者认为IO流中最常用的几种表现形式。希望能给各位小伙伴提供有效的帮助。不足之处,欢迎补充。

    转载:

    https://blog.csdn.net/ding_ran/article/details/85340448

    https://www.cnblogs.com/xiohao/p/8997401.html

    展开全文
  • 从外部设备流向中央处理器的数据成为“输入”,反之成为“输出”。 字符和字节的主要区别:  1.字节读取的时候,读到一个字节就返回一个字节;字符使用了字节读到一个或多个字节(中文对应的字节...

    转载:https://www.cnblogs.com/xiohao/p/8997401.html

    流在Java中是指计算中流动的缓冲区。

    从外部设备流向中央处理器的数据流成为“输入流”,反之成为“输出流”。

    字符流和字节流的主要区别:

     1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

     2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

    1.字节流:

    字节输入流类:FileInputStream、BufferedInputStream和DataInputStream

    FileInputStream:此类用于从本地文件系统中读取文件内容。

    构造方法:

    ·FileInputStream(File file):打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的File对象file指定。

    ·FileInputStream(String name):打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。

    常用方法:

    ·int available():返回下一次对此输入流调用的方法不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

    ·void close():关闭此文件输入流并释放与该流关联的所有系统资源。

    BufferedInputStream:此类本身带有一个缓冲区,在读取数据时,先放到缓冲区中,可以减少对数据源的访问,提高运行的效率。

    构造方法:

    ·BufferedInputStream(InputStream in):创建一个BufferedInputStream并保存其参数,即输入流in,以便将来使用。

    ·BufferedInputStream(InputStream in,int size):创建一个具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便将来使用。

    常用方法:

    ·int available():返回下一次对此输入流调用的方法不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。

    ·void close():关闭此输入流并释放与该流关联的所有系统资源。

    ·int read():从输入流中读取数据的下一个字节。

    ·int read(byte[] b,int off,int len):从此字节输入流中给定偏移量处开始将各字节读取到指定的byte数组中。

     DataInputStream:该类提供一些基于多字节读取方法,从而可以读取基本数据类型的数据。

    构造方法:

    ·DataInputStream(InputStream in):使用指定的底层InputStream创建一个DataInputStream。

    常用方法:

    ·int read(byte[] b):从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组b中。

    ·int read(byte[] b,int off,int len):从包含的输入流中将最多len个字节读入一个byte数组中。

    字节输出流类:FileOutputStream、BufferedOutputStream和DataOutputStream

    FileOutputStream:此类用于从本地文件系统的文件中写入数据。

    构造方法:

    ·FileOutputStream(File file):创建一个向指定File对象表示的文件中写入数据的文件输出流。

    ·FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。

    常用方法:

    ·void close():关闭此文件输出流并释放与此流有关的所有系统资源。

    ·FileDescriptor getFD():返回与此流有关的文件描述符。

    ·void write(byte[] b):将b.length个字节从指定byte数组写入此文件输出流中。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入此文件输出流。

    ·void write(int b):将指定字节写入此文件输出流。

    BufferedOutputStream:此类本身带有一个缓冲区,在写入数据时,先放到缓冲区中,实现缓冲的数据流。

    构造方法:

    ·BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,来将数据写入指定的底层输入流。

    ·BufferedOutputStream(OutputStream out,int size):创建一个新的缓冲输出流,来将具有指定缓冲区大小的数据写入指定的底层输出流。

    常用方法:

    ·void flush():刷新此缓冲的输出流。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入此缓冲的输出流。

    ·void write(int b):将指定的字节写入此缓冲的输出流。

    DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流。

    常用方法:

    ·void flush():清空此数据输出流。

    ·int size():返回计数器written的当前值,即到目前为止写入此数据输出流的字节数。

    ·void write(byte[] b,int off,int len):将指定byte数组中从偏移量off开始的len个字节写入基础输出流。

    ·void write(int b):将指定字节(参数b的八个低位)写入基础输出流。

    2.字符流:

    FileReader:用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。

    构造方法:

    ·FileReader(File file):在给定从中读取数据的File的情况下创建一个新的FileReader。

    ·FileReader(String fileName):在给定从中读取数据的文件名的情况下创建一个新的FileReader。

    BufferedReader类是Reader类的子类,为Reader对象添加字符缓冲器,为数据输入分配内存存储空间,存取数据更为有效。

    构造方法:

    ·BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。

    ·BufferedReader(Reader in,int sz):创建一个使用指定大小输入缓冲区的缓冲字符输入流。

    操作方法:

    ·void close():关闭该流并释放与之关联的所有资源。

    ·void mark(int readAheadLimit):标记流中的当前为止。

    ·boolean markSupported();判断此流是否支持mark()操作。

    ·int read():读取单个字符。

    ·int read(char[] cbuf,int off,int len):将字符读入数组的某一部分。

    ·String readLine():读取一个文本行。

    ·boolean ready():判断此流是否已准备好被读取。

    ·void reset():将流重置到最新的标记。

    ·long skip(long n):跳过字符。

    FileWriter:用来写入字符文件的便捷类,可用于写入字符流。

    构造方法:

    ·FileWriter(File file):根据给定的File对象构造一个FileWriter对象。

    ·FileWriter(String filename):根据给定的文件名构造一个FileWriter对象。

    BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

     

     

    Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义)

    注:下表中带下划线的是抽象类,不能创建对象。粗体部分是节点流,其他就是常用的处理流。

    流分类使用分类字节输入流字节输出流字符输入流字符输出流
     抽象基类InputStream

    OutputStream

    ReaderWriter
    节点流访问文件FileInputStreamFileOutStreamFileReaderFileWriter
    访问数值ByteArrayInputStreamByteArrayOutStreamCharArrayReaderCharArrayWriter
    访问管道PipedInputStreamPipedOutStreamPipedReaderPipedWriter
    访问字符串  StringReaderStringWriter
    处理流缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter
    转换流  InputStreamReaderOutputStreamWriter
    对象流ObjectInputStreamObjectOutputStream  
    抽象基类(过滤)FilterInputStreamFilterOutputStreamFilterReaderFilterWriter
    打印流 PrintStream PrintWriter
    推回输入流PushbackInputStream PushbackReader 
    特殊流DataInputStreamDataOutputStream  

     

     

    展开全文
  • 常见软件测试类型分类

    万次阅读 2018-09-20 09:48:05
    用例回归是一段时间以后再回头对以前使用的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法。...

    软件测试类型

    1)回归测试

    回归测试: (regression   testing): 回归测试有两类:用例回归和错误回归;用例回归是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法。

    2)黑盒测试

    已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
     也叫功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 

    3)白盒测试

     

    已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
      黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
      1、是否有不正确或遗漏的功能?
      2、在接口上,输入是否能正确的接受?能否输出正确的结果?
      3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
      4、性能上是否能够满足要求?
      5、是否有初始化或终止性错误?
      白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
      1、对程序模块的所有独立的执行路径至少测试一遍。
      2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
      3、在循环的边界和运行的界限内执行循环体。
      4、测试内部数据结构的有效性,等等。

    Q: 黑盒测试和白盒测试各自的优点和缺点      

    黑盒测试的优点有:比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;  从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。

    黑盒测试的缺点有:不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;自动化测试的复用性较低。

    白盒测试的优点有:帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐    藏的问题。

    白盒测试的缺点有:程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系统庞大时,测试开销会非常大。

     

    4)单元测试(模块测试)

     

    是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
      单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
     内容包括 模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

      策略包括逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

    Q: 单元测试策略

      单元测试策略主要有三种方式:

    1) 自顶向下的单元测试策略:从顶层调用的单元做成桩模块; 对第二层测试,使用上面已测试的单元做驱动模块; 依次类推,直到全部单元测试结束。(比孤立单元测试的成本高很多)

    2) 自底向上的单元测试策略:先对模块调用的最底层模块进行测试,模拟调用该模块的模块为驱动模块; 其次,对上一层模块进行单元测试,用已经被测试过的模块做桩模块,依次类推,直到全部单元测试结束。(比较合理的单元测试策略,但测试周期较长)

    3) 孤立测试的单元测试策略:无需考虑每个模块与其他模块之间的关系,分别为每个模块单独设计桩模块和驱动模块,逐一完成所有单元模块的测试。(最好的单元测试策略)

     

    Q: 单元测试主要内容

     

    单元测试大多数由开发人员来完成,测试人员技术背景较好或者开发系统软件时可能会安排测试人员进行单元测试,大多数进行的单元测试都是开发人员调试程序或者开发组系统联合调试的过程。讨论这个问题主要是扩充一下读者的视野。

    单元测试一般包括五个方面的测试:

    模块接口测试

    模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。模块接口测试也是集成测试的重点,这里进行的测试主要是为后面打好基础。测试接口正确与否应该考虑下列因素:

    -输入的实际参数与形式参数的个数是否相同;

    -输入的实际参数与形式参数的属性是否匹配;

    -输入的实际参数与形式参数的量纲是否一致;

    -调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

    -调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;

    -调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;

    -调用预定义函数时所用参数的个数、属性和次序是否正确;

    -是否存在与当前入口点无关的参数引用;

    -是否修改了只读型参数;

    -对全程变量的定义各模块是否一致;

    -是否把某些约束作为参数传递。

    如果模块功能包括外部输入输出,还应该考虑下列因素:

    -文件属性是否正确;

    -OPEN/CLOSE语句是否正确;

    -格式说明与输入输出语句是否匹配;

    -缓冲区大小与记录长度是否匹配;

    -文件使用前是否已经打开;

    -是否处理了文件尾;

    -是否处理了输入/输出错误;

    -输出信息中是否有文字性错误。

    -局部数据结构测试;

    -边界条件测试;

    -模块中所有独立执行通路测试;

    局部数据结构测试

     

    检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确,局部功能是整个功能运行的基础。重点是一些函数是否正确执行,内部是否运行正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:

    -不合适或不相容的类型说明;

    -变量无初值;

    -变量初始化或省缺值有错;

    -不正确的变量名(拼错或不正确地截断);

    -出现上溢、下溢和地址异常。

    边界条件测试

    边界条件测试是单元测试中最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。

    模块中所有独立路径测试

    在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。测试目的主要是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。具体做法就是程序员逐条调试语句。常见的错误包括:

    -误解或用错了算符优先级;

    -混合类型运算;

    -变量初值错;

    -精度不够;

    -表达式符号错。

    比较判断与控制流常常紧密相关,测试时注意下列错误:

    -不同数据类型的对象之间进行比较;

    -错误地使用逻辑运算符或优先级;

    -因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

    -比较运算或变量出错;

    -循环终止条件或不可能出现;

    -迭代发散时不能退出;

    -错误地修改了循环变量。

    模块的各条错误处理通路测试:程序在遇到异常情况时不应该退出,好的程序应能预见各种出错条件,并预设各种出错处理通路。如果用户不按照正常操作,程序就退出或者停止工作,实际上也是一种缺陷,因此单元测试要测试各种错误处理路径。一般这种测试着重检查下列问题:

    -输出的出错信息难以理解;

    -记录的错误与实际遇到的错误不相符;

    -在程序自定义的出错处理段运行之前,系统已介入;

    -异常处理不当;

    -错误陈述中未能提供足够的定位出错信息。

     

    5) 集成测试(组装测试,联合测试)

    是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

    Q: 集成测试主要内容

     (1)在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;

     (2)一个模块的功能是否会对另一个模块的功能产生不利的影响;

     (3)各个子功能组合起来,能否达到预期要求的父功能;

     (4)全局数据结构是否有问题;

     (5)单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。

    Q: 集成测试策略

    1大爆炸集成:属于非增值式集成的一种方法,也称为一次性组装或整体拼装。这种集成策略的做法就是把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险适应于一个维护型项目或被测试系统较小)

    2三明治集成:一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点,因此也属于基于功能分解的集成。这种方法桩和开发工作都比较小,但增加了定位缺陷的难度

    3自顶向下集成:就是按照系统层次结构图,以主程序模块为中心,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。又可分为深度优先集成和广度优先集成两种方式。

    (适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。)

    4自底向上集成:从依赖性最小的底层模块开始,按照层次结构图,逐层向上集成,验证系统的稳定性。

    (适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。)

    5高频集成:高频集成测试是指同步于软件开发过程,每隔一段时间对开发团队的现有代码进行一次集成测试。

    6、分层集成、分布式集成、基于路径、功能、进度、风险、事件、使用等的集成等13种。

    基于进度的集成
         优点:具有较高的并行度;能够有效缩短项目的开发进度。
         缺点:桩和驱动工作量较大;有些接口测试不充分;有些测试重复和浪费。

     

    6) 系统测试

     

    是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)
    系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
     

    6.1) 安全性测试

    属于软件测试的哪个阶段?并试阐述安全测试的概念和用以评判系统安全性性能的主要指标。

      是系统测试的一种类型,测试系统是否存在安全隐患和漏洞

      安全性测试就是要验证系统内的保护机制能否抵御入侵者的攻击。安全性测试的测试人员需要在测试活动中,撒气不同的入侵方式来攻击系统的安全机制,想尽一切办法来获取系统内的保密信息。

      系统安全性性能的指标:

    有效性:启动严格的安全性性能所花费的时间占启动整个系统所花费时间的比例。

    生存性:当错误发生时,系统对紧急操作的支持,对错误的补救措施以及恢复到正常操作的能力,即抗挫能力

    精确性:衡量系统安全性控制的精度指标,围绕所出现的错误数量、发生频率及其严重性判断

    反应时间出错时系统响应速度的快慢,一个安全性较强的系统要具备快速的反应速度。

    吞吐量用户和服务请求的峰值和平均值。

    Q: 软件的安全性应从哪几个方面去测试?

    (1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议

    (2) 加密机制

    (3) 安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描

    (4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理

    (5) 防病毒系统

     

    6.2) 恢复性测试

    属于软件测试的哪个阶段?并试阐述恢复性测试的概念和进行恢复性测试分析时主要应考虑的问题。

    恢复性测试使系统测试阶段的一种方法,也叫容错测试,用来检查系统的容错能力。通常若计算机系统出现错误,就必须在一定时间内从错误中恢复过来,修正错误并重新启动系统。在进行恢复性测试时,要考虑的主要问题有:恢复期间的安全性过程。恢复处理日志方面的能力。当出现供电问题时的恢复能力。恢复操作后系统性能是否下降。  常用的恢复测试用例的设计方法:规范导出法、错误猜测法、基于故障的测试。

    Q: 单元测试、集成测试、系统测试的侧重点是什么? 
      单元测试针对的是软件设计的最小单元--程序模块(面向过程中是函数、过程;面向对象中是类。), 进行正确性检验的测试工作, 在于发现每个程序模块内部可能存在的差错. 一般有两个步骤: 人工静态检查\动态执行跟踪 
     
    集成测试针对的是通过了单元测试的各个模块所集成起来的组件进行检验,其主要内容是各个单元模块之间的接口,以及各个模块集成后所实现的功能
     
    系统测试针对的是集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件\外设\某些支持软件\数据和人员等其他系统元素结合在一起,要在实际的运行环境中,对计算机系统进行一系列的集成测试和确认测试.
    1)集成测试的主要依据概要设计说明书,系统测试的主要依据是需求设计说明书

    2)集成测试是系统模块的测试,系统测试是对整个系统的测试,包括相关的软硬件平台、网络以及相关外设的测试。

     

    7) 验收测试

    是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
    验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

      包括正式验收测试、alpha测试、beta测试三种测试。

    7.1) Beta testing (β测试)

    测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场
     

    7.2)Alpha testing (α测试)

     

    是由一个用户开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试

     

    8) 兼容性测试

     

    也称“Configuration testing(配置测试)”,测试软件是否和系统的其它与之交互的元素之间兼容,如:浏览器、操作系统、硬件等。验证测试对象在不同的软件和硬件配置中的运行情况。兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性

    兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容

    包括向下兼容和交错兼容,向下兼容是测试软件新版本保留它早期版本功能的情况,交错兼容是验证共同存在的两个相关但不相同的产品之间的兼容性。

    Q: 配置和兼容性测试的区别是什么?

    配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。

    配置测试的核心内容就是使用各种硬件来测试软件的运行情况,一般包括:

    1)软件在不同的主机上的运行情况,例如Dell和Apple;

    2)软件在不同的组件上的运行情况,例如开发的拨号程序要测试在不同厂商生产的Modem上的运行情况;

    3)不同的外设;

    4)不同的接口;

    5)不同的可选项,例如不同的内存大小;

    兼容性测试的核心内容:

    1)测试软件是否能在不同的操作系统平台上兼容;

    2)测试软件是否能在同一操作系统平台的不同版本上兼容;

    3)软件本身能否向前或者向后兼容;

    4)测试软件能否与其它相关的软件兼容;

    5)数据兼容性测试,主要是指数据能否共享

    配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等。具体进行时仍然按照测试用例来执行。

     

    9) 性能测试

    系统在大并发下的响应速度和健壮性

    通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。包括负载测试、强度测试、数据库容量测试、基准测试等类型。

    10) 界面测试

    界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
      区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试

    11) 易用性测试

    界面的友好性,操作方便性等。

    12) 需求测试的注意事项

    是否使用了公司的模板、

    文档内容是否符合规范、

    所有的需求是分级是否清析适当、

    所有的需求是否具有一致性

    需求是否可行(即,该需求组合有解决方案)、

    需求可否用己知的约束来实现、

    需求是否足够(即,可以把它送到一个规范的开发组织,并有一个生产出所需要产品的合理的可能性)、

    所有的其它需求是交叉引用是否正确、

    用户描述是否清楚、

    是否用客户的语言来描述需求、

    每个需求描述是否清楚没有岐义,可以移交给一个独立的组去实现时也能理解、

    是否所有的需求都是可验证的、

    是否每条需求都具有独立性,即使发生了变化也不会影响其它需求、

    性能指标是否明确、

    非功能性需求是否得到充分表现、

    是否完整列出适用的标准或协议、

    标准和协议之间是否存在冲突

     

    展开全文
  • Java之IO流分类及其基本方法

    千次阅读 2021-11-16 22:01:29
    一、IO及其分类 IO流分类可以分为以下几类: 1、文件字节:FileInputStream、FileOutputStream 2、文件字符:FileReader、FileWiter 3、转换:InputStreamReader、OutputStreamWriter 4、缓冲:...
  • Java中流的分类哪些?

    千次阅读 2021-02-26 13:55:28
    从数据类型分为字节和字符字节类:抽象父类: InputStream,OutputStream实现类包括如下几种:BufferedInputStream 缓冲BufferedOutputStreamByteArrayInputStream 字节数组-节点...
  • 【Java基础-3】吃透Java IO:字节、字符、缓冲

    万次阅读 多人点赞 2020-09-23 20:12:33
    什么是Java-IO?字符和字节的区别与适用场景是什么?缓冲到底实现了什么?如何高效地读写文件? 本文用大量的示例图和实例,带你吃透Java IO。
  • 大家好,今天给大家汇总一些在嵌入式里面常见媒体服务器,在以往也给大家简单提,今天做一个汇总!希望对大家有用!常见媒体服务器开源项目汇总: 1、srs:官网:https://ossrs.net/releases/项目源码:...
  • 机器学习中最常见的四种分类模型

    万次阅读 多人点赞 2020-05-23 12:30:00
    点击蓝字关注我,干货领取!作者:Jason Brownlee翻译:候博学前言 机器学习是一个从训练集中学习出算法的研究领域。分类是一项需要使用机器学习算法的任务,该算法学习如何为数据集...
  • 常见的图片格式、什么不同?

    千次阅读 2020-09-17 12:24:54
    前言:生活在自媒体时代,我们碰见最多的莫过于图片和视频了,今天时间总结一下几种常见的图片的格式以及它们的优缺点,应用情况。 一:JPG/JPEG格式(有损压缩) jpeg是一种面向连续色调静止图像的压缩标准,它...
  • 一文搞定Java的输入输出常见流

    千次阅读 多人点赞 2020-04-07 22:32:25
    多种分类方式: 一种方式是:按照的方向进行分类,以内存为参照物,往内存中去叫做输入(Input),或者叫做读(Read).往内存中出来叫做输出(Output),或者叫做写。 第二种:以读取数据方式的不同进行分类...
  • 接下来我给大家整理了常见的一些数据指标,建议收藏后慢慢阅读。 目录用户获取渠道到达量渠道转化率渠道ROI日应用下载量日新增用户数用户获取成本一次会话用户数用户活跃活跃用户PV和UV用户会话次数用户访问时长功能...
  • 文件包含常见方法

    千次阅读 2020-06-15 17:08:00
    文件包含原理 开发人员将相同函数写入单独的文件中,需要使用某个函数直接调用此文件,无需再次编写,这种...include_once: 这个函数跟和include语句类似,唯一区别是如果该文件中已经被包含,则不会再次包含 req
  • API是什么?哪些常见的API?

    万次阅读 多人点赞 2019-02-27 19:49:17
    转自 https://blog.csdn.net/cumtdeyurenjie/article/details/80211896#t2 和https://blog.csdn.net/weixin_38174062/article/details/80829912非原创,...大家可能最近经常听到 API 这个概念,那什么是API,它又...
  • 常见的并发问题哪些1.并发测试1.1并发测试的定义1.2并发测试的分类2.常见并发问题2.1事务并发的问题2.2极限值并发的问题2.3压力并发的问题2.4异常数据干扰并发的问题 1.并发测试 最近小屌丝一直在埋头苦练性能的知...
  • 机器学习常见算法分类,算法优缺点汇总

    万次阅读 多人点赞 2017-04-14 12:08:13
    本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考。  机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家...
  • 常见的中间件哪些?

    千次阅读 2021-06-15 20:01:20
    文章目录中间件常用的中间件TomcatWeblogicJbossJettyWebshereGlasshfish 中间件 我们经常会看到中间件,但是,一直好奇的是,中间件到底是什么? 中间件(英语:Middleware)是提供系统软件和应用软件之间连接的...
  • 5. 限电阻—起限保护作用,如用作稳压管、光耦合器及输入滤波电容的限电阻。6. 电流检测电阻—与电流保护电路配套使用,用于限制开关电源的输出电流极限。7. 分流电阻—给电流提供旁路。8. 负载电阻—开关...
  • 5种常见的网络欺骗方式

    千次阅读 2021-11-20 14:08:14
    用户可以通过IE等浏览器访问各种各样的Web站点,一般的用户不会意识到以下问题的存在:正在访问的网页已经被黑客篡改,网页上的信息是虚假的。例如,黑客将用户要浏览的网页的URL改写为指向黑客自己的服务器,当...
  • 10种常见的移动端App广告展现形式

    万次阅读 2019-06-27 14:07:36
    在社交类App和新闻类App上,信息广告尤为明显,常见微博、贴吧、百度、今日头条等,都。 优点 :不影响用户操作行为。 缺点 :内容定位不精准会让用户产生厌恶情绪。 6.积分广告 这种广告形式主要...
  • 98.流分类 99.RSS 100.Flow Director 101.服务质量 102.虚拟化流分类方式 103.过滤 104.流分类技术的使用 105.DPDK结合网卡Flow Director功能 106.DPDK结合网卡虚拟化及Cloud Filter功能 8.4 可重构匹配...
  • Java IO 字节、字符详解

    千次阅读 2022-01-28 13:51:42
    1. 字节与字符 是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的。 ...
  • 常见的硬盘类型介绍

    万次阅读 2019-07-31 21:56:00
    对于硬盘来说,常见以下几种分类方式: 按生产厂家分类 大部分人选择硬盘都是会先看厂家,然后才是容量、材质等信息,常见的硬盘厂家主要: 希捷Seagate 西部数据Western Digital 三星SAMSUNG 闪迪SanDisk ...
  • 【IO、文件操作】-常见面试题

    千次阅读 2019-01-16 17:08:49
    5. IO分类?6. 什么叫缓冲区? 什么作用? 1. java中几种类型的?jdk为每种类型的提供了一些抽象类以供继承,请说出他们分别是那些类? 2. 字节流有字符的区别? 字节操作的最基本的单元是...
  • 常见网络设备介绍

    千次阅读 多人点赞 2020-07-22 19:29:26
    常见的协议:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX。用户如果访问Internet,就必须在网络协议中添加TCP/IP协议。 5、 线速转发能力 线速转发能力,指在达到端口最大速率的...
  • 本文主要梳理到公司参与团队后端开发2年多来,总结开发的项目中遇到的各种安全问题及应对方案。 目前我们后端团队使用的技术主要还是SpringBoot + Mysql + Redis这一套 ,暂未涉及到SpringBoot Cloud,后面内容...
  • 防止拟合的几种常见方法

    万次阅读 2018-08-14 17:13:18
    防止拟合的处理方法 何时会发生拟合?    我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即...
  • 五种常见软件架构

    千次阅读 2021-01-10 09:42:53
    这种架构将软件分成若干个水平层,每一层都清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。 虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。 表现层(presentation)...
  • [转]计算机语言的种类总结

    千次阅读 2021-07-25 04:41:29
    计算机语言的种类总结内容导读: 今天来总结一下语言的种类,语言的种类从不同的角度会不同的划分,比如机器语言、汇编语言、高级语言、低级语言(机器语言及汇编语言)、编译语言、解释型语言、脚本语言、动态语言...
  • 【搞定算法】常见算法题分类总览

    万次阅读 多人点赞 2019-07-26 15:24:05
    由于本人平时刷题比较零散,时候找起来不是很方便,所以统一将题目记录于此。主要的题目来源自:剑指 Offer、LeetCode、左神算法、面试、笔试、面经等等。下面按照分类记录: 说明(个人见解): 一、标注说明 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,022
精华内容 44,008
热门标签
关键字:

常见的过流种类有