java编程
文章平均质量分 81
叶声
这个作者很懒,什么都没留下…
展开
-
初探java 对象中wait(),notify(),notifyAll() 和线程中的synchronized
因为学习和兴趣需要,自学一点java的多进程,这两天好像刚刚明白了什么,一查博客,众说纷纭,有些越看越糊涂,所以想结合几篇自己认为还不错的博客,在这算是一个总结了。首先,我们先谈谈wait(),notify()和notifyAll()原创 2014-11-02 16:25:54 · 670 阅读 · 0 评论 -
常用算法之排序算法四【归并排序】
归并排序是将排好序的序列逐步合成一个大序列的算法,从字面上来分析,主要分为归并和排序。算法描述:1.申请一块空间,大小为两个排好序序列长度之和,用来存放归并后的序列。2.设两个指针,分别指向两个已经排好序的序列的起始地址。3.比较两个指针指向位置的值大小,根据升序降序,选择较小值或者较大值存储在合并空间内,并将相应指针后移。4.重复3操作,直至指针移至序列尾部。5.将另一个原创 2015-05-15 00:13:54 · 901 阅读 · 0 评论 -
从源码分析java集合【HashMap】
Map如我们所知,存储的是键值对,它的基本单位是实现了Map.Entry的Node,Node 的属性如下:static class Node implements Map.Entry { final int hash; final K key; V value; Node next;}看定义就能知道它的作用了,能够看到它存储原创 2015-05-13 00:05:00 · 850 阅读 · 0 评论 -
从源码分析java集合【LinkedList】
LinkedList是一个双端链表,他继承了AbstractSequentaiList,实现了List,Deque,Cloneable,和Serializable接口。Deque是双端队列的接口,LinkedList有记录头的 first 和 尾的 last,所以我们可以对队列的两端进行操作。它还实现了Cloneable和Serializeble接口,它们分别是实现队列进行拷贝和序列化的接口。原创 2015-04-25 20:20:50 · 535 阅读 · 0 评论 -
从源码分析java集合【ArrayList】
ArrayList的内部实现其实就是我们熟悉的数组,它继承了AbstractList,实现了List,RandomAccess,Cloneable和Serializable接口。RandomAccess接口是说明实现类是支持快速随机访问的,它的随机访问的性能非常好,通常它的List的实现类: for (int i=0, n=list.size(); i < n; i++)原创 2015-04-26 20:50:56 · 755 阅读 · 0 评论 -
常见算法之全排列 全组合
全排列算法是一种比较常考的算法,他的做法也比较多样。首先我们来看看最符合我们直观思考的,思路是这样的:假如没有重复元素时,传入一个数组A,并插入到另外一个数组B中,假如B中已经包含这个元素,则跳过,否则插入数组B。我们来看看具体代码:public static void permutation1(final String str, String buffer){ if (s原创 2015-04-09 16:06:12 · 1094 阅读 · 0 评论 -
java 多线程初探
一直都很想写关于多线程的东西,以来可以巩固巩固自己的知识,而来可以看看自己的掌握的水平,因为一直都觉得这方面挺有意思的好了。废话不多说,入正题。java多线程,我们首先想多的是什么。进程,Thread,Runnable,start,run...那我们就先从他们入手了。为什么会想到进程呢。以为一直都是多线程多进程的说。那他们有什么区别。进程:进程是程序的运行和操作系统分配资源的最基本的独原创 2015-04-09 09:34:52 · 635 阅读 · 0 评论 -
java 多线程再探
我们知道线程能通过继承Thread和实现Runnable接口来实现,但是,他们都有一个弊端,就是run之后不能有返回值,当然我们可以通过向线程中传入变量的方式解决,但是貌似又不总是那么可靠,还好,java给了我们另外的接口Callable和Future.我们先来看看他们的结构:public interface Callable{ V call() throws Except原创 2015-04-09 10:49:31 · 597 阅读 · 0 评论 -
浅谈Java集合类(一)【List】
前不久,面试的时候被主考官问道集合,一直以来都以为概念应该不会出错的,但是,竟然令人发指的打错了,哎,久久不能平复呀好了,废话不多说,开始正文吧。java集合为我们定义了大量的接口和抽象类,他们都支持泛型编程,所以使用起来很方便。首先集合有两个基本的接口:Collection和Map。List,Set,Queue...的就实现了Collection。像什么SortMap,HashMap..原创 2015-03-31 19:09:19 · 645 阅读 · 0 评论 -
常用算法之排序算法三【快速排序】
快速排序是东尼·霍尔在1962提出的划分交换排序,并采用一种分治的策略。在这,我们先总结一下:快速排序 = 划分交换排序 + 分治。然后我们在一一介绍他。划分交换排序原创 2015-04-13 17:40:42 · 556 阅读 · 0 评论 -
关于java对象初始化的一点有意思的东西
这篇文章实际的内容并没有多少,或者说对实际编程影响并不大,主要是为了可能的笔试面试之类的,还有就是有点好玩而已。有一天我在书上看到很有意思的代码:class A{ { System.out.println("----->A的初始化块"); } static { System.out.println("----->A的静态初始化原创 2015-04-01 08:46:52 · 593 阅读 · 0 评论 -
浅谈java集合类(三)【Set,Queue】
Set是一个有趣的集合。它看起来有点像List,实际操作却有点像Map。Set也是记录一系列值的集合,但是呢,它和Map的key相同,它不能重复,否则会插入失败。所以呢,我们经常可以看见在Map中可以调用keySet()。说到这呢,它貌似就已经能做很多事了。假如你有兴趣做网络爬虫的话,有一个过滤重复链接的问题就不得不考虑了。Set貌似就是一个非常简单的解决办法了,我们可以用它来去重。好了,我们原创 2015-04-04 22:31:08 · 932 阅读 · 0 评论 -
常见算法之排序算法二【插入排序】
什么是插入排序!简单的介绍一下它的思想(假设为升序):在已经排好序的数组内,插入新的元素,从后往前找,当找到某个比它小的数,则停止,并将它插入这个与上一个数之间。先给大家看个图:具体算法描述如下:1.从第一个元素开始,因为只有一个元素,所以它有序。2.拿它后面的一个元素和它进行比较。3.它后面的元素比它大,把他往后移,并把它后面的元素赋给它原来的位置。4.重复3的动作,原创 2015-04-10 21:00:02 · 649 阅读 · 0 评论 -
常见算法之排序一【冒泡排序】
冒泡排序是我们编程刚入门基本都会接触的一个排序算法,以来它比较简洁,也比较形象。它的思想就是,让每一个相邻的元素进行比较,假如他们不是按照升序或降序,则交换他们位置,重复这个操作,最大或最小的元素就像泡泡一样,升到了最上面,对剩下的元素重复这个操作,所有的元素就可以排好序了。它的运作方式:1.从头向后比较,假如相邻的元素之间的大小不是按升序或降序则将他们进行比较,若不是指定规则,则交换原创 2015-04-10 12:58:44 · 623 阅读 · 0 评论 -
浅谈java集合类(二)【Map】
上一节,我们聊了聊List,接下来,我们来看看Map接口。Map是一种Key,value的存储的结构,也就是说,我们可以通过key来找到value,他们之间是一一映射的。Map的主要实现类有:HashMap,TreeMap...我们先来看看他的主要方法:V get(Object key);//获取与key相对应的值。如果映射表中没有key所映射的值,则返回nullv put(K k原创 2015-03-31 22:21:31 · 581 阅读 · 0 评论 -
深入理解jvm之一【内存区域】
文章开始之前,首先需要申明,本系列文章讨论的是HotSpot VM,文章中多数观点基于《深入理解Java虚拟机:JVM高级特性与最佳时间 周志明》,笔者如有理解错误,欢迎指正。在开始探索jvm虚拟机之前,不得不对jvm的内存区域进行讨论,依旧先附上图表:程序计数器程序计数器,也能叫做PC寄存器,从名字上来理解可能会把它想成一个计数的内存区域,但是,了解汇编的人会知道原创 2015-05-16 20:16:52 · 993 阅读 · 0 评论