
Java
文章平均质量分 84
janekeyzheng
这个作者很懒,什么都没留下…
展开
-
自己实现Http服务器:一、Http协议解析
之前总结过一篇TCP/IP协议的文章,而Http就是建立在TCP的基础之上的。TCP、UDP属于传输层协议,而Http是属于应用层的协议。Http是超文本传输协议的缩写。协议详细内容参考RFC2616。由于面向文本的,所以使用ASCII编码。Http特点1. 客户/服务器模式,支持基本认证和安全认证(Https)2. 简单快速3. 灵活:允许传输任意类型数据,通过C原创 2015-01-05 10:47:20 · 5854 阅读 · 0 评论 -
Java内存溢出错误:OutOfMemoryError异常分析
在JVM的运行时数据区,除了程序计数器之外,其他区域都有可能会产生OutOfMemoryError异常。Java堆溢出Java堆溢出时会报下面的异常错误:java.lang.OutOfMemoryError: Java heap space 在启动虚拟机的时候可以加上参数:-XX:+HeapDumpOnOutOfMemoryError,让虚拟机在出现内存溢出异常时Dump出原创 2014-10-29 00:17:45 · 3031 阅读 · 0 评论 -
Java序列化
Java序列化就是将Java对象转换成字节流,可用于持久化存储,或者网络传输等。反序列化就是将字节流再转成对象。1、序列化使用在Java中,类实现了java.io.Serializable接口就可以被序列化。Java的枚举默认继承类java.lang.Enum也实现了Serializable接口,所以枚举类型对象都是默认可序列化的。另外数组也是可以序列化的。那通过实现Serializable的类如原创 2016-07-11 16:24:06 · 386 阅读 · 0 评论 -
JVM系列:四、Java类加载机制总结
Java程序是运行与虚拟机之上的,程序中使用到的类元数据由虚拟机先加载进内存才可以使用。 虚拟机的类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载的时间Java的类型加载和连接过程都是在程序运行期间完成的。类的生命周期: 1.加载 -> 2.连接【2.1.验证 -> 2.2.准备原创 2016-05-16 22:35:14 · 488 阅读 · 0 评论 -
JVM系列:三、性能监控及工具
Sun JDK自带监控和故障处理工具jps显示Hotspot虚拟机继承jstat收集Hotspot虚拟机的运行数据jinfo显示虚拟机配置信息jmap生成虚拟机的内存转储快照(heapdump文件)jhat用于分析heapdump文件,建立原创 2014-11-13 11:04:45 · 2028 阅读 · 0 评论 -
Java 集合源码分析及总结
Java的集合容器这块是平时开发中使用到最多的Java类库了,什么情况下应该使用那些容器,这些容器的实现机制又都是怎样的?最近重新仔细地研究了Java的集合这块知识以及JDK的源码,总结一下自己的心得。下图中对于Java的集合api,有一个比较全面的展示。Java容器库中分为两类(基本接口)1、集合(Collection):通过一个或多个规则存储的一序列原创 2015-01-05 15:28:02 · 621 阅读 · 0 评论 -
自己实现Http服务器:二、实现过程
要实现一个Http服务器并不是一件容易的事情,需要对网络IO十分熟悉,并且对Http协议的规范了如指掌。Http规范可以参考我的上一篇文章《一、Http协议解析》。实现Http服务器并不是短短几十行代码就能实现的,当然,你要做得十分简陋我也就不多说了。所以我就不把大量的代码给贴出来,让人觉得长篇大论似的。这里我用图文的形式,尽量把Http服务器的实现过程详细的展示出来,希望做到言简意赅原创 2015-01-14 11:35:33 · 672 阅读 · 0 评论 -
Java中的迭代器Iterator和for-each循环
迭代器(Iterator)的工作就是循环一个序列,依次获得里面的对象,这里不再需要程序去关心序列的底层结构。迭代器的接口一共就三个方法:public interface Iterator { boolean hasNext(); E next(); void remove();} 通过方法名很容易猜到它的目的,在这基础之上还有个ListIterator接口原创 2014-12-02 15:36:22 · 5448 阅读 · 1 评论 -
JVM系列:一、JVM组成及内存分配
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人想出来。原创 2014-10-28 17:11:50 · 476 阅读 · 0 评论 -
JVM系列:二、JVM内存回收
程序计数器、虚拟机栈、本地方法栈这三个区域的生命周期是和线程同步的,并且内存分配是在编译期就知道了,所以在方法结束或线程结束时,这三个区域的内存自然就回收了。而Java堆和方法区是在程序运行时才动态分配和回收内存,垃圾收集器所关注的就是这部分的内存。判断对象是否死亡堆中几乎放着所有的对象实例。垃圾收集器判断堆中对象是否“死去”有这几种方法:1、引用计数法当有一个地方引用该对象,计数原创 2014-10-28 17:32:46 · 514 阅读 · 0 评论 -
Java NIO完整总结
一、概述Java NIO从JDK1.4开始出现,它只有一个目标:提高IO效率。老的IO包其实也都用NIO重新实现过,也可以利用NIO的一些特性提高效率,即使不写NIO的代码,平时使用IO也都用到了NIO的技术,只是隐藏到了底层的实现中。NIO的高效率来自于类似操作系统IO处理的结构方式,也是NIO的核心部分:channel(通道)buffer(缓冲区)selector(选择器)IO与NIOI原创 2017-03-27 20:41:17 · 473 阅读 · 0 评论