【Day09-IO-字符流其它流】

IO流

        IO流-字符流

        字节流:适合复制文件等,不适合读写文本文件

        字符流:适合读写文本文件内容

        FileReader(文件字符输入流)

作用:以内存为基准,可以把文件中的数据以字符的形式读到内存中来。 

构造器

说明

public FileReader​(File file)

创建字符输入流管道与源文件接通

public FileReader​(String pathname)

创建字符输入流管道与源文件接通

方法名称

说明

public int read()

每次读取一个字符返回,如果发现没有数据可读会返回-1.

public int read(char[] buffer)

每次用一个字符数组去读取数据,返回字符数组读取了多少个字符,如果发现没有数据可读会返回-1.

/*
字符流字符输入流 Reader--FileReader字符输出流 Writer--FileWriterFileReader创建对象public FileReader(File file);public FileReader(string pathname);读数据public int read() 一次读一个字符,返回字符对应的字,读到文件末尾返回-1public int read(char[] buffer) 一次读多个字符,返回本次读取的有效字节个数,读到文件末尾返回-1
*/
public class Demo1 {
//    public static void main(String[] args) throws Exception {File file = new File("day09-code\\a-1.txt");FileReader reader = new FileReader(file);
//        FileReader reader = new FileReader("day09-code/a-1.txt");
//        int read;
//        while ((read = reader.read()) != -1) {
//            System.out.println((char) read);
//        }
//        reader.close();
//    }public static void main(String[] args) throws Exception{FileReader reader = new FileReader("day09-code/a-1.txt");char[] chars = new char[100];int len;while ((len = reader.read(chars)) != -1) {System.out.println( "读取长度:" + len +",内容:" + new String(chars,0,len));}reader.close();}
}

        1、使用文件字符输入流,有啥好处?

                读取中文不会出现乱码问题

        2、每次读取一个字符,每次读取多个字符的方法是啥?它们各有什么特点?

int read()

每次读取一个字符返回,如果发现没有数据可读会返回-1.

int read(char[] buffer)

每次用一个字符数组去读取数据,返回字符数组读取了多少个字符,如果发现没有数据可读会返回-1.

        FileWriter(文件字符流)

作用:以内存为基准,把内存中的数据以字符的形式写出到文件中去。

构造器

说明

public FileWriter​(File file)

创建字节输流管道与源文件对象接通

public FileWriter​(String filepath)

创建字节输流管道与源文件路径接通

public FileWriter(File fileboolean append)

创建字节输流管道与源文件对象接通,可追加数据

public FileWriter(String filepathboolean append)

创建字节输流管道与源文件路径接通,可追加数据

方法名称

说明

void write​(int c)

写一个字符

void write​(String str)

写一个字符串

void write​(String str, int off, int len)

写一个字符串的一部分

void write​(char[] cbuf)

写入一个字符数组

void write​(char[] cbuf, int off, int len)

写入字符数组的一部分

/*
字符流字符输入流 Reader--FileReader字符输出流 Writer--FileWriterFileWriter创建对象public FileWriter(File file)	创建字节输出流管道与源文件对象接通public FileWriter(String filepath)	创建字节输出流管道与源文件路径接通public FileWriter(File file,boolean append)	创建字节输出流管道与源文件对象接通,可追加数据public FileWriter(String filepath,boolean append)	创建字节输出流管道与源文件路径接通,可追加数据写数据void write(int c)	写一个字符void write(String str)	写一个字符串void write(String str, int off, int len)	写一个字符串的一部分void write(char[] cbuf)	写入一个字符数组void write(char[] cbuf, int off, int len)	写入字符数组的一部分注意:字符输出流写出数据后,必须刷新流(flush)或者关闭流(close),写出的数据才会生效,原因是有缓存区如果要换行, 需要输出"\r\n"字符串
*/
public class Demo2 {public static void main(String[] args) throws Exception{//创建一个写文件FileWriter writer = new FileWriter("day09-code/a-2.txt");//true,之前的数据会保存,不会覆盖//IO操作//写入字符writer.write(98);//写入换行writer.write("\r\n");//写一个字符串writer.write("学厨师,就来新东方");writer.write("\r\n");String str = "遇到新东方厨师就嫁了吧";writer.write(str);writer.write("\r\n");//写字符串的一部分writer.write("我喜欢zjl", 3, 3);writer.write("\r\n");//写入一个字符数组char[] chars = {'蓝', '翔', '挖', '掘', '机'};writer.write(chars);writer.write("\r\n");//写入字符数组的一部分writer.write(chars, 2,3);writer.write("\r\n");//关闭流writer.close();}
}

