Java文件压缩操作

2016-1-5 diaba 基础

原文:http://hello-nick-xu.iteye.com/blog/2002613      在web开发过程中,进行文件的压缩传输是一种常见的需求。比如一种场景:用户需要下载定时生成的报表,我们需要先对报表文件进行压以方便用户的下载,并减少文件的存储空间。      事实上,JDK已经提供了文件压缩/解压缩的支持,可以生成zip/gzip的压缩格式,并且支持支持“校验和”以检查压缩文件的完整性。通常会使用CRC(循环冗余校验)算法进行校验。      遗憾的是,JDK...

阅读全文>>

标签: java文件压缩

评论(0) 浏览(2682)

Java加密解密下篇【包括MD5、BASE64、DES、RSA等算法】

2016-1-5 diaba 基础

原文:http://hello-nick-xu.iteye.com/blog/2103781 在上一篇博客中已经简要的介绍了MD5、BASE64、DES、RSA等算法在Java中的具体应用。现在可以考虑对这些代码封装成一个工具类EncryptUtil,然后再补充一下Commons Codec对BASE64的扩展支持!   <一>. EncryptUtil工具类:  1. 使用commons-logging记录异常日志。  2. 提取常量字段、公共字段。  3...

阅读全文>>

标签: 加密 解密

评论(0) 浏览(2385)

Java加密解密上篇【包括MD5、BASE64、DES、RSA等算法】

2016-1-5 diaba 基础

原文 http://hello-nick-xu.iteye.com/blog/2103775  搞Java的攻城狮应该比较欣喜若狂的,不仅Sun公司的JDK提供了庞大的类库,而且还有众多的开源组织和个人不断地丰富着Java的生态系统。没错的,诸如MD5、BASE64、DES、RSA等经典加密解密算法,JDK都有提供专门的API来封装相关操作。程序猿只需要了解算法的思想,以及学习如何使用API即可。当然,针对BASE64算法,JDK仅仅提供了非常标准的实现,在某些场景下无法满足应用需求。在最后一部分,将学习Apache提供的Commons C...

阅读全文>>

标签: 加密 解密

评论(0) 浏览(2039)

JVM服务参数调优实战

2015-12-27 diaba JVM

大型网站服务器案例 承受海量访问的动态Web应用 服务器配置:8 core CPU, 8G MEM, JDK 1.6.X 参数方案: -server -Xmx3550m -Xms3550m -Xmn1256m -Xss128k -XX:SurvivorRatio=6 -XX:MaxPermSize=256m -XX:ParallelGCThreads=8 -XX:MaxTenuringThreshold=0 -XX:+UseConcMarkSweepGC 调优说明: -Xmx&...

阅读全文>>

标签: jvm

评论(0) 浏览(2489)

垃圾回收器选择及jvm参数介绍

2015-12-27 diaba JVM

垃圾回收器选择 JVM给出了3种选择:串行收集器、并行收集器、并发收集器。串行收集器只适用于小数据量的情况,所以生产环境的选择主要是并行收集器和并发收集器。 默认情况下JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行智能判断。 串行收集器 -XX:+UseSerialGC:设置串行收集器。 并行收集器(吞吐量优先) -XX:+UseParallelGC:设置为并行收集器。此配置仅对年轻代有效。即年轻代使用并行收集,而年老代...

阅读全文>>

标签: gc

评论(0) 浏览(1949)

JVM参数说明

2015-12-27 diaba JVM

-Xmx3550m:设置JVM最大堆内存为3550M。 -Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。需要注意的是:当这个值被设置的较大(例如>2MB)时将会在很大程度上降低系统的性能。 ...

阅读全文>>

标签: jvm参数

评论(0) 浏览(2355)

并行与并发的概念

2015-12-27 diaba 多线程

并行:同一时刻,同时发生    类似网络带宽概念 并发:同一时间间隔内发生    类似网络吞吐量概念

阅读全文>>

标签: 并发 并行

评论(0) 浏览(1834)

【转】Java 如何有效地避免OOM:善于利用软引用和弱引用

2015-12-24 diaba JVM

想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲: 一.了解 强引用、软引用、弱引用、虚引用的概念 二.进一步理解软引用和弱引用 三.如何利用软引用和弱引用解决OOM问题 如果有不正之处,希望谅解和批评指正,不胜感激。 请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0...

阅读全文>>

标签: OOM 软引用 弱引用

评论(0) 浏览(1994)

【转】Java多线程-工具篇-BlockingQueue

2015-12-22 diaba 多线程

前言:      在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示: 从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出;...

阅读全文>>

标签: BlockingQueue

评论(0) 浏览(1757)

IO操作(同步阻塞、同步非阻塞、异步)

2015-11-30 diaba IO

IO操作可以分为3类:         同步阻塞(即早期的IO操作,<=jdk1.4)、同步非阻塞(NIO,>=jdk1.4)、异步(AIO,>=jdk1.7)。  同步阻塞:      在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进程才能运行。JAVA传统的IO模型属于此种方式。  同步非阻塞:    &nbs...

阅读全文>>

标签: IO操作 同步 异步 阻塞

评论(0) 浏览(2059)

程序内存分区

2015-11-14 diaba JVM

分为五个区:堆、栈、全局区、文字常量区、程序代码区     1.堆区             用户在这里进行动态内存分配区     2.栈区             系统自动分配,自动回收,速度快,效率高,但是栈区比较小,小心栈溢出    ...

阅读全文>>

标签: 内存分区 程序

评论(0) 浏览(1835)

通过JSON传输数据时多转义字符

2015-11-1 diaba Java

       json实现了跨系统、跨语言、跨平台、跨地域的数据传输,方便,快捷。        近来在使用它时遇到一种问题,在java中组织数据,通过json格式发送,使用数据的用户发现,接收的数据在双引号处出现转义字符'\',格式如下: {"status":400,"message":"请求的参数错误,请校验后重试。","data":"[{\"fail_bond\":\"3KFC101001\"},{\"fail_bond\":\"3KFC101002\"},{\"fail_bond\":...

阅读全文>>

标签: 转义字符 json 格式错误

评论(0) 浏览(3153)

CountDownLatch用法

2015-11-1 diaba 多线程

CountDownLatch是一个同步辅助类 主要方法是: public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 使用场景:     当一组操作tasks完成后,才能执行任务taskB,该组操作tasks可以并发完成,没有先后顺序,但是taskB必须在tasks都完成之后才能开始执行。 实现上述业务场景的方法是: ...

阅读全文>>

标签: CountDownLatch 线程同步 任务同步

评论(0) 浏览(2371)

eclipse跑成功&java -jar不成功问题解决方案

2015-9-17 diaba Java

    在开发过程中,经常会遇到eclipse中成功执行,但是打包成jar后执行,不成功,那么这种情况基本上是依赖的包问题,具体差别在哪里,可以通过以下方式知道eclipse中执行的命令:     1.在eclipse中设置断点;     2.执行main方法,目前执行到断点处,没有退出程序;     3.在终端执行ps aux | grep java,查看当前机器上的java进程     4.可以看到在eclipse中执行程序实际执行的java命...

阅读全文>>

评论(0) 浏览(2158)

Powered by emlog 京ICP备15045175号-1 Copyright © 2022