原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZIP的java原生实现. 看了几篇zip压缩算法的帖子,讲的算是比较细致了,但就是没有对应的解压缩实现,太惜败了! 我就喜欢没事做总结,稍作整理,将其收纳! 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——J…
本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置Charset为StandardCharsets.UTF_8支持中文. 对于.tar.gz.tgz文件:可以看做先用tar打包,再使用gz进行压缩.使用commons-compress包的TarArchiveInputStream和GzipCompressorInputStream. 对于.tar.…
Java基础:三步学会Java Socket编程 http://tech.163.com 2006-04-10 09:17:18 来源: java-cn 网友评论11 条 论坛        第一步 充分理解Socket  1.什么是socket  所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求.  以J2SDK-1.3为例,Socket和ServerSocket类库位于ja…
原文:http://snowolf.iteye.com/blog/642492 JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”.ok,面向读者需求,我做调整,这里单说ZIP解压缩! 解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,如: CheckedInputStream cis = new CheckedInputStre…
由于工作的需要,经常要手动去打上线安装包,为了方便,自己写程序去帮助打包.使用过Unix或者Linux的人都基本上都用过tar打包以及gzip压缩,但在Windows下使用得最多的压缩还是RAR和Zip压缩吧 一.        tar打包.解包 在java的JDK中没有原生的tar归档类,需要下载开源的包: commons-compress-1.0.jar,所以 第一步是下载jar包,可以到www.findjar.com搜索并下载. 第二步导入到工程中:忽略 第三步编写源代码,在写代码之前使用…
package zip; import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.zip.Deflater;import java.util.zip.DeflaterOutputStream;import java.util.zip.Inflater;import java.util…
package zip; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.Deflate…
网上有关压缩和解压zip包的博文一大堆,我随便找了一个.看了看,依照自己的须要改动了一下,与各位分享一下,希望各位大神指正: package com.wangpeng.utill; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import…
1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.c…
Java多线程技术概述 介绍多线程之前要介绍线程,介绍线程则离不开进程. 首先 , 进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元: 线程:就是进程中的一个独立控制单元,线程在控制着进程的执行.一个进程中至少有一个进程. 多线程:一个进程中不只有一个线程. 一.线程与进程 进程:通俗来解释就是一个程序,一个App,打开任务管理器可以看到当前电脑中正在运行的进程. 线程:一个进程中一般包含多个线程,打开任务管理器也可以看到当前电脑中正在运行…
JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差.//称为时间戳System.out.println(time); 2. java.util.Date类与java.sql.Date类 /* java.util.Date类 |---java.sql.Date类 1.两个构造器的使用 >构造器…
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.C…
原文:http://snowolf.iteye.com/blog/465433 有关ZLib可参见官方主页 http://www.zlib.net/ ZLib可以简单的理解为压缩/解压缩算法,它与ZIP.RAR等归档算法有所不同,与bzip2比较接近. 压缩工具代码如下: /** * 2009-9-9 */ package org.zlex.commons.io; import java.io.ByteArrayOutputStream; import java.io.IOException;…
List ArrayList List接口 List接口的父接口-Collection List接口的重要子类- ArrayList -LikedList List接口不重要子类-Vector java.lang.IndexOutOfBoundsException 越界异常 1)ArrayList arrayList=new ArrayList(); //获取集合中的元素 Object element=arrayList.get(Index); 使用for循环获取集合中的所有元素 int siz…
数据类型 一:整型 1.十进制 2.八进制 八进制数是满8进1,包含0~7的8个数字,在整数前面添加一个"0",表示是八进制数. 3.十六进制 十六进制数是满16进1,包含0~9,a~f的16个数字,再整数前面添加一个"0x"表示是十六进制数. 二:浮点型 1.float:单精度浮点数 声明float类型的浮点数时,要在结尾加F或f. 2.double:双精度浮点数 声明double类型的浮点数时,要在结尾加D或d,浮点类型默认的类型是double,所以D和d也可以…
一.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘) System.out(默认显示器) System.err 二.重写向方法 System提供了三个重定向方法 方法 说明 static void setErr(PrintStream errr) 重定向标准错误输出流 static void setIn(InputStream in ) 重定向标准输入流 static void setOut(PrintStream out) 重定向歀输出流 三.例…
一.字符流 BufferedReader:BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中 BufferedWriter:把一批数据写入到缓冲区,当缓冲区区的满时,再把缓冲区的内容写到字符输出流中 二.对文本文件的读写 2.1.字符输入流 2.2.字符输出流 2.3.综合使用 package com.pb.io.buffered; import java.io.BufferedReader; import java.io.BufferedWriter;…
一.字节流 FileOutputStream是OutputStream 的直接子类 FileInputStream也是InputStream的直接子类 二.文本文件的读写 2.1.字节输入流 Test.txt文件内容 abcdefg package com.pb.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOExcept…
一.流概念(stream) File类并不能对文件内容进行读写. 读文件就是指:把文件的内中的数据读取到内存中来 写文件就是指:把内存中的数据写入到文件中去. 通过什么读写文件呢?文件流. 1.1.流概念 一连串流动的字符 1.2.流的特性 先进先出的方式传递信息 一个字节序列 具有方向性:输入流.输出流 二.按照流向划分 输入流:读取数据--InputStream和Reader作为基类 输出流:写入数据--OutputStream和Writer作为基类 一共四个4基类. 其中InputStre…
StudyLambda    Lambda 指的是函数式编程,现在最为流行的编程模式为面向对象,很多的开发者并不认可面向对象,所以很多的开发者宁愿继续使用 C 语言进行开发,也不愿意使用java,c++    但是随着整个行业的技术发展,函数编程语言已经开始被很多的人所认可,于是java也是被迫环境因素追加了 Lambda    如果要想去理解 Lambda 表达式设置的背景,就需要首先理解匿名内部类    匿名内部类解决的问题:对于抽象类或接口的子类如果发现其只使用一次,那么就没有必要将其定义…
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 DataType identifier = value; 当中.DataType是变量类型.如int/string/char/double/boolean等.identifier是变量名称.即标识符:value就是声明变量的值. 注: a.标识符由数字0-9.大写和小写字母.下划线.美元符号.人民币符号以…
安装需求1.JDK的安装2.PI4J的安装 JDK的安装1.首先到JDK的官网:https://www.oracle.com/technetwork/java/javase/downloads/index.html2.在这里我们需要看看自己的系统是多少位的:getconf LONG_BIT,比如我这里的就是32的系统 3.在JDK选择的上我们选择Java SE 8u221版本就可以了,至于最高版本我也没试验过,不知道可不可以. 根据刚刚的自己的系统版本然后来选择下载,当然你也可以使用wget命令…
2.3Java命令行工具 2.3.1编译运行 到了这里,是不是开始膨胀了,想写一段代码来秀一下?好吧,满足你!国际惯例,我们写一段HelloWorld.我们在某个目录下记事本,编写一段代码如下: 保存为“HelloWorld.java”.然后呢?傻了吧,不知道该怎么办了?哈哈!别急,回忆一下java的工作原理,第一步是不是需要编译成字节码文件?前面我们说过JDK的bin目录下包含编译工具和其他工具,其中javac.exe就是编译工具.我们先来研究一下javac. 我们打开一个命令行工具,切换到j…
静态导入的实现        为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察        范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 package cn.mldn.util; public class Import { public static int add(int x,int y) { // TODO Auto-generated method stub return x + y; } public static int mul(i…
有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1.总结知识点相对比较全面 2.一般来说讲解知识点通俗易懂 3.路线比较清晰,不会有太多的冗余内容. 这样一来,对于自学的朋友来说,一些专业的博客不但大量的缩减了你得学习时间.提高了学习效率.更重要的是这些博客能培养你对编程的兴趣. 于是,这几期文章会主要推荐一些技术博客,目前计划打算主要分为: (已完…
第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大.在一望无际的Java博文中有那么一两篇JavaScript文章,就算两篇Javascript的质量不是很高,其它教程也是能很好的帮助到在学习中的朋友. 博客关键词:JAVA与模式.简单工厂模式.工厂方法.抽象工厂.单例.建造.原型.适配器.合成.迭代.观察者.模板方法.策略.不变.桥梁.门面.代理…
Java agent又叫做Java 探针,本文将从以下四个问题出发来深入浅出了解下Java agent 一.什么是java agent? Java agent是在JDK1.5引入的,是一种可以动态修改Java字节码的技术.java类编译之后形成字节码被JVM执行,JVM在执行这些字节码之前获取这些字节码信息,并且对这些字节码进行修改,来完成一些额外的功能,这种就是java agent技术. 二.java agent可以实现什么样的功能? 1.java agent能够在加载java字节码之前进行拦…
java反射技术实例​1. [代码][Java]代码     package com.gufengxiachen.java.reflectiontest; public class Person {private String name;private int age;private static int total;public Person(){super();total++;}public Person(String name,int age){super();this.name=name…
Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking IO)是同步并阻塞的 IO,线程发起 IO 请求后,不论内核是否准备好 IO 操作,都会一直阻塞直到操作完成 NIO(Non-blocking IO)是同步非阻塞的 IO,线程发起 IO 请求后立即返回:内核在做好 IO 操作的准备之后,通过调用注册的回调函数通知线程做 IO 操作,线程开始阻塞,直到…
java继承的三个特点 java语言是单继承的 一个类的直接父类只能有一个 class A{} class B extends A{}//正确 class C{} class D extends A,C//错误 java语言可以多级继承 我有一个父亲,我父亲还有一个父亲,也就是爷爷 class A{} class B extends A{}//正确 class C extends B{};//正确 C-->B-->A-->java.long.Object 一个子类的直接父类是唯一的,但是…