JavaIO流

JavaIO流

  • 一、概念
  • 二、File类
  • 三、File类的使用
    • 1、File文件/文件夹类的创建
    • 2、File类的获取操作
    • 3、File类判断操作 - boolean
    • 4、File类对文件/文件夹的增删改
    • 5、File类的获取子文件夹以及子文件的方法
  • 四、Java中IO流多种维度的维度
    • 1、按照流向 - Java程序
    • 2、按照流的大小分类
    • 3、按照流的功能分类
  • 五、JavaIO流的四大基类
    • 1、InputStream
    • 2、OutputStream
    • 3、Reader
    • 4、Writer
    • 5、补充知识点——方法递归
  • 六、JavaIO流中的常用实现类
    • 1、节点流
    • 2、处理流

一、概念

Java Input/Output,一般情况指的是Java操作一些外部数据时,使用IO流的形式进行操作,外部数据主要包括文件、网络等等。

二、File类

JavaIO既可以操作文件外部数据,还可以操作网络端口这种外部数据,如果Java要操作文件外部数据,必须要借助一个类File文件对象类。

File类是Java中对文件/文件夹的抽象表示,通过这个File类,我们可以将操作系统本地的一个文件/文件夹加载到Java程序当中,随后通过File对象可以对文件进行增删改查等操作。

File类只能操作文件的外部内容、而文件当中有哪些数据,这个操作File类做不到。

三、File类的使用

1、File文件/文件夹类的创建

根据全路径创建

File file = new File("d:" + File.separator + "桌面" + File.separator + "a");

根据父子路径创建

File file = new File("d:\\桌面" ,"a");

根据父子路径创建,只不过父路径也是File对象

File file = new File(new File("d:\\桌面") ,"a");

2、File类的获取操作

//在eclipse中,因为创建的时Java项目,Java项目中所有的相对路径,指的都是项目名下的某个路径 而非Java源文件的同级路径
File file1 = new File("a/a.txt");
//获取文件名 路径最后一个文件/文件夹的名字
String fileName = file.getName();
System.out.println(fileName);
//获取文件的父路径 取决于你再构建File对象时有没有传入父路径
String parent = file.getParent();
System.out.println(parent);
//获取文件的路径 ---传入的路径
String path = file.getPath();
System.out.println(path);
//获取文件的绝对的路径--传入路径没有关系的
String absolutePath = file1.getAbsolutePath();
System.out.println(absolutePath);

3、File类判断操作 - boolean

System.out.println(file1.exists());//判断路径是否存在
System.out.println(file1.isFile());//判断是否是文件
System.out.println(file1.isDirectory());//判断是否是目录
System.out.println(file1.isHidden());//判断是否是隐藏文件System.out.println(file1.canRead());//可读
System.out.println(file1.canWrite());//可写
System.out.println(file1.canExecute());//可执行

4、File类对文件/文件夹的增删改

创建:

  • 创建文件createNewFile():要求父目录必须存在

  • 创建文件夹mkdir()创建单层目录/mkdirs()创建多层目录

删除:

  • delete()–如果是目录,目录必须空目录

修改:

  • renameTo(File):boolean
boolean mkdir = file1.mkdirs();//创建文件夹
System.out.println(mkdir);boolean creatNewFile = file1.createNewFile();//创建文件
System.out.println(creatNewFile);boolean delete = file1.delete();
System.out.println(delete);
//重命名要求两个路径必须在同一个路径下
boolean result = file1.renameTo(new File("KK"));
System.out.println(result);

5、File类的获取子文件夹以及子文件的方法

listFiles()

list():返回指定目录下的下一级的文件或者文件夹

四、Java中IO流多种维度的维度

1、按照流向 - Java程序

输入流 Input/Reader

输出流 Output/Writer

2、按照流的大小分类

字节流:Stream——什么样的数据都可以处理

字符流:Reader/Writer——只能处理纯文本类型的数据

3、按照流的功能分类

节点流:直接对接到数据源上的流
常用的节点流:文件流、数组流、网络流