         字符输出流使用时的注意事项

        1、如何创建字符输出流,如何实现写数据的追加操作?

                public FileWriter(String filepathboolean append)

        2、字符输出流写数据的方法有哪些?

void write​(int c)

void write​(String str)

void write​(String str, int off, int len)

void write​(char[] cbuf)

void write​(char[] cbuf, int off, int len)

        3、字符输出流写完数据后,必须注意什么?

                刷新或者关闭流

        IO流-缓冲流

        字节缓冲流

        字节缓冲流的作用

        提高字节流读写数据的性能

        字节缓冲输入流自带了8KB缓冲池字节缓冲输出流自带了8KB缓冲池 

构造器

说明

public BufferedInputStream​(InputStream is)

把低级的字节输入流包装成一个高级的缓冲字节输入流,从而提高读数据的性能

public BufferedOutputStream​(OutputStream os)

把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能

/*
字节缓冲流自带8KB缓冲区, 减少了内存和硬盘之间的交互,从而提高原始流读、写数据的性能字节缓冲流public BufferedInputStream(InputStream is); 底层提供8K的缓冲区,减少和内存和硬盘的交互,真正干活的还是字节输入流public BufferedOutputStream(OutputStream os);底层提供8K的缓冲区,减少和内存和硬盘的交互,真正干活的还是字节输出流
*/
public class Demo1 {public static void main(String[] args) throws Exception {FileInputStream fis = new FileInputStream("D:\\ITheima\\zm.png");BufferedInputStream bis = new BufferedInputStream(fis);FileOutputStream fos = new FileOutputStream("D:\\ITheima\\zm1.png");BufferedOutputStream bos = new BufferedOutputStream(fos);int len;byte[] bytes = new byte[1024];while ((len = bis.read(bytes)) != -1) {bos.write(bytes,0,len);}bos.close();fos.close();bis.close();fis.close();}
}
         案例:

//目标:观察原始流和缓冲流的性能。
public class Demo2 {// 复制的视频路径private static final String SRC_FILE = "D:/upload/other/duotai.wmv";// 复制到哪个目的地private static final String DEST_FILE = "D:/upload/other/duotai2.wmv";public static void main(String[] args) throws IOException {copyUseFileInputStream();//不使用缓冲流copyUseBufferedInputStream();//使用缓冲流}private static void copyUseFileInputStream() throws IOException {long startTime = System.currentTimeMillis();//1. 创建文件字节输入流、输出流FileInputStream fis = new FileInputStream(SRC_FILE);FileOutputStream fos = new FileOutputStream(DEST_FILE);//2. 使用输入流读取内容,使用输出流写出内容byte[] bytes = new byte[1024];int len = 0;while ((len = fis.read(bytes)) != -1){fos.write(bytes,0,len);}//3. 关闭流fos.close();fis.close();long endTime = System.currentTimeMillis();System.out.println("不使用缓冲流复制耗时:" + (endTime - startTime) + "ms");}private static void copyUseBufferedInputStream() throws IOException {long startTime = System.currentTimeMillis();BufferedInputStream bis = new BufferedInputStream(new FileInputStream(SRC_FILE));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(DEST_FILE));byte[] bytes = new byte[1024];int len;while ((len = bis.read(bytes)) != -1) {bos.write(bytes, 0, len);}bis.close();bos.close();long endTime = System.currentTimeMillis();System.out.println("使用缓冲流复制耗时:" + (endTime - startTime)+ "ms");}
}

