Java 日看一类(49)之IO包中的PushbackReader

五子棋小游戏,可联机,单机 立即下载

该类继承自FilterReader类

无引入包




该类的类头注释如下:

* A character-stream reader that allows characters to be pushed back into the
* stream.

大意如下:

含有回推功能的字符输入流





该类含有如下的成员变量:

回推缓冲区

private char[] buf;

缓冲区偏移量

private int pos;




该类含有如下的成员方法:

构造函数(规定输入流和缓冲区大小

public PushbackReader(Reader in, int size) {
    super(in);
    if (size <= 0) {
        throw new IllegalArgumentException("size <= 0");
    }
    this.buf = new char[size];
    this.pos = size;
}

构造函数(规定输入流,使用默认缓冲区大小

public PushbackReader(Reader in) {
    this(in, 1);
}

流开启确认函数(只需检查缓冲区有效性

private void ensureOpen() throws IOException {
    if (buf == null)
        throw new IOException("Stream closed");
}

读取一个字符数据

public int read() throws IOException {
    synchronized (lock) {
        ensureOpen();
        if (pos < buf.length)//检测当前缓冲区是否有东西,没有就直接从流中读取
            return buf[pos++];
        else
            return super.read();
    }
}

读取一个字符数组

public int read(char cbuf[], int off, int len) throws IOException {
    synchronized (lock) {
        ensureOpen();
        try {
            if (len <= 0) {
                if (len < 0) {
                    throw new IndexOutOfBoundsException();
                } else if ((off < 0) || (off > cbuf.length)) {
                    throw new IndexOutOfBoundsException();
                }
                return 0;
            }
            int avail = buf.length - pos;//缓冲区有效大小
            if (avail > 0) {//缓冲区有效
                if (len < avail)//需求字符数小于缓冲区有效数量,可直接从缓冲区读取
                    avail = len;
                System.arraycopy(buf, pos, cbuf, off, avail);
                pos += avail;
                off += avail;
                len -= avail;
            }
            if (len > 0) {//如果缓冲区读完还需要数据
                len = super.read(cbuf, off, len);
                if (len == -1) {
                    return (avail == 0) ? -1 : avail;
                }
                return avail + len;
            }
            return avail;//返回实际读取数据量
        } catch (ArrayIndexOutOfBoundsException e) {
            throw new IndexOutOfBoundsException();
        }
    }
}

回推一个字符(传入Ascii码

public void unread(int c) throws IOException {
    synchronized (lock) {
        ensureOpen();
        if (pos == 0)
            throw new IOException("Pushback buffer overflow");
        buf[--pos] = (char) c;
    }
}

回推一个字符数组(需要检查回推长度和缓冲剩余长度

public void unread(char cbuf[], int off, int len) throws IOException {
    synchronized (lock) {
        ensureOpen();
        if (len > pos)
            throw new IOException("Pushback buffer overflow");
        pos -= len;
        System.arraycopy(cbuf, off, buf, pos, len);
    }
}

回推整个字符数组

public void unread(char cbuf[]) throws IOException {
    unread(cbuf, 0, cbuf.length);
}

返回当前流是否可以被读取信息(流开启且仍有数据

public boolean ready() throws IOException {
    synchronized (lock) {
        ensureOpen();
        return (pos < buf.length) || super.ready();
    }
}

标记设置(该类不支持标记,所以没啥用

public void mark(int readAheadLimit) throws IOException {
    throw new IOException("mark/reset not supported");
}

回滚(也没用

public void reset() throws IOException {
    throw new IOException("mark/reset not supported");
}

检测该类是否支持标记(不支持啊

public boolean markSupported() {
    return false;
}

跳过后续的n个字符读取

public long skip(long n) throws IOException {
    if (n < 0L)
        throw new IllegalArgumentException("skip value is negative");
    synchronized (lock) {//防止读取跳过的字符
        ensureOpen();
        int avail = buf.length - pos;//先跳缓冲区,再跳流中字符
        if (avail > 0) {
            if (n <= avail) {
                pos += n;
                return n;
            } else {
                pos = buf.length;
                n -= avail;
            }
        }
        return avail + super.skip(n);
    }
}

关闭流

public void close() throws IOException {
    super.close();
    buf = null;
}




该类就是PushbackInputStream的字符流类,具体分析见该类

基于蜣螂优化算法的多无人机安全航迹规划方法研究(Matlab代码实现) 内容概要:本文研究了基于多策略改进蜣螂优化算法(MSDBO)的多无人机协同三维安全航迹规划方法,旨在解决城市空中交通等复杂环境中多无人机集群飞行的路径规划与动态避障问题。通过引入多种优化策略对蜣螂算法进行改进,增强了算法的全局搜索能力与收敛精度,构建了以路径长度、飞行高度、威胁规避和转弯角度等为约束的综合成本最小化目标函数,实现了多无人机在三维空间中的高效协同避障与安全路径生成。该方法有效提升了飞行任务的安全性与执行效率,并通过Matlab仿真验证了其相较于传统算法在路径质量、避障能力和收敛性能方面的优越性。; 适合人群:具备一定智能优化算法基础和Matlab编程能力,从事无人机路径规划、群体智能算法、空中交通管理或相关工程应用研究的科研人员、高校研究生及自动化、航空航天领域的技术人员。; 使用场景及目标:①应用于城市巡检、应急救援、物流配送等多无人机协同任务中的三维路径规划;②为解决复杂动态环境下多机冲突消解、威胁规避与航迹优化问题提供高效算法支持;③推动蜣螂优化算法在多智能体系统与复杂工程优化中的实际落地与拓展应用。; 阅读建议:建议结合文中提供的Matlab代码进行仿真实践,深入理解MSDBO算法的设计机制与航迹规划模型的构建逻辑,可尝试调整环境参数、威胁分布或优化目标权重,观察算法在不同场景下的适应性与鲁棒性,进一步掌握智能优化算法在无人机系统中的应用方法与调参技巧。 立即下载

相关推荐

有限长度直导线的三维磁场计算:应用毕奥-萨法尔定律(Matlab代码实现)

内容概要:本文系统阐述了基于毕奥-萨伐尔定律计算有限长度直导线在三维空间中产生磁场的理论方法与实现过程。通过建立直导线磁场的积分数学模型,结合数值离散化处理手段,利用Matlab编程实现磁场矢量的精确计算与三维可视化,详细展示了空间任意点处磁场强度的大小与方向分布特性。文中深入探讨了该方法相较于安培环路定律在处理非闭合、有限长导体时的适用优势,并提供了完整的Matlab代码实现方案,便于读者复现结果、理解物理规律并拓展至更复杂的电磁场建模问题。; 适合人群:具备电磁学基础理论知识和Matlab编程能力的高等院校电气、物理及相关专业的本科生、研究生、科研人员以及从事电磁兼容、电力工程、传感器设计等领域的工程技术开发者。; 使用场景及目标:①作为电磁场与电磁波课程的教学辅助材料,帮助学生直观理解毕奥-萨伐尔定律的物理内涵与实际应用;②为工程实践中直导线电流产生的磁场建模、电磁干扰(EMI)分析、磁传感器布局优化等提供可靠的仿真依据;③作为学习复杂电磁系统数值计算方法的入门级实践案例,为进一步研究奠定基础。; 阅读建议:建议读者结合经典电磁学教材,仔细推导文中的积分公式,透彻理解其物理意义,并亲自运行所提供的Matlab代码,通过调整导线长度、电流强度及观察点位置等参数,观察磁场分布的变化规律,从而深化对三维静磁场特性的直观认知与工程应用理解。

java.io.IOException:Stream closed at java.io.BufferedWriter.ensureOpen(BufferedWriter.java:116)

ResultHandler数据流消费

善守者 455

塔式熔盐光热朗肯循环电站建模!并且搭建了Simulink模型!!

内容概要:本文详细介绍了塔式熔盐光热朗肯循环电站的建模过程,并基于MATLAB/Simulink平台构建了完整的系统仿真模型。该模型深度融合了光热发电的核心组件与朗肯循环的能量转换机制,涵盖太阳能集热、熔盐传热储热、蒸汽发生及汽轮发电等关键环节,能够有效模拟系统的动态响应特性与能量转换效率。研究特别关注系统在变工况下的运行性能,通过仿真手段分析其电能输出稳定性、热力循环效率以及对电网调频的潜在支撑能力,凸显了Simulink在复杂能源系统多物理场耦合仿真中的强大功能与工程应用价值。; 适合人群:具备一定电力系统、热力学基础知识和Simulink软件操作技能的研究生、科研人员及能源领域的工程师。; 使用场景及目标:① 深入学习和掌握塔式熔盐光热电站的工作原理、系统组成及建模方法;② 利用Simulink进行多能耦合的综合能源系统仿真研究,探究系统优化运行策略与动态性能;③ 为从事新能源发电、储能技术及智能电网调度的专业人士提供先进的技术参考和创新灵感。; 阅读建议:读者在学习本文时,应结合具体的系统原理图与Simulink模型进行对照分析,深入理解各模块的数学建模与参数设置。强烈建议动手复现仿真模型并调整关键参数,通过改变光照强度、熔盐流量等输入条件来观察系统输出的变化,以加深对光热电站动态特性的理解,培养解决实际工程问题的实践与创新能力。

Java 日看一类(30)之IO包中的InterruptedIOException、InvalidObjectException异常类

这次讲述的类可能有一点多,不过每个类的内容都比较少(异常类没多少内容代码)InterruptedException类无引入包继承自IOException类头注释如下/** * Signals that an I/O operation has been interrupted. An * &lt;code&gt;InterruptedIOException&lt;/code&gt; is th...

github_37666068的博客 5939

STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

实验室有个项目涉及到多个步进电机以及伺服电机的控制,需要电机得到一个触发信号后精确移动一段距离。 下面以单个伺服电机控制为例,利用伺服电机的指令脉冲加方向位置控制模式实现jing'que ...

phcdd的博客 2万+

Vivado工程芯片型号更换全流程:从IP更新到生成新bit文件(避坑指南)

本文详细介绍了Vivado工程中更换芯片型号的全流程,包括IP更新、约束文件适配和生成新bit文件的关键步骤。特别针对FPGA开发中常见的兼容性问题提供避坑指南,帮助开发者高效完成芯片迁移,确保设计稳定性和性能优化。

weixin_42549451的博客 300

Java 日看一类(37)之IO包中的ObjectStreamField类

该类完成了Comparable&lt;Object&gt;接口引入了import java.lang.reflect.Field; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; import sun.reflect.misc.ReflectUtil;该类的类头注释如下:/** * A description ...

github_37666068的博客 3465

YOLOv8剪枝实战:基于torch_pruning的模型优化与性能提升指南

本文详细介绍了如何使用torch_pruning工具对YOLOv8模型进行结构化剪枝,以实现模型轻量化与性能提升。通过实战步骤解析,包括环境搭建、依赖图分析、迭代剪枝与微调策略,帮助开发者有效减少模型参数量和计算量,提升在边缘设备上的推理速度,同时保持检测(detect)与分割(segment)任务的精度。

water的专栏 1123

Java 日看一类(62)之net包中的Authenticator类

该类无引入包和继承类该类的类头注释如下:/** * The class Authenticator represents an object that knows how to obtain * authentication for a network connection. Usually, it will do this * by prompting the user for info...

github_37666068的博客 2872

C++继承与多态 - 继承多态原理01

C++继承多态原理讲解

大秦坑王的专栏 2980

TOD和PPS精确时间同步技术

授时

u010783226的专栏 1万+

Java 日看一类(58)之IO包中的SyncFailedException、UncheckIOException和UnSupportedEncodingException异常类

SyncFailedException无引入包继承自IOException该类的类头注释如下:Signals that a sync operation has failed.大意如下:标志同步操作失败该类含有如下的成员变量:序列化IDprivate static final long serialVersionUID = -2353342684412443330L;该类含有如下的成员方法:构造函...

github_37666068的博客 2347

解决Windows 10更新失败错误代码0x80070643

在Windows 10操作系统的更新过程中,用户时常会遇到各类错误代码,这些代码通常成为顺利完成更新的绊脚石。其中,错误代码0x80070643是一个较为常见的更新失败提示,它可能导致系统更新停滞不前。面对这一挑战,本文将详细介绍如何有效解决这一错误,帮助用户顺利完成Windows 10的更新。

nntxthml的博客 1829

Java 日看一类(15)之IO包中的File类

File是相当常用的一个类,也是IO包中的基础类之一File类引用了如下包import java.net.URI; import java.net.URL; import java.net.MalformedURLException; import java.net.URISyntaxException; import java.util.List; import java.util.ArrayL...

github_37666068的博客 2158

无人机:DJI Matrice 200 Series_(13).行业应用案例分析

在前一节中,我们介绍了DJI Matrice 200系列无人机的基本硬件配置和性能参数。本节将通过具体的行业应用案例,分析如何利用DJI Matrice 200系列无人机进行二次开发,以满足不同行业的需求。

zhubeibei168的博客 1448

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java 日看一类(32)之IO包中的IOException类

该类是IO包中大部分异常类的父类该类无引入包继承自Exception类类头注释如下:/** * Signals that an I/O exception of some sort has occurred. This * class is the general class of exceptions produced by failed or * interrupted I/O oper...

github_37666068的博客 2099

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java 日看一类(20)之IO包中的FilePermission类与FilePermissionCollection类

该类继承自Permission类,并完成了Serializable接口引入了如下包:import java.security.*; import java.util.Enumeration; import java.util.List; import java.util.ArrayList; import java.util.Vector; import java.util.Collections...

github_37666068的博客 1829

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Java 日看一类(13)之IO包中的DefaultFileSystem类和DeleteOnExitHook类

这两个类都是非public类,也就是保留类,仅能被同一个包中的代码所使用DefaultFileSystem类没有任何的继承关系,也未引入任何包(甚至连类头注释都没有)代码如下(就一个方法,不存在变量public static FileSystem getFileSystem() { return new UnixFileSystem(); }作用是返回默认的Unix文件系统对象(默认构造方...

github_37666068的博客 1797

Java 日看一类(61)AbstractPlainSocketImpl类

该类继承自SocketImpl类该类引入了如下包:import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.FileDescriptor; import sun.net.ConnectionResetException; import sun.net.Ne...

github_37666068的博客 1691

Java 日看一类(4)之IO包中的BufferedReader类

所引入的包和继承的类:import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.Stre...

github_37666068的博客 1625

Java 日看一类(39)之IO包中的ObjectStreamException和OptionalDataException异常类

ObjectStreamException异常类继承自IOException该类的类头注释如下:* Superclass of all exceptions specific to Object Stream classes.大意如下:描述所有对象流类异常的顶级类该类含有如下的成员变量:序列化IDprivate static final long serialVersionUID = 726089...

github_37666068的博客 1574

Java 日看一类(29)之IO包中的InputStreamReader类

该类继承自Reader类引入了如下包:import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import sun.nio.cs.StreamDecoder; 类头注释如下/** * An InputStreamReader is a bridge from byte streams to characte...

github_37666068的博客 1406

Java 日看一类(19)之IO包中的FileOutputStream类

该类继承自OutputStream引入了如下包:import java.nio.channels.FileChannel; import sun.nio.ch.FileChannelImpl; 类头注释如下:/** * A file output stream is an output stream for writing data to a * &lt;code&gt;File&lt;/co...

github_37666068的博客 1252

Java 日看一类(12)DataOutput接口与DataOutputStream类

DataOutput接口与前面讲过的DataInput接口相对应,功能基本相反注释:/** * The &lt;code&gt;DataOutput&lt;/code&gt; interface provides * for converting data from any of the Java * primitive types to a series of bytes and * w...

github_37666068的博客 1249

Java 日看一类(10)之IO包中的DataInput接口

DataInput接口没有引入的包或继承的类;接口注释如下:/** * The {@code DataInput} interface provides * for reading bytes from a binary stream and * reconstructing from them data in any of * the Java primitive types. Ther...

github_37666068的博客 1104
上一篇: Java 日看一类(48)之IO包中的PushbackInputStream
下一篇: Java 日看一类(50)之IO包中的RandomAccessFile
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值