大數據13天

1.闡述BufferedReader和BufferedWriter的工作原理,

  是否緩衝區讀寫器的性能恆大於非緩衝區讀寫器的性能,爲什麼,請舉例說明?

   

bufferedreader:從字符輸入流中讀取文本,緩衝各個字符,從而實現字符、數組和行的高效讀取;

bufferedwriter:將文本寫入字符輸出流,緩衝各個字符,從而提供單個字符、數組和字符串的高效寫入;

當char[]中的設置比讀取數據的小的話,那麼性能比非緩衝區讀寫器性能小。

2.闡述HashSet與HashMap的異同。

HashMap是K-V對,hashmap底層實現了散列算法,是一種基於關鍵詞的搜索算法,提升hashmap查找速度。hashmap通過hashcode得到一個地址然後equals比較鏈表中各元素,同時取出對應value值。

2.hashset用hashmap實現Key,實現了set接口,繼承collection接口

HashMap:實現map接口,用hash機制存儲,不重複,set和map是同一級的。

3.Charset類操作:isSupport()

3.1)通過該類驗證平臺是否支持一下字符集:

gb2312

GB2312

gbk

GBK

utf-8

utf8

iso8859-1

iso-8859-1



for(String charset : Charset.availableCharsets().keySet()){


    System.out.println(charset);

}

3.2)取出平臺默認的字符集


System.out.println(Charset.defaultChaset.name());


4.FileReader.getEncoding();

  new String(,,,,,charset);


5.使用FileInputStream + FileOutputStream / BufferedInputStream + BufferedOuputStream

  實現大文件複製,比較複製效率。

package com.it18zhang_13job.demo;


import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;


/**

 * 

 *使用FileInputStream + FileOutputStream / BufferedInputStream

 *  + BufferedOuputStream 實現大文件複製,比較複製效率。

 * 

 */

public class FileCopy {

    public static void main(String[] args) {

        long startTimeMillis = System.currentTimeMillis();

        File flsou = new File("E:/a.mp3");

        fileInputStreamCopy(startTimeMillis, flsou);

        bufferedInputStreamCopy(startTimeMillis, flsou);

    }




    private static void fileInputStreamCopy(long startTimeMillis, File flsou) {

        File fldec = new File("E:/aCopy.mp3");

        try {

            if (!fldec.exists()) {

                fldec.createNewFile();

            }

            FileInputStream fis = new FileInputStream(flsou);

            FileOutputStream fos = new FileOutputStream(fldec);

            int read = fis.read();

            while (read != -1) {

                fos.write(read);

                read = fis.read();

            }

            fos.flush();

            fis.close();

            fos.close();

            long endTimeMillis = System.currentTimeMillis();

            System.out.println("FileInputStream + FileOutputStream的花費時間:" + (endTimeMillis - startTimeMillis) + "毫秒!");

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }




    private static void bufferedInputStreamCopy(long startTimeMillis, File flsou) {

        File fldec = new File("E:/aCopy1.mp3");

        try {

            if (!fldec.exists()) {

                fldec.createNewFile();

            }

            FileInputStream fis = new FileInputStream(flsou);

            FileOutputStream fos = new FileOutputStream(fldec);

            BufferedInputStream bis = new BufferedInputStream(fis);

            BufferedOutputStream bos = new BufferedOutputStream(fos);

            byte[] buf = new byte[1024];

            int len;

            while ((len = bis.read(buf)) != -1) {

                bos.write(buf, 0, len);

            }

            fos.flush();

            fis.close();

            fos.close();

            long endTimeMillis = System.currentTimeMillis();

            System.out.println("BufferedInputStream + BufferedOuputStream的花費時間:" + (endTimeMillis - startTimeMillis)

                    + "毫秒!");

        } catch (Exception ex) {

            ex.printStackTrace();

        }

    }

}


6.闡述對象回收的前提條件。

沒有任何指向堆空間的指針,則回收


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章