上一页 1 ··· 8 9 10 11 12 13 下一页
摘要: 一、前言 分析完了List的两个主要类之后,我们来分析Set接口下的类,HashSet和LinkedHashSet,其实,在分析完HashMap与LinkedHashMap之后,再来分析HashSet与LinkedHashSet,就会变成异常简单,下面开始进行分析。 二、数据结构 2.1 HashS 阅读全文
posted @ 2016-03-23 09:56 leesf 阅读(3335) 评论(5) 推荐(6) 编辑
摘要: 一、前言 在分析了ArrayList了之后,紧接着必须要分析它的同胞兄弟:LinkedList,LinkedList与ArrayList在底层的实现上有所不同,其实,只要我们有数据结构的基础,在分析源码的时候就会很简单,下面进入正题,LinkedList源码分析。 二、LinkedList数据结构 阅读全文
posted @ 2016-03-23 08:59 leesf 阅读(8582) 评论(6) 推荐(31) 编辑
摘要: 一、前言 分析了Map中主要的类之后,下面我们来分析Collection下面几种常见的类,如ArrayList、LinkedList、HashSet、TreeSet等。下面通过JDK源码来一起分析ArrayList底层是如何实现的。(PS:把JVM看完了之后终于可以有成片的时间来阅读源码了,感觉简直 阅读全文
posted @ 2016-03-22 20:37 leesf 阅读(14159) 评论(1) 推荐(36) 编辑
摘要: 一、前言 经过前面的学习,我们终于进入了虚拟机最后一部分的学习,内存模型。理解内存模型对我们理解虚拟机、正确使用多线程编程提供很大帮助。下面开始正式学习。 二、Java并发基础 在并发编程中存在两个关键问题①线程之间如何通信 ②线程之间如何同步。 2.1 通信 通信是指线程之间以何种机制来交换信息。 阅读全文
posted @ 2016-03-21 16:37 leesf 阅读(2731) 评论(0) 推荐(8) 编辑
摘要: 一、前言 在前面的解决乱码的一文中,只找到了解决办法,但是没有为什么,说白了,就是对编码还是不是太熟悉,编码问题是一个很简单的问题,计算机从业人员应该也必须弄清楚,基于编码的应用有Base64加密算法,然后,这个问题一直放着,想找个机会解决。于是乎,终于逮到机会,开始下手。 二、编码 关于ASCII 阅读全文
posted @ 2016-03-17 17:47 leesf 阅读(2249) 评论(3) 推荐(6) 编辑
摘要: 一、前言 在了解了类加载的相关信息后,有必要进行更深入的学习,了解执行引擎的细节,如字节码是如何被虚拟机执行从而完成指定功能的呢。下面,我们将进行深入的分析。 二、栈帧 我们知道,在虚拟机中与执行方法最相关的是栈帧,程序的执行对应着栈帧的入栈和出栈,所以栈帧对于执行引擎而言,是很重要的基础。栈帧的基 阅读全文
posted @ 2016-03-14 17:29 leesf 阅读(1527) 评论(3) 推荐(3) 编辑
摘要: 一、前言 前面分析了class文件具体含义,接着需要将class文件加载到虚拟机中,这个过程是怎样的呢,下面,我们来仔细分析。 二、什么是类加载机制 把class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是类加载机制。 三、类加载总体流程图 阅读全文
posted @ 2016-03-12 19:05 leesf 阅读(1696) 评论(1) 推荐(3) 编辑
摘要: 一、前言 随着我们学习的不断深入,我相信读者对class文件很感兴趣,class文件是用户编写程序与虚拟机之前的桥梁,程序通过编译形成class文件,class文件之后会载入虚拟机,被虚拟机执行,下面我么来一起揭开class文件的神秘面纱。 二、什么是class文件 class文件是二进制文件,通常 阅读全文
posted @ 2016-03-12 08:58 leesf 阅读(1862) 评论(3) 推荐(8) 编辑
摘要: 一、前言 在项目需要添加安全模块,客户端调用服务端发布的service必须要经过验证,加密算法采用DES,客户端采用C#进行加密,服务端使用Java进行解密。废话不多说,直接上代码。 二、客户端 客户端采用C#进行开发,C#进行DES加密解密代码清单如下: 运行结果: 34DB26C86E933FB 阅读全文
posted @ 2016-03-10 12:56 leesf 阅读(970) 评论(0) 推荐(3) 编辑
摘要: 一、前言 当我们需要把插入的元素进行排序的时候,就是时候考虑TreeMap了,从名字上来看,TreeMap肯定是和树是脱不了干系的,它是一个排序了的Map,下面我们来着重分析其源码,理解其底层如何实现排序功能。下面,开始分析。 二、TreeMap示例 运行结果: aa : aa bb : bb cc 阅读全文
posted @ 2016-03-08 20:00 leesf 阅读(2290) 评论(0) 推荐(7) 编辑
摘要: 一、前言 前面已经分析了HashMap与LinkedHashMap,现在我们来分析不太常用的IdentityHashMap,从它的名字上也可以看出来用于表示唯一的HashMap,仔细分析了其源码,发现其数据结构与HashMap使用的数据结构完全不同,因为在继承关系上面,他们两没有任何关系。下面,进入 阅读全文
posted @ 2016-03-08 10:41 leesf 阅读(3595) 评论(1) 推荐(2) 编辑
摘要: 一、前言 在遍历HashMap与LinkedHashMap时,我们通常都会使用到迭代器,而HashMap的迭代器与LinkedHashMap迭代器是如何工作的呢?下面我们来一起分析分析。 二、迭代器继承图 三、HashMap迭代器 3.1 HashIterator HashIterator是一个抽象 阅读全文
posted @ 2016-03-07 15:49 leesf 阅读(2974) 评论(0) 推荐(6) 编辑
摘要: 一、前言 前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存着元素插入的顺序,并且可以按照我们插入的顺序进行访问。 二、LinkedHashMap用法 说明:以 阅读全文
posted @ 2016-03-07 09:30 leesf 阅读(5374) 评论(0) 推荐(7) 编辑
摘要: 一、前言 在分析jdk1.8后的HashMap源码时,发现网上好多分析都是基于之前的jdk,而Java8的HashMap对之前做了较大的优化,其中最重要的一个优化就是桶中的元素不再唯一按照链表组合,也可以使用红黑树进行存储,总之,目标只有一个,那就是在安全和功能性完备的情况下让其速度更快,提升性能。 阅读全文
posted @ 2016-03-05 08:09 leesf 阅读(23434) 评论(27) 推荐(53) 编辑
摘要: 一、前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳理具体类的原理和其中的数据结构。分析源码的好处总结如下三条: 1. 提升自身代码水平及写代码能力。 阅读全文
posted @ 2016-03-04 17:21 leesf 阅读(4201) 评论(4) 推荐(9) 编辑
摘要: 前言 今天在测试爬虫项目时,发现了一个很严肃的问题,当爬取的网页编码格式为gb2312时,按照一般的办法转化为utf-8编码时总是乱码,PS:爬取的所有网页无论何种编码格式,都转化为utf-8格式进行存储。 一、问题出现 使用这篇文章里面的方法可以直接爬取页面信息并保存至本地使用Httpclient 阅读全文
posted @ 2016-03-03 17:42 leesf 阅读(10349) 评论(6) 推荐(4) 编辑
摘要: 一、引言 如何实现图片分割?若有园友用到这个模块,使用Java的BufferedImage类来实现,图片切分也可以作为一个小工具积累起来,以备不时之需。 二、代码清单 说明:可以切分任何图片,具体的参数园友可以自行配置~之后就可以在配置的目录下看到切分结果了。 三、总结 要将平时遇到的一些小工具积累 阅读全文
posted @ 2016-02-29 22:17 leesf 阅读(1680) 评论(0) 推荐(2) 编辑
摘要: 一、引言 很多时候我们的程序可能需要在运行时识别对象和类的信息,比如多态就是基于运行时环境进行动态判断实际引用的对象。在运行时识别对象和类的信息主要有两种方式:1.RTTI,具体是Class对象,它假定我们在编译时已经知道了所有类型。2.反射机制,运行我们在运行时发现和使用类的信息。 二、RTTI 阅读全文
posted @ 2016-02-29 21:06 leesf 阅读(1880) 评论(0) 推荐(5) 编辑
摘要: 一、需求分析 1. 显示候选人照片和姓名。 2. 可以使用多种模式进行抽奖,包括一人单独抽奖、两人同时抽奖、三人同时抽奖。 3. 一个人可以在不同的批次的抽奖中获取一、二、三等奖,但是不能在同一批次抽奖中获取多个奖项。 二、系统总体框架 系统需求比较简单,采用Java Swing技术可以很好的实现, 阅读全文
posted @ 2016-02-27 21:27 leesf 阅读(2352) 评论(0) 推荐(2) 编辑
摘要: 一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内存需要进行垃圾回收 对于虚拟机中线程私有的区域,如程序计数器、虚拟机栈、本地方法栈都不需要进行 阅读全文
posted @ 2016-02-27 17:32 leesf 阅读(5183) 评论(2) 推荐(16) 编辑
摘要: 一、前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebService进行通信。服务器端维护IP白名单列表,只有IP地址在白名单中的客户端才可以成功调用到接口,获得服务 阅读全文
posted @ 2016-02-25 20:45 leesf 阅读(1616) 评论(0) 推荐(2) 编辑
摘要: 一、问题描述 1.遍历二叉树指定层次的所有结点 2.统计指定层的搜索结点个数 3.对二叉树进行层次遍历 4.找到二叉树中每一层的第一个结点或最后一个结点 二、问题分析 对树结构的问题我们首先会想到使用递归来解决,因为树结构完美适合递归,树的前序、中序、后序遍历使用递归很容易就可以解决,并且很容易理解 阅读全文
posted @ 2016-02-23 21:06 leesf 阅读(1105) 评论(0) 推荐(3) 编辑
摘要: 一、题目描述 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空 汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满 的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶 阅读全文
posted @ 2016-02-23 15:35 leesf 阅读(4822) 评论(0) 推荐(4) 编辑
摘要: 一、前言 为什么要学习了解Java虚拟机 1.我们需要更加清楚的了解Java底层是如何运作的,有利于我们更深刻的学习好Java。 2.对我们调试错误提供很宝贵的经验。 3.这是合格的Java程序必须要了解的内容。 基于此,笔者打算出一个Java虚拟机的系列,加深自己对知识点的理解,同时也方便各位有需 阅读全文
posted @ 2016-02-21 21:32 leesf 阅读(6437) 评论(2) 推荐(21) 编辑
摘要: 一、前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票。投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了,不能重复投票。这时候,我们可能会想,能不能突破ip地址的限制进行刷票呢?有了这样的想法,那就去做吧 阅读全文
posted @ 2016-01-30 08:49 leesf 阅读(15253) 评论(28) 推荐(28) 编辑
上一页 1 ··· 8 9 10 11 12 13 下一页