- 浏览: 4408363 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
趁着头脑清楚,抓紧时间继续整理!
熟悉linux的朋友可能都用过文件压缩命令,譬如最为简单的gzip命令。
相关链接:
Java压缩技术(一) ZLib
Java压缩技术(二) ZIP压缩——Java原生实现
Java压缩技术(三) ZIP解压缩——Java原生实现
Java压缩技术(四) GZIP——Java原生实现
Java压缩技术(五) GZIP相关——浏览器解析
Java压缩技术(六) BZIP2——Commons实现
Java压缩技术(七) TAR——Commons实现
GZIP常常用在linxu环境下,是一种非常简单的压缩算法。在Java实现API中,它仅仅包含两个实现类:GZIPInputStream和GZIPOutputStream。
GZIPOutputStream类用于压缩
GZIPInputStream类用于解压缩
先说压缩实现,GZIPOutputStream只有一个方法用于压缩,就是带定长的write方法。简单调用如下文所示:
记得完成操作后,调用finish方法和flush方法!
核心的压缩实现就这么多!
对于解压缩,GZIPInputStream也对应GZIPOutputStream提供了一个带定长的read方法。简单调用如下文所示:
就这么简单!
核心内容完毕!
顺便补充一下,在liunx下操作gzip命令
gzip file用于压缩,如gzip a.txt将得到文件a.txt.gz,同时删除文件a.txt!。
gzip -d file.gz用于解压缩,如gzip -d a.txt.gz将得到文件a.txt,同时删除文件a.txt.gz!。
根据这些特性,我补充了相应的文件操作实现,详见下文!
完整实现:
罗嗦了半天,到底行不行?
来个测试用例,测试用例如下所示:
结果如何?
先看testDataCompress()方法控制台输出结果。
控制台输出如下:
原文: zlex@zlex.org,snowolf@zlex.org,zlex.snowolf@zlex.org
长度: 52
压缩后:
长度: 45
解压缩后: zlex@zlex.org,snowolf@zlex.org,zlex.snowolf@zlex.org
长度: 52
这里使用英文字符做测试,当输入字符串的字节数大于50左右时,压缩效果明显;如果这里使用中文压缩,可能当压缩上千字节时方能体现出压缩效果!
对于文件操作,朋友们可以自行实验,我代码里的实现是按照gzip命令来的!
举例来说:
压缩时,将文件a.txt压缩为a.txt.gz,同时删除文件a.txt。
解压缩时,将文件a.txt.gz解压缩为a.txt,同时删除文件a.txt.gz。
注意执行testFileCompress方法,查看产生的文件!
你大可以放到linux上去做验证!
commons也提供了GZIP算法的实现,甚至更多种压缩算法(tar、bzip2等)的实现,有机会我将继续整理!
相关链接:
Java压缩技术(一) ZLib
Java压缩技术(二) ZIP压缩——Java原生实现
Java压缩技术(三) ZIP解压缩——Java原生实现
Java压缩技术(四) GZIP——Java原生实现
Java压缩技术(五) GZIP相关——浏览器解析
Java压缩技术(六) BZIP2——Commons实现
Java压缩技术(七) TAR——Commons实现
JNI实现,效率也难说!我只是整体整理,对各个算法尚无深度研究!
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!
谢谢 :)
稍后,我补充一个使用gzip构建的网络流,IE的确是不支持的!
FireFox、Opera都能够很好的支持!
兄弟,看这里http://snowolf.iteye.com/blog/643443!
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!
谢谢 :)
稍后,我补充一个使用gzip构建的网络流,IE的确是不支持的!
FireFox、Opera都能够很好的支持!
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!
谢谢 :)
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!

熟悉linux的朋友可能都用过文件压缩命令,譬如最为简单的gzip命令。
相关链接:
Java压缩技术(一) ZLib
Java压缩技术(二) ZIP压缩——Java原生实现
Java压缩技术(三) ZIP解压缩——Java原生实现
Java压缩技术(四) GZIP——Java原生实现
Java压缩技术(五) GZIP相关——浏览器解析
Java压缩技术(六) BZIP2——Commons实现
Java压缩技术(七) TAR——Commons实现
GZIP常常用在linxu环境下,是一种非常简单的压缩算法。在Java实现API中,它仅仅包含两个实现类:GZIPInputStream和GZIPOutputStream。
GZIPOutputStream类用于压缩
GZIPInputStream类用于解压缩
先说压缩实现,GZIPOutputStream只有一个方法用于压缩,就是带定长的write方法。简单调用如下文所示:
/** * 数据压缩 * * @param is * @param os * @throws Exception */ public static void compress(InputStream is, OutputStream os) throws Exception { GZIPOutputStream gos = new GZIPOutputStream(os); int count; byte data[] = new byte[BUFFER]; while ((count = is.read(data, 0, BUFFER)) != -1) { gos.write(data, 0, count); } gos.finish(); gos.flush(); gos.close(); }
记得完成操作后,调用finish方法和flush方法!