        1、字节缓冲流有几种?

                字节缓冲输入流:BufferedInputStream

                字节缓冲输出流:BufferedOutputStream

        2、字节缓冲流为什么提高了字节流读写数据的性能?

                字节缓冲流自带8KB缓冲区可以提高原始字节流、字符流读写数据的性能

         字符缓冲流

        自带8K的字符缓冲池,可以提高字符输入流读取字符数据的性能

        BufferedReader(字符缓冲输入流)

方法

说明

public BufferedReader​(Reader r)

把低级的字符输入流包装成字符缓冲输入流管道,从而提高字符输入流读字符数据的性能

public String readLine()

读取一行数据返回,如果没有数据可读了,会返回null

         BufferedWriter(字符缓冲输出流)

方法

说明

public BufferedWriter​(Writer r)

把低级的字符输出流包装成一个高级的缓冲字符输出流,从而提高字符输出流写数据的性能

public void newLine()

换行

/*
字符缓冲流public BufferedReader(Reader r)	把低级的字符输入流包装成字符缓冲输入流管道,从而提高字符输入流读字符数据的性能public String readLine()	读取一行数据返回,如果没有数据可读了,会返回nullpublic BufferedWriter(Writer r)	把低级的字符输出流包装成一个高级的缓冲字符输出流,从而提高字符输出流写数据的性能public void newLine()	换行
*/
public class Demo3 {//使用字符缓冲流,讲b-3.txt内容写到b-4.txtpublic static void main(String[] args) throws Exception {BufferedReader reader = new BufferedReader(new FileReader("day09-code/b-3.txt"));BufferedWriter writer = new BufferedWriter(new FileWriter("day09-code/b-4.txt"));String str;while ((str = reader.readLine()) != null) {writer.write(str);writer.newLine();}writer.close();reader.close();}//字符缓冲输入流
//    public static void main(String[] args) throws Exception{
//        BufferedWriter writer = new BufferedWriter(new FileWriter("day09-code/b-4.txt"));
//        writer.write("hello");
//        writer.newLine();
//        writer.write(22);
//        writer.close();
//    }//字符缓冲输入流
//    public static void main1(String[] args) throws Exception {
//        BufferedReader reader = new BufferedReader(new FileReader("day09-code/b-3.txt"));
//
//        String str;
//        while ((str = reader.readLine()) != null) {
//            System.out.println(str);
//        }
//
//        reader.close();
//    }
}

        1、字符缓冲流有几种,好处是什么?

                public BufferedReader​(Reader r)

                public BufferedWriter​(Writer w)

                字符缓冲流自带8K缓冲区,可以提高原始字符流读写数据的性能

        2、两种字符缓冲流新增了哪些方法?

                BufferedReader,多了readLine()按照行读取的功能

                BufferedWriter,多了newLine()换行的功能

        IO流-转换流

        引出问题:不同编码读取时会乱码    

/*
问题描述:当程序使用的编码跟操作文档的编码不一致时,会出现乱码问题此时可以使用字符转换流它的思路是: 先获取文件的原始字节流,再将其按真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码了字符输入转换流public InputStreamReader(InputStream is ,String charset) 把原始的字节输入流,按照指定字符集编码转成字符输入流
*/
public class Demo1 {public static void main(String[] args) throws Exception {//需求: 从c-1.txt读取内容//1.创建文件字节输入流FileInputStream fis = new FileInputStream("day09-code/c-1.txt");//2.创建一个字符输入转化流,并指定字符集InputStreamReader isr = new InputStreamReader(fis,"GBK");//3.将字符输入转化流包装为字符输出缓冲流BufferedReader reader = new BufferedReader(isr);//4.读取一行String line = reader.readLine();System.out.println(line);//5.关闭reader.close();isr.close();fis.close();}
}