处理流:无法直接对接到数据源上,而是包装了节点流,在节点流基础之上提供了更加强大的功能

五、JavaIO流的四大基类

Javaio流中所有的流都有四个顶尖父类,四个顶尖父类是四个抽象类,四个抽象类当中封装了和流有关的很多的公用方法。

1、InputStream

Java中所有字节输入流的顶尖父类 —— 一个字节一个字节的读取文件中的数据

read:int——读取的字节,全部读取完成后返回-1

available:int——可利用的字节数,还能读取的字节数

close()——关闭IO流,任何IO流都需要手动关闭

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;/**
* InputStream:是一个字节输入流
*/
public class Demo01 {public static void main(String[] args) {InputStream is = null;try {is = new FileInputStream(new File("kl/a.txt"));//读取数据源的一个字节,read每一次读取完成,下一次再进行读取,基于上一次的结果向后读取int read = is.read();System.out.println(read);//返回值,如果是read()方法,代表的是每一次读取完成的字节的值,read(byte[])的话返回值不做研究//不管什么情况下,read的返回值一旦为-1,那么代表数据与没数据了int read2 = is.read();System.out.println(read2);byte[] array = new byte[12];int read3 = is.read(array);String string = new String(array,"UTF-8");System.out.println(string);//字节流中可以利用的字节数有多少int available = is.available();System.out.println(available);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(is!=null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}

2、OutputStream

Java中所有字节输出流的顶尖父类

write:写出的字节

close()

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;/*** OutputStream基类提供的常用方法:*   write(int字节)*/
public class Demo02 {public static void main(String[] args) {OutputStream os = null;try {os = new FileOutputStream(new File("kl/a.txt"));os.write(97);//a 覆盖写os.write("中国加油".getBytes("UTF-8"));//中国加油//os.write("中国加油".getBytes("UTF-8"),0,6);//中国} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}

复制照片到指定路径

package com.nuc.kl.file.io;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;/**
*
* @author 冰霜中的独舞
* @version 2023年7月7日 上午9:15:11
*
*/
public class FileCopy {public static void main(String[] args) {InputStream is = null;OutputStream os = null;try {is = new FileInputStream(new File("D:\\2023PracticalTraining\\software\\workspace\\eclipseworkspace\\java-study-619\\picture\\c.png"));os = new FileOutputStream(new File("D:\\2023PracticalTraining\\software\\workspace\\eclipseworkspace\\java-study-619\\picture\\d.png"));//byte[] buf = new byte[1024 * 1024];int read;while((read = is.read()) != -1) {os.write(read^5);}
//			while((read = is.read(buf)) != -1) {
//				os.write(buf);
//			}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if(os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(is != null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;/**
* 循环读取加密文件的1024个字节,然后对下一个字节进行解密操作^5
* 输入流(加密文件) 输出流(解密文件路径)
* 每隔1024个字节,对下一个字节进行^5运算进行加密
*/
public class Homework {public static void main(String[] args) {InputStream is =null;OutputStream os =null;try {is = new FileInputStream(new File("D:\\Desktop\\a.png"));os = new FileOutputStream(new File("D:\\Desktop\\b.png"));//循环读取is中的数据,一次读取1024个字节byte[] by = new byte[1024];while(is.read(by) != -1) {os.write(by);int r = is.read()^5;os.write(r);}System.out.println("解密完成!");} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(os != null) {try {os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(is != null) {try {is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
}

3、Reader

Java中所有字符输入流的顶尖父类

因为要根据编码集进行数据的读取,一次要读取一个字符,而一个字符对应了多个字节。编码集只有纯文本才有编码集。

  • read()
  • close()
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Arrays;/**
* Read的常用方法
* 	close()
*/
public class Demo03 {public static void main(String[] args) throws IOException {Reader r = new FileReader(new File("kl/a.txt"));int read = r.read();System.out.println(read);int read1 = r.read();System.out.println(read1);char c = (char)read1;System.out.println(c);char[] buf = new char[10];r.read(buf);System.out.println(Arrays.toString(buf));System.out.println(buf);r.close();}
}
a中国加油

image-20230708091439797

4、Writer

Java中所有字符输出流的顶尖父类

