当前位置: 首页 > news >正文

java基础-chapter15(io流)

io流:存储和读取数据的解决方案

I:input         O:output

io流的作用:用于读写数据(本地文件,网络)

io流按照流向可以分为:

输出流:程序->文件

输入流:文件->程序

io流按照操作文件的类型可分类为:

字节流:可以操作所有类型的文件

字符流:只能操作纯文本文件(能用电脑自带记事本打开并且能读懂的文件)

File:表示系统中的文件或者文件夹的路径

获取文件信息(大小,文件名,修改时间) 判断文件的类型

创建文件/文件夹         删除文件/文件夹

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据

字节流

FileOutputStream

操作本地文件的字节输出流,可以把程序中的数据写在本地文件中

步骤:

1.创建字节输出流对象

2.写数据

3.释放资源

FileOutputStream原理

通过创建对象 传入路径 使程序和文件产生数据传输通道

 FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");

通过调用write方法写入数据 

fos.write(97);

调用close方法释放资源(断开程序和文件之间的连接)

 fos.close();

FileOutputStream书写细节

创建字节输出流对象 

细节1:参数可以是字符串表示的路径或者是File对象

细节2:如果文件不存在,会创建一个新的文件,但是要保证父级路径是存在的

细节3:如果文件已经存在,则会清空文件

写出数据

细节:write方法的参数是整数,但是实际上写到本地文件中的是整数在ASCII上对应的字符

释放资源

每次使用完流之后都要释放资源

FileOutputStream写数据的3种方式

一次写一个字节数组数据

public class ByteStreamDemo2 {public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");//一次写一个字节数组数据byte[] bytes = {97,98,99,100,101,102};//调用write方法将数组写入文件fos.write(bytes);//释放资源fos.close();}
}

一次写一个字节数组的部分数据

public class ByteStreamDemo3 {public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");/*void write(byte[] b,int off,int len)参数一:数组  参数二:起始索引  参数三:个数一次写一个字节数组的部分数据*/byte[] bytes = {97,98,99,100,101,102};//调用write方法将数组写入文件fos.write(bytes,2,2); //cd//释放资源fos.close();}
}

FileOutputStream写数据的两个小问题

换行写

public class ByteStreamDemo4 {public static void main(String[] args) throws IOException {/*换行写写出一个换行符Windows: \r\nLinux:   \nMac:     \r*/FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");//写出数据 huluyazhenshuaiString str = "huluyazhenshuai";//调用getBytes方法把字符串变成字节数组byte[] bytes = str.getBytes();
//        System.out.println(Arrays.toString(bytes));/*变成字节数组[104, 117, 108, 117, 121, 97, 122, 104, 101, 110, 115, 104, 117, 97, 105]*///调用write方法写入数据fos.write(bytes);String str2= "\r\n"; //写出换行符fos.write(str2.getBytes());String str3 = "666";fos.write(str3.getBytes());/*文件中的数据:huluyazhenshuai666*///释放资源fos.close();}
}

续写

如果想要续写,打开续写开关即可

开关位置:创建对象的第二个参数

默认false:表示续写,此时创建对象就可以清空文件

手动传递true;表示打开续写,此时创建对象不会清空文件

 FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt",true);

FileOutputStream小结

作用:可以把程序中的数据写到本地文件中,是字节流的基本流

书写步骤:创建对象        写出数据        释放资源

三步操作的细节:

创建对象: 文件存在(清空文件)  文件不存在(创建文件)  追加写入(true)

写出数据:写出整数  写出字节数组  换行写

释放资源:关闭通道

字节输入流的基本用法

FileInputStream

操作本地文件的字节输入流,可以把本地文件中的数据读取到程序中来

书写步骤

1.创建对象

2.读数据

3.释放资源

FileInputStream书写细节

1.创建对象

细节1:如果文件不存在,就直接报错

2.读数据

细节1:一次读一个字节,读出来的是数据在ASCII上对应的数字

细节2:读到文件末尾,read方法返回-1

3.释放资源

FileInputStream循环读取

public class FileInputStreamDemo2 {public static void main(String[] args) throws IOException {//字节输入流循环读取FileInputStream fis = new FileInputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");//循环读取int b;while ((b = fis.read()) != -1) { //read:表示读取数据 并且读取一次数据就会移动一次指针System.out.println((char) b);}//释放资源fis.close();}
}

文件拷贝

public class FileInputStreamDemo3 {public static void main(String[] args) throws IOException {/*练习:文件拷贝*///创建对象FileInputStream fis = new FileInputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\copy.txt");//拷贝  边读边写int b;while ((b = fis.read()) != -1){ fos.write(b);}//释放资源fos.close();fis.close();}
}

FileInputStream读取的问题

一次读写一个字节

public class FileInputStreamDemo4 {public static void main(String[] args) throws IOException {//一次读一个字节数组数据//创建对象FileInputStream fis = new FileInputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");//创建数组//表示一次读两个数据byte [] bytes = new byte[2];//返回值len:表示本次读取到了多少个字节数据int len1 = fis.read(bytes);System.out.println(len1); //2String str1 = new String(bytes,0,len1);System.out.println(str1);int len2 = fis.read(bytes);System.out.println(len2); //2String str2 = new String(bytes,0,len2);System.out.println(str2);int len3 = fis.read(bytes);System.out.println(len3); //1String str3 = new String(bytes,0,len3);System.out.println(str3);fis.close();}
}

GBK和Unicode

  1. GBK:在GBK字符集中,每个中文字符占据两个字节。