        字符输入转换流

         InputStreamReader(字符输入转换流)
  • 解决不同编码时,字符流读取文本内容乱码的问题。
  • 思路:先获取文件的原始字节流,再将其按真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码了

构造器

说明

public InputStreamReader(InputStream is String charset)

把原始的字节输入按照指定字符集编码转成字符输入流

/*
问题描述:当程序使用的编码跟操作文档的编码不一致时,会出现乱码问题此时可以使用字符转换流它的思路是: 获取字节输出流,再按照指定的字符集编码将其转换成字符输出流,以后写出去的字符就会用该字符集编码了。字符输出转换流public OutputStreamWriter(OutputStream os,String charset)	可以把原始的字节输出流,按照指定编码转换成字符输出流
*/
public class Demo2 {public static void main(String[] args) throws Exception {//需求: 向c-2.txt写出内容, 字符集为GBKFileOutputStream fos = new FileOutputStream("day09-code/c-2.txt");OutputStreamWriter ows = new OutputStreamWriter(fos,"GBK");BufferedWriter writer = new BufferedWriter(ows);writer.write("月薪过万");writer.newLine();writer.write("到黑马程序员");writer.close();ows.close();fos.close();}
}

1字符输入转换流InputStreamReader作用是啥?

可以解决字符流读取不同编码乱码的问题

public InputStreamReader(InputStream is,String charset):

可以指定编码把原始字节流转换成字符流,如此字符流中的字符不乱码

         字符输出转换流

        OutputStreamWriter字符输出转换流
  • 作用:可以控制写出去的字符使用什么字符集编码。
  • 获取字节输出流,再按照指定的字符集编码将其转换成字符输,以后写出去的字符就会用该字符集编码了。

构造器

说明

public OutputStreamWriter(OutputStream osString charset)

可以把原始的字节输出按照指定编码转换成字符输

/*
JDK11开始,可直接使用字符流构造指定字符集,构造第二个参数,通过Charset的静态方法forName 指定字符集public FileReader(String fileName, Charset charset) throws IOExceptionpublic FileWriter(String fileName, Charset charset) throws IOException*/
public class Demo3 {public static void main(String[] args) throws Exception {BufferedWriter writer = new BufferedWriter(new FileWriter("day09-code/c-3.txt"));}
}

1字符输出转换流OutputStreamWriter的作用?

public OutputStreamWriter(OutputStream osString charset)

可以指定编码把字节输出流转换成字符输出流从而可以指定写出去的字符编码!

        IO流-打印流

        PrintStream/PrintWriter(打印流)

作用:打印流可以实现更方便、更高效的打印数据出去,能实现打印啥出去就是啥出去。

         PrintStreamPrintWriter的区别

  • 打印数据的功能上是一模一样的:都是使用方便,性能高效(核心优势)
  • PrintStream继承自字节输出流OutputStream,因此支持写字节数据的方法。
  • PrintWriter继承自字符输出流Writer,因此支持写字符数据出去。
import java.io.PrintStream;/*
PrintStream/PrintWriter(打印流)打印流可以实现更方便、更高效的打印数据出去,能实现打印啥出去就是啥出去。构造器public PrintStream(OutputStream/File/String)	打印流直接通向字节输出流/文件/文件路径public PrintWriter(OutputStream/Writer/File/String)	打印流直接通向字符输出流/文件/文件路径常用方法public void println(Xxx xx)	打印任意类型的数据出去public void write(int/byte[]/byte[]一部分)	可以支持写字节数据出去(PrintStream)public void write(int/String/char[]/..)	可以支持写字符数据出去(PrintWriter)PrintStream和PrintWriter的区别打印数据的功能上是一样的:都是使用方便,性能高效PrintStream继承自字节输出流OutputStream,因此支持写字节数据的方法PrintWriter继承自字符输出流Writer,因此支持写字符数据出去
*/
public class Demo1 {public static void main(String[] args) throws Exception {//PrintStreamPrintStream printStream = new PrintStream("day09-code/d-1.txt");printStream.println("遇到新东方厨师");printStream.println(222);printStream.println(true);printStream.close();//PrintWriter}
}

