使用Java实现网络传输数据的压缩

JAVA数据加密压缩传输给服务端(Gzip加AES) 上一话说到HTTP数据传输用Gzip方式压缩,用springboot分别写了客户端和服务端的代码测试。 对应博客地址 Java数据压缩HTTP方式传输Gzip(附带测试代码及springboot-HTTP客户端服务端代码) 本文场景: 在数据传输中,除了需要压缩数据大小,如果传输的是敏感数据,例如用户信息等,就需要加密。 本文用到的加密算法是AES 首先贴一下AESUtils工具类代码 package com.yolanda.mycompressclient.encrypt; import java.io 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Q: 本周,我回答了两个使用Java进行数据压缩的问题. 第一个问题是: 我怎样才能压缩那些不在文件中的数据. 第二个问题是: 我以极大的热情阅读了Todd Sundsted的"压缩你的数据,从而提高你的网络应用程序的性能",但是读完后我却有点失望.当我读到文章标题时我很高兴.我想我总算找到了解决问题的办法了. 在我们的公司,我们试图提高一个组织数据的RMI应用程序的性能.服务器端进行了绝大部分的处理和优化.我们花了一年半的时间去提高性能,但是现在看来瓶颈在于数据的传输上.在一天的任何时间内,我们都有可能在客户和服务器之间传送成千上万的数据. 一种可能的解决办法,我建议我们能够在把数据返回给客户端时先压缩这些数据,这在Todd的文章中已经说得很清楚了.但是,文章中的例子却是压缩文件,而不是我们所需要的----对数据进行压缩. 在RMI中的实现中,我们先从数据库取得数据,再把数据放入一个列表中,接着把这个列表返回给客户端,最后再把它们插入JTable中.我想在把数据返回给客户时,首先把列表中的数据压缩,然后在客户端解压缩,最后把数据插入到表格中. 这样的想法可行吗? A:最近我收到了一些关于Todd的文章的疑问.很多读者看起来对文章中的举例很疑惑.因为文章中的例子是以文件压缩为核心的. 首先回答第一个问题,当你使用ZipInputStream 和 ZipOutputStream 并没有强制你必须使用文件.唯一要注意的是你必须把数据转换为字节数组的形式. 第二个问题比较棘手.在网络中,以RMI方式通信就需要作一些调整了.为了在传送数据之前就让RMI进行数据压缩,你必须创建一个能够压缩数据的新的套接字.然后,当你创建了一个套接字后,你得告诉RMI使用这一套接字. 以下是创建一个RMI形式的套接字的简要步骤: 1:选择或者创建一个新的套接字.(可以参看SUN'S的"创建一个典型的套接字"). 2:创建一个服务器端的套接字. 3:创建一个RMIClientSocketFactory 4:创建一个RMIServerSocketFactory 5:创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories. 根据这一大致的想法,我们来看每一步如何具体的实现. 步骤1: 创建ZipSocket 由于要进行Zip压缩,我们重新创建这样的套接字 mport java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import java.net.Socket; public class ZipSocket extends Socket { private InputStream in; private OutputStream out; public ZipSocket() { super(); } public ZipSocket(String host, int port) throws IOException { super(host, port); } public InputStream getInputStream() throws IOException { if (in == null) { in = new ZipInputStream(super.getInputStream()); } return in; } public OutputStream getOutputStream() throws IOException { if (out == null) { out = new ZipOutputStream(super.getOutputStream()); } return out; } public synchronized void close() throws IOException { OutputStream o = getOutputStream(); o.flush(); super.close(); } } 步骤2: 创建ZipServerSocket import java.net.ServerSocket; import java.net.Socket; import java.io.IOException; public class ZipServerSocket extends ServerSocket { public ZipServerSocket(int port) throws IOException { super(port); } public Socket accept() throws IOException { Socket socket = new ZipSocket(); implAccept(socket); return socket; } } 步骤3:创建ZipClientSocketFactory 客户端的factory的创建必须遵循以下的形式: import java.io.IOException; import java.io.Serializable; import java.net.Socket; import java.rmi.server.RMIClientSocketFactory; public class ZipClientSocketFactory implements RMIClientSocketFactory, Serializable { public Socket createSocket(String host, int port) throws IOException { ZipSocket socket = new ZipSocket(host, port); return socket; } } 步骤4:创建ZipServerSocketFactory import java.io.IOException; import java.io.Serializable; import java.net.ServerSocket; import java.rmi.server.RMIServerSocketFactory; public class ZipServerSocketFactory implements RMIServerSocketFactory, Serializable { public ServerSocket createServerSocket(int port) throws IOException { ZipServerSocket server = new ZipServerSocket(port); return server; } } 步骤5: 创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories. public class YourRMIObject extends UnicastRemoteObject { public YourRemoteObject( int port ) { super( port, new ZipClientSocketFactory(), new ZipServerSocketFactory() ); } // 剩下的是你自己的程序实现 } 现在你的通信数据得到了压缩. 关于作者: Tony Sintes 是一个独立咨询人,同时也是First Class Consulting, Inc. 的创始人.这一咨询公司主要致力与对各个不同的企业系统进行量身定制和培训 . 业余时间,Tony 是一个积极的自由作家,同时也是Sams出版的<<21天学通面向对象编程>>的作者 (Sams, 2001; ISBN: 0672321092). 资源: To download the source code that accompanies this article, go to: http://www.javaworld.com/javaworld/javaqa/2001-12/ziprmi/01-qa-1207-ziprmi.zip "Zip Your Data and Improve the Performance of Your Network-Based Applications," Todd Sundsted (JavaWorld, November 1998): http://www.javaworld.com/javaworld/jw-11-1998/jw-11-howto.html "Creating a Custom RMI Socket Factory," (Sun Microsystems, 1999): http://java.sun.com/products/jdk/1.2/docs/guide/rmi/rmisocketfactory.doc.html "Creating a Custom Socket Type," (Sun Microsystems, 1999): http://java.sun.com/products/jdk/1.2/docs/guide/rmi/sockettype.doc.html Be sure to check out Tony's suggested reading list at: http://www.firstclassconsulting.net/reading.html For more RMI stories, visit the RMI / RMI-IIOP section of JavaWorld's Topical Index: http://www.javaworld.com/channel_content/jw-rmi-index.shtml Want more? See the Java Q&A Index for the full Q&A catalog: http://www.javaworld.com/columns/jw-qna-index.shtml For over 100 insightful Java tips from some of the best minds in the business, visit JavaWorld's Java Tips Index: http://www.javaworld.com/columns/jw-tips-index.shtml Learn the basics of client-side Java in our Java Beginner discussion. Core topics include the Java language, the Java Virtual Machine, APIs, and development tools: http://forums.idg.net/webx?50@@.ee6b804 Sign up for JavaWorld's free Applied Java newsletter: http://www.idg.net/jw-subscribe You'll find a wealth of IT-related articles from our sister publications at IDG.net 译者:我觉得这篇文章很有实用性,并且告诉了我们一种在网络通信时进行数据压缩的一个可行的解决办法.所以把它翻译出来,希望大家都能学到这一方法.这篇文章翻译起来比较简单.但是由于水平有限,如果不对的地方恳请大家指正. bootcool@263.net.
java数据压缩传输 java数据压缩传输。有数据压缩解压缩。 立即下载

相关推荐

Java压缩数据文件并实现传输功能.rar

Java压缩数据文件并实现传输功能,实例化套接字,在命令窗口输出提示信息,输出客户机地址,得到输出流 ,压缩输出流,设定缓冲区大小,读取数据,写入数据到文件,关闭输出流,关闭套接字。

asp.net mvc使用gzip压缩

Gzip最早由Jean-loup Gailly和Mark Adler创建,用于Unix系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是Gzip格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。 HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用Gzip压缩技术来让用户感受更快的速度。

c13_tianming的专栏 856

JSON入门Java篇-2-JSON数据类型.rar

JSON入门Java篇-2-JSON数据类型.rar

Java实现数据压缩所有方式性能测试

目录 1 BZip方式 1.1 引入依赖 1.2 BZip工具类代码 1.3 BZip2工具类代码 2 Deflater方式 3 Gzip方式 4 Lz4方式 4.1 简介 4.2 算法思想 4.3 算法实现 4.3.1 lz4数据格式 2、lz4压缩过程 3、lz4解压过程 4.4 Lz4-Java 4.4.1 简介 4.4.2 类库 5 SevenZ方式 5.1 引入依赖 5.2 工具类代码 6 Zip方式 7 性能对比 7.1 压缩率对比 8 总结

赵广陆 2880

Python入门之机器学习(非常详细)篇幅拉满,一般人看不完!

什么是机器学习?监督学习 supervised learning;非监督学习 unsupervised learning;半监督学习 semi-supervised learning;强化学习 reinforcement learning;监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。

xiaolinyui的博客 2万+

实测有效防止colab自动断开连接

实测有效防止colab自动断开连接

Thebest_jack的博客 1万+

如何在Java中实现高效的数据压缩?

数据压缩是计算机领域中常见的技术,通过压缩可以减少数据存储空间和传输带宽的消耗,提高系统性能和效率。Java中提供了多种压缩算法和库,本文将重点介绍如何在Java中实现高效的数据压缩。本文详细介绍了在Java中实现高效数据压缩的几种方法,涵盖了Java自带的包和Apache Commons Compress库。通过这些示例,读者可以了解如何选择合适的压缩算法和库来实现数据压缩,以提高系统的效率和性能。微赚淘客系统3.0小编出品,必属精品,转载请注明出处!

技术研究中心 650

搭建ipv6并发代理池

我开了个知识星球,把将本期搭建写成shell脚本已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab,瑞数456vmp补环境等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。我是pve下的ubuntu。

weixin_44697518的博客 1471

Java对象传输的加密、解密、压缩和解压

【代码】数据加密、解密、压缩和解压。

weixin_52181038的博客 1553

JSBSim开发手册:飞机仿真模型开发指南

JSBSim是一款开源的飞行动力学模型仿真引擎,支持多种飞行器的仿真,包括固定翼飞机、直升机、无人机等。JSBSim的设计目标是提供一个灵活、高效、精确的飞行动力学仿真环境。飞行动力学仿真:实现飞行器的动力学仿真,包括空气动力学、发动机、质量和惯性等模型。控制系统仿真:实现飞行器的控制系统仿真,包括自动驾驶仪、飞控系统等。环境仿真:模拟飞行环境,包括大气模型、风力模型等。本文详细介绍了如何使用C++进行JSBSim开发,包括系统设计、模型实现、代码优化和性能调优等方面的内容。

qq_38334677的博客 4525

mongodb在游戏开发领域的优势

目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。

littleschemer的博客 1698

java网络传输数据_使用Java实现网络传输数据压缩

1:选择或者创建一个新的套接字。(可以参看SUN´S的"创建一个典型的套接字")。2:创建一个服务器端的套接字3:创建一个RMIClientSocketFactory4:创建一个RMIServerSocketFactory5:创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories根据这一大致的想法,我们来看每一步如何具体的实现。步骤1: 创建ZipSocket...

weixin_36204513的博客 388

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5138

使用Java来实现网络传输数据压缩的实例

      1:选择或者创建一个新的套接字。(可以参看SUN´S的"创建一个典型的套接字")。  2:创建一个服务器端的套接字  3:创建一个RMIClientSocketFactory  4:创建一个RMIServerSocketFactory  5:创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories  根据这一大致的想法,我们来看每一步如何具体的实现。

小筑听风的专栏 4569

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java网络传输数据_使用Java来实现网络传输数据压缩的实例

2:创建一个服务器端的套接字3:创建一个RMIClientSocketFactory4:创建一个RMIServerSocketFactory5:创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories根据这一大致的想法,我们来看每一步如何具体的实现。步骤1: 创建ZipSocket由于要进行Zip压缩,我们重新创建这样的套接字import java.io.Inp...

weixin_42510768的博客 230

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java 数据 压缩_使用java实现网络传输数据的压缩(来源网络)

import java.io.*;import java.util.zip.*;public class GZIProc {public static void main(String[] args) {byte[] b1 ,b2 = null;try {BufferedInputStream in = new Buffe...

weixin_39821330的博客 296

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用Java实现网络传输数据压缩

1:选择或者创建一个新的套接字。(可以参看SUN´S的"创建一个典型的套接字")。 2:创建一个服务器端的套接字 3:创建一个RMIClientSocketFactory 4:创建一个RMIServerSocketFactory 5:创建一个继承了UnicastRemoteObjec的远程对象,从而使用新的factories 根据这一大致的想法,我们来看每一步如何具体的实现。 步骤1:...

小董同学 754

使用Java实现网络传输数据的压缩.

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 553

使用GZIP和Zip压缩Java数据流(转)

本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压 综述 许多信息资料都或多或少的包含一些多余的数据。通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量。最常见的解决数据存储和信 息传送的方法是安装额外的存储设备和扩展现有的通讯能力。这样做是可

yangdayin的专栏 2万+

Java(Android)使用gzip压缩与解压文件及注意事项

前言 gzip压缩比例极大,因此使用非常广泛,特别是网络传输上,它能够极大的减少带宽.下面分别是压缩和解压缩的测试代码及相应注意事项. 源码 package android.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; im...

渣渣fei 1120

数据压缩及解压

数据压缩及解压 *需求:有些需求中需要将数据进行压缩传输及解压使用 1、看下压缩的代码段如下: /** * 数据压缩传输 */ public static byte[] compress(byte[] bytes) throws IOException { ByteArrayOutputStream out = null; GZIPOutputStream gos = nu...

chengbin918的博客 1947

Java 数据压缩工具类:DeflaterUtils

Java 数据压缩工具类:DeflaterUtils

weixin_42326851的博客 544

java 压缩与解压

/** * 使用gzip进行压缩 */ public static String gzip(String primStr) { if (primStr == null || primStr.length() == 0) { return primStr; } ByteArrayOutputStream ...

xuehentian的博客 358

使用Gzip压缩数据,加快页面访问速度

在返回的json数据量大时,启用Gzip压缩,可以提高传输效率。下面为Gzip压缩对json字符串压缩并输出到页面的代码。一、代码 /** 向浏览器输出字符串响应数据,启用gzip压缩 */ protected void writeResponseDataStr(String data){ /** 获取响应对象 */ HttpServletRe...

218
上一篇: Java IT技术认证为什么火?
下一篇: Java手机应用蒸蒸日上
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值