Java——IO流(下)
一 (字符流扩展)
1 字符输出流
(更方便的输出字符——>取代了缓冲字符输出流——>因为他自己的节点流)
(PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串,并且可通过println();方法实现自动换行)
在Java的IO流中专门提供了用于字符输出的流对象PrintWriter。该对象具有自动行刷新缓冲字符输出流,特点是可以按行写出字符串,并且可通过println();方法实现自动换行。
public class TestPrintWriter {public static void main(String[] args) {//创建字符输出流对象try(PrintWriter pw = new PrintWriter("d:/sxt5.txt")){//调用不带换行方法完成内容的输出pw.print("abc");pw.print("def");//调用带有自动换行方法完成内容的输出pw.println("jia");pw.println("jiajia");pw.flush();}catch(IOException e){e.printStackTrace();}}
}
2 字符输出流添加行号
(以后有输出字符的时候——>可以直接用字符输出流(PrintWriter))
public class TestLineNumber3 {public static void main(String[] args) {//创建字符输入缓冲流对象与文件字符输入流对象try(BufferedReader br = new BufferedReader(new FileReader("d:/jia.txt"));//创建字符输出流对象PrintWriter pw = new PrintWriter("d:/jia2.txt")){//操作流String temp = "";//定义序号变量int i = 1;while((temp = br.readLine()) != null){pw.println(i+","+temp);//序号累加i++;}//刷新pw.flush();}catch(IOException e){e.printStackTrace();}}
}
二 (字节流扩展)
1 数据流
(DataInputStream/DataOutputStream——>处理流——>只能处理字节流)
(以Java基本数据类型与字符串类型——>作为输入和输出)
(读取的顺序要与写入的顺序一致)
数据流将“基本数据类型与字符串类型”作为数据源,从而允许程序以与机器无关的方式从底层输入输出流中操作Java基本数据类型与字符串类型。
DataInputStream和DataOutputStream提供了可以存取与机器无关的所有Java基础类型数据(如:int、double、String等)的方法。
先写再读
public class TestDataStream {public static void main(String[] args) {//创建数据输出流对象与文件字节输出流对象try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("d:/data"));//创建数据输入流对象与文件字节输入流对象DataInputStream dis = new DataInputStream(new FileInputStream("d:/data"))){//将如下数据写入到文件中dos.writeChar('a');dos.writeInt(10);dos.writeDouble(Math.random());dos.writeBoolean(true);dos.writeUTF("哈哈");//手动刷新缓冲区:将流中数据写入到文件中dos.flush();//直接读取数据:读取的顺序要与写入的顺序一致,否则不能正确读取数据。System.out.println("char: " + dis.readChar());System.out.println("int: " + dis.readInt());System.out.println("double: " + dis.readDouble());System.out.println("boolean: " + dis.readBoolean());System.out.println("String: " + dis.readUTF());}catch(IOException e){e.printStackTrace();}}
}
提示:
使用数据流时,读取的顺序一定要与写入的顺序一致,否则不能正确读取数据。
2 对象流
(ObjectInputStream/ObjectOutputStream——>处理流——>只能处理字节流)
(对象流——>数据流的升级——>多了对对象进行读写操作)
(读取的顺序要与写入的顺序一致)
(!!!读取对象——>类必须实现java.io.Serializable
接口。Serializable
接口是一个标记性接口,它不包含任何方法,但是它的实现表明该类的对象可以被序列化和反序列化!!!——>如果一个类实例化另一个对象,那么那个对象的类也必须实现Serializable
接口)
我们前边学到的数据流只能实现对基本数据类型和字符串类型的读写,并不能读取对象(字符串除外),如果要对某个对象进行读写操作,我们需要学习一对新的处理流:ObjectInputStream/ObjectOutputStream。
处理基本数据类型数据
ObjectInputStream/ObjectOutputStream处理基本数据类型。
ipublic class TestObjectStreamBasicType {public static void main(String[] args) {//创建对象输出流对象与文件字节输出流对象try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/data2"));//创建对象输入流对象与文件字节输入流对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/data2"))){//将如下数据写入到文件中oos.writeInt(10);oos.writeDouble(Math.random());oos.writeChar('a');oos.writeBoolean(true);oos.writeUTF("你好");oos.flush();//必须要按照写入的顺序读取数据System.out.println("int: "+ois.readInt());System.out.println("double: "+ois.readDouble());System.out.println("char: "+ois.readChar());System.out.println("boolean: "+ois.readBoolean());System.out.println("String: "+ois.readUTF());}catch(IOException e){e.printStackTrace();}}
}
3 对象的序列化和反序列化
(序列化——>对象——>二进制数据 ,反序列化——>二进制数据——>对象)
(两个进程远程通信时——>何种类型的数据,都会以二进制序列的形式在网络上传送)
(只有实现了—Serializable—接口的类的对象才能被序列化——>Serializable是个空接口只是用来标记的)
(writeObject(Object obj)方法,readObject()方法)
(让对象的某个属性不参与序列化,可以使用——> transient
修饰符)
1 序列化和反序列化是什么
当两个进程远程通信时,彼此可以发送各种类型的数据。 无论是何种类型的数据,都会以二进制序列的形式在网络上传送。比如,我们可以通过http协议发送字符串信息;我们也可以在网络上直接发送Java对象。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象才能正常读取。
把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。
2 序列化涉及的类和接口
ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。
只有实现了Serializable接口的类的对象才能被序列化。 Serializable接口是一个空接口,只起到标记作用。
4 对象序列化到文件
(容器也实现了Serializable接口)
ObjectOutputStream可以将一个内存中的Java对象通过序列化的方式写入到磁盘的文件中。被序列化的对象必须要实现Serializable序列化接口,否则会抛出异常。
创建对象
public class Users implements Serializable { //要实现类private int userid;private String username;private String userage;public Users(int userid, String username, String userage) {this.userid = userid;this.username = username;this.userage = userage;}public Users() {}public int getUserid() {return userid;}public void setUserid(int userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getUserage() {return userage;}public void setUserage(String userage) {this.userage = userage;}@Overridepublic String toString() {return "Users{" +"userid=" + userid +", username='" + username + '\'' +", userage='" + userage + '\'' +'}';}
序列化对象
public class TestObjectOutputStream {public static void main(String[] args) {//创建对象输出字节流与文件输出字节流对象try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/data3"))){//创建Users对象Users users = new Users(01,"jia","18");//将对象序列化到文件中oos.writeObject(users);//刷新oos.flush();}catch(IOException e){e.printStackTrace();}}
}
5 对象反序列化到内存中
(强转类型转换成对象类型——>注意异常ClassNotFoundException)
public class TestObjectInputStream {public static void main(String[] args) {//创建对象输入字节流与文件字节输入流对象try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/data3"))){//将对象反序列化到内存中Users users = (Users) ois.readObject();System.out.println(users);}catch(Exception e){e.printStackTrace();}}
}
三 (扩展)
1 File类在IO中的作用
(在Java中万物皆对象,所以操作文件或者目录时,需要转换成对象的)
(!!!节点流里面的文件路径可以换成File类里面在给定路径——>有什么用——>如果用IO流之前,需要对文件有操作行为,之后就可以直接用这个File类对象了!!!)
(如果仅仅是在IO流对文件操作路径就没必要用File类了)
public class TestFile {public static void main(String[] args) {//创建字符缓冲流与文件字符输入流对象try(BufferedReader br = new BufferedReader(new FileReader(new File("d:/sxt.txt")));//创建字符输出流对象PrintWriter pw = new PrintWriter(new File("d:/sxt8.txt"))){//操作流String temp = "";int i=1;while((temp = br.readLine()) != null){pw.println(i+","+temp);i++;}pw.flush();}catch(IOException e){e.printStackTrace();}}
}
2 装饰器模式构建IO流体系
(装饰器模式处理节点流——>更清楚理解节点流和处理流关系)
1 装饰器模式简介
装饰器模式是GOF23种设计模式中较为常用的一种模式。它可以实现对原有类的包装和装饰,使新的类具有更强的功能。
2 装饰器模式
class Iphone {private String name;public Iphone(String name) {this.name = name;}public void show() {System.out.println("我是" + name + ",可以在屏幕上显示");}
}class TouyingPhone {public Iphone phone;public TouyingPhone(Iphone p) {this.phone = p;}// 功能更强的方法public void show() {phone.show();System.out.println("还可以投影,在墙壁上显示");}
}public class TestDecoration {public static void main(String[] args) {Iphone phone = new Iphone("iphone30");phone.show();System.out.println("===============装饰后");TouyingPhone typhone = new TouyingPhone(phone);typhone.show();}
}
3 IO流体系中的装饰器模式
IO流体系中大量使用了装饰器模式,让流具有更强的功能、更强的灵活性。比如:
FileInputStream fis = new FileInputStream(src);
BufferedInputStream bis = new BufferedInputStream(fis);
显然BufferedInputStream装饰了原有的FileInputStream,让普通的FileInputStream也具备了缓存功能,提高了效率。
3 第三方工具包的使用
(Apache commons-io工具包——>处理IO相关操作)
(提供了FileUtils/IOUtils——>提供更加简单功能更加强大的——>文件操作和IO流操作)
1 Apache基金会介绍
Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。 官方网址为:www.apache.org 。
很多著名的Java开源项目都来源于这个组织。比如:commons、kafka、lucene、maven、shiro、struts等技术,以及大数据技术中的:hadoop(大数据第一技术)、hbase、spark、storm、mahout等。
2 commons-io工具包
Apache的commons-io工具包中提供了IOUtils/FileUtils,为我们提供了更加简单、功能更加强大的文件操作和IO流操作功能。非常值得大家学习和使用。
3 下载与添加commons-io包
下载地址
https://commons.apache.org/proper/commons-io/download_io.cgi
添加jar包
4 FileUtils类中常用方法
(!!!方法都是静态的,直接类名.方法名就可以了!!!)
(可以和File类一起用)
(copyFileToDirectory()的第三个参数是文件过滤器——>new一个接口(本来接口不能new的)——>匿名内部类)
打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:
方法名 | 使用说明 |
---|---|
cleanDirectory | 清空目录,但不删除目录 |
contentEquals | 比较两个文件的内容是否相同 |
copyDirectory | 将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件 |
copyFile | 将一个文件拷贝到一个新的地址 |
copyFileToDirectory | 将一个文件拷贝到某个目录下 |
copyInputStreamToFile | 将一个输入流中的内容拷贝到某个文件 |
deleteDirectory | 删除目录 |
deleteQuietly | 删除文件 |
listFiles | 列出指定目录下的所有文件 |
openInputSteam | 打开指定文件的输入流 |
readFileToString | 将文件内容作为字符串返回 |
readLines | 将文件内容按行返回到一个字符串数组中 |
size | 返回文件或目录的大小 |
write | 将字符串内容直接写到文件中 |
writeByteArrayToFile | 将字节数组内容写到文件中 |
writeLines | 将容器中的元素的toString方法返回的内容依次写入文件中 |
writeStringToFile | 将字符串内容写到文件中 |
1 读取文件内容,并输出到控制台上(之前都要嵌套——>现在只需一行代码!)
import java.io.File;
import org.apache.commons.io.FileUtils;
public class TestUtils1 {public static void main(String[] args) throws Exception {String content = FileUtils.readFileToString(new File("d:/a.txt"), "gbk");System.out.println(content);}
}
2 使用FileUtils工具类实现目录拷贝——>copyFileToDirectory()的第三个参数是文件过滤器,n
我们可以使用FileUtils完成目录拷贝,在拷贝过程中可以通过文件过滤器(FileFilter)选择拷贝内容。
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;public class TestFileUtilsDemo2 {public static void main(String[] args) throws Exception {FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {@Overridepublic boolean accept(File pathname) {// 使用FileFilter过滤目录和以html结尾的文件if (pathname.isDirectory() || pathname.getName().endsWith("html")) {return true;} else {return false;}}});}
}
5 IOUtils类中的常用方法
(方法大部分都是重载)
(比如说toString——>代替了(字符缓冲流—>转换流—>字节流))
打开IOUtils的api文档,我们发现它的方法大部分都是重载的。所以,我们理解它的方法并不是难事。因此,对于方法的用法总结如下:
方法名 | 使用说明 |
---|---|
buffer | 将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小 |
closeQueitly | 关闭流 |
contentEquals | 比较两个流中的内容是否一致 |
copy | 将输入流中的内容拷贝到输出流中,并可以指定字符编码 |
copyLarge | 将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝 |
lineIterator | 返回可以迭代每一行内容的迭代器 |
read | 将输入流中的部分内容读入到字节数组中 |
readFully | 将输入流中的所有内容读入到字节数组中 |
readLine | 读入输入流内容中的一行 |
toBufferedInputStream,toBufferedReader | 将输入转为带缓存的输入流 |
toByteArray,toCharArray | 将输入流的内容转为字节数组、字符数组 |
toString | 将输入流或数组中的内容转化为字符串 |
write | 向流里面写入内容 |
writeLine | 向流里面写入一行内容 |
我们没有必要对每个方法做测试,只是演示一下读入d:/sxt.txt文件内容到程序中,并转成String对象,打印出来。
IOUtils的使用
import java.io.*;
import org.apache.commons.io.IOUtils;
public class TestIOUtilsDemo {public static void main(String[] args) throws Exception {String content = IOUtils.toString(new FileInputStream("d:/sxt.txt"),"utf-8");System.out.println(content);}
}
6 IO流总结
-
按流的方向分类:
- 输入流:数据源到程序(InputStream、Reader读进来)。
- 输出流:程序到目的地(OutputStream、Writer写出去)。
-
按流的处理数据单元分类:
- 字节流:按照字节读取数据(InputStream、OutputStream)。
- 字符流:按照字符读取数据(Reader、Writer)。
-
按流的功能分类:
- 节点流:可以直接从数据源或目的地读写数据。
- 处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。
-
(4个抽象类),(5个节点流),(11个处理流)
- InputStream/OutputStream和Reader/writer——>抽象类,是所有IO流类的抽象父类
- FileInputStream/FileOutputStream——>节点流
- BufferedInputStream/BufferedOutputStream——>处理流——>内部也缓存了数组(默认8192字节)——>read,write,flash方法
- FileReader/FileWriter——>节点流——>以字符为单位进行操作——>文本文件——>输出的时候可以直接操作字符串,也可以追加/覆盖(默认)
- BufferedReader/BufferedWriter——>处理流——>也增加了缓存机制(默认8192个字符)——>输入方法readLine()——>按行读取——>String类型的temp——>读完条件是不为空,输出方法newLine()——>换行
- InputStreamReader/OutputStreamWriter——>处理流——>可以给定指定编码转换——>字节流和字符流之间的交互
- PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串,并且可通过println();方法实现自动换行
-
DataInputStream/DataOutputStream——>处理流——>只能处理字节流——>以Java基本数据类型与字符串类型——>作为输入和输出
-
ObjectInputStream/ObjectOutputStream——>处理流——>只能处理字节流——>对象流——>数据流的升级——>多了对对象进行读写操作——>读取的顺序要与写入的顺序一致——>读取对象——>类必须实现
java.io.Serializable
接口——>序列化——>对象——>二进制数据 ,反序列化——>二进制数据——>对象——>writeObject(Object obj)方法,readObject()方法
- File类——>在Java中万物皆对象,所以操作文件或者目录时,需要转换成对象的——>节点流里面的文件路径可以换成File类里面在给定路径——>有什么用——>如果用IO流之前,需要对文件有操作行为,之后就可以直接用这个File类对象了——>如果仅仅是在IO流对文件操作路径就没必要用File类了
- 装饰器模式——>处理节点流——>更清楚理解节点流和处理流关系
- 第三方工具包Apache commons-io工具包——>处理IO相关操作——>提供了FileUtils/IOUtils——>提供更加简单功能更加强大的——>文件操作和IO流操作
相关文章:
Java——IO流(下)
一 (字符流扩展) 1 字符输出流 (更方便的输出字符——>取代了缓冲字符输出流——>因为他自己的节点流) (PrintWriter——>节点流——>具有自动行刷新缓冲字符输出流——>可以按行写出字符串,并且可通过println();方法实现自动换行) 在Java的IO流中…...
avue-crud 同时使用 column 与 group 的问题
场景一:在使用option 中的column 和 group 进行表单数据新增操作时,进行里面的控件操作时,点击后卡死问题,文本没问题 其它比如下拉,单选框操作,当删除 column 中的字段后, group 中的可以操作 …...
深入解析 Pytest 中的 conftest.py:测试配置与复用的利器
在 Pytest 测试框架中,conftest.py 是一个特殊的文件,用于定义测试会话的共享配置和通用功能。它是 Pytest 的核心功能之一,可以用于以下目的: 【主要功能】 1、定义共享的 Fixture (1)conftest.py 文件可…...
JAVA |日常开发中Websocket详解
JAVA |日常开发中Websocket详解 前言一、Websocket 概述1.1 定义1.2 优势 二、Websocket 协议基础2.1 握手过程2.2 消息格式2.3 数据传输方式 三、Java 中使用 Websocket3.1 Java WebSocket API(JSR - 356)3.2 第三方库(如 Tyrus&…...
Typora教程
目录 一、下载安装 二、激活 1.激活 2.解决激活提示窗口 一、下载安装 去官网下载Typora安装,我的是1.9.5版本 二、激活 1.激活 根据路径找到Typora/resources/page-dist/static/js 使用记事本打开LicenseIndex文件,如下图: 按住快捷…...
泛微E9常见API保姆级详解!!!!
前言 在泛微前端开发过程中,虽然大部分是对流程以及流程逻辑的调整,但是还是会有一些小的个性化需求是需要借助JS来实现的。 比如:对同一组数据,前后变化不一样时,需要对这组变化后的数据进行标红处理;对提…...
UniApp配置使用原子化tailwindcss
参考视频 创建项目 新建项目选择uniapp - vue版本这里我选择3 - 点击创建即可 创建完成后,如果是要编译到小程序的项目则可以先将项目运行到小程序打开了 初始化package.json 执行 npm init -y安装和配置 安装 npm i -D tailwindcss postcss autoprefixer # 安…...
02. Docker:安装和操作
目录 一、Docker的安装方式 1、实验环境准备 1.1 关闭防火墙 1.2 可以访问网络 1.3 配置yum源 2、yum安装docker 2.1 安装docker服务 2.2 配置镜像加速 2.3 启动docker服务 3、二进制安装docker 3.1 下载或上传安装包并解压 3.2 配置使用systemctl管理 3.3 配置镜像…...
【MySQL中多表查询和函数】
目录 1.多表查询 1.1 外键 1.2 链接查询 2.MySQL函数 内置函数简介 数值函数 字符串函数 时间日期函数 条件判断操作 开窗函数 1.多表查询 本质:把多个表通过主外键关联关系链接(join)合并成一个大表,在去单表查询操作…...
加速科技精彩亮相ICCAD 2024
12月11日—12日 ,中国集成电路设计业的年度盛会——ICCAD 2024在上海世博馆隆重举行。本次活动以“智慧上海,芯动世界”为主旨,汇聚了众多业界精英,共同探讨集成电路产业的未来。作为半导体测试行业领军企业,加速科技携…...
免费下载 | 2024算网融合技术与产业白皮书
《2024算网融合技术与产业白皮书(2023年)》的核心内容概括如下: 算网融合发展概述: 各国细化算网战略,指引行业应用创新升级。 算网融合市场快速增长,算力互联成为投资新热点。 算网融合产业模式逐渐成型…...
Ubuntu系统下部署大语言模型:Ollama和OpenWebUI实现各大模型的人工智能自由
之前在window下安装过 Ollama和OpenWebUI搭建本地的人工智能web项目(可以看我之前写的文章),无奈电脑硬件配置太低,用qwen32b就很卡,卡出PPT了,于是又找了一台机器安装linux系统,在linux系统下测试一下速度能否可以快一些。 系统硬件介绍 Ubuntu 22.04.4 LTS CPU: i5…...
基于Mybatis,MybatisPlus实现数据库查询分页功能
基于Mybatis,MybatisPlus实现数据库查询分页功能 目录 基于Mybatis,MybatisPlus实现数据库查询分页功能使用Mybatis插件实现分页数据库准备分页插件配置和使用常用数据: 使用MybatisPlus插件实现分页数据库准备分页插件配置和使用自定义分页查…...
【razor】echo搭配relay功能分析
echo 要搭配relay 实现作者说relay在linux上跑,可以模拟丢包、延迟目前没看到如何模拟。relay监听9200,有俩作用 echopeer1 发relay,replay 把peer1的包给peer2 ,实现p2p能力。 接收端:采集后发送发给relay的 接收端的地址就是自己,的地址就是本地的9200,因此是让relay接…...
技术文档的定义和规范,以及技术文档模板参考
技术文档是指用于记录、传达和共享技术信息的文档,通常涵盖系统设计、开发过程、用户指南、维护手册等内容。技术文档的质量直接影响到项目的可维护性、可扩展性和团队的协作效率。以下是技术文档的定义和一些规范: 一、定义 技术文档是用于描述产品、系…...
基于windows环境使用nvm安装多版本nodejs
目录 前言 一、卸载node 二、nvm是什么? 三、nvm安装 1.官网下载 nvm 包 2. 安装nvm-setup.exe 3. 配置路径和下载镜像 4. 检查安装是否完成 四、 使用nvm安装node 五、修改npm默认镜像源为淘宝镜像 六、环境变量配置 1. 新建目录 2. 设置环境变量 七…...
力扣9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而…...
C#—BitArray点阵列
C#—BitArray点阵列 在 C# 中,BitArray 类用来管理一个紧凑型的位值数组,数组中的值均为布尔类型,其中 true(1)表示此位为开启,false(0)表示此位为关闭。 当需要存储位(…...
国产自主可控新征程:华为原生鸿蒙系统与鲲鹏认证
华为于今年10月22日在深圳正式发布了其原生鸿蒙系统HarmonyOS NEXT。这是我国首个实现全栈自研的操作系统,标志着中国在操作系统领域取得了突破性进展。HarmonyOS NEXT 5.0的发布,使得鸿蒙操作系统成为继苹果iOS和安卓系统之后的全球第三大移动操作系统&…...
esxi8 虚拟机使用ubuntu22模板后 没有ip配置文件,只有ipv6链接正常使用
esxi8 虚拟机使用模板后 没有ip配置文件,只有ipv6链接正常使用,/etc/NetworkManager/system-connections配置下没有配置文件 只有/etc/netplan/有文件 sudo ip addr add 192.168.1.9/24 dev ens35 # 临时设置ip, 接口名ens35 sudo vi /et…...
【Qualcomm】IPQ5018查看连接终端RSSI、SNR、NF方法
IPQ5018 简介 IPQ5018 是高通(Qualcomm)公司推出的一款面向网络设备的系统级芯片(SoC)。它通常用于路由器、接入点和其他网络设备中,提供高性能的无线网络连接。以下是关于 IPQ5018 的一些关键特性和功能: 关键特性 高性能处理器 IPQ5018 集成了多核 CPU,通常是 ARM …...
【构建工具】现代开发的重要角色
你可能有所听闻构建工具,但是不知道是干什么的,或者是开发中用到了,大概会使用,但是想理解一下具体的工作原理等,那么我将分享一下我对其的理解。【 我将分为两篇来讲解】。 当我们谈到构建工具时,可以把它…...
【Linux系统】—— 初识 shell 与 Linux 中的用户
【Linux系统】—— 初识shell 与 Linux 中的用户 1 Xshell 运行原理1.1 命令行的组成1.2 外壳程序 2 Linux中的用户2.1 两种用户2.2 创建普通用户2.3 用户切换2.3.1 普通->超级2.3.2 超级->普通 3 指令的短暂提权3.1 为什么要提权3.2 sudo 指令3.3 人人都能提权吗 1 Xshe…...
二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强)
二维码数据集,使用yolov,voc,coco标注,3044张各种二维码原始图片(未图像增强) 数据集分割 训练组70% 2132图片 有效集20% 607图片 测试集10% 305图…...
Vue指令
创建项目: vue init webpack 项目名称 element-ui npm i element-ui -saxios npm i axios1.1.3 -S vuex npm i vuex3.6.2 -S vuex持久化 npm i -S vuex-persistedstate4.1.0代理模版 proxyTable: {/api: {target: http://localhost:8081/,changeOrigin: true,pathRe…...
数据保护策略:如何保障重要信息的安全
一、什么是数据安全? 数据安全是保护数字信息免遭盗窃、未经授权的访问和恶意修改的过程。这是一个持续的过程,负责监督信息的收集、存储和传输。 机密性:保护数据免遭未授权方访问。 完整性:保护数据免遭未经授权的修改、损坏…...
Chrome webdriver下载-避坑
WebDriver以原生的方式驱动浏览器,不需要调整环境变量。 一、window版 1.chrome和chromedriver下载地址: Chrome for Testing availability 我下载的是如下两个安装包,解压即可。 2.导包 pip install selenium然后用python代码引用即可…...
递归求最大公约数
#include <stdio.h>// 函数声明 int gcd(int a, int b);int main() {int x, y;printf("请输入两个正整数:");scanf("%d %d", &x, &y);printf("最大公约数是:%d\n", gcd(x, y));return 0; }// 递归求最大公约…...
关于在浏览器里面获取手机方向的事件
先说问题:浏览器有一个自带原生的获取手机方向的事件方法 deviceorientation: https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent/DeviceOrientationEvent 这个事件里面有个实例absolute 看名字知道意思吧,对就是绝对坐标的意…...
STM32 出租车计价器系统设计(一) 江科大源码改写
STM32 出租车计价器系统设计 功能目标 驱动步进电机模拟车轮旋转,并实现调速功能。 设置车轮周长和单价,检测车轮转速和运转时间。 计算并显示行驶里程和价格。 硬件材料 28BYJ48 五线四相步进电机和 ULN2003 驱动板模块 测速传感器模块 嵌入式小系统…...
公司做网站 需要准备什么/企业百度推广
炸裂:将一行数据,炸裂为多行, 也就是“列转行” 例如:hive的订单表order_table有一个字段item_list,是一个列表结构的 array<struct<item_id:string,item_sku_id:string,price:double,quantity:bigint,title:string>>…...
沧州建设网站公司/b站推广2024mmm已更新
伴随着时期的发展趋势,计算机网变成人们日常生活必不可少的物品,只是计算机安全也变成了人们所忧虑的物品,那麼人们究竟该如何确保自身的计算机安全呢?有许多人挑选了配置HTTP安全证书,只是人们要是如何配置https安全证…...
保定行业网站/百度非企推广开户
1.安装 1.1安装mmseg ./bootstrap # 必须执行,不然安装会失败 ./configure --prefix/usr/local/mmseg-3.2.14 #指定安装目录 make make install 1.2安装coreseek # 在csft-4.1/configure.ac中 # 查找 AM_INIT_AUTOMAKE([-Wall -Werror foreign]) # 更改 AM_INIT_AUT…...
广州市城市建设/免费的seo优化
有关web前端优化的博文,博客园中有许多网友的博客中都有介绍,而且详细、精准。楼主打算写这个博客,算是对自己一年工作来的一个总结和积累有些知识从别的地方拷贝过来的,但是都审查过。 引言: 1. 慢的页面可能会网站失…...
dw怎么制作好看的个人网页/安徽seo推广
一、复制文本文件 将G盘的文本文件拷贝到D盘上 也就是 读取G盘中文本文件的数据。写入D盘中->连读带写 而剪切呢。就是连读带写后,删除原盘的文件 <span style"font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileRea…...
什邡门户网站/如何推销自己的产品
日期控件 - date <input type"date" value"2015-09-24"/>时间控件 - time <input type"time" value"13:59"/> <input type"time" value"13:59:59"/>日期时间控件 - datetime-local 日期控件1…...