最后
为什么我不完全主张自学?
①平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。
除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。
我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。
应该学哪些技术才能达到企业的要求?(下图总结)
package 面向对象.文件的输入与输出;
import java.io.\*;
public class 字符流输入 {
public static void main(String[] args) {
try {
// 调用测试方法
// testreader1();
testreader2();
// testreaderBuff();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void testreader1() {
//FileReader子类 继承 InputStreamReader父类 继承 Reader基类
// 创建字符输入流对象
Reader reader = null;
try {
// 创建FileReader对象,指定文件路径
reader = new FileReader("C:\\Java\\a.txt");
int data;
while ((data = reader.read()) != -1) {
// 将读取到的字符转换为char并打印输出
System.out.println((char) data);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void testreader2() {
// 创建字符输入流对象
Reader reader = null;
FileInputStream fis = null;
try {
// 创建FileInputStream对象,指定文件路径
fis = new FileInputStream("C:\\Java\\a.txt");
// 创建InputStreamReader对象,将字节流转换为字符流,并指定字符编码为UTF-8
reader = new InputStreamReader(fis, "UTF-8");
char ch[] = new char[1024];
StringBuffer sb = new StringBuffer();
int data;
while ((data = reader.read(ch)) != -1) {
// 将读取到的字符数组转换为字符串,并追加到StringBuffer对象中
sb.append(ch, 0, data);
}
// 将StringBuffer对象转换为字符串并打印输出
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void testreaderBuff() {
Reader reader = null;
BufferedReader br = null;
try {
// 创建字符输入流对象
reader = new FileReader("C:\\Java\\a.txt");
// 创建BufferedReader对象,将字符输入流包装在其中,实现缓冲功能
br = new BufferedReader(reader);
String str = null;
while ((str = br.readLine()) != null) {
// 逐行读取文本内容并打印输出
System.out.println(str);
}
// char ch[] = new char[1024];
// StringBuffer sb = new StringBuffer();
// int data;
// while ((data = br.read(ch)) != -1) {
// sb.append(ch);
// }
// System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流
br.close();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
这三个方法实现了不同的字符读取方式:
testreader1() 方法使用 FileReader 类直接读取文件的字符流。它每次读取一个字符并将其转换为 char,然后打印输出。这种方式适用于读取较小的文本文件。
testreader2() 方法使用 InputStreamReader 类将 FileInputStream 的字节流转换为字符流。它使用字符数组作为缓冲区,每次读取一定数量的字符数据,并将其追加到 StringBuffer 对象中。最后,将 StringBuffer 对象转换为字符串并打印输出。这种方式适用于读取较大的文本文件。
testreaderBuff() 方法使用 BufferedReader 类对字符输入流进行缓冲。它包装了 FileReader 对象,并通过 readLine() 方法逐行读取文本内容并打印输出。使用缓冲区可以提高读取效率,尤其适用于大型文本文件。
字符输出流Writer类
常用方法:
方法 | 描述 |
---|---|
write(int c) | 将指定的字符写入输出流 |
write(char[] cbuf) | 将字符数组的内容写入输出流 |
write(char[] cbuf, int off, int len) | 将字符数组的指定部分写入输出流 |
write(String str) | 将字符串写入输出流 |
write(String str, int off, int len) | 将字符串的指定部分写入输出流 |
append(char c) | 将指定字符追加到输出流 |
append(CharSequence csq) | 将指定字符序列追加到输出流 |
append(CharSequence csq, int start, int end) | 将指定字符序列的指定部分追加到输出流 |
flush() | 刷新输出流,将缓冲区中的内容写入目标设备 |
close() | 关闭输出流,释放与之关联的资源 |
子类OutputStreamWriter常用的构造方法
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out,String charsetName)
OutputStreamWriter的子类FileWriter类
构造方法
FileWriter (File file)
FileWriter (String name)
该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型
BufferedWriter类
可以使用FileWriter类与BufferedWriter类
提高字符流写文本文件的效率。
- BufferedWriter类是Writer类的子类
- BufferedWriter类带有缓冲区
构造方法
BufferedWriter(Writer out)
用BuffererWriter写文本文件过程
package 面向对象.文件的输入与输出;
import java.io.\*;
public class 字符流输出 {
public static void main(String[] args) {
try {
// 调用testWrite方法进行文件写入操作
// testWrite();
// 调用testWriteAndReader方法进行文件写入和读取操作
testWriteAndReader();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void testWrite() throws IOException {
// 创建字符输出流对象
// FileWriter继承自OutputStreamWriter,用于写入字符流到文件
Writer writer = null;
String str = "好好学习Java";
// 创建文件写入的目标文件路径
writer = new FileWriter("C:\\Java\\a.txt");
// 将字符串写入文件
writer.write(str);
System.out.println("写入成功");
// 关闭流,释放资源
writer.close();
}
public static void testWriteAndReader() throws IOException {
// 创建字符输出流和字符输入流对象
FileWriter fw = null;
### 最后
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。
![image](https://img-blog.csdnimg.cn/img_convert/8299def1b2ec4585241fd4df8693774c.webp?x-oss-process=image/format,png)
**整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断!!!**
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断!!!**
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**