  • write
  • close —— 底层调用了flush
  • flush —— 字符流一次输出多个字节,先把多个字节缓存起来,直到遇到flush方法才会把缓存起来的结果输出
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Demo04 {public static void main(String[] args) throws IOException {Writer w = new FileWriter(new File("kl/a.txt"));w.append('a');w.write("zs12333");w.write("ls12333");w.flush();w.close();}
}

5、补充知识点——方法递归

方法迭代其实就是一种循环,只不过这个循环比较特殊,循环我们只知道循环的终止条件,而循环的次数我们是不太清楚的

使用方法

1、将需要重复性执行的代码抽取到一个方法中

2、方法中需要对重复性执行的代码进行改造,有一个递归入口(自己调用自己的一个逻辑)、递归出口

/**
* 使用方法递归计算 ∑100
*/
public class RecursionStudy {public static void main(String[] args) {int num = 0;//for循环for (int i = 0; i <= 100; i++) {num = i + num;}System.out.println(num);//迭代System.out.println(sum(100));}public static int sum(int num) {if(num == 1) {return 1;}else {return num + sum(num-1);}}
}

六、JavaIO流中的常用实现类

1、节点流

直接连接数据源的流

  • 数组流:连接的数据源是一个数组

    • 字节数组流
      • ByteArrayInputStream——字节数组输入流
      • ByteArrayOutputStream——字节数组输出流-----输出的目的地是一个字节数组,只不过这个字节数组不需要我们创建传递,因为这个流底层封装了一个字节数组用于接收字节数据的输出
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;public class Dmeo01 {public static void main(String[] args) throws IOException, InterruptedException {ByteArrayInputStream basi =new ByteArrayInputStream("中国加油".getBytes("UTF-8"));byte[] by = new byte[12];basi.read(by);System.out.println(new String(by,"UTF-8"));ByteArrayOutputStream baos = new ByteArrayOutputStream();System.out.println(baos);baos.write("中国加油!".getBytes("UTF-8"));System.out.println(baos);String string = baos.toString("UTF-8");System.out.println(string);}
    }
    
    • 字符数组流
      • CharArrayReader——字符数组输入流
      • CharArrayWriter——字符数组输出流
  • 文件流:连接的数据源是一个文件

    • 字节流——什么文件都可以处理
      • FileInputStream
        • new FileInputStream(File)
        • new FileInputStream(String path)
        • 【注意】:文件必须存在,不存在报错
      • FileOutputStream
        • new FileOutputStream(File|String)——默认是覆盖写,因为boolean append默认为false
        • new FileOutputStream(File|String,boolean append)——追加写
        • 【注意】:文件可以不用提前存在,如果文件不存在会自动创建
    • 字符流——只能处理纯文本文件
      • FileReader
        • new FileReader(String|File)
      • FileWriter
        • new FileWriter(File|String)—默认是覆盖写
        • new FileWriter(File|String,boolean append)
        • 写出数据之后,必须flush()刷新
  • 网络流

2、处理流

处理流:对节点流进行包装,提供一些更加强大的功能——处理速度快。

  • 缓冲流:缓冲流包装另外一个流,缓冲流内部维护一个缓冲池,使用了缓冲流,一次读取多个字节、多个字符到缓冲流的内部的缓冲池当中。—— 不管是字节的还是字符的缓冲流,一定要flush。
    • 字节缓冲流 —— 缓冲了一个8192的字节数组
      • BufferedInputStream
      • BufferedOutputStream
    • 字符缓冲流
      • BufferedReader——提供了一个特殊的方法:readLine()
      • BufferedWriter——提供了一个特殊的方法:newLine()
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;public class Demo01 {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new FileReader("wc.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("wc_n.txt"));String line = null;while((line = br.readLine()) != null) {line = line.toUpperCase();bw.write(line);bw.newLine();bw.flush();}bw.close();br.close();System.out.println("输出完成!");}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;public class Demo01 {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new FileReader("wc.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("wc_n.txt"));String line = null;while((line = br.readLine()) != null) {line = line.toUpperCase();bw.write(line);bw.newLine();bw.flush();}bw.close();br.close();System.out.println("输出完成!");}
}
  • 字节转字符流:以指定的编码集将一个字节流转换为字符流进行处理,加快我们的处理速度—纯文本类型的IO流有效