  2. Unicode:Unicode字符集中,在UTF-8字符集中,中文字符通常占用3个字节的空间。UTF-8是一种可变长度的编码方案,用于表示Unicode字符集中的字符。对于常见的汉字,UTF-8编码通常占用3个字节,但对于罕见的汉字,也可能会占用更多的字节。

public class CharSetDemo1 {public static void main(String[] args) throws UnsupportedEncodingException {/*java中编码的方法public byte[] getBytes() 默认方式进行编码public byte[] getBytes(String charsetName) 指定方式进行编码java中解码的方法String (byte[] bytes) 默认方式进行解码String (byte[] bytes,String charsetName) 指定方式进行解码*///1.编码String str1 = "ai你哟";byte[] bytes1 = str1.getBytes();System.out.println(Arrays.toString(bytes1)); //[97, 105, -28, -67, -96, -27, -109, -97]byte[] bytes2 = str1.getBytes("GBK");System.out.println(Arrays.toString(bytes2)); //[97, 105, -60, -29, -45, -76]//解码String str2 = new String(bytes1);System.out.println(str2); //ai你哟String str3 = new String(bytes1,"GBK");System.out.println(str3); //ai浣犲摕}
}

字符流

FileReader

import java.io.FileReader;
import java.io.IOException;/*** @author hyk~*/
public class FileReaderDemo1 {public static void main(String[] args) throws IOException {//创建对象并关联本地文件FileReader fr = new FileReader("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");//读取数据read()//字符流的底层也是字节流,默认也是一个字节一个字节的读取//但是遇到中文会一次读多个字节 GBK读2个 utf-8读3个int ch;while((ch = fr.read()) != -1){System.out.print((char) ch);/*read () 细节:1.read():默认也是一个字节一个字节的读取的,如果遇到中文就会一次读取多个2.在读取之后,方法的底层还会进行解码并转成十进制。最终把这个十进制作为返回值 这个十进制的数据也表示在字符集上的数字英文: 文件里面二进制数据 0110 0001read方法进行读取,解码并转成十进制97中文: 文件里面的二进制数据 11100110 10110001 1001001read方法进行读取,解码并转成十进制27721如果想看到中文汉字,就把这些十进制数据,再进行强转就可以了 (char) ch*/}//释放资源fr.close();}
}

FileWriter

1.创建字符输出流对象

细节1:参数是字符串表示的路径或者File对象都是可以的

细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

细节3:如果文件已存在,则会清空文件,如果不想清空可以打开续写开

2.写数据

细节:如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符

3.释放资源

细节:每次使用完流后都要释放资源

public class FileReaderDemo3 {public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");fw.write("大家好,我是学生");fw.close();}
}

字节流和字符流使用场景

字节流

拷贝任意类型的文件

package itemIO;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*** @author hyk~*/
public class Test1 {public static void main(String[] args) throws IOException {//拷贝一个文件夹,考虑子文件夹//创建对象表示数据源File src = new File("D:\\ideaProject\\src");//创建对象表示目的地File dest = new File("D:\\ideaProject\\src10086");//调用方法开始拷贝copyDir(src,dest);}/*作用:拷贝文件夹参数一:数据源参数二:目的地*/private static void copyDir(File src, File dest) throws IOException {dest.mkdirs();//递归//进入数据源File[] files = src.listFiles();//遍历数组for (File file : files) {//判断文件,拷贝if (file.isFile()) {FileInputStream fis = new FileInputStream(file);//要拷贝的文件FileOutputStream fos = new FileOutputStream(new File(dest,file.getName()));//文件目的地byte[] bytes = new byte[1024];int len;while ((len = fis.read(bytes)) != -1) {fos.write(bytes, 0, len);//bytes数组中从0索引开始,一共len个元素拷贝}fos.close();fis.close();}else {//判断文件夹,递归copyDir(file,new File(dest,file.getName())); //要拷贝的文件夹,目的地}}}
}

文件加密

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;/*** @author hyk~*/
public class Test2 {/*为了保证文件的安全性,就需要对原始文件进行加密存储再使用的时候再对其进行解密处理加密原理:对原始文件中的每一个字节数据进行更改,然后将更改以后的数据存储到新的文件中解密原理:读取加密之后的文件,按照加密的规则反向操作,变成原始文件*/public static void main(String[] args) throws IOException {//创建对象关联原始文件FileInputStream fis = new FileInputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\1.png");//创建对象关联加密文件FileOutputStream fos = new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\ency.png");//加密处理int b;while((b = fis.read()) != -1){fos.write(b ^ 10);}fos.close();fis.close();}
}

解密操作:

修改文件中的数据

package itemIO;import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;/*** @author hyk~*/
public class Test3 {/*文本文件中有以下的数据:2-1-9-4-7-8将文件中的数据进行排序,变成以下的数据:1-2-4-7-8-9*/public static void main(String[] args) throws IOException {//读取数据FileReader fr = new FileReader("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");StringBuilder sb = new StringBuilder();int ch;while((ch = fr.read()) != -1){sb.append((char) ch);}fr.close();//排序String str = sb.toString();String [] arr = str.split("-");ArrayList list = new ArrayList();for (String s : arr) {int i = Integer.parseInt(s);list.add(i);}Collections.sort(list);//写出FileWriter fw = new FileWriter("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt");for (int i = 0; i < list.size(); i++){if (i == list.size() -1){fw.write(list.get(i) + "");}else {fw.write(list.get(i)+"-");}}fw.close();}
}

字节缓冲流

import java.io.*;/*** @author hyk~*/
public class BufferedStreamDemo2 {public static void main(String[] args) throws IOException {/*需求:利用字节缓冲流拷贝文件字节缓冲输入流的构造方法:public BufferedInputStream(Inputstream is)字节缓冲输出流的构造方法:public BufferedOutputstream(Outputstream os)*///创建缓冲流的对象BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\copy.txt"));//拷贝 一次读写多个字节byte[] bytes = new byte[1024];int len;while ((len = bis.read(bytes))!= -1){bos.write(bytes,0,len);}bos.close();bis.close();}
}

字符缓冲流

public class BufferedStreamDemo3 {public static void main(String[] args) throws IOException {/*字符缓冲输入流:构造方法:public BufferedReader(Reader r)特有方法:public String readLine()读一整行*///创建字符缓冲流的对象BufferedReader br = new BufferedReader(new FileReader("D:\\ideaProject\\study\\AdvancedJava3\\src\\itemIO\\a.txt"));//读取数据String line;while (((line = br.readLine()) != null)){System.out.println(line);}//释放资源br.close();}
}

字符流

读取纯文本文件中的数据

往纯文本文件中写出数据

转换流

转换流主要有两种类型:InputStreamReader OutputStreamWriter

它们的作用是在字节流和字符流之间建立桥梁,使得字节流能够以字符流的形式被读取,或者字符流能够以字节流的形式被写入。

创建转换流:

1. 创建 InputStreamReader
FileInputStream fis = new FileInputStream("input.txt"); // 创建字节输入流
InputStreamReader isr = new InputStreamReader(fis); // 创建转换流
2. 创建 OutputStreamWriter
FileOutputStream fos = new FileOutputStream("output.txt"); // 创建字节输出流
OutputStreamWriter osw = new OutputStreamWriter(fos); // 创建转换流

在创建转换流时,你可以选择是否指定字符集。如果不指定字符集,将会使用系统默认的字符集。例如,可以这样指定字符集:

InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); // 指定字符集为UTF-8
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); // 指定字符集为UTF-8

使用转换流:

1. 使用 InputStreamReader 读取文件内容:
BufferedReader br = new BufferedReader(isr); // 创建缓冲字符流
String line;
while ((line = br.readLine()) != null) {System.out.println(line); // 输出每一行内容
}
2. 使用 OutputStreamWriter 写入数据:
BufferedWriter bw = new BufferedWriter(osw); // 创建缓冲字符流
bw.write("Hello, world!"); // 写入字符串
bw.newLine(); // 写入换行符
bw.close(); // 关闭流

序列化流

序列化流在Java中是用来将对象转换为字节流的一种方式。主要用于对象的持久化存储或网络传输。Java提供了两种序列化流:ObjectOutputStream 用于将对象写入到流中,ObjectInputStream 用于从流中读取对象。

创建序列化流:

1. 创建 ObjectOutputStream
FileOutputStream fos = new FileOutputStream("object.dat"); // 创建字节输出流
ObjectOutputStream oos = new ObjectOutputStream(fos); // 创建序列化流
2. 创建 ObjectInputStream
FileInputStream fis = new FileInputStream("object.dat"); // 创建字节输入流 
ObjectInputStream ois = new ObjectInputStream(fis); // 创建反序列化流

使用序列化流:

1. 使用 ObjectOutputStream 写入对象:
MyObject obj = new MyObject(); // 创建一个自定义对象
oos.writeObject(obj); // 将对象写入流中
2. 使用 ObjectInputStream 读取对象:
MyObject obj = (MyObject) ois.readObject(); // 从流中读取对象,并进行类型转换

注意事项:

