Java 中的泛型通配符(已备份)
Java 中的泛型通配符
Java 中 ? extends XXX
和 ? super XXX
的区别
在 Java 中,? extends XXX
和 ? super XXX
是泛型通配符的两种常见形式,用于表示集合中元素类型的上界和下界。它们在处理集合时提供了强大的类型安全机制。
Java 中 ? extends XXX
和 ? super XXX
的区别
在 Java 中,? extends XXX
和 ? super XXX
是泛型通配符的两种常见形式,用于表示集合中元素类型的上界和下界。它们在处理集合时提供了强大的类型安全机制。
在Java中,可以使用BufferedReader或者BufferedInputStream等缓冲流来读取大文件,这种方式可以避免一次性将整个文件加载到内存中,避免内存溢出。这里提供一个使用BufferedReader来读取文件的示例:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadLargeFile {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("largefile.txt"));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在以上代码中,我们首先创建了一个BufferedReader对象,然后通过readLine()方法逐行读取文件内容,这样可以有效地处理大文件,而不会因为文件过大而导致内存溢出。注意,当读取完文件后,一定要记得关闭BufferedReader对象,以释放系统资源。
采用FileInputStrea:
在Java中,我们通常会使用BufferedInputStream来包装FileInputStream以提高读取大文件的效率。下面是一个例子:
import java.io.*;
public class ReadBigFile {
public static void main(String[] args) {
File file = new File("your_file_path"); //替换为你的文件路径
try {
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buffer = new byte[1024]; //可以根据实际情况调整缓冲区大小
int length = 0;
while ((length = bis.read(buffer)) != -1) {
//处理读取的数据,例如打印
System.out.write(buffer, 0, length);
}
//记得关闭流
bis.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码每次会读取1024字节的数据到缓冲区,然后进行处理。这样可以有效地减少磁盘I/O操作,提高读取大文件的速度。
前言: 最近才发现之前很多以为理所当然的事情其实背后都是专门做了特殊的处理。比如我之前以为在接口流程里抛了异常,理所应当接口返回能透露出异常的信息,尤其是接口字段校验不通过时应该返回具体信息;再或者正常调了一个接口,至少日志上应该能看出有接口调用过的痕迹(暂不讨论日志应不应该打印相关信息)。
先说一下结论:
处于性能消耗考虑,需要替换的文本如果是正则表达式,就用String::replaceAll
,如果是一般字符串,就用String::replace
。