         IO流-数据流

        DataOutputStream(数据输)

允许把数据和其类型一并写出去。 

        DataInputStream(数据输) 

用于读取数据输出流写出去的数据。  

/*
数据流为了保存数据而用的一种数据流, 数据流输出的数据不是给人看的,是为了保存数据输出流输出的数据,只能通过数据输入流读回程序DataOutputStream(数据输出流)public DataOutputStream(OutputStream out)	创建新数据输出流包装基础的字节输出流public final void writeByte(int v) throws IOException	将byte类型的数据写入基础的字节输出流public final void writeInt(int v) throws IOException	将int类型的数据写入基础的字节输出流public final void writeDouble(Double v) throws IOException	将double类型的数据写入基础的字节输出流public final void writeUTF(String str) throws IOException	将字符串数据以UTF-8编码成字节写入基础的字节输出流public void  write(int/byte[]/byte[]一部分)	支持写字节数据出去DataInputStream(数据输入流)public DataInputStream(InputStream is)	创建新数据输入流包装基础的字节输入流Public final byte readByte() throws IOException	读取字节数据返回public final int readInt() throws IOException	读取int类型的数据返回public final double readDouble() throws IOException	读取double类型的数据返回public final String readUTF() throws IOException	读取字符串数(UTF-8)据返回public int readInt()/read(byte[])	支持读字节数据进来
*/
public class Demo1 {public static void main(String[] args) throws Exception {//创建数据输出流,写出数据到文件DataOutputStream dos = new DataOutputStream(new FileOutputStream("day09-code/e-1.txt"));dos.writeByte(100);dos.writeInt(100);dos.writeDouble(88.88);dos.writeUTF("英文");dos.close();//创建数据输入流,读取数据到程序//什么顺序写的,就什么顺序往外拿DataInputStream dis = new DataInputStream(new FileInputStream("day09-code/e-1.txt"));System.out.println(dis.readByte());System.out.println(dis.readInt());System.out.println(dis.readDouble());System.out.println(dis.readUTF());dis.close();}
}

         IO流-序列化流

        对象序列化:把Java对象写入到文件中去

        对象反序列化:把文件里的Java对象读出来

         ObjectOutputStream(对象字节输出流)

可以把Java对象进行序列化:把Java对象存入到文件中去。

方法

说明

public ObjectOutputStream(OutputStream out)

创建对象字节输出流,包装基础的字节输出流

public final void writeObject​(Object o) throws IOException

把对象写出去

