`
tedeyang
  • 浏览: 328144 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

真空算法(zip压缩算法的正向算法部分)

阅读更多
真空算法 
这就是zip压缩算法的正向算法部分


/*
 * @(#)DeflaterOutputStream.java 1.35 06/04/03
 *
 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package java.util.zip;

import java.io.FilterOutputStream;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.IOException;

/**
 * This class implements an output stream filter for compressing data in
 * the "deflate" compression format. It is also used as the basis for other
 * types of compression filters, such as GZIPOutputStream.
 *
 * @see  Deflater
 * @version  1.35, 04/03/06
 * @author  David Connelly
 */
public
class DeflaterOutputStream extends FilterOutputStream {
    /**
     * Compressor for this stream.
     */
    protected Deflater def;

    /**
     * Output buffer for writing compressed data.
     */
    protected byte[] buf;
   
    /**
     * Indicates that the stream has been closed.
     */

    private boolean closed = false;

    /**
     * Creates a new output stream with the specified compressor and
     * buffer size.
     * @param out the output stream
     * @param def the compressor ("deflater")
     * @param size the output buffer size
     * @exception IllegalArgumentException if size is <= 0
     */
    public DeflaterOutputStream(OutputStream out, Deflater def, int size) {
        super(out);
        if (out == null || def == null) {
            throw new NullPointerException();
        } else if (size <= 0) {
            throw new IllegalArgumentException("buffer size <= 0");
        }
        this.def = def;
        buf = new byte[size];
    }

    /**
     * Creates a new output stream with the specified compressor and
     * a default buffer size.
     * @param out the output stream
     * @param def the compressor ("deflater")
     */
    public DeflaterOutputStream(OutputStream out, Deflater def) {
 this(out, def, 512);
    }

    boolean usesDefaultDeflater = false;

    /**
     * Creates a new output stream with a default compressor and buffer size.
     * @param out the output stream
     */
    public DeflaterOutputStream(OutputStream out) {
 this(out, new Deflater());
        usesDefaultDeflater = true;
    }

    /**
     * Writes a byte to the compressed output stream. This method will
     * block until the byte can be written.
     * @param b the byte to be written
     * @exception IOException if an I/O error has occurred
     */
    public void write(int b) throws IOException {
        byte[] buf = new byte[1];
 buf[0] = (byte)(b & 0xff);
 write(buf, 0, 1);
    }

    /**
     * Writes an array of bytes to the compressed output stream. This
     * method will block until all the bytes are written.
     * @param b the data to be written
     * @param off the start offset of the data
     * @param len the length of the data
     * @exception IOException if an I/O error has occurred
     */
    public void write(byte[] b, int off, int len) throws IOException {
 if (def.finished()) {
     throw new IOException("write beyond end of stream");
 }
        if ((off | len | (off + len) | (b.length - (off + len))) < 0) {
     throw new IndexOutOfBoundsException();
 } else if (len == 0) {
     return;
 }
 if (!def.finished()) {
            // Deflate no more than stride bytes at a time.  This avoids  
            // excess copying in deflateBytes (see Deflater.c)  
            int stride = buf.length;  
            for (int i = 0; i < len; i+= stride) {  
                def.setInput(b, off + i, Math.min(stride, len - i)); 
                while (!def.needsInput()) {
      deflate();
                }
            }
 }
    }

    /**
     * Finishes writing compressed data to the output stream without closing
     * the underlying stream. Use this method when applying multiple filters
     * in succession to the same output stream.
     * @exception IOException if an I/O error has occurred
     */
    public void finish() throws IOException {
 if (!def.finished()) {
     def.finish();
     while (!def.finished()) {
  deflate();
     }
 }
    }

    /**
     * Writes remaining compressed data to the output stream and closes the
     * underlying stream.
     * @exception IOException if an I/O error has occurred
     */
    public void close() throws IOException {
        if (!closed) {
            finish();
            if (usesDefaultDeflater)
                def.end();
            out.close();
            closed = true;
        }
    }

    /**
     * Writes next block of compressed data to the output stream.
     * @throws IOException if an I/O error has occurred
     */
    protected void deflate() throws IOException {
 int len = def.deflate(buf, 0, buf.length);
 if (len > 0) {
     out.write(buf, 0, len);
 }
    }
}
。
 
 

 

分享到:
评论

相关推荐

    正向最大匹配分词算法及KNN文本分类算法python实现.zip

    正向最大匹配分词算法(Forward Maximum Matching, FMM)是自然语言处理(NLP)领域中常用的一种中文分词方法。它的工作原理是从待分词的文本的起始位置开始,每次尝试匹配尽可能长的词语,直到文本末尾。在匹配过程...

    控制算法.zip

    控制算法是机器人“大脑”中的软件部分,它包含运动学和动力学算法。运动学算法涉及机器人的运动学模型,包括正向运动学和反向运动学。正向运动学通过给定关节角度计算末端执行器的位置,反之则需要通过反向运动学...

    6轴工业机械臂运动学算法(C++).zip_6轴算法 c++_dotxir_warmuts_六轴机械臂_机械臂

    六轴机械臂的正向运动学算法通常采用DH参数(Denavit-Hartenberg Parameters)法,这是一种标准化的方法,可以为每个关节定义旋转和翻译参数。这些参数包括关节轴之间的夹角α_i,关节轴相对于前一关节轴的偏移d_i,...

    资料汇总:数学建模常用算法----蚁群算法.zip

    【蚁群算法】是一种模拟生物界蚂蚁寻找食物过程中的优化算法,主要应用于解决组合优化问题,如旅行商问题(TSP)、网络路由等。在数学建模中,蚁群算法因其全局搜索能力和并行处理特性而备受青睐。该算法基于概率性...

    Python实现BP神经网络算法.zip

    本压缩包“Python实现BP神经网络算法.zip”显然聚焦于如何利用Python来实现反向传播(Backpropagation, BP)神经网络算法。BP神经网络是一种在机器学习领域广泛应用的多层前馈神经网络,其核心在于通过反向传播误差...

    ch07-反向传播算法.zip

    在深度学习领域,反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的核心方法,尤其是在TensorFlow这样的深度学习框架中。本章我们将深入探讨反向传播算法的原理及其在TensorFlow中的应用。 反向...

    数学建模-BP神经网络算法.zip

    这个压缩包“数学建模-BP神经网络算法.zip”内包含的文档“数学建模-BP神经网络算法.doc”,很可能是详细介绍了如何在数学建模中应用BP神经网络算法。 BP神经网络是由多层非线性变换构成的前馈神经网络,其主要特点...

    Topsis算法综合评价代码.zip

    在这个名为"Topsis算法综合评价代码.zip"的压缩包中,包含了使用MATLAB编程实现Topsis算法的代码。 MATLAB是一种强大的数值计算和编程环境,特别适合于科学计算和工程应用。在Topsis算法的实现中,MATLAB可以轻松地...

    BP model.zip_BP算法

    在给定的"BP model.zip"压缩包文件中,包含了一个名为"BP model.docx"的文档,很可能是BP算法在MATLAB环境下的具体实现代码或详细说明。MATLAB是一种广泛应用于数值计算和科学计算的编程语言,它的矩阵和数组运算...

    muijou.zip_逆解算法_逆运动学

    总的来说,逆解算法和逆运动学是机器人学中的核心概念,而部分子空间法、匹配追踪和正交匹配追踪是解决这一问题的有效工具。MATLAB作为实现这些算法的平台,提供了丰富的功能和便利性,使得复杂的机器人控制算法得以...

    人工神经网络反向传播算法学习.zip

    本资料包“人工神经网络反向传播算法学习.zip”可能包含深入讲解该算法的文章、教程或代码示例。 反向传播的核心在于梯度下降,这是一种优化方法,用于寻找使损失函数最小化的权重值。在神经网络中,损失函数衡量了...

    MATLAB源码集锦-Topsis算法综合评价代码.zip

    本资源“MATLAB源码集锦-Topsis算法综合评价代码.zip”包含了一个利用MATLAB实现的Topsis算法综合评价的源代码。TOPSIS(Technique for Order of Preference by Similarity to Ideal Solution)是一种多准则决策分析...

    数学建模-机械臂运动路径规划的算法设计.zip

    1. **机械臂运动学**:包括正向运动学(从关节变量到末端执行器位置的映射)和逆向运动学(从目标位置到关节变量的映射)。理解这些概念对于设计路径规划算法至关重要。 2. **笛卡尔空间路径规划**:以三维空间中的...

    基于 MATLAB 的 PUMA 560 6 自由度机械臂正向和反向运动学算法.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程...

    Bp神经网络算法推倒与实现.zip

    首先,正向传播阶段,数据从输入层逐层传递到输出层,每个神经元根据当前权重和前一层的输出计算其输出值。接着,计算网络的总误差,通常使用均方误差(MSE)作为损失函数。然后,进入反向传播阶段,误差从输出层向...

    动物专家系统MFC界面自带正向推理逆向推理源代码.zip

    例如,当用户输入部分动物特征后,系统可以先用正向推理推测出可能的动物类别,然后根据用户的进一步需求或问题,采用逆向推理来完善或验证结果。这种方式结合了两种推理的优点,提高了问题解决的效率和准确性。 五...

    【智能优化算法】基于基于逐维反向学习的动态适应布谷鸟算法(DODACS)求解单目标优化问题附Matlab代码.zip

    智能优化算法是现代计算技术中解决复杂优化问题的重要手段,其中动态适应布谷鸟算法(DODACS)是一种新兴的优化方法。布谷鸟算法灵感来源于布谷鸟的繁殖行为,这种自然现象中的搜索策略被引入到数值优化领域,以寻找...

    基于PPO的正向情感倾向性生成项目实战.zip

    在本项目中,"基于PPO的正向情感倾向性生成"意味着开发者使用PPO算法训练了一个模型,该模型能够根据输入,生成具有积极情感的文本。这通常涉及到大量的语料库数据,包括正向情感的文本样本,用于训练模型学习情感...

    策略正向开发.zip

    6. **详细设计**:在高层架构基础上,进行详细设计,包括接口设计、数据结构设计和算法选择。这一阶段会具体阐述每个模块如何实现其策略,以及如何与其他模块协作。 7. **编码与实现**:遵循详细设计,程序员编写...

    数学建模算法模型——对策论.zip

    这个压缩包“数学建模算法模型——对策论.zip”包含了一份名为“对策论.docx”的文档,很可能是详细介绍了如何应用对策论解决实际问题。对策论在经济学、生物学、军事策略、社会学以及计算机科学等多个领域都有广泛...

Global site tag (gtag.js) - Google Analytics