核心的压缩实现就这么多!

对于解压缩,GZIPInputStream也对应GZIPOutputStream提供了一个带定长的read方法。简单调用如下文所示:
/** * 数据解压缩 * * @param is * @param os * @throws Exception */ public static void decompress(InputStream is, OutputStream os) throws Exception { GZIPInputStream gis = new GZIPInputStream(is); int count; byte data[] = new byte[BUFFER]; while ((count = gis.read(data, 0, BUFFER)) != -1) { os.write(data, 0, count); } gis.close(); }
就这么简单!

顺便补充一下,在liunx下操作gzip命令
gzip file用于压缩,如gzip a.txt将得到文件a.txt.gz,同时删除文件a.txt!。
gzip -d file.gz用于解压缩,如gzip -d a.txt.gz将得到文件a.txt,同时删除文件a.txt.gz!。
根据这些特性,我补充了相应的文件操作实现,详见下文!

完整实现:
/** * 2010-4-13 */ package org.zlex.commons.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * GZIP工具 * * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @since 1.0 */ public abstract class GZipUtils { public static final int BUFFER = 1024; public static final String EXT = ".gz"; /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ByteArrayInputStream(data); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 压缩 compress(bais, baos); byte[] output = baos.toByteArray(); baos.flush(); baos.close(); bais.close(); return output; } /** * 文件压缩 * * @param file * @throws Exception */ public static void compress(File file) throws Exception { compress(file, true); } /** * 文件压缩 * * @param file * @param delete * 是否删除原始文件 * @throws Exception */ public static void compress(File file, boolean delete) throws Exception { FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file.getPath() + EXT); compress(fis, fos); fis.close(); fos.flush(); fos.close(); if (delete) { file.delete(); } } /** * 数据压缩 * * @param is * @param os * @throws Exception */ public static void compress(InputStream is, OutputStream os) throws Exception { GZIPOutputStream gos = new GZIPOutputStream(os); int count; byte data[] = new byte[BUFFER]; while ((count = is.read(data, 0, BUFFER)) != -1) { gos.write(data, 0, count); } gos.finish(); gos.flush(); gos.close(); } /** * 文件压缩 * * @param path * @throws Exception */ public static void compress(String path) throws Exception { compress(path, true); } /** * 文件压缩 * * @param path * @param delete * 是否删除原始文件 * @throws Exception */ public static void compress(String path, boolean delete) throws Exception { File file = new File(path); compress(file, delete); } /** * 数据解压缩 * * @param data * @return * @throws Exception */ public static byte[] decompress(byte[] data) throws Exception { ByteArrayInputStream bais = new ByteArrayInputStream(data); ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 解压缩 decompress(bais, baos); data = baos.toByteArray(); baos.flush(); baos.close(); bais.close(); return data; } /** * 文件解压缩 * * @param file * @throws Exception */ public static void decompress(File file) throws Exception { decompress(file, true); } /** * 文件解压缩 * * @param file * @param delete * 是否删除原始文件 * @throws Exception */ public static void decompress(File file, boolean delete) throws Exception { FileInputStream fis = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(file.getPath().replace(EXT, "")); decompress(fis, fos); fis.close(); fos.flush(); fos.close(); if (delete) { file.delete(); } } /** * 数据解压缩 * * @param is * @param os * @throws Exception */ public static void decompress(InputStream is, OutputStream os) throws Exception { GZIPInputStream gis = new GZIPInputStream(is); int count; byte data[] = new byte[BUFFER]; while ((count = gis.read(data, 0, BUFFER)) != -1) { os.write(data, 0, count); } gis.close(); } /** * 文件解压缩 * * @param path * @throws Exception */ public static void decompress(String path) throws Exception { decompress(path, true); } /** * 文件解压缩 * * @param path * @param delete * 是否删除原始文件 * @throws Exception */ public static void decompress(String path, boolean delete) throws Exception { File file = new File(path); decompress(file, delete); } }
罗嗦了半天,到底行不行?
来个测试用例,测试用例如下所示:
/** * 2010-4-13 */ package org.zlex.commons.compress.compress; import static org.junit.Assert.assertEquals; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.junit.Test; /** * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @since 1.0 */ public class GZipUtilsTest { private String inputStr = "zlex@zlex.org,snowolf@zlex.org,zlex.snowolf@zlex.org"; @Test public final void testDataCompress() throws Exception { System.err.println("原文:\t" + inputStr); byte[] input = inputStr.getBytes(); System.err.println("长度:\t" + input.length); byte[] data = GZipUtils.compress(input); System.err.println("压缩后:\t"); System.err.println("长度:\t" + data.length); byte[] output = GZipUtils.decompress(data); String outputStr = new String(output); System.err.println("解压缩后:\t" + outputStr); System.err.println("长度:\t" + output.length); assertEquals(inputStr, outputStr); } @Test public final void testFileCompress() throws Exception { FileOutputStream fos = new FileOutputStream("d:/f.txt"); fos.write(inputStr.getBytes()); fos.flush(); fos.close(); GZipUtils.compress("d:/f.txt", false); GZipUtils.decompress("d:/f.txt.gz", false); File file = new File("d:/f.txt"); FileInputStream fis = new FileInputStream(file); DataInputStream dis = new DataInputStream(fis); byte[] data = new byte[(int) file.length()]; dis.readFully(data); fis.close(); String outputStr = new String(data); assertEquals(inputStr, outputStr); } }
结果如何?
先看testDataCompress()方法控制台输出结果。
控制台输出如下:
引用
原文: zlex@zlex.org,snowolf@zlex.org,zlex.snowolf@zlex.org
长度: 52
压缩后:
长度: 45
解压缩后: zlex@zlex.org,snowolf@zlex.org,zlex.snowolf@zlex.org
长度: 52
这里使用英文字符做测试,当输入字符串的字节数大于50左右时,压缩效果明显;如果这里使用中文压缩,可能当压缩上千字节时方能体现出压缩效果!
对于文件操作,朋友们可以自行实验,我代码里的实现是按照gzip命令来的!
举例来说:
压缩时,将文件a.txt压缩为a.txt.gz,同时删除文件a.txt。
解压缩时,将文件a.txt.gz解压缩为a.txt,同时删除文件a.txt.gz。
注意执行testFileCompress方法,查看产生的文件!