        ObjectInputStream(对象字节输) 

可以把Java对象进行反序列化:把存储在文件中的Java对象读入到内存中来。 

方法

说明

public ObjectInputStream(InputStream is)

创建对象字节输入流,包装基础的字节输入流

public final Object readObject​()

把存储在文件中的Java对象读出来

注意:对象如果要参与序列化,必须实现序列化接口(java.io.Serializable 

/*
对象存储用一个ArrayList集合存储多个对象,然后直接对集合进行序列化即可注意:ArrayList集合已经实现了序列化接口!
*/
public class Demo2 {public static void main(String[] args) throws Exception {//0. 准备一个Student对象的集合List<Student> students = new ArrayList<>();students.add(new Student("张三", 18));students.add(new Student("李四", 19));students.add(new Student("王五", 20));//1. 序列化(f-1.txt)ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("day09-code/f-1.txt"));//写入文件oos.writeObject(students);//关闭oos.close();//2. 反序列化(f-1.txt)ObjectInputStream ois = new ObjectInputStream(new FileInputStream("day09-code/f-1.txt"));List<Student> obj = (List<Student>) ois.readObject();System.out.println(obj);ois.close();}
}

        1、对象序列化的含义是什么?怎么实现对象序列化?需要注意什么?

                把对象数据存入到文件中去对象字节输出流

                ObjectOutputStreampublic void write

                Object(Object obj)对象必须实现序列化接口

        2、 对象反序列化的含义是什么?怎么实现对象反序列化?

                把对象数据存入到文件中去。

                对象字节输入流ObjectInputStream

                public Object readObject()

          释放资源的方式

        try-catch-finally

 

  • finally代码区的特点:无论try中的程序是正常执行了,还是出现了异常,最后都一定会执行finally区,除非JVM终止。
  • 作用:一般用于在程序执行完成后进行资源的释放操作(专业级做法)。
/*
try-catch-finallytry {...} catch (IOException e) {...}finally{...}注意:1. finally代码块写在try-catch的最后面2. 无论try的代码是否出现问题, 最后一定会执行finally中的代码,除非JVM终止
*/
public class Demo1 {public static void main(String[] args) throws IOException {FileInputStream fis = null;FileOutputStream fos = null;try {//1. 创建文件字节输入流、输出流fis = new FileInputStream("D:/upload/other/duotai1.wmv");fos = new FileOutputStream("D:/upload/other/duotai2.wmv");//2. 使用输入流读取内容,使用输出流写出内容byte[] bytes = new byte[1024];int len = 0;while ((len = fis.read(bytes)) != -1) {fos.write(bytes, 0, len);}} catch (IOException e) {e.printStackTrace();} finally {//3. 释放资源try {fos.close();} catch (Exception e) {e.printStackTrace();}try {fis.close();} catch (Exception e) {e.printStackTrace();}}}
}

         try-with-resource (JDK7开始提供)

  • () 中只能放置资源,否则报错
  • 什么是资源呢?
  • 资源一般指的是最终实现了AutoCloseable接口。

/*
try-with-resourceJDK7开始提供的释放资源方式,编码更简洁书写格式try(资源对象1,资源对象2..){...}catch(Exception e){处理异常的代码}注意:try后面小括号中只能定义资源对象,最终底层会帮我们释放这些对象
*/
public class Demo2 {public static void main(String[] args) throws IOException {try (//1. 创建文件字节输入流、输出流FileInputStream fis = new FileInputStream("D:/upload/other/duotai1.wmv");FileOutputStream fos = new FileOutputStream("D:/upload/other/duotai2.wmv");){//2. 使用输入流读取内容,使用输出流写出内容byte[] bytes = new byte[1024];int len = 0;while ((len = fis.read(bytes)) != -1) {fos.write(bytes, 0, len);}} catch (IOException e) {e.printStackTrace();}}
}

        相关题目 

/*
finally相关面试题1. try-catch-finally 中哪个部分可以省略?2. final,finally和finalize的区别3. 关于finally在try-catch中的执行顺序当try和catch代码块中有return语句时,finally仍然会被执行执行try或catch代码块中的return语句之前,都会先执行finally语句finally代码块中的return语句一定会执行无论在finally代码块中是否有返回值,返回值都不会改变,仍然是执行finally代码块之前的值
*/
public class Demo3 {public static void main(String[] args) {//System.out.println(m1());//System.out.println(m2());//System.out.println(m3());System.out.println(m4());}//当try和catch代码块中有return语句时,finally仍然会被执行//执行try或catch代码块中的return语句之前,都会先执行finally语句public static int m1() {try {return 1;} finally {System.out.println("执行finally模块");}}public static int m2() {try {int a = 8 / 0;return 1;} catch (Exception e) {return 2;} finally {System.out.println("执行finally模块");}}//finally代码块中的return语句一定会执行public static int m3() {try {int a = 8 / 0;return 1;} catch (Exception e) {return 2;} finally {System.out.println("执行finally模块");return 0;}}//无论在finally代码块中是否有返回值,返回值都不会改变,仍然是执行finally代码块之前的值public static int m4() {int result = 0;try {return result;} finally {System.out.println("执行finally模块");result = 1;}}}

          IO框架

        什么是框架?

  • 解决某类问题,编写的一套类、接口等,可以理解成一个半成品。
  • 好处:在框架的基础上开发,可以得到优秀的软件架构,并能提高开发效率
  • 框架的形式:一般是把类、接口等编译成class形式,再压缩成一个.jar结尾的文件发行出去。

         什么是IO框架?

        封装了Java提供的对文件、数据进行操作的代码,对外提供了更简单的方式来对文件进行操作,对数据进行读写等。 

          Commons-io

        Commons-io是apache开源基金组织提供的一组有关IO操作的小框架,目的是提高IO流的开发效率。 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Qt】窗口移动和大小改变事件

窗口移动和大小改变事件 moveEvent窗口移动时触发的事件resizeEvent窗口大小改变时触发的事件 例子&#xff1a;测试移动窗口和改变窗口事件 代码展示 #include "widget.h" #include "ui_widget.h"#include <QDebug> #include <QMoveEvent> …

Springboot中基于X509完成SSL检验的原理与实践

前言 各位对HTTPS不陌生吧&#xff1f;几乎涉及安全的领域&#xff0c;均要求通过HTTPS协议进行数据传输。而在传输过程中&#xff0c;又涉及到了SSL证书的使用。既然提到了SSL证书&#xff0c;那咱们先了解了解什么是SSL证书&#xff1a; SSL证书通过在客户端浏览器和Web服务…

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件&#xff1f;是否可以恢复永久删除的文件&#xff1f;或者最糟糕的是&#xff0c;如果文件直接被删除怎么办&#xff1f;本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件&#xff1f; “回收站清空后…

show命令监控分析mysql实例信息

文章目录 思维导图show 查看数据库实例相关信息SHOW VARIABLES 分析数据库当前变量设置分析连接数据分析线程数分析慢查询变量分析缓存相关分析字符集相关 SHOW STATUS 数据库当前实时状态分析分析连接数据分析线程数分析慢查询分析查询缓存分析排序使用情况分析文件打开数mysq…

spring的xml配置文件爆红(原因以及解决办法)

1&#xff09;出现这个原因是因为spring-framework依赖没有导入 可以看到依赖已经导入了 2&#xff09;第二种原因:我们打开maven工程就是不出现右上角刷新的按钮&#xff0c;导致我们无法导入依赖 解决办法如下

【Qt】qt发布Release版本,打包.exe可执行文件

前言&#xff1a;Qt编译的可执行程序&#xff0c;如果直接运行&#xff0c;会出现0xc000007b报错&#xff0c;或者“由于占不到Qt5Network.dll,无法继续执行代码。重新安装程序可能会解决此问题”的报错&#xff0c;因为缺少相关的依赖包和动态库。 1、第一步&#xff1a;找到…

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、…

网络学习-eNSP配置ACL

AR1路由器配置 <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]undo info-center enable Info: Information center is disabled. [Huawei]interface gigabitethernet 0/0/0 [Huawei-GigabitEthernet0/0/0]ip address 192.168.2.254 24 …

Shader 渲染路径

实际的游戏开发中&#xff0c;场景中的光源肯定是更多、更复杂的&#xff0c;如果只有一个平行光的处理&#xff0c;完全不能满足需求。处理更多的光源&#xff0c;我们就需要了解Unity底层是如何处理这些光源的。 1、渲染路径是什么 渲染路径&#xff08;Rendering Path&…

9.8笔试记录

1.在c中哪些运算符不能重载? 在 C 中&#xff0c;有以下几个运算符不能被重载&#xff1a; . &#xff1a;成员访问运算符。例如obj.member中的.不能被重载。 :: &#xff1a;作用域解析运算符。用于指定命名空间、类等的作用域&#xff0c;不能被重载。 ?: &#xff1…

Linux-文本处理三剑客:grep、sed-和-awk

awk、grep、sed是linux操作文本的三大利器&#xff0c;合称文本三剑客&#xff0c;也是必须掌握的linux命令之一。三者的功能都是处理文本&#xff0c;但侧重点各不相同&#xff0c;其中属awk功能最强大&#xff0c;但也最复杂。grep更适合单纯的查找或匹配文本&#xff0c;sed…

Window下编译OpenJDK17

本文详细介绍Window下如何编译OpenJDK17&#xff0c;包含源码路径&#xff0c;各工具下载地址&#xff0c;严格按照文章中的步骤来操作&#xff0c;你将获得一个由自己亲手编译出的jdk。 一、下载OpenJDK17源码 下载地址&#xff1a;GitHub - openjdk/jdk at jdk-1735 说明&a…

【重学 MySQL】二十、运算符的优先级

【重学 MySQL】二十、运算符的优先级 MySQL 运算符的优先级&#xff08;由高到低&#xff09;注意事项示例 在 MySQL 中&#xff0c;运算符的优先级决定了在表达式中各个运算符被计算的先后顺序。了解运算符的优先级对于编写正确且高效的 SQL 语句至关重要。以下是根据高权威性…

神仙公司名单(北京)

神仙公司&#xff08;北京&#xff09; 接着奏乐接着舞&#xff0c;神仙公司系列。 这次写之前几期评论区呼声极高的城市&#xff1a;北京。 北京&#xff0c;是许多人外出打工的梦想之都&#xff0c;是年轻人逃离农村的终点站。 在近两年的就业蓝皮书「外省籍毕业生占比较高城…

react文件详情

1、node_modules&#xff1a;存放项目所依赖的一些第三方包文件 2、public&#xff1a;静态资源文件夹 favicon.ico&#xff1a;导航图标 index.html&#xff1a;项目首页的html模版 logo192.png&#xff1a;logo图片 logo512.png&#xff1a;logo图片 manifest.json&#…

鸿蒙轻内核M核源码分析系列十九 Musl LibC

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 轻内核M核源码分析系列一 数据结构-双向循环链表 轻内核M核源码分析系列二 数据结构-任务就绪队列 鸿蒙轻内核M核源码分析系列三 数据结构-任务排序链表 轻…

前端:HTML、CSS、JS、Vue

1 前端 内容概要 了解前端三件套(HTML、CSS、JS)在前端所起的作用掌握HTML标签的功能&#xff0c;掌握重要标签(a标签&#xff0c;form标签)了解CSS了解JS的基础语法掌握Vue的基础语法重点掌握Vue项目怎么启动项目掌握前后端分离是什么。前端做什么事情&#xff0c;后端做什么…

2024年第十五届蓝桥杯青少组国赛撞期GESP认证、放弃那个?

昨天蓝桥杯青少组官网发布了速查|第十五届蓝桥杯大赛青少组省赛成绩查询&#xff0c;首先恭喜2024年蓝桥杯青少组省赛一等奖的同学晋级蓝桥杯大赛青少组国赛&#xff0c;蓝桥杯青少组国赛的时间为2024年9月7日&#xff0c;CCF GESP编程能力等级认证也在同一天开始&#xff0c;同…

云服务器部署DB-GPT项目

项目介绍 DB-GPT 是一个将大语言模型LLM与数据库结合的开源项目。它主要研究如何使预训练的大规模语言模型&#xff08;如 GPT&#xff09;能够直接与数据库交互&#xff0c;以生成更加准确和信息丰富的回答。这个项目通过特殊的训练方法&#xff0c;教会模型理解和生成能够进行…

vue+ThreeJS:从0 到1 搭建开发环境

文章目录 一、下载安装&#xff08;懒人版&#xff09;二、顺序安装1&#xff0c;下载安装nodejs2&#xff0c;安装vue-cli3&#xff0c;创建vue-three 项目。4&#xff0c;安装threeJS5&#xff0c;安装element UI &#xff08;选装&#xff09;最终package.json文件如下&…