    • InputStreamReader(InputStream,charset)
    • OutputStreamWriter(OutputStream,charset)
  • 对象流——只有字节流

    • Java中的序列化(Java对象转换成二进制编码)和反序列化(Java二进制编码转换为Java对象)机制的问题

    • 序列化和反序列化需要用到Java的两个IO流

      • ObjectInputStream
      • ObjectOutputStream
      import java.io.FileInputStream;
      import java.io.FileNotFoundException;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.ObjectInputStream;
      import java.io.ObjectOutputStream;public class Demo01 {public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {/*** 序列化的代码*/
      //		Student s = new Student("zs",20,"男");
      //		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.txt"));
      //		oos.writeObject(s);
      //		oos.flush();
      //		oos.close();
      //		System.out.println("对象序列化完成!");/*** 反序列化的代码*/ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.txt"));Object object = ois.readObject();System.out.println(object);}
      }
      
    • 我们的Java对象如果想要序列化,那么必须得声明它能序列化,Java中对象默认不具备序列化的能力。如果想要具备,那么必须实现两个接口其中一个即可,序列化就是把对象的属性值转换成为二进制

      • Serializable:static或者transient修饰的属性不会序列化
      import java.io.Externalizable;
      import java.io.Serializable;
      import java.util.Objects;/**
      * JavaBean:只要私有化的属性和公开的get和set方法还有hashCode、equals、toString以及构造器
      */
      public class Student implements Serializable {private String name;private transient Integer student_age;private String student_sex;public Student() {super();}public Student(String name, Integer student_age, String student_sex) {super();this.name = name;this.student_age = student_age;this.student_sex = student_sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getStudent_age() {return student_age;}public void setStudent_age(Integer student_age) {this.student_age = student_age;}public String getStudent_sex() {return student_sex;}public void setStudent_sex(String student_sex) {this.student_sex = student_sex;}@Overridepublic int hashCode() {return Objects.hash(name, student_age, student_sex);}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Student other = (Student) obj;return Objects.equals(name, other.name) && Objects.equals(student_age, other.student_age)&& Objects.equals(student_sex, other.student_sex);}@Overridepublic String toString() {return "Student [name=" + name + ", student_age=" + student_age + ", student_sex=" + student_sex + "]";}
      }
      

      image-20230708174435258

      • Externalizable:必须重写两个方法,一个序列化写出的方法,一个反序列化读取的方法
      import java.io.Externalizable;
      import java.io.IOException;
      import java.io.ObjectInput;
      import java.io.ObjectOutput;
      import java.io.Serializable;
      import java.util.Objects;/**
      * JavaBean:只要私有化的属性和公开的get和set方法还有hashCode、equals、toString以及构造器
      */
      public class Student implements Externalizable {private static final long serialVersionUID = 1L;private String name;private transient Integer student_age;private String student_sex;public Student() {super();}public Student(String name, Integer student_age, String student_sex) {super();this.name = name;this.student_age = student_age;this.student_sex = student_sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getStudent_age() {return student_age;}public void setStudent_age(Integer student_age) {this.student_age = student_age;}public String getStudent_sex() {return student_sex;}public void setStudent_sex(String student_sex) {this.student_sex = student_sex;}@Overridepublic int hashCode() {return Objects.hash(name, student_age, student_sex);}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Student other = (Student) obj;return Objects.equals(name, other.name) && Objects.equals(student_age, other.student_age)&& Objects.equals(student_sex, other.student_sex);}@Overridepublic String toString() {return "Student [name=" + name + ", student_age=" + student_age + ", student_sex=" + student_sex + "]";}@Overridepublic void writeExternal(ObjectOutput out) throws IOException {out.writeUTF(name);out.writeInt(student_age);}@Overridepublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {name = in.readUTF();student_age = in.readInt();}
      }
      

      image-20230708175017231

      • 序列化版本id,是为了告诉编译器,序列化的二进制和我们当前项目中的类是否为同一个版本,如果是不同的版本,那么报错。
  • 打印流——只有输出流——提供了一系列重载的print和println方法用于输出数据

    • PrintStream
    • PrintWriter
  • Java中标准输入和标准输出流

    • System.in
    • System.out
    • System.setIn(InputStream)
    • System.setOut(OutputStream)

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

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

相关文章

LInux之chrony服务器

目录 场景 重要性 LInux的两个时钟 硬件时钟 系统时钟 NTP协议 Chrony介绍 定义 组成 --- chronyd和chronyc 安装与配置 安装 Chrony配置文件分析 同步时间服务器 chronyc命令 chronyc sources输出分析 其它命令 查看时间服务器的状态 查看时间服务器是否在线 …

18-使用钩子函数判断用户登录权限-登录前缀

钩子函数的两种应用: (1). 应用在app上 before_first_request before_request after_request teardown_request (2). 应用在蓝图上 before_app_first_request #只会在第一次请求执行,往后就不执行, (待定,此属性没调试通过) before_app_request # 每次请求都会执行一次(重点…

服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

作者&#xff1a;王夕宁、 刘强、 华相 公司介绍 丽迅物流是百丽旗下专注于时尚产业、为企业提供专业物流及供应链解决方案的服务商。其产品服务主要包括城市落地配、仓配一体、干线运输及定制化解决方案。通过自研智能化物流管理平台&#xff0c;全面助力企业合作集约化发展…

玩转软件|钉钉个人版内测启动:AI探索未来的工作方式

目录 前言 正文 AI为核心&#xff0c;个人效率为王&#xff01; 指令中心&#xff0c;解锁AI技巧&#xff01; 灵感Store&#xff0c;探索更多可能&#xff01; 未来的AI&#xff0c;即将问世&#xff01; 个人内测体验 前言 重磅消息&#xff1a;钉钉个人版在8月16日正…

Android实现监听APP启动、前台和后台

Android 实时监听APP进入前台或后台 前言 在我们开发的过程中&#xff0c;经常会遇到需要我们判断app进入后台&#xff0c;或者切换到前台的情况。比如我们想判断app切换到前台时&#xff0c;显示一个解锁界面&#xff0c;要求用户输入解锁密码才能继续进行操作&#xff1b;我…

不同子网络中的通信过程

从输入www.baidu.com经历了什么 一、DNS&#xff08;网址->IP&#xff09; 二、ARP&#xff08;IP->MAC&#xff09; A->B&#xff1a;有数据发送&#xff0c;数据封装ip之后发现没有主机B的mac地址。然后ARP在本网段广播&#xff1a;检查目标地址和源地址是否在同一…

抖音矩阵,矩阵账号开发,抖音矩阵源码搭建

抖音矩阵&#xff0c;矩阵账号开发&#xff0c;抖音矩阵源码搭建&#xff1a; 1、账号矩阵系统搭建首先需要注意的是支持多平台&#xff0c;多账号&#xff0c;可以实现流量互通&#xff0c;账号矩阵多个账号联动形成账号矩阵形式分发开发。 2、账号矩阵系统需要可以查看分发…

Node与Express后端架构:高性能的Web应用服务

在现代Web应用开发中&#xff0c;后端架构的性能和可扩展性至关重要。Node.js作为一个基于事件驱动、非阻塞I/O的平台&#xff0c;以及Express作为一个流行的Node.js框架&#xff0c;共同构建了高性能的Web应用服务。 在本文中&#xff0c;我们将深入探讨Node与Express后端架构…

基于梯度算法优化的BP神经网络(预测应用) - 附代码

基于梯度算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于梯度算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.梯度优化BP神经网络2.1 BP神经网络参数设置2.2 梯度算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

Bootstrap 源代码目录结构一览

目录 前言 Bootstrap 目录结构 Bootstrap 内容简介 Bootstrap 编译文件 CSS文件 | CSS 文件功能对比与清单 JS文件 | JS 文件功能对比与清单 Bootstrap 源码码目录 | 资源清单 前言 Bootstrap是Twitter推出的一个用于前端开发的开源工具包。它由Twitter的设计师Mark Ot…

Visual Studio编译出来的程序无法在其它电脑上运行

在其它电脑&#xff08;比如Windows Server 2012&#xff09;上运行Visual Studio编译出来的应用程序&#xff0c;结果报错&#xff1a;“无法启动此程序&#xff0c;因为计算机中丢失VCRUNTIME140.dll。尝试重新安装该程序以解决此问题。” 解决方法&#xff1a; 属性 -> …

ConsoleApplication815项目(直接加载+VEH Hook Load)

上线图 ConsoleApplication815.cpp #include <iostream> #include<Windows.h> #include "detours.h" #include "detver.h" #pragma comment(lib,"detours.lib")#pragma warning(disable:4996)LPVOID Beacon_address; SIZE_T Beacon…

机器视觉工程师永不为奴,他们是肯干肯出差肯加班肯拼命肯被使唤肯被叼

​ 永不为奴&#xff0c;为什么这样呐喊&#xff0c;真的很难做到。我们职业机器视觉工程师&#xff0c;本身职业具有一大特点就是专业性。 但是我们机器视觉工程师是专业技术绝不苟同于不是技术人员言语&#xff0c;我们很专业。 肯出差&#xff1a; 设备去那里&#xff0c;…

C#,《小白学程序》第七课:列表(List)应用之一“编制高铁车次信息表”

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary>…

【优化算法】Python实现面向对象的遗传算法

遗传算法 遗传算法(Genetic Algorithm)属于智能优化算法的一种&#xff0c;本质上是模拟自然界中种群的演化来寻求问题的最优解。与之相似的还有模拟退火、粒子群、蚁群等算法。 在具体介绍遗传算法之前&#xff0c;我们先来了解一些知识&#x1f9c0; DNA&#xff1a; 携带有…

性能优化之分库分表

1、什么是分库分表 1.1、分表 将同一个库中的一张表&#xff08;比如SPU表&#xff09;按某种方式&#xff08;垂直拆分、水平拆分&#xff09;拆分成SPU1、SPU2、SPU3、SPU4…等若干张表&#xff0c;如下图所示&#xff1a; 1.2、分库 在表数据不变的情况下&#xff0c;对…

图像处理 信号处理板 设计原理图:367-基于zynq XC7Z100 FMC接口通用计算平台

基于zynq XC7Z100 FMC接口通用计算平台 一、板卡概述 板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理&#xff0c;XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA&#xff0c;通过PL端FPGA扩展FMC、光纤、IO等接口&#xff0c;PS端ARM扩展网络、USB、R…

exchange实战

未得到exchange服务器权限 确定exchange服务器ip地址 setspn -T example.domain.com -F -Q */* | findstr exchangeMailSniper 爆破用户名和密码 爆破Exchange邮箱用户名密码&#xff0c;为了防止账号被锁定&#xff0c;所以我们使用密码喷洒攻击&#xff0c;即只使用一个密…

dolphinschedule配置企微告警服务(WeChat群组)

一、前置说明 ds配置好工作流后&#xff0c;比较重要的一个就是上线后的监控报警服务&#xff0c;如果你是基于企微作为协同办公的&#xff0c;WeChat群组预警必须是要安排上的&#xff0c;文章基于自建应用配合群组方式构建预警群&#xff0c;接入后&#xff0c;任务成功或者…

sql:SQL优化知识点记录(五)

&#xff08;1&#xff09;explain之例子 &#xff08;2&#xff09;索引单表优化案例 上面的功能已经实现&#xff0c;但是分析功能&#xff0c; 使用explain分析这条sql&#xff1a; 发现type为All Extra&#xff1a;有Using filesort &#xff08;文件内排序&#xff09; 这…