首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏云时代Java开发:原理、实战与优化

    Java源码详解:深入 Java IO 核心之DataOutput与二进制数据序列化实战

    前言:二进制序列化的基石为什么需要DataOutput接口?在讨论跨平台数据交换时,我们常常面临一个根本性问题:如何将内存中的Java基本数据类型转换为平台无关的字节序列? DataOutput接口正是为解决这一问题而生,它提供了标准化的二进制序列化契约,让开发者无需关心底层字节操作的复杂细节。 本文的独特价值市面上关于DataOutput接口的深度分析极其稀少,大多将其视为简单的工具接口。 与DataInput形成了完美的对称关系:展开代码语言:TXTAI代码解释//写入dataOutput.writeInt(12345);dataOutput.writeUTF("HelloWorld") (极致性能)外部API:JSON(人类可读,广泛支持)持久化存储:ProtocolBuffers(模式演化,空间效率)临时缓存:DataOutput(简单快速)结语:标准化契约的永恒智慧DataOutput

    11221编辑于 2026-05-01
  • 来自专栏Golang开发

    Hadoop序列化

    setSumFlow(long sumFlow) { this.sumFlow = sumFlow; } // 序列化 public void write(DataOutput dataOutput) throws IOException { dataOutput.writeLong(upFlow); dataOutput.writeLong( downFlow); dataOutput.writeLong(sumFlow); } // 反序列 跟序列化顺序一致 public void readFields dataOutput) throws IOException { dataOutput.writeLong(upFlow); dataOutput.writeLong( downFlow); dataOutput.writeLong(sumFlow); } // 反序列 跟序列化顺序一致 public void readFields

    62710发布于 2019-08-26
  • 来自专栏sktj

    IOS 给相机添加滤镜效果

    avCaptureSession.canAddInput(deviceInput) 42 { 43 avCaptureSession.addInput(deviceInput) 44 } 45 46 let dataOutput = AVCaptureVideoDataOutput() 47 dataOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as AnyHashable : Int(kCVPixelFormatType_32BGRA)] 48 dataOutput.alwaysDiscardsLateVideoFrames = true 49 if avCaptureSession.canAddOutput (dataOutput) 50 { 51 avCaptureSession.addOutput(dataOutput) 52 } 53 54 let queue = DispatchQueue (label:“VideoQueue”, attributes:.concurrent) 55 dataOutput.setSampleBufferDelegate(self, queue: queue

    1.4K10发布于 2019-07-10
  • 来自专栏生如夏花的个人博客

    大数据:Hadoop-MapReduce练习

    dataOutput) throws IOException { dataOutput.writeUTF(name); dataOutput.writeUTF(phone ); dataOutput.writeUTF(addr); dataOutput.writeLong(flow); } @Override public dataOutput) throws IOException { dataOutput.writeUTF(name); dataOutput.writeInt(math ); dataOutput.writeInt(chinese); dataOutput.writeInt(english); } @Override dataOutput) throws IOException { dataOutput.writeUTF(this.name); dataOutput.writeInt

    61420发布于 2020-10-26
  • 来自专栏noteless

    [九]JavaIO之ObjectInputStream 和 ObjectOutputStream

    ,并根据所有 Java 基本类型数据进行重构 ObjectInput DataInput 包括基本类型的输入方法 扩展了DataInput接口,以包含对象、数组和 String DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流 ObjectOutput DataOutput 包括基本类型的输出方法; 扩展了DataOutput 从上面的类层次结构以及其他辅助类的说明上可以看得出来ObjectStreamConstants 约定了所有序列化时用到的常量信息DataInput以及ObjectInput 都是接口,约定了从二进制读取基本类型 对象 数组 String的方法DataOutput DataOutputStream的超集(功能上的超集,不是父类) DataXXX只能处理基本类型,ObjectXXX可以处理 基本类型以及对象 数组 String DataInput/ObjectInput DataOutput 各种方法的定义 ObjectInputStream 和 ObjectOutputStream  遵循了IO InputStream 和 OutputStream的约定,提供IO的读写方式 并且遵守了DataOutput

    94010发布于 2018-09-14
  • 来自专栏大数据学习笔记

    Hadoop源码分析:Writable接口和WritableComparable接口

    1.1 Writable接口源码 package org.apache.hadoop.io; import java.io.DataOutput; import java.io.DataInput; * */ void write(DataOutput out) throws IOException; /** * Deserialize the fields of Some data private int counter; private long timestamp; public void write(DataOutput / Some data private int counter; private long timestamp; public void write(DataOutput package org.apache.hadoop.io; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException

    1.3K60发布于 2018-01-02
  • 来自专栏noteless

    [十一]JavaIO之DataInputStream 和 DataOutputStream

    FilterOutputStream 都是Decorator 抽象的装饰器角色(并不是抽象类)他们内部都包含了各自需要增强的抽象构建 DataInput 接口用于从二进制流中读取字节,并根据所有 Java 基本类型数据进行重构 DataOutput OutputStream,没有功能增强flush也是如此,没有增强 不过DataOutputStream 内部有一个计数器,用于记录已经读取的个数 incCount方法用于计数 其余来自DataOutput DataInputStream和DataOutputStream 借助于装饰器模式,继承自他们的FilterXXXoutStream 对InputStream进行功能增强 所有增强出来的功能,来自于DataInput以及DataOutput 这两个接口是用于约定 从二进制字节中读取数据 以及将基本类型数据写入到二进制字节的两个接口 其实如果说要不是别的地方也还是需要DataInput以及DataOutput中的约定的话 这一切完全都可以去掉这两个接口 ,直接提供readXXX 或者writeXXX方法即可 所以千万不要被DataInput以及DataOutput 迷惑 两条主线:装饰器模式功能增强增强的功能来自DataXXXput接口

    64320发布于 2018-09-14
  • 来自专栏Michael阿明学习之路

    MapReduce 编程实践:统计对象中的某些属性

    org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput getVip() { return vip; } public void setVip(int vip) { this.vip = vip; } public void write(DataOutput dataOutput) throws IOException{ dataOutput.writeUTF(id); dataOutput.writeInt(money); dataOutput.writeInt

    1.7K30发布于 2021-09-06
  • 来自专栏写字母的代码哥

    hadoop数据类型及自定义

    出现的数据类型,实现Writable接口即可 2.对于有可能作为“键”出现的数据类型,需要实现WritableComparable接口 ##实现Writable接口: /* DataInput and DataOutput 类是java.io的类 */ public interface Writable { void readFields(DataInput in); void write(DataOutput in.readFloat(); y = in.readFloat(); z = in.readFloat(); } public void write(DataOutput interface WritableComparable<T> { public void readFields(DataInput in); public void write(DataOutput in.readFloat(); y = in.readFloat(); z = in.readFloat(); } public void write(DataOutput

    73410发布于 2020-09-23
  • 来自专栏开源部署

    Hadoop中如何正确编写继承自Writable接口的子类

    (2)然后是类型在序列化的时候写入后读取值不正确,一定要统一类型中write(DataOutput out)和readFields(DataInput in)中写入和读取参数的方法,例如一个int类型如果你在 (3)Writable中用于写出的DataOutput类型没有针对String类型的序列化方法,需要先将String类型转换成为Byte数组类型,然后在进行序列化。 下面是HttpContent的类型的源码,重点是write(DataOutput out)和readFields(DataInput in)方法: package bbs.http; import java.io.DataInput ; import java.io.DataOutput; import java.io.IOException; import java.io.UnsupportedEncodingException; encodeBytes,"GBK"); //  System.out.println("encoding="+this.encoding);  }  @Override  public void write(DataOutput

    1.3K20编辑于 2022-07-03
  • 来自专栏岑玉海

    Hbase 学习(二)补充 自定义filter

    public boolean filterRow() { return filterRow; } @Override public void write(DataOutput dataOutput) throws IOException { Bytes.writeByteArray(dataOutput, this.value); } @Override

    1K50发布于 2018-02-28
  • 来自专栏黑泽君的专栏

    大数据项目之_15_电信客服分析平台_03&04_数据分析

     dataOutput) throws IOException {         dataOutput.writeInt(this.id);         dataOutput.writeUTF(this.telephone  dataOutput) throws IOException {         dataOutput.writeInt(this.id);         dataOutput.writeInt(this.year );         dataOutput.writeInt(this.month);         dataOutput.writeInt(this.day);     }     @Override  dataOutput) throws IOException {         this.contactDimension.write(dataOutput);         this.dateDimension.write  dataOutput) throws IOException {         dataOutput.writeInt(callSum);         dataOutput.writeInt(callDurationSum

    1.2K20发布于 2019-03-22
  • 来自专栏云计算与大数据技术

    MapReduce之partition按照key值分区

    return index; } } } 3、序列化类 package com.gxwz.entity; import java.io.DataInput; import java.io.DataOutput public String toString() { return accountName + "\t" + orderAmount; } @Override public void write(DataOutput

    68020发布于 2021-04-27
  • 来自专栏嘘、小点声

    python网络爬虫(11)近期电影票房或热度信息爬取

    代码如下: import sqlite3 class DataOutput(object): def __init__(self): self.cx=sqlite3.connect import HtmlDownloader import HtmlParser import DataOutput import time class Spider(object): def _ self.downloader=HtmlDownloader.HtmlDownloader() self.parser=HtmlParser.HtmlParser() self.output=DataOutput.DataOutput

    82120发布于 2019-07-31
  • 来自专栏全栈程序员必看

    MapReduce 编程不可怕,一篇文章搞定它

    com.shockang.study.bigdata.mapreduce; import org.apache.hadoop.io.WritableComparable; import java.io.DataInput; import java.io.DataOutput ; } else { return this.age - o.age; } } public void write(DataOutput dataOutput) throws IOException { //序列化,将NewKey转化成使用流传输的二进制 dataOutput.writeUTF( name); dataOutput.writeInt(age); dataOutput.writeInt(salary); } public void

    37920编辑于 2022-07-02
  • 来自专栏知了一笑

    Hadoop框架:MapReduce基本原理和入门案例

    addNum02; this.resNum = addNum01 + addNum02; } // 序列化 @Override public void write(DataOutput dataOutput) throws IOException { dataOutput.writeLong(addNum01); dataOutput.writeLong (addNum02); dataOutput.writeLong(resNum); } // 反序列化 @Override public void readFields

    70930发布于 2020-11-24
  • 来自专栏姜同学

    Hadoop的分布式计算系统MapReduce

    com.jmy.profitcase; import org.apache.hadoop.io.WritableComparable; import java.io.DataInput; import java.io.DataOutput { return o.getCountCome() - this.getCountCome(); } @Override public void write(DataOutput dataOutput) throws IOException { dataOutput.writeInt(month); dataOutput.writeUTF(name ); dataOutput.writeInt(inCome); dataOutput.writeInt(outCome); dataOutput.writeInt

    83020编辑于 2022-10-27
  • 来自专栏java大数据

    MapReduce当中排序sort的方法

    package com; import org.apache.hadoop.io.WritableComparable; import java.io.DataInput; import java.io.DataOutput public void setAmount(Double amount) { this.amount = amount; } public void write(DataOutput

    52530发布于 2021-07-05
  • 来自专栏嘘、小点声

    python网络爬虫(13)博客园用户信息爬取

    Spider.py import HtmlDownloader import HtmlParser import DataOutput import UrlManager import re from self.downloader=HtmlDownloader.HtmlDownloader() self.parser=HtmlParser.HtmlParser() self.output=DataOutput.DataOutput driver.page_source def download(self,driver,url): driver.get(url) return driver.page_source DataOutput.py import sqlite3 class DataOutput(object): def __init__(self): self.cx=sqlite3.connect("cnblog.db

    78710发布于 2019-07-31
  • 来自专栏Java架构师必看

    MapReduce词频统计【自定义复杂类型、自定义Partitioner、NullWritable使用介绍】

    import lombok.Data; import org.apache.hadoop.io.Writable; import java.io.DataInput; import java.io.DataOutput String phone; private long up; private long down; private long sum; public void write(DataOutput dataOutput) throws IOException { dataOutput.writeUTF(phone); //字符串 dataOutput.writeLong (up); //Long dataOutput.writeLong(down); dataOutput.writeLong(sum); } public

    1.2K20发布于 2021-05-14
领券