commons也提供了GZIP算法的实现,甚至更多种压缩算法(tar、bzip2等)的实现,有机会我将继续整理!

相关链接:
Java压缩技术(一) ZLib
Java压缩技术(二) ZIP压缩——Java原生实现
Java压缩技术(三) ZIP解压缩——Java原生实现
Java压缩技术(四) GZIP——Java原生实现
Java压缩技术(五) GZIP相关——浏览器解析
Java压缩技术(六) BZIP2——Commons实现
Java压缩技术(七) TAR——Commons实现
- gzip.rar (1.5 KB)
- 下载次数: 523
评论
11 楼
Horse_Chasing
2016-12-28
垃圾代码垃圾代码
10 楼
ustcstj
2014-07-09
博主你好,我将你的代码稍微修改后放到安卓平台上运行,针对下面这个语句出现一个问题
byte[] data = GZipUtils.compress(input);
System.err.println("压缩后:\t");
System.err.println("长度:\t" + data.length);
我将println换成了log.i("tag1","String.valueof(data.length)");
在data.length这里出错,eclipse说data没有length变量,希望博主解惑
byte[] data = GZipUtils.compress(input);
System.err.println("压缩后:\t");
System.err.println("长度:\t" + data.length);
我将println换成了log.i("tag1","String.valueof(data.length)");
在data.length这里出错,eclipse说data没有length变量,希望博主解惑



9 楼
Alicus520
2010-11-05
谢谢了!!
8 楼
snowolf
2010-09-26
forchenyun 写道
hi,我目前需要极高效的压缩,对Java自己的gzip实现不是很放心。
gzip据说有c写的代码,Java本地调用,不知道博主有研究吗?
gzip据说有c写的代码,Java本地调用,不知道博主有研究吗?
JNI实现,效率也难说!我只是整体整理,对各个算法尚无深度研究!
7 楼
forchenyun
2010-09-26
hi,我目前需要极高效的压缩,对Java自己的gzip实现不是很放心。
gzip据说有c写的代码,Java本地调用,不知道博主有研究吗?
gzip据说有c写的代码,Java本地调用,不知道博主有研究吗?
6 楼
snowolf
2010-04-14
snowolf 写道
iamzealotwang 写道
snowolf 写道
iamzealotwang 写道
你好 我有一个问题想请教一下
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!