  1. 被写入流中的对象必须实现 Serializable 接口,否则会抛出 java.io.NotSerializableException 异常。
  2. 对象中的静态变量不会被序列化,因为静态变量属于类而不是对象。
  3. 有时候需要对某些敏感信息进行序列化时,可以使用 transient 关键字来标记不需要序列化的字段。
  4. 序列化的版本号可以通过 serialVersionUID 显式声明,以控制序列化对象的版本。
import java.io.*;class MyObject implements Serializable {private static final long serialVersionUID = 1L;private String name;public MyObject(String name) {this.name = name;}public String getName() {return name;}
}public class Main {public static void main(String[] args) {try {// 创建对象输出流FileOutputStream fos = new FileOutputStream("object.dat");ObjectOutputStream oos = new ObjectOutputStream(fos);// 写入对象MyObject obj1 = new MyObject("Object 1");oos.writeObject(obj1);// 关闭对象输出流oos.close();// 创建对象输入流FileInputStream fis = new FileInputStream("object.dat");ObjectInputStream ois = new ObjectInputStream(fis);// 读取对象MyObject obj2 = (MyObject) ois.readObject();System.out.println("Name: " + obj2.getName());// 关闭对象输入流ois.close();} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
}

这段代码演示了如何创建和使用序列化流来序列化和反序列化对象。请确保在处理异常时进行适当的处理,比如打印错误信息或者进行其他的异常处理操作。

相关文章:

java基础-chapter15(io流)

io流&#xff1a;存储和读取数据的解决方案 I:input O:output io流的作用&#xff1a;用于读写数据&#xff08;本地文件,网络&#xff09; io流按照流向可以分为&#xff1a; 输出流&#xff1a;程序->文件 输入流&#xff1a;文件->程序 io流按照操作文件…...

mysql去除重复数据

需求描述 doc表有很多重复的title,想去除掉重复的记录 表结构 CREATE TABLE doc (id INT PRIMARY KEY,title VARCHAR(255),content TEXT );去重SQL -- 创建临时表 CREATE TEMPORARY TABLE temp_doc AS SELECT * FROM doc WHERE 10;-- 插入唯一的记录&#xff08;每个title最…...

MySQL基础索引知识【索引创建删除 | MyISAM InnoDB引擎原理认识】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;索引用…...

SJ601-II垂直法阻燃性能测试仪

一、主要用途 主要用于有阻燃要求的纺织品如机织物、针织物、涂层产品、层压产品、服装织物、装饰织物、帐篷织物、窗帘幕布、建材装饰织物等材料阻燃性能的测定。并用于窗帘幕布阻燃等级的测定和防火封堵材料的型式过证。 二、仪器特征 1、脉冲自动点火&#xff0c;安全可靠…...

瑞吉外卖项目学习笔记(二)后台系统的员工管理业务开发

一、完善登录功能 1.1 问题分析 1.2 代码实现 package com.itheima.reggie.filter;//这是一个过滤器类 //登录检查过滤器import com.alibaba.fastjson.JSON; import com.itheima.reggie.common.R; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf…...

Unity OutLine 模型外描边效果

效果展示&#xff1a; 下载链接...

CRLF注入漏洞

1.CRLF注入漏洞原理 Nginx会将 $uri进行解码&#xff0c;导致传入%0a%0d即可引入换行符&#xff0c;造成CRLF注入漏洞。 执行xss语句 2.漏洞扩展 CRLF 指的是回车符(CR&#xff0c;ASCII 13&#xff0c;\r&#xff0c;%0d) 和换行符(LF&#xff0c;ASCII 10&#xff0c;\n&am…...

理解接口回调及其在 RabbitMQ 中的实际运用

介绍 接口回调是一种常见的编程模式&#xff0c;它在异步编程中发挥着重要作用。本文将通过一个简单的示例介绍接口回调的概念和原理&#xff0c;并探讨它在 RabbitMQ 中的实际应用。 接口回调的概念 接口回调是一种编程模式&#xff0c;用于在异步编程中实现回调机制。它允许…...

大模型日报2024-05-31

大模型日报 2024-05-31 大模型资讯 Anthropic揭示Claude大语言模型的内部机制 摘要: 研究人员将大语言模型的活动模式与特定概念关联起来&#xff0c;并展示了他们可以通过调整这些模式来控制AI模型的行为。 Mistral AI开源新款代码语言模型Codestral 摘要: 人工智能初创公司Mi…...

HarmonyOS 鸿蒙DevEco:导入无法运行提示Sync failed

场景&#xff1a;导入官网下载的案例后导入发现无法运行模拟机&#xff0c;Notifications提示Sync failed... 解决&#xff1a;查看Cause发现是版本问题&#xff0c;通过修改相关内容来解决该问题 1、打开案例地址找到hvigor文件夹 2、打开hvigor-config.json5&#xff0c;将&…...

kafka的安装

windows下kafka的安装 【Kafka】Windows下安装Kafka&#xff08;图文记录详细步骤&#xff09;_windows安装kafka-CSDN博客 kafka生产消息 kafka消费消息...

代码随想录算法训练营第36期DAY45

DAY45 1两数之和 [https://www.bilibili.com/video/BV1pt421u7qG/?spm_id_from333.880.my_history.page.click&vd_sourcebaa5f3043be10f96febc0c68c5983df5] 出自B站热血编程系列&#xff0c;主要是复习双指针sum写法、重载比较运算符 class Solution {public: vec…...

springboot+vue 社区养老服务系统

Springbootvue社区居家养老服务系统&#xff0c;数据库mysql&#xff0c;mybatis框架&#xff0c;有可视化页面。 功能&#xff1a; 用户管理 养老服务管理 护理人员管理 服务类型管理 健康状况管理 社区管理 服务区管理 娱乐资讯管理 咨询分类管理 反馈建议 系统简历管理 轮播…...

AI 赋能前端 -- 文本内容概要生成

幸福不在于你获得了什么,而在于你比他人多获得了什么 是比较出来的 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 OpenAILangChainRust/WebAssemblyWeb Workerreact+ts+vite配置环境变量(env)因为,行文字数所限,有些概…...

orin部署tensorrt、cuda、cudnn、pytorch、onnx

绝大部分参考https://blog.csdn.net/qq_41336087/article/details/129661850 非orin可以参考https://blog.csdn.net/JineD/article/details/131201121 报错显卡驱动安装535没法安装、原始是和l4t-cuda的部分文件冲突 Options marked [*] produce a lot of output - pipe it t…...

使用javacv对摄像头视频转码并实现播放

要实现Java接受RTSP流解码&#xff0c;并推送给前端实现播放实时流&#xff0c;可以使用一些流媒体处理库&#xff0c;比如JavaCV或者FFmpeg等。以下是一个简单的示例代码&#xff1a; 1.控制层方面的 根据视频rtsp流链接打开转换&#xff0c;通过响应写出流到前台使用flvjs播…...

Linux网络-Socket套接字_Windows与Linux端双平台基于Udp传输协议进行多线程跨平台的服务器与客户端网络通信的简易聊天室实现

文章目录 一、Socket套接字二、Udp 常见API1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. ssize_t recvfrom(int socket, void *restrict buffer, size_t length, i…...

20分钟快速入门SQL

SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是一种专门用来管理和操作关系型数据库的编程语言。以下是SQL入门的一些基础概念和教程&#xff1a; 1. SQL基础 数据库&#xff08;Database&#xff09;&#xff1a;存储数据的集合。表&am…...

汇总区间,合并区间

题目一&#xff1a; 代码如下&#xff1a; vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…...

Web程序设计-实验05 DOM与BOM编程

题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面&#xff08;详见参考资源&#xff0c;建议自行搜索更多后台页面&#xff09;的主要元素构成和版面设计&#xff0c;借鉴并构思预期效果。 2、新建 index.h…...

Window系统安装Docker

因为docker只适合在liunx系统上运行&#xff0c;如果在window上安装的话&#xff0c;就需要开启window的虚拟化&#xff0c;打开控制面板&#xff0c;点击程序&#xff0c;在程序和功能中可以看到启动和关闭window功能&#xff0c;点开后&#xff0c;找到Hyper-V&#xff0c;Wi…...

RabbitMQ不完整的笔记

同步的不足 1、拓展性差&#xff0c;当要添加功能时&#xff0c;需要在原来的功能代码上做修改&#xff0c;高耦合。 2、性能下降&#xff0c;调用者需要等待服务提供者执行完返回结果后&#xff0c;才能继续向下执行 3、级联失败&#xff0c;由于我们是基于OpenFeign调用交易…...

微软Edge浏览器深度解析:功能、同步、隐私与安全

微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…...

网络性能测试工具:iperf3介绍

文章目录 前言一、iperf3 的安装和使用下载和安装参数说明 二、iperf3 测试服务端启动客户端启动服务端输出反向测试客户端服务端 前言 新接触的网络环境如何评估网络带宽和吞吐量呢&#xff0c;有的项目没有对业务流量进行合理规划&#xff0c;服务或者中间件出口带宽经常有被…...

scp:Linux系统本地与远程文件传输命令

scp 是Linux系统中用于在本地主机和远程主机之间进行文件传输的命令。 详细说明&#xff1a; scp 命令用于安全地将文件从一个主机传输到另一个主机&#xff0c;所有传输数据都是加密的。语法&#xff1a; scp [参数] [源文件路径] [目标主机:目标路径] 参数说明&#xff1a…...

python基础(习题、资料)

免费提取资料&#xff1a; 练习、资料免费提取。持续更新迅雷云盘https://pan.xunlei.com/s/VNz6kH1EXQtK8j-wwwz_c0k8A1?pwdrj2x# 本文为Python的进阶知识合辑&#xff0c;包括列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、字典&#xff08;Dic…...

shell脚本免交互

shell脚本的编写一方面为了减少我们命令的输入&#xff0c;另一方面也可以进行简单的自动化运行&#xff0c;其中为了实现自动化过程&#xff0c;一个很重要的点就是免交互&#xff0c;本篇文章跟大家简单分享两个常用的免交互的方法。 Here Document Here document 通过内联重…...

WPF学习笔记:给文字添加线性渐变效果

<TextBox Text"XXX信息管理系统" VerticalAlignment"Center" Background"Transparent" HorizontalAlignment"Center" FontSize"35" FontWeight"Normal"> <TextBox.Effect> <…...

Fully Convolutional Networks for Semantic Segmentation--论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型&#xff0c;可以产生特征层次结构。我们表明&#xff0c;卷积网络本身&#xff0c;经过端到端&#xff0c;像素对像素的训练&#xff0c;在…...

Camworks编程怎么样:深度解析其四大特点、五大应用领域、六大优势与七大挑战

Camworks编程怎么样&#xff1a;深度解析其四大特点、五大应用领域、六大优势与七大挑战 Camworks编程&#xff0c;作为计算机辅助制造&#xff08;CAM&#xff09;领域的一款重要软件&#xff0c;近年来在制造业中得到了广泛的应用。那么&#xff0c;Camworks编程究竟怎么样呢…...

【Linux】操作系统之冯诺依曼体系

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 操作系统中 冯诺依曼体系 的相关内容。 如果看到最后您觉得这篇文…...

c++ QT 实现QMediaPlayer播放音频显示音频级别指示器

文章目录 效果图概述代码总结 效果图 概述 QMediaPlayer就不介绍了&#xff0c;就提供了一个用于播放音频和视频的媒体播放器 QAudioProbe 它提供了一个探针&#xff0c;用于监控音频流。当音频流被捕获或播放时&#xff0c;QAudioProbe 可以接收到音频数据。这个类在需要访问…...

失之毫厘差之千里之load和loads

起源 最近在读pandas库的一些文档的时候&#xff0c;顺便也会将文档上的一些demo在编辑器中进行运行测试&#xff0c;其中在读到pandas处理Json数据这一节的时候&#xff0c;我还是像往常一样&#xff0c;将文档提供的demo写一遍&#xff0c;结果在运行的时候&#xff0c;直接…...

element ui在移动端的适配问题

element ui在移动端的适配问题 问题1&#xff1a; 给el-table表头添加背景色&#xff0c;使用以下代码 :header-row-style“{ background: ‘linear-gradient(90deg, #0079FA 0%, #00C7DD 100%)’ }” 在安卓手机上显示正常&#xff0c;在ios手机上显示背景色添加到每一个th中…...

堆排序详细理解

目录 一、前备知识 二、建堆 2.2.1 向上调整算法建堆 2.2.2 向下调整算法建堆 三、排序 3.1 常见问题 3.2 思路 3.3 源码 一、前备知识 详细图解请点击&#xff1a;二叉树的顺序实现-堆-CSDN博客 本文只附上向上/向下调整算法的源码 //交换 void Swap(int* p, int* …...

RK3588+FPGA+AI高性能边缘计算盒子,应用于视频分析、图像视觉等

搭载RK3588&#xff08;四核 A76四核 A55&#xff09;&#xff0c;CPU主频高达 2.4GHz &#xff0c;提供1MB L2 Cache 和 3MB L3 &#xff0c;Cache提供更强的 CPU运算能力&#xff0c;具备6T AI算力&#xff0c;可扩展至38T算力。 产品规格 系统主控CPURK3588&#xff0c;四核…...

07-操作元素(键盘和鼠标事件)

在前面的文章中重点介绍了一些元素的定位方法&#xff0c;定位到元素后&#xff0c;就需要操作元素了。本篇总结了web页面常用的一些操作元素方法&#xff0c;可以统称为行为事件。 一、简单操作 点击按钮&#xff08;鼠标左键&#xff09;&#xff1a;click()清空输入框&…...

3389,为了保障3389端口的安全,我们可以采取的措施

3389端口&#xff0c;作为远程桌面协议&#xff08;RDP&#xff09;的默认端口&#xff0c;广泛应用于Windows操作系统中&#xff0c;以实现远程管理和控制功能。然而&#xff0c;正因为其广泛使用&#xff0c;3389端口也成为许多潜在安全威胁的入口。因此&#xff0c;确保3389…...

Java集合【超详细】2 -- Map、可变参数、Collections类

文章目录 一、Map集合1.1 Map集合概述和特点【理解】1.2 Map集合的基本功能【应用】1.3 Map集合的获取功能【应用】1.4 Map集合的两种遍历方式 二、HashMap集合2.1 HashMap集合概述和特点【理解】2.2 HashMap的组成、构造函数2.3 put、查找方法2.4 HashMap集合应用案例【应用】…...

最佳 Mac 数据恢复:恢复 Mac 上已删除的文件

尝试过许多 Mac 数据恢复工具&#xff0c;但发现没有一款能达到宣传的效果&#xff1f;我们重点介绍最好的 Mac 数据恢复软件 没有 Mac 用户愿意担心数据丢失&#xff0c;但您永远不知道什么时候会发生这种情况。无论是意外删除 Mac 上的重要文件、不小心弄湿了 Mac、感染病毒…...

芋道系统,springboot+vue3+mysql实现地址的存储与显示

1.效果图 2.前端实现&#xff1a; <el-form-item label"地址" prop"entrepriseAddress"><el-cascaderv-model"formData.entrepriseAddress"size"large":options"region"/></el-form-item> //导入组件 im…...

【C++】C++11新特性:列表初始化、声明、新容器、右值引用、万能引用和完美转发

目录 一、列表初始化 1.1 { } 初始化 1.2 std::initializer_list 二、声明 2.1 auto 2.2 decltype 2.3 nullptr 三、新容器 四、右值引用和移动语义 4.1 左值和左值引用 4.2 右值和右值引用 4.3 左值引用与右值引用比较 4.4 右值引用使用场景和意义&#xff1a;移…...

【IB Protocal Serial--WQE】

IB Protocal Serial--WQE 1 Intro1.1 What1.2 IBA WQE 本系列文章介绍RDMA技术的具体实现–InfiniBand Protocal&#xff1b; Introduce the features, capalities,components, and elements of IBA. the principles of operation. 1 Intro 1.1 What 理解IB协议下面这三句话对…...

C++ 混合运算的类型转换

一 混合运算和隐式转换 257 整型2 浮点5 行吗&#xff1f;成吗&#xff1f;中不中&#xff1f; C 中允许相关的数据类型进行混合运算。 相关类型。 尽管在程序中的数据类型不同&#xff0c;但逻辑上进行这种运算是合理的相关类型在混合运算时会自动进行类型转换&#xff0c;再…...

线性时间选择

给定线性序集中n个元素和一个整数k&#xff0c;1≤k≤n&#xff0c;要求找出这n个元素中第k小的元素 #include<iostream> #include<cstdlib> #include<time.h> using namespace std; int a[100]; int Random(int left,int right) {srand(time(NULL));return …...

【对算法期中卷子的解析和反思】

一、程序阅读并回答问题&#xff08;共30分&#xff09; #include<cstdio>#include<cstring>#include<iostream>using namespace std;char chess[10][10];int sign[10];int n, k, ans;void dfs(int x, int k) { if (k 0){ans;return; } if (xk-1 >…...

sudo apt update sudo: apt: command not found

CentOS或RHEL&#xff08;Red Hat Enterprise Linux&#xff09;系统上&#xff0c;包管理器是yum或dnf&#xff0c;而不是apt。您可以使用yum或dnf来安装软件包。以下是如何在CentOS或RHEL上安装Git的详细步骤&#xff1a; 1. 使用yum安装Git 首先&#xff0c;更新软件包列表&…...

ios:文本框默认的copy、past改成中文复制粘贴

问题 ios 开发&#xff0c;对于输入框的一些默认文案展示&#xff0c;如复制粘贴是英文的&#xff0c;那么如何改为中文的呢 解决 按照路径找到这个文件 ios/项目/Info.plist&#xff0c;增加 <key>CFBundleAllowMixedLocalizations</key> <true/> <…...

Qt moc系统的黑魔法?

Qt的元对象系统&#xff08;Meta-Object System&#xff09;是Qt框架的核心功能之一&#xff0c;为C语言增加了一些动态特性&#xff0c;借助元对象系统Qt可以实现以下功能 信号与槽机制&#xff08;Signals and Slots&#xff09;运行时类型信息&#xff08;Run-Time Type In…...

MyBatis开发中常用总结

文章目录 常用MyBatis参数映射单个参数多个参数使用索引【不推荐】Param注解Map传参POJO【推荐】List数组 动态标签\<if>标签\<trim>标签\<where>标签\<set>标签\<foreach>标签 MyBatis查询一对一一对多 常用MyBatis参数映射 单个参数 XML中可…...