核心是压缩和解压。
压缩代码:
public byte[] compress(String str) {
if (str == null || str.length() == 0) {
return null;
}
ByteArrayOutputStream out = null;
GZIPOutputStream gzip = null;
byte[] compress;
try {
out = new ByteArrayOutputStream();
gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes("utf-8"));
gzip.close();
compress = out.toByteArray();
return compress;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
调用代码这模拟将压缩后的byte[]数组作为请求Body给另外的微服务的url
public String getTollJsonByTile(String coordiate) throws Exception {
/* protobuffer对字符串压缩效果一般,所以还是用GZIP进行压缩。
FmbRequstPb.FmbRequstPbInner.Builder request = FmbRequstPb.FmbRequstPbInner.newBuilder();
request.setCoordinate(coordiate);
request.setCarid(123);
byte[] sentByteArray = request.build().toByteArray();
*/
HttpHeaders requestHeaders = new HttpHeaders();
// Accept
//requestHeaders.set("Accept", "text/");
requestHeaders.set("Accept-Charset", "utf-8");
//对字符串进行压缩
byte[] test = compress(coordiate);
// String sst1= restTemplate.postForObject("http://SYNC/sync/user/find/modeid?parm={parm}",null,String.class,"abcde");
String sst2 = restTemplate.postForObject("http://SYNC/sync/adas/pbf/warn", test, String.class);
return sst2;
}
SYNC这个微服务的接收controller
@RequestMapping(value = "/adas/pbf/warn",method = RequestMethod.POST)
public ResponseEntity getBrotocalBuffer(HttpServletRequest rq,@RequestBody byte[] coordinates) throws IOException {
//FmbRequstPb.FmbRequstPbInner req = FmbRequstPb.FmbRequstPbInner.parseFrom(coordinates);
//return ResponseEntity.ok(req.toByteArray());
//解压缩
String ss = uncompress(coordinates);
return ResponseEntity.ok(ss);
}
解压缩代码:
public String uncompress(byte[] str) {
if (str == null || str.length== 0) {
return null;
}
ByteArrayOutputStream out = null;
ByteArrayInputStream in = null;
GZIPInputStream gzip = null;
String uncompress = "";
try {
out = new ByteArrayOutputStream();
in = new ByteArrayInputStream(str);
gzip = new GZIPInputStream(in);
byte[] buffer = new byte[1024];
int offset = -1;
while ((offset = gzip.read(buffer)) != -1) {
out.write(buffer, 0, offset);
}
uncompress = out.toString("utf-8");
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != gzip) {
try {
gzip.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != in) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != out) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return uncompress;
}
分享到:
相关推荐
8. **snappy-java-1.0.4.1.jar**:Snappy是一个高效的压缩和解压缩库,用于提高数据存储和传输的效率,特别是在大数据和Hadoop环境中。 9. **jackson-mapper-asl-1.9.2.jar**:Jackson是一个流行的JSON库,用于Java...
在Spring中,可以通过使用Java的`java.util.zip`包或第三方库如Apache Commons Compress来实现文件的压缩和解压缩。例如,你可以创建一个服务类,使用`ZipOutputStream`将多个文件写入到一个zip文件中,或者使用`...
1. Java I/O流:包括InputStream和OutputStream的使用,以及它们在文件压缩和解压缩过程中的角色。 2. ZipOutputStream的使用:如何创建和填充zip文件,将文件流添加到压缩包中。 3. 文件传输协议:可能包括FTP和...
Mina提供了压缩和解压缩功能,以及高效的序列化和反序列化机制,有助于减少数据传输量和提高处理速度。同时,可以通过优化数据结构和算法,以及调整Mina的缓冲区大小,进一步提升性能。 最后,实现测试是非常重要的...
- **snappy-java-1.0.4.1.jar**:Snappy 是一种高效的压缩和解压缩算法,可能用于提高数据传输或存储的效率。 - **mysql-connector-java-5.1.31-bin.jar**:这是MySQL的Java连接器,用于连接Java应用程序到MySQL...
2. **snappy-java-1.0.4.1.jar** - 这是Snappy压缩库的Java实现,用于提高数据压缩和解压缩的速度。Snappy常被用于大数据处理和Hadoop生态系统中。 3. **spring-core-3.2.1.RELEASE.jar** - Spring框架的核心组件,...
此外,为了提高效率和节省存储空间,可以考虑使用压缩技术,如使用`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`进行文件的压缩和解压缩。这样,备份的文件可以以更小的体积存储,同时在需要时能快速...
1. **Spring框架**:Spring是Java开发中的核心框架,提供了AOP(面向切面编程)、IOC(控制反转)和强大的DI(依赖注入)功能,便于模块化开发和解耦合。 2. **Spring MVC**:作为Spring的一部分,Spring MVC负责...
系统还支持性能优化,例如自研的Libeasy网络框架可以处理高频率请求,内存优化技术如Lock-free内存B树提高数据访问速度,快速压缩和解压缩算法节省存储空间,以及OceanBase特有的异步复制技术和并发日志回放技术保证...
- `java.util.zip`和`java.util.concurrent`:前者用于压缩和解压缩文件,后者提供并发工具类,如`ExecutorService`,以异步处理文件传输,提高性能。 - `HTTP Range头`:在HTTP协议中,`Range`头可以指示客户端只...
4. **Apache Commons Compress**: `commonscompressdemo`展示了如何使用Apache Commons Compress库来压缩和解压缩文件,包括对Tar格式的支持,这对于文件存储和传输非常有用。 5. **Elasticsearch**: `Elastic...
1. **Spring框架**:Spring是Java开发的核心组件,提供依赖注入(DI)和面向切面编程(AOP),用于管理对象的生命周期和解耦合。 2. **SpringMVC**:Spring MVC是Spring框架的一个模块,负责处理HTTP请求,实现...
- **文件操作工具类**:项目中的Utils模块可能包含一系列静态方法,用于文件的读写、转换、压缩和解压缩等操作。 - **网络通信工具类**:为了优化网络通信,Utils可能包含了处理HTTP请求、响应的工具,如HTTP...
2. **SpringMVC**:Spring的MVC模块用于构建Web应用程序,负责处理请求、转发响应,并提供模型-视图-控制器模式的实现。 3. **MyBatis**:MyBatis是一个持久层框架,简化了SQL操作,将SQL语句与Java代码分离,提高了...
在处理ECG数据时,考虑到数据量和格式,portlet可能还涉及数据压缩和解压缩技术,如gzip或zip,以减少网络传输的负担。此外,为了确保数据的准确性,可能还会使用到数据验证和格式检查机制,例如验证文件类型是否为...
此外,考虑到图片的压缩和解压缩,可能会用到如Apache Commons IO库等工具。 支持超链接是"TalkRoom"增强用户体验的一个特性。这需要解析和处理URL,可以使用Java的java.net.URL类来实现。同时,为了在聊天窗口中...
又或者是构建一个文件管理系统,利用os和shutil模块操作文件和目录,进行文件的压缩和解压缩。 Python还有丰富的第三方库,如requests用于网络请求,BeautifulSoup或Scrapy用于网页抓取,scikit-learn用于机器学习...
- 如`Apache Commons Compress`库,提供了对各种文件打包和压缩格式的支持,如ZIP、TAR、GZIP等,简化了文件压缩和解压缩的操作。 6. **Configuration**: - 配置管理类库如`Apache Commons Configuration`,使得...
8. **文件操作**:简化文件读写、复制、删除等操作,同时提供文件压缩和解压缩功能。 9. **代码生成**:可能包含代码生成工具,能够自动生成常见的DAO、Service、Controller等代码,减少重复工作。 10. **单元测试...