谢谢 :)
稍后,我补充一个使用gzip构建的网络流,IE的确是不支持的!


兄弟,看这里http://snowolf.iteye.com/blog/643443!

5 楼
snowolf
2010-04-14
iamzealotwang 写道
snowolf 写道
iamzealotwang 写道
你好 我有一个问题想请教一下
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!

谢谢 :)
稍后,我补充一个使用gzip构建的网络流,IE的确是不支持的!


4 楼
iamzealotwang
2010-04-14
snowolf 写道
iamzealotwang 写道
你好 我有一个问题想请教一下
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!

谢谢 :)
3 楼
qianhd
2010-04-14
除了不支持加密解密什么都好
2 楼
snowolf
2010-04-14
iamzealotwang 写道
你好 我有一个问题想请教一下
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
首先说压力,如果文件/数据超级大,那么不管是压缩,还是解压缩都是很大的。一般情况的操作不至于造成多大的压力。至于这一点,鱼与熊掌不可兼得,只要把握好一个量度即可!
再说IE,IE的确有这个问题,广泛的来说兼容性成问题。抽空我试试看,看看是不是在其他浏览器中也如此!

1 楼
iamzealotwang
2010-04-13
你好 我有一个问题想请教一下
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
我是一名前端工程师,有关GZip这种东西不是很懂,不过我有一个需求
前端需要从后端load一份xml文件 之前的做法都是我自己用zip压缩xml文件然后再从后端load过来解压。不过后端的同事和我说 不用那么麻烦,说xml在http传输的时候直接被gzip压缩了。
我想问一下 这样做对后端的压力大么? 还有就是听说这种方式对ie6 ie7的支持不好 有这回事么? 谢谢。
发表评论
-
Java压缩技术(七) TAR——Commons实现
2010-04-20 18:04 36646在linux下,tar是一个归档命令。当然,如果配合gzip、 ... -
Java压缩技术(六) BZIP2——Commons实现
2010-04-15 14:47 22561想要把一整套算法都整理出来,的确是件非常老心费力的事情! 但是 ... -
Java压缩技术(五) GZIP相关——浏览器解析
2010-04-14 10:36 24766昨天一篇GZIP相关实现引起大家的广泛关注,为一位朋友验证一下 ... -
Java压缩技术(三) ZIP解压缩——Java原生实现
2010-04-13 10:20 34440JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写 ... -
Java压缩技术(二) ZIP压缩——Java原生实现
2010-04-13 00:02 61048去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ... -
Java压缩技术(一) ZLib
2009-09-09 13:09 62232应好友需要,整理一下Java的压缩算法,先从ZLib开始。 ...
相关推荐
ZLib ZIP 压缩——Java 原生实现 ZIP 解压缩——Java 原生实现 GZIP——Java 原生实现 GZIP 相关——浏览器解析 BZIP2——Commons 实现 TAR——Commons 实现
本资源"安卓Android源码——网络监视器源码 (2).zip"提供了一种实现网络监控的解决方案,帮助开发者了解网络请求的详细过程,包括数据传输、错误处理以及网络状态的实时监测。下面我们将详细探讨这个源码中的关键...
基于Maxwell设计的经典280W 4025RPM高效率科尔摩根12极39槽TBM无框力矩电机:生产与学习双重应用案例,基于Maxwell设计的经典280W高转速科尔摩根TBM无框力矩电机:7615系列案例解析与应用实践,基于maxwwell设计的经典280W,4025RPM 内转子 科尔摩根 12极39槽 TBM无框力矩电机,7615系列。 该案例可用于生产,或者学习用,(157) ,maxwell设计; 280W; 4025RPM内转子; 科尔摩根; 12极39槽TBM无框力矩电机; 7615系列; 生产/学习用。,基于Maxwell设计,高功率280W 12极39槽TBM无框力矩电机:生产与学习双用途案例
基于碳交易的微网优化模型的Matlab设计与实现策略分析,基于碳交易的微网优化模型的Matlab设计与实现探讨,考虑碳交易的微网优化模型matlab ,考虑碳交易; 微网优化模型; MATLAB;,基于Matlab的碳交易微网优化模型研究
二级2025模拟试题(答案版)
OpenCV是一个功能强大的计算机视觉库,它提供了多种工具和算法来处理图像和视频数据。在C++中,OpenCV可以用于实现基础的人脸识别功能,包括从摄像头、图片和视频中识别人脸,以及通过PCA(主成分分析)提取图像轮廓。以下是对本资源大体的介绍: 1. 从摄像头中识别人脸:通过使用OpenCV的Haar特征分类器,我们可以实时从摄像头捕获的视频流中检测人脸。这个过程涉及到将视频帧转换为灰度图像,然后使用预训练的Haar级联分类器来识别人脸区域。 2. 从视频中识别出所有人脸和人眼:在视频流中,除了检测人脸,我们还可以进一步识别人眼。这通常涉及到使用额外的Haar级联分类器来定位人眼区域,从而实现对人脸特征的更细致分析。 3. 从图片中检测出人脸:对于静态图片,OpenCV同样能够检测人脸。通过加载图片,转换为灰度图,然后应用Haar级联分类器,我们可以在图片中标记出人脸的位置。 4. PCA提取图像轮廓:PCA是一种统计方法,用于分析和解释数据中的模式。在图像处理中,PCA可以用来提取图像的主要轮廓特征,这对于人脸识别技术中的面部特征提取尤
麻雀搜索算法(SSA)自适应t分布改进版:卓越性能与优化代码注释,适合深度学习。,自适应t分布改进麻雀搜索算法(TSSA)——卓越的学习样本,优化效果出众,麻雀搜索算法(SSA)改进——采用自适应t分布改进麻雀位置(TSSA),优化后明显要优于基础SSA(代码基本每一步都有注释,代码质量极高,非常适合学习) ,TSSA(自适应t分布麻雀位置算法);注释详尽;高质量代码;适合学习;算法改进结果优异;TSSA相比基础SSA。,自适应T分布优化麻雀搜索算法:代码详解与学习首选(TSSA改进版)
锂电池主动均衡Simulink仿真研究:多种均衡策略与电路架构的深度探讨,锂电池主动均衡与多种均衡策略的Simulink仿真研究:buckboost拓扑及多层次电路分析,锂电池主动均衡simulink仿真 四节电池 基于buckboost(升降压)拓扑 (还有传统电感均衡+开关电容均衡+双向反激均衡+双层准谐振均衡+环形均衡器+cuk+耦合电感)被动均衡电阻式均衡 、分层架构式均衡以及分层式电路均衡,多层次电路,充放电。 ,核心关键词: 锂电池; 主动均衡; Simulink仿真; 四节电池; BuckBoost拓扑; 传统电感均衡; 开关电容均衡; 双向反激均衡; 双层准谐振均衡; 环形均衡器; CUK均衡; 耦合电感均衡; 被动均衡; 电阻式均衡; 分层架构式均衡; 多层次电路; 充放电。,锂电池均衡策略研究:Simulink仿真下的多拓扑主动与被动均衡技术
S7-1500和分布式外围系统ET200MP模块数据
内置式永磁同步电机无位置传感器模型:基于滑膜观测器和MTPA技术的深度探究,内置式永磁同步电机基于滑膜观测器和MTPA的无位置传感器模型研究,基于滑膜观测器和MTPA的内置式永磁同步电机无位置传感器模型 ,基于滑膜观测器;MTPA;内置式永磁同步电机;无位置传感器模型,基于滑膜观测与MTPA算法的永磁同步电机无位置传感器模型
centos7操作系统下安装docker,及docker常用命令、在docker中运行nginx示例,包括 1.设置yum的仓库 2.安装 Docker Engine-Community 3.docker使用 4.查看docker进程是否启动成功 5.docker常用命令及nginx示例 6.常见问题
给曙光服务器安装windows2012r2时候找不到磁盘,问厂家工程师要的raid卡驱动,内含主流大多数品牌raid卡驱动
数学建模相关主题资源2
西门子四轴卧式加工中心后处理系统:828D至840D支持,四轴联动制造解决方案,图档处理与试看程序一应俱全。,西门子四轴卧加后处理系统:支持828D至840D系统,四轴联动高精度制造解决方案,西门子四轴卧加后处理,支持828D~840D系统,支持四轴联动,可制制,看清楚联系,可提供图档处理试看程序 ,核心关键词:西门子四轴卧加后处理; 828D~840D系统支持; 四轴联动; 制程; 联系; 图档处理试看程序。,西门子四轴卧加后处理程序,支持多种系统与四轴联动
MATLAB下基于列约束生成法CCG的两阶段鲁棒优化问题求解入门指南:算法验证与经典文献参考,MATLAB下基于列约束生成法CCG的两阶段鲁棒优化问题求解入门指南:算法验证与文献参考,MATLAB代码:基于列约束生成法CCG的两阶段问题求解 关键词:两阶段鲁棒 列约束生成法 CCG算法 参考文档:《Solving two-stage robust optimization problems using a column-and-constraint generation method》 仿真平台:MATLAB YALMIP+CPLEX 主要内容:代码构建了两阶段鲁棒优化模型,并用文档中的相对简单的算例,进行CCG算法的验证,此篇文献是CCG算法或者列约束生成算法的入门级文献,其经典程度不言而喻,几乎每个搞CCG的两阶段鲁棒的人都绕不过此篇文献 ,两阶段鲁棒;列约束生成法;CCG算法;MATLAB;YALMIP+CPLEX;入门级文献。,MATLAB代码实现:基于两阶段鲁棒与列约束生成法CCG的算法验证研究
“生热研究的全面解读:探究参数已配置的Comsol模型中的18650圆柱锂电池表现”,探究已配置参数的COMSOL模型下的锂电池生热现象:18650圆柱锂电池模拟分析,出一个18650圆柱锂电池comsol模型 参数已配置,生热研究 ,出模型; 18650圆柱锂电池; comsol模型; 参数配置; 生热研究,构建18650电池的COMSOL热研究模型
移动端多端运行的知识付费管理系统源码,TP6+Layui+MySQL后端支持,功能丰富,涵盖直播、点播、管理全功能及礼物互动,基于UniApp跨平台开发的移动端知识付费管理系统源码:多端互通、全功能齐备、后端采用TP6与PHP及Layui前端,搭载MySQL数据库与直播、点播、管理、礼物等功能的强大整合。,知识付费管理系统源码,移动端uniApp开发,app h5 小程序一套代码多端运行,后端php(tp6)+layui+MySQL,功能齐全,直播,点播,管理,礼物等等功能应有尽有 ,知识付费;管理系统源码;移动端uniApp开发;多端运行;后端php(tp6);layui;MySQL;直播点播;管理功能;礼物功能,知识付费管理平台:全功能多端运行系统源码(PHP+Layui+MySQL)
基于Python+Django+MySQL的个性化图书推荐系统:协同过滤推荐,智能部署,用户定制功能,基于Python+Django+MySQL的个性化图书推荐系统:协同过滤推荐,智能部署,用户定制功能,Python+Django+Mysql个性化图书推荐系统 图书在线推荐系统 基于用户、项目、内容的协同过滤推荐算法。 帮远程安装部署 一、项目简介 1、开发工具和实现技术 Python3.8,Django4,mysql8,navicat数据库管理工具,html页面,javascript脚本,jquery脚本,bootstrap前端框架,layer弹窗组件、webuploader文件上传组件等。 2、项目功能 前台用户包含:注册、登录、注销、浏览图书、搜索图书、信息修改、密码修改、兴趣喜好标签、图书评分、图书收藏、图书评论、热点推荐、个性化推荐图书等功能; 后台管理员包含:用户管理、图书管理、图书类型管理、评分管理、收藏管理、评论管理、兴趣喜好标签管理、权限管理等。 个性化推荐功能: 无论是否登录,在前台首页展示热点推荐(根据图书被收藏数量降序推荐)。 登录用户,在前台首页展示个性化推荐
STM32企业级锅炉控制器源码分享:真实项目经验,带注释完整源码助你快速掌握实战经验,STM32企业级锅炉控制器源码:真实项目经验,完整注释,助力初学者快速上手,stm32真实企业项目源码 项目要求与网上搜的那些开发板的例程完全不在一个级别,也不是那些凑合性质的项目可以比拟的。 项目是企业级产品的要求开发的,能够让初学者了解真实的企业项目是怎么样的,增加工作经验 企业真实项目网上稀缺,完整源码带注释,适合没有参与工作或者刚学stm32的增加工作经验, 这是一个锅炉的控制器,有流程图和程序协议的介绍。 ,stm32源码;企业级项目;工作经验;锅炉控制器;流程图;程序协议,基于STM32的真实企业级锅炉控制器项目源码