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…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
