实验题目链接:Java第09次实验(IO流)
0. 字节流与二进制文件
我的代码
package experiment.io;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Experiment {
public static void main(String[] args) throws FileNotFoundException {
FileOutputStream outFile = new FileOutputStream("student.data");
FileInputStream inFile = new FileInputStream("student.data");
try (DataOutputStream dataOutput = new DataOutputStream(outFile);
DataInputStream dataInput = new DataInputStream(inFile)) {
/**
* 将学生信息写入student.data文件中
*/
Student st = new Student(2018211, "张三", 15, 3);
dataOutput.writeInt(st.getId());
dataOutput.writeUTF(st.getName());
dataOutput.writeInt(st.getAge());
dataOutput.writeDouble(st.getGrade());
dataOutput.flush();
/**
* 将student.data文件中的数据重新读出到newSt对象中
*/
Student newSt = new Student();
newSt.setId(dataInput.readInt());
newSt.setName(dataInput.readUTF());
newSt.setAge(dataInput.readInt());
newSt.setGrade(dataInput.readDouble());
System.out.println(newSt.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
我的总结
二进制文件与文本文件的区别:
二进制文件可以存储char/int/long等各种变量类型 的值,实际上存储的是01字符串 ,这也表明存储数据字节大小的不同;而文本文件只能存储char型 的字符变量,其每条数据是固定长度的,如ASCII码存储的每个字符为1字节。
二进制文件,它是将内存中的数据以二进制形式原样放到文件中,读取时候也不需要经过处理就可以直接放到内存中,读写速度快 ,但是如果不经过专门编译器的编译,其可读性差 ;而文本文件会有一个编码方式,如ASCII码,它会将内存中的数据转化为对应编码,再将编码写入文件,读取时需要解码,再将对应字符读出,读写速度较慢 ,但是可读性好 。
try...catch...finally注意事项 :
即使try或catch语句中有return语句,也要执行完finally中的语句,程序才可能结束;finally常用于关闭资源。
执行一次try块只会执行一次catch块。
使用try..with...resouces关闭资源 可以简化关闭资源的步骤,直接将初始化资源代码写在try后的括号中即可。
1. 字符流与文本文件:使用 PrintWriter(写),BufferedReader(读)
我的代码
package experiment.io;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ExperimentFirst {
List students = new ArrayList();
public static void ListreadStudents(String fileName) throws FileNotFoundException, UnsupportedEncodingException {
ArrayList students = new ArrayList();
FileInputStream file = new FileInputStream("students.txt");
InputStreamReader in = new InputStreamReader(file, "UTF-8");// 解决中文乱码问题
String s = null;
try (BufferedReader buf = new BufferedReader(in)) {
while ((s = buf.readLine()) != null) {
String[] item = s.split("\\s+");
Student st = null;
/**
* 出错行处理,增强程序的健壮性
*/
try {
st = new Student(Integer.parseInt(item[0]), item[1], Integer.parseInt(item[2]),
Integer.parseInt(item[3]));
students.add(st);
} catch (ArrayIndexOutOfBoundsException e) {
// 处理数组越界,即一行中内容过多或则内容缺少问题
System.out.println(e);
continue;
} catch (NumberFormatException e) {
// 处理数据类型不对应问题
System.out.println(e);
continue;
}
}
for (Student e : students) {
System.out.println(e.toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String fileName = sc.nextLine();
try {
ExperimentFirst.ListreadStudents(fileName);
} catch (FileNotFoundException | UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**
* 使用PrintWriter将Student对象写入文本文件
*/
List stuList = new ArrayList<>();
Student d1 = new Student(1,"x",18,99.5);
Student d2 = new Student(2,"x",19,100.0);
Student d3 = new Student(3,"x",20,59.5);
stuList.add(d1);
stuList.add(d2);
stuList.add(d3);
PrintWriter printWriter = null;
try {
System.out.println("请输入要写入数据的文件名:");
fileName = sc.nextLine();
printWriter = new PrintWriter(fileName);
for (Student e : stuList) {
printWriter.write(String.valueOf(e.getId()) + " ");
printWriter.write(e.getName() + " ");
printWriter.write(String.valueOf(e.getAge()) + " ");
printWriter.write(String.valueOf(e.getGrade()) + "\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
printWriter.close();// 关闭资源,保存
}
sc.close();
}
}
我的总结
中文乱码问题可以通过InputStreamReader方法解决,要在初始化时候传入编码方式,以告诉改变FileReader的默认编码方式,解决中文乱码问题。
在解决错误行问题时,对应的错误情况应用相应的catch块抓取即可解决。比如每行只有3个数据的错误,即说明它会出现数组越界的问题,增加ArrayIndexOutOfBoundsException的catch块即可。
2. 缓冲流(结合使用JUint进行测试)
我的代码
代码1:使用PrintWriter往文件中写数据
package experiment.io;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Random;
public class ExperimentSecond {
public static void main(String[] args) {
Random ra = new Random(100);
int num = 1000_0000;
try(PrintWriter pw = new PrintWriter(new FileOutputStream("student.txt"))){
for (int i = 0; i < num; i++) {
pw.println(ra.nextInt(11));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
代码2:使用JUint进行测试 BufferedReader
与Scanner
的读取效率
package experiment.io;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import org.junit.jupiter.api.Test;
class ReadTest {
@Test
void testBufferedReader() throws IOException {
int count = 0;
int sum = 0;
FileInputStream file = new FileInputStream("student.txt");
InputStreamReader in = new InputStreamReader(file);
try(BufferedReader br = new BufferedReader(in)) {
String s = null;
while((s = br.readLine()) != null) {
count++;
sum += Integer.parseInt(s);
}
}
System.out.printf("testBufferedReader: count = %d, sum = %d, avg = %.5f\n", count, sum, sum * 1.0 / count);
}
@Test
void testScanner() throws FileNotFoundException {
int count = 0;
int sum = 0;
FileInputStream file = new FileInputStream("student.txt");
try(Scanner sc = new Scanner(file)) {
while(sc.hasNextLine()) {
count += 1;
sum += Integer.parseInt(sc.nextLine());
}
}
System.out.printf("testScanner: count = %d, sum = %d, avg = %.5f\n", count, sum, sum * 1.0 / count);
}
}
我的总结
在JUint中进行测试代码时,对测试的方法要加上@Test,否则会发生错误。
格式化输出的format方法基本上和printf一致。
测试代码效率时,应设置基本相同的代码,以确保测试变量的单一性。
Scanner的方法中,hashNextXXX应该与nextXXXX对应使用,否则会提示错误信息。
3. 字节流之对象流
我的代码
package experiment.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class ExperimentThird {
/**
* 通过ObjectOutputStream和FileOutputStream将Student对象写出到文件中。
* @param stuList 代表要写入文件中的若干个Student数据。
* @throws IOException
*/
public static void writeStudent(List stuList) throws IOException {
FileOutputStream file = new FileOutputStream("student.txt");
Student[] students = new Student[stuList.size()];
for (int i = 0; i < students.length; i++) {
students[i] = (Student)stuList.get(i);
}
try (ObjectOutputStream out = new ObjectOutputStream(file)) {
out.writeObject(students);
}
}
/**
* 通过ObjectInOutputStream和FileInputStream将Student对象读入到变量中。
* @param fileName 表示要访问的文件名
* @return 一个带有若干个Student对象的List
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static List readStudents(String fileName) throws FileNotFoundException, ClassNotFoundException {
List newStuList = new ArrayList<>();
FileInputStream file = new FileInputStream(fileName);
Student[] students = null;
try (ObjectInputStream in = new ObjectInputStream(file)) {
students = (Student[])in.readObject();
} catch (IOException e) {
e.printStackTrace();
}
for (Student st : students) {
newStuList.add(st);
}
return newStuList;
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
List stuList = new ArrayList<>();
Student st1 = new Student(1, "a", 18, 10);
Student st2 = new Student(2, "b", 19, 11);
Student st3 = new Student(3, "c", 20, 12);
stuList.add(st1);
stuList.add(st2);
stuList.add(st3);
ExperimentThird.writeStudent(stuList);
List newStuList = ExperimentThird.readStudents("student.txt");
for (Object e : newStuList) {
System.out.println(e);
}
}
}
我的总结
使用ObjectInputStream和ObjectOutputStream读写文件时,读写的对象对应的那个类应该进行序列化,即实现Serializable接口。上面代码中的Student类就实现了该接口。
序列化的作用就是为了保存各种对象的状态在内存中,并且可以把保存的对象状态再读出来。且序列化时只对对象进行保存,不管对象的方法。
在读写序列化后的对象时,可以通过writeObject和readObject的方法读取一个数组,如例子中的Student[] students 数组。
5. 文件操作
我的代码
package experiment.io;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
/**
* @version 1.00 05 Sep 1997
* @author Gary Cornell
*/
public class ExperimentFifth {
public static void findFile(Path dir,String fileName) {
try {
File pathName = new File(dir.toString()); //将路径转化为String形式,传入pathName中
String[] fileNames = pathName.list(); // 获得该路径下所有目录
for (int i = 0; i < fileNames.length; i++) { // 遍历这些目录
File f = new File(pathName.getPath(), fileNames[i]);
if(fileNames[i].contains(fileName)) {
System.out.println(f.getCanonicalPath());
}
if (f.isDirectory()) {
findFile(f.toPath(), fileName);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入根路径信息:");
String path = sc.nextLine();
Path dir = Paths.get(path);
System.out.println("输入要查找的文件名:");
String fileName = sc.nextLine();
ExperimentFifth.findFile(dir, fileName);
sc.close();
}
}
在"G:/eclipse-workspace"根路径下找到的所有包含”Experiment“关键字文件路径如下:
输入根路径信息:
G:\\eclipse-workspace
输入要查找的文件名:
Experiment
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\Experiment (1).launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\Experiment.launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\ExperimentFifth.launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\ExperimentFirst.launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\ExperimentSecond.launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\ExperimentSixth.launch
G:\eclipse-workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\ExperimentThird.launch
G:\eclipse-workspace\IO\bin\experiment\io\Experiment.class
G:\eclipse-workspace\IO\bin\experiment\io\ExperimentFifth.class
G:\eclipse-workspace\IO\bin\experiment\io\ExperimentFirst.class
G:\eclipse-workspace\IO\bin\experiment\io\ExperimentSecond.class
G:\eclipse-workspace\IO\bin\experiment\io\ExperimentSixth.class
G:\eclipse-workspace\IO\bin\experiment\io\ExperimentThird.class
G:\eclipse-workspace\IO\src\experiment\io\Experiment.java
G:\eclipse-workspace\IO\src\experiment\io\ExperimentFifth.java
G:\eclipse-workspace\IO\src\experiment\io\ExperimentFirst.java
G:\eclipse-workspace\IO\src\experiment\io\ExperimentSecond.java
G:\eclipse-workspace\IO\src\experiment\io\ExperimentSixth.java
G:\eclipse-workspace\IO\src\experiment\io\ExperimentThird.java
G:\eclipse-workspace\javaLearn\bin\ExperimentSix
G:\eclipse-workspace\javaLearn\src\ExperimentSix
我的总结
该查找路径的方法是通过递归实现的,首先获得一个目录下的所有文件目录,存入数组中,再对数组中的每个数据遍历;如果发现包含fileName关键字,则输出其路径;如果发现是一个文件,则递归继续寻找该文件下的目录,以此类推。
这里要注意的一点就是通过File中的list()方法来获得目录底下的所有文件或文本字符信息。
6. 正则表达式
我的代码
package experiment.io;
import java.io.*;
import java.net.*;
import java.util.regex.*;
/**
* This program displays all URLs in a web page by matching a regular expression
* that describes the HTML tag. Start the program as
* java HrefMatch URL
*
* @version 1.01 2004-06-04
* @author Cay Horstmann
*/
public class ExperimentSixth {
public static void main(String[] args) {
try {
// get URL string from command line or use default
String urlString;
if (args.length > 0)
urlString = args[0];
else
urlString = "http://cec.jmu.edu.cn/index.jsp";
// open reader for URL
InputStreamReader in = new InputStreamReader(new URL(urlString).openStream());
// InputStreamReader in = new InputStreamReader(new
// FileInputStream("集美大学-计算机工程学院.htm"));
// read contents into string builder
StringBuilder input = new StringBuilder();
int ch;
while ((ch = in.read()) != -1)
input.append((char) ch);
// search for all occurrences of pattern
String patternString = " ]*)\\s*>";
String patternImgString = "[+-]?[0-9]+"; // 匹配所有数字字符串
String patternChineseString = "[\u4e00-\u9fa5]"; // 匹配文档中的所有中文
String patternPictureString = "img(.*?)(src=)(.*?)(jpg|gif)\"";// 匹配所有图片
Pattern pattern = Pattern.compile(patternPictureString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
int start = matcher.start();
int end = matcher.end();
String match = input.substring(start, end);
System.out.println(match);
}
} catch (IOException e) {
e.printStackTrace();
} catch (PatternSyntaxException e) {
e.printStackTrace();
}
}
}
匹配到的“集美大学计算机工程学院”网站下的图片信息:
IMG src="images/jimei12.jpg"
IMG src="images/1_dh_01.gif"
IMG src="images/1_dh_03.gif"
IMG src="images/1_dhs_01.gif"
IMG src="images/1_dhs_03.gif"
IMG src="images/1_body_01.gif"
IMG border="0" src="images/1_more.gif"
IMG src="images/1_huandeng_01.gif"
imgdiv" style="padding:0px;border:0px;">
我的总结
img(.*?)(src=)(.*?)(jpg|gif)\"
如上代码为匹配图片的正则表达式。首先img匹配以img或IMG开头的数据;(.*?)任意字符尽可能少的匹配;(src=)匹配一次src=;接下来括号信息说明同上;(jpg|gif)是匹配一次jpg或gif信息;“ 即匹配一次双引号。
[+-]?[0-9]+
上述代码匹配所以数字字符串。[+-]?表示匹配0次或一次+-中的一个;[0-9]+表示匹配1次或多次数字字符信息。
你可能感兴趣的:(Java_IO流实验)
Android Studio:RxJava事件流Observable
剑客狼心
rxjava android
一、什么是“事件流”?简单来说,事件流就是数据从一个地方(发布者)传递到另一个地方(订阅者)的过程,像是一个“流水线”。发布者发布事件(数据),订阅者则在“流水线”上接收并处理这些事件。生活中的类比:假设你和你朋友玩一个游戏,你是发布者,你的朋友是订阅者。每当你发布一个游戏事件(比如发一个提示、一个消息或者数字),你的朋友会立刻接收到并作出反应。这就是一个事件流的例子。具体例子:在应用中输入搜索框
《Python全栈开发:构建高并发物联网数据中台实战》
放氮气的蜗牛
深度博客 python 物联网 开发语言
一、项目概述本文将基于Python生态构建一个完整的物联网数据中台系统,实现从设备接入到商业智能的全链路开发。系统采用微服务架构,核心功能包括:百万级设备并发接入(基于MQTT协议)实时流数据处理(ApacheKafka+Faust)时序数据存储(InfluxDB+Redis)智能告警引擎(规则引擎+机器学习)三维可视化大屏(PyWeb3D+ECharts)graphTDA[设备端]-->|MQT
大模型prompt实例:知识库信息质量校验模块
写代码的中青年
大模型 prompt 人工智能 python 大模型 LLM
大模型相关目录大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容从0起步,扬帆起航。大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模型问答项目问答性能评估方法大模型数据侧总结大模型token等基本概念及参数和内存的关系大模型应用开发-华为大模型生态规划从零开始的LLaMA-Factory的指令增
MySQL的主从复制和读写分离
吾妻雪乃
linux mysql 数据库
MySQL的主从复制和读写分离MySQL的主从复制和读写分离什么是MySQL的主从复制MySQL的主从复制的主要场景MySQL主从复制原理mysq支持的复制类型MySQL主从复制延迟MySQL读写分离原理目前较为常见的MySQL读写分离分为MySQL主从复制和读写分离实验部署案例拓扑图环境配置一、搭建MySQL主从复制1、Mysql主从服务器时间同步2、主服务器的mysql配置3、从服务器的mys
数据结构java实验 刘小晶_清华大学出版社-图书详情-《数据结构实例解析与实验指导——Java语言描述》...
季退思
数据结构java实验 刘小晶
本书是《数据结构——Java语言描述》(ISBN:9787302243236,清华大学出版社)的配套教学辅助用书,也是考研的复习用书。本书打破了传统的单一辅导书的编写形式,从整个课程能力培养和课程实践能力培养分析入手,以“重基础,求创新”为目标,针对基本数据结构和两种常用操作进行知识的归纳和提炼,对典型实例进行清晰的剖析,然后通过大量实例对知识进行巩固和应用。实验内容的安排由浅入深,层次分
国标GB28181设备管理软件EasyGBS国标GB28181视频平台:GB/T28181中的流类型
科技小E
音视频 网络 视频监控 安全 大数据
在当今的视频监控领域,GB/T28181协议作为中国国家标准委员会发布的重要技术规范,发挥着举足轻重的作用。这一标准不仅为视频监控系统的设备接入、视频流传输、设备控制等功能提供了明确的技术指导,还极大地促进了不同厂家设备之间的兼容性和互操作性。本文将深入探讨GB/T28181协议中的流类型。GB/T28181中的流类型(一)PS码流抓包分析GB/T28181的视频流采用PS格式进行封装。PS数据包
SMBJ110A瞬态抑制二极管的规格参数与应用领域
GR8953
二极管 肖特基二极管 单片机 嵌入式硬件 c语言 算法 物联网
一、基本特性类型:贴片瞬变抑制TVS二极管。极性:单向。封装:表面贴装,如DO-214AA封装,优化了电路板空间,具有低电感、塑料包装(具有保险商实验室可燃性94V-0认证)等特点。功率:具有600W的峰值功率能力,在10×1000μs波形下的重复率(占空比)为0.01%。响应速度:快速响应时间,从0伏特到最小击穿电压通常小于1.0ps。温度特性:高温焊接保证,如260°C/40秒或250°C/1
用python批量_[Python]用python实现批量/并发处理
weixin_39724266
用python批量
最近在学习python,感觉很不错,特别是实现批量/并发处理。实现起来非常方便,比shell方便很多。刚学python一个月,在这留个记录。下面分享一段代码。多提建议/意见~(QQ×××流:24967504)需求:批量查看/对比线上服务器的状态情况,如uptime、df-h、MD5sum文件等等。本打算让执行命令通过传参进行、密码通过交互输入(3次不对退出)。后面再完善~~#-*-coding:u
ML.NET库学习006:成人人口普查数据分析与分类预测
North_D
ML.NET库 机器学习 人工智能 深度学习 数据挖掘 目标检测 自然语言处理 神经网络
文章目录ML.NET库学习006:成人人口普查数据分析与分类预测概述数据集数据字段解释为何数据准备很重要主要功能与模块数据准备机器学习工作流代码结构说明数据准备模块机器学习工作流数据加载与分割特征工程与模型训练模型评估与预测实现细节与注意事项数据准备模块机器学习工作流性能优化项目优势LightGBM分类器原理说明总结ML.NET库学习006:成人人口普查数据分析与分类预测概述本项目使用C#和ML.
什么是RTMP 和 RTSP?它们之间有什么区别?
wljslmz
网络技术 RTMP RTSP
你好,这里是网络技术联盟站。视频盛行的时代,流媒体技术越来越重要,在本文中,我们将讨论两种流行的流媒体协议:RTMP和RTSP。什么是流协议?简单地说,流协议就是在两个通信系统之间传输多媒体文件的一套规则,它定义了视频文件将如何分解为小数据包以及它们在互联网上传输的顺序,RTMP与RTSP是比较常见的流媒体协议。RTMP英文全称:Real-TimeMessagingProtocol中文意思:实时消
【C#】Process、ProcessStartInfo启动外部exe
wangnaisheng
C# c#
在C#中使用Process和ProcessStartInfo类启动外部.exe文件,可以按照以下步骤进行:创建ProcessStartInfo实例:配置进程启动信息,包括可执行文件的路径、传递给该程序的参数等。设置启动选项:根据需要配置ProcessStartInfo的属性,例如是否使用ShellExecute、是否重定向标准输入/输出流等。启动进程:使用Process.Start方法并传入Pro
功能测试-白盒测试
机器视觉小小测试员
测试 白盒测试 功能测试
白盒测试是一种基于软件内部结构和实现细节的测试方法。它将软件视为一个透明的“白盒”,测试人员需要了解软件的内部逻辑、代码结构和数据流,通过设计测试用例来验证软件内部的各个组成部分是否按照预期工作。以下是白盒测试方法的详细解释:1.白盒测试的核心理念白盒测试的核心在于验证软件的内部逻辑是否正确,确保代码的每一个分支、路径和条件都能被正确执行。它侧重于软件的内部结构,而不是外部功能表现。白盒测试通常由
计算机视觉——SIFT特征提取与检索算法
-shiba-
计算机视觉 算法 sift算法
计算机视觉——SIFT特征提取与检索算法1.基本介绍1.1算法特点1.2检测步骤2.基本原理2.1关键点2.2尺度空间2.3高斯模糊2.3.1高斯函数2.3.2高斯模糊2.3.3高斯金字塔2.4DOG函数2.4.1DOG函数的2.5关键点描述及匹配3.实验以及总结3.1实验数据集3.2提取图片SIFT特征,并展示特征点3.2.1代码3.2.2结果展示(选取)3.3计算两张图片SIFT特征匹配结果3
C#流转输分段上传
工厂修程序
C# wcf C#
wcf流传输上传文件不能分段上传的问题已解决。技巧就是上传的流参数不用FileStream用MemoryStream即可。以下是代码:服务契约类:[ServiceContract()]publicinterfaceIMyServer{[OperationContract]voidUploadFile(UploadPartMessagemsg);}消息契约:[MessageContract]publ
Python中的控制流详细解释(附代码)
Te amo Συγγνώμη
python 算法 linux
ControlFlow控制流在我们到目前为止看到的程序中,总是有一系列语句由Python以精确的自上而下的顺序忠实地执行。如果您想改变其工作流程,该怎么办?例如,您希望程序根据不同的情况做出一些决定并执行不同的操作,例如根据一天中的时间打印“GoodMorning”或“GoodEvening”?您可能已经猜到了,这是使用ControlFlow语句实现的。Python中有三个控制流语句-if、for
Python知识点:基于Python技术,如何使用YOLO进行实时物体检测
超哥同学
Python系列 python YOLO 开发语言 面试 编程
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候!使用YOLO进行实时物体检测的Python技术详解实时物体检测是计算机视觉中的一个关键任务,它要求算法能够快速且准确地识别和定位图像或视频流中的物体。YOLO(YouOnlyLookOnce)算法因其速度快、性能高而受到广泛关注。在本文中,我们将详细介绍如何使用Python和YOLO
Bengio新作Aaren:探索Transformer性能与RNN效率的融合
AI记忆
深度 学习论文与相关应用 transformer rnn 深度学习 Aaren Bengio
论文链接:https://arxiv.org/pdf/2405.13956一、摘要总结:本文提出了一种新的注意力机制,名为Aaren,它将注意力视为一种特殊的递归神经网络(RNN),能够高效地计算其多对一RNN输出。Aaren不仅能够并行训练,而且能够在推理时高效地更新新令牌,仅需要常数内存。实验表明,Aaren在四个流行的序列问题设置(强化学习、事件预测、时间序列分类和时间序列预测)的38个数据
哈夫曼码编、译码器
misty youth
算法 c语言 c# 数据结构 哈夫曼树
实验内容问题描述:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编码、译码系统。试为这样的信息收发站写一个哈夫曼码的编码、译码系统。基本要求:一个完整的系统应具有以下功能:(1)初始化。从终端读入字符集大小n,以及n个字
水下 SLAM 定位模组的设计与实现
赵谨言
论文 经验分享 毕业设计 笔记
标题:水下SLAM定位模组的设计与实现内容:1.摘要摘要:本文介绍了水下SLAM定位模组的设计与实现。首先,对水下定位技术的背景和需求进行了分析。然后,详细阐述了模组的设计思路和关键技术,包括传感器选型、数据融合算法等。接着,介绍了模组的实现过程和实验结果,通过实际测试验证了模组的性能和可靠性。最后,对未来的研究方向进行了展望。关键词:水下SLAM;定位模组;传感器;数据融合2.引言2.1.研究背
基于 SVPWM 的异步电机直接转矩控制系统的研究与仿真
赵谨言
论文 经验分享 毕业设计
标题:基于SVPWM的异步电机直接转矩控制系统的研究与仿真内容:1.摘要摘要:本文主要研究了基于SVPWM的异步电机直接转矩控制系统。首先,介绍了异步电机直接转矩控制的基本原理和SVPWM技术的特点。然后,详细阐述了系统的设计方法,包括控制器的设计、逆变器的选择等。接着,通过仿真实验对系统进行了验证和分析,结果表明该系统具有良好的动态性能和稳态精度。最后,对研究工作进行了总结,并指出了未来的研究方
|网络安全|网络安全学习方法
网络安全King
web安全 学习方法 安全
1、先网络后安全很多初学者还没搞定网络看懂网络拓扑,就急着研究防火墙或VPN,其实这样就不清楚整个网络架构是如何安全演进的。正确的流程是:先通过网络协议和拓扑设计的学习,能独立搭建一个企业网/校园网,再引入局域网安全、防火墙、入侵检测、VPN等安全技术,使整个网络慢慢变得安全起来,这样才能看到整个网络安全的全貌。2、勤做实验勤抓包目前各大网络和安全厂商都有对应的模拟器,不再需要硬件支持就可以在电脑
python期权定价:欧式香草期权-二叉树
2401_88673555
期权定价 python 金融
1、函数实现:binomial_european_option_price函数基于二叉树模型计算欧式期权的价格,其中:二叉树构建:通过上涨因子u=e^(σ√Δt)和下跌因子d=1/u模拟标的资产价格路径。风险中性概率:p=(e^(rΔt)-d)/(u-d),用于计算未来现金流的期望值。折现因子:df=e^(-rΔt),将未来价值折现到当前。初始化到期价值:计算到期时所有可能价格路径的期权内在价值。
2021-05-22
七十二计
笔记
实验五查找的应用1、实验目的:1、掌握各种查找(顺序、二分法)方法及适用场合,并能在解决实际问题时灵活应用。2、增强上机编程调试能力。2、问题描述1.分别利用顺序查找和折半查找方法完成查找。有序表(3,4,5,7,24,30,42,54,63,72,87,95)输入示例:请输入查找元素:52输出示例:顺序查找:第一次比较元素95第二次比较元素87………查找成功,i=**/查找失败折半查找:第一次比
实验随记2-Pytorch Lightning多机多卡训练
晓岚和雪
实验随记 pytorch 人工智能 python 深度学习 分布式
本文章主要收录笔者在阅读时发现的一些比较优质的多机多卡训练教程~~,由于pytorchLightning多机多卡示例很少,因此需要等笔者最近做完实验验证后才能更新示例。不断完善中…~~及多机多卡训练细节。任务需求:实现多机多卡训练,模型可能继承torch.nn或者torch.lightning。示例实现5节点4GPU共计20卡训练。使用pytorch_lightning==1.9.4存在bug:启
Shell脚本:输入输出重定向以及实例讲解
IT策士
shell脚本从入门到精通 服务器 linux 网络
Shell脚本:输入输出重定向以及实例讲解一、概述在Linux系统中,每个正在运行的进程都会有三个默认的数据流:标准输入(编号为0),标准输出(编号为1),以及标准错误输出(编号为2)。它们通常与用户的终端连接,以接受用户的输入或向用户展示输出。然而,有时候我们希望改变这种默认设置–这时候就需要用到输入输出重定向。在本文中,我们将通过10个详尽的示例讲解在Shell脚本中如何进行输入输出重定向。二
前端修仙路 - WebRTC之设备管理
terryvvan
前端 webrtc
WebRTC-设备管理WebRTC(WebReal-TimeCommunications)是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。本文主要介绍关于摄像头、麦克风,扬声器、屏幕共享相关控制和调用。申请权限与设备开启//getUserMedia获取设备流的同时,浏览器会
webrtc-stream和m7s可以实现thingsboard加载视频的功能,还有其其他网页的方法也可以实现如flask
鼾声鼾语
自动驾驶云平台 音视频 python 开发语言 ubuntu github
方法1,推荐参考的案例:去学习webrtc-stream下载地址:去下载方法2,推荐:m7s下载地址:去下载m7s流媒体服务搭建方法方法3不推荐,不能够直接迁入到thingsboard中flask实现网页读取rtsp视频流创建app.py在app.py同级目录下创建文件夹和htmltemplates/index.html启动app.py,然后在地址中就可以看到视频了
超级实用!一个基于python的简化版深度学习框架,包括深度学习神经网络的设计和深度学习模型的设计,适用于中小型项目的开发和实现
大懒猫软件
深度学习 python 神经网络 numpy pytorch 人工智能
一、运用Python技术开发深度学习框架需要具备的基础知识总结开发一个基于Python的深度学习框架是一个复杂的任务,需要具备多方面的基础知识。以下是一些关键领域的总结,帮助你更好地准备和理解开发深度学习框架所需的知识。1.Python编程基础语法和数据结构:掌握Python的基本语法、数据类型(如列表、字典、元组等)和控制流(如循环、条件语句等)。函数和模块:理解函数的定义和使用,以及如何组织代
vue3读取webrtc-stream 视频流
cyw8998
webrtc
一.首先下载webrtc-stream,方便自己本地搭建视频流服务https://download.csdn.net/download/cyw8998/90373521解压后,启动命令webrtc-streamer.exe-H127.0.0.1:8020二.vue3代码如下videoimport'@/assets/adapter.min.js';import'@/assets/webrtcstre
PDF文件提取开源工具调研总结
塞大花
AI架构与工具学习之路 pdf PDF文件提取 ocr PDF内容识别 paddlepaddle paddle
概述PDF是一种日常工作中广泛使用的跨平台文档格式,常常包含丰富的内容:包括文本、图表、表格、公式、图像。在现代信息处理工作流中发挥了重要的作用,尤其是RAG项目中,通过将非结构化数据转化为结构化和可访问的信息,极大地提高了信息检索和生成的准确性、效率和实用性。所以PDF文档提取在RAG中显得尤为重要。目前提取PDF文档内容的思路主要分为三个精细度:直接解析PDF的内容流和内部结构,获取文本和元素
多线程编程之卫生间
周凡杨
java 并发 卫生间 线程 厕所
如大家所知,火车上车厢的卫生间很小,每次只能容纳一个人,一个车厢只有一个卫生间,这个卫生间会被多个人同时使用,在实际使用时,当一个人进入卫生间时则会把卫生间锁上,等出来时打开门,下一个人进去把门锁上,如果有一个人在卫生间内部则别人的人发现门是锁的则只能在外面等待。问题分析:首先问题中有两个实体,一个是人,一个是厕所,所以设计程序时就可以设计两个类。人是多数的,厕所只有一个(暂且模拟的是一个车厢)。
How to Install GUI to Centos Minimal
sunjing
linux Install Desktop GUI
http://www.namhuy.net/475/how-to-install-gui-to-centos-minimal.html
I have centos 6.3 minimal running as web server. I’m looking to install gui to my server to vnc to my server. You can insta
Shell 函数
daizj
shell 函数
Shell 函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell中函数的定义格式如下:
[function] funname [()]{
action;
[return int;]
}
说明:
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回
Linux服务器新手操作之一
周凡杨
Linux 简单 操作
1.whoami
当一个用户登录Linux系统之后,也许他想知道自己是发哪个用户登录的。
此时可以使用whoami命令。
[ecuser@HA5-DZ05 ~]$ whoami
e
浅谈Socket通信(一)
朱辉辉33
socket
在java中ServerSocket用于服务器端,用来监听端口。通过服务器监听,客户端发送请求,双方建立链接后才能通信。当服务器和客户端建立链接后,两边都会产生一个Socket实例,我们可以通过操作Socket来建立通信。
首先我建立一个ServerSocket对象。当然要导入java.net.ServerSocket包
ServerSock
关于框架的简单认识
西蜀石兰
框架
入职两个月多,依然是一个不会写代码的小白,每天的工作就是看代码,写wiki。
前端接触CSS、HTML、JS等语言,一直在用的CS模型,自然免不了数据库的链接及使用,真心涉及框架,项目中用到的BootStrap算一个吧,哦,JQuery只能算半个框架吧,我更觉得它是另外一种语言。
后台一直是纯Java代码,涉及的框架是Quzrtz和log4j。
都说学前端的要知道三大框架,目前node.
You have an error in your SQL syntax; check the manual that corresponds to your
林鹤霄
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'option,changed_ids ) values('0ac91f167f754c8cbac00e9e3dc372
MySQL5.6的my.ini配置
aigo
mysql
注意:以下配置的服务器硬件是:8核16G内存
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=D:/mysql-5.6.21-win
mysql 全文模糊查找 便捷解决方案
alxw4616
mysql
mysql 全文模糊查找 便捷解决方案
2013/6/14 by 半仙 alxw4616@Msn.com
目的: 项目需求实现模糊查找.
原则: 查询不能超过 1秒.
问题: 目标表中有超过1千万条记录. 使用like '%str%' 进行模糊查询无法达到性能需求.
解决方案: 使用mysql全文索引.
1.全文索引 : MySQL支持全文索引和搜索功能。MySQL中的全文索
自定义数据结构 链表(单项 ,双向,环形)
百合不是茶
单项链表 双向链表
链表与动态数组的实现方式差不多, 数组适合快速删除某个元素 链表则可以快速的保存数组并且可以是不连续的
单项链表;数据从第一个指向最后一个
实现代码:
//定义动态链表
clas
threadLocal实例
bijian1013
java thread java多线程 threadLocal
实例1:
package com.bijian.thread;
public class MyThread extends Thread {
private static ThreadLocal tl = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Inte
activemq安全设置—设置admin的用户名和密码
bijian1013
java activemq
ActiveMQ使用的是jetty服务器, 打开conf/jetty.xml文件,找到
<bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
<p
【Java范型一】Java范型详解之范型集合和自定义范型类
bit1129
java
本文详细介绍Java的范型,写一篇关于范型的博客原因有两个,前几天要写个范型方法(返回值根据传入的类型而定),竟然想了半天,最后还是从网上找了个范型方法的写法;再者,前一段时间在看Gson, Gson这个JSON包的精华就在于对范型的优雅简单的处理,看它的源代码就比较迷糊,只其然不知其所以然。所以,还是花点时间系统的整理总结下范型吧。
范型内容
范型集合类
范型类
【HBase十二】HFile存储的是一个列族的数据
bit1129
hbase
在HBase中,每个HFile存储的是一个表中一个列族的数据,也就是说,当一个表中有多个列簇时,针对每个列簇插入数据,最后产生的数据是多个HFile,每个对应一个列族,通过如下操作验证
1. 建立一个有两个列族的表
create 'members','colfam1','colfam2'
2. 在members表中的colfam1中插入50*5
Nginx 官方一个配置实例
ronin47
nginx 配置实例
user www www;
worker_processes 5;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;}
http {
include conf/mim
java-15.输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环
bylijinnan
java
//use recursion
public static void mirrorHelp1(Node node){
if(node==null)return;
swapChild(node);
mirrorHelp1(node.getLeft());
mirrorHelp1(node.getRight());
}
//use no recursion bu
返回null还是empty
bylijinnan
java apache spring 编程
第一个问题,函数是应当返回null还是长度为0的数组(或集合)?
第二个问题,函数输入参数不当时,是异常还是返回null?
先看第一个问题
有两个约定我觉得应当遵守:
1.返回零长度的数组或集合而不是null(详见《Effective Java》)
理由就是,如果返回empty,就可以少了很多not-null判断:
List<Person> list
[科技与项目]工作流厂商的战略机遇期
comsci
工作流
在新的战略平衡形成之前,这里有一个短暂的战略机遇期,只有大概最短6年,最长14年的时间,这段时间就好像我们森林里面的小动物,在秋天中,必须抓紧一切时间存储坚果一样,否则无法熬过漫长的冬季。。。。
在微软,甲骨文,谷歌,IBM,SONY
过度设计-举例
cuityang
过度设计
过度设计,需要更多设计时间和测试成本,如无必要,还是尽量简洁一些好。
未来的事情,比如 访问量,比如数据库的容量,比如是否需要改成分布式 都是无法预料的
再举一个例子,对闰年的判断逻辑:
1、 if($Year%4==0) return True; else return Fasle;
2、if ( ($Year%4==0 &am
java进阶,《Java性能优化权威指南》试读
darkblue086
java性能优化
记得当年随意读了微软出版社的.NET 2.0应用程序调试,才发现调试器如此强大,应用程序开发调试其实真的简单了很多,不仅仅是因为里面介绍了很多调试器工具的使用,更是因为里面寻找问题并重现问题的思想让我震撼,时隔多年,Java已经如日中天,成为许多大型企业应用的首选,而今天,这本《Java性能优化权威指南》让我再次找到了这种感觉,从不经意的开发过程让我刮目相看,原来性能调优不是简单地看看热点在哪里,
网络学习笔记初识OSI七层模型与TCP协议
dcj3sjt126com
学习笔记
协议:在计算机网络中通信各方面所达成的、共同遵守和执行的一系列约定 计算机网络的体系结构:计算机网络的层次结构和各层协议的集合。 两类服务: 面向连接的服务通信双方在通信之前先建立某种状态,并在通信过程中维持这种状态的变化,同时为服务对象预先分配一定的资源。这种服务叫做面向连接的服务。 面向无连接的服务通信双方在通信前后不建立和维持状态,不为服务对象
mac中用命令行运行mysql
dcj3sjt126com
mysql linux mac
参考这篇博客:http://www.cnblogs.com/macro-cheng/archive/2011/10/25/mysql-001.html 感觉workbench不好用(有点先入为主了)。
1,安装mysql
在mysql的官方网站下载 mysql 5.5.23 http://www.mysql.com/downloads/mysql/,根据我的机器的配置情况选择了64
MongDB查询(1)——基本查询[五]
eksliang
mongodb mongodb 查询 mongodb find
MongDB查询
转载请出自出处:http://eksliang.iteye.com/blog/2174452 一、find简介
MongoDB中使用find来进行查询。
API:如下
function ( query , fields , limit , skip, batchSize, options ){.....}
参数含义:
query:查询参数
fie
base64,加密解密 经融加密,对接
y806839048
经融加密 对接
String data0 = new String(Base64.encode(bo.getPaymentResult().getBytes(("GBK"))));
String data1 = new String(Base64.decode(data0.toCharArray()),"GBK");
// 注意编码格式,注意用于加密,解密的要是同
JavaWeb之JSP概述
ihuning
javaweb
什么是JSP?为什么使用JSP?
JSP表示Java Server Page,即嵌有Java代码的HTML页面。使用JSP是因为在HTML中嵌入Java代码比在Java代码中拼接字符串更容易、更方便和更高效。
JSP起源
在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。
如果使用Servl
apple watch 指南
啸笑天
apple
1. 文档
WatchKit Programming Guide(中译在线版 By @CocoaChina) 译文 译者 原文 概览 - 开始为 Apple Watch 进行开发 @星夜暮晨 Overview - Developing for Apple Watch 概览 - 配置 Xcode 项目 - Overview - Configuring Yo
java经典的基础题目
macroli
java 编程
1.列举出 10个JAVA语言的优势 a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用 2.列举出JAVA中10个面向对象编程的术语 a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型 3.列举出JAVA中6个比较常用的包 Java.lang;java.util;java.io;java.sql;ja
你所不知道神奇的js replace正则表达式
qiaolevip
每天进步一点点 学习永无止境 纵观千象 regex
var v = 'C9CFBAA3CAD0';
console.log(v);
var arr = v.split('');
for (var i = 0; i < arr.length; i ++) {
if (i % 2 == 0) arr[i] = '%' + arr[i];
}
console.log(arr.join(''));
console.log(v.r
[一起学Hive]之十五-分析Hive表和分区的统计信息(Statistics)
superlxw1234
hive hive分析表 hive统计信息 hive Statistics
关键字:Hive统计信息、分析Hive表、Hive Statistics
类似于Oracle的分析表,Hive中也提供了分析表和分区的功能,通过自动和手动分析Hive表,将Hive表的一些统计信息存储到元数据中。
表和分区的统计信息主要包括:行数、文件数、原始数据大小、所占存储大小、最后一次操作时间等;
14.1 新表的统计信息
对于一个新创建
Spring Boot 1.2.5 发布
wiselyman
spring boot
Spring Boot 1.2.5已在7月2日发布,现在可以从spring的maven库和maven中心库下载。
这个版本是一个维护的发布版,主要是一些修复以及将Spring的依赖提升至4.1.7(包含重要的安全修复)。
官方建议所有的Spring Boot用户升级这个版本。
项目首页 | 源