![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 64
清风飞阳
这个作者很懒,什么都没留下…
展开
-
JUnit 4的一分钟介绍
【声明】一篇很好的迅速上手的JUnit教程,翻译自http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/1. @Test用@Test来标注你的测试用例,则不用将你的测试方法加上"test"前缀,也不用拿你的测试类去继承"TestCase"类。 @Test public void addition() {转载 2013-10-21 16:01:27 · 742 阅读 · 0 评论 -
(《剑指offer》笔记)打印从1到最大的N位十进制数
输入数字n,按顺序打印出从1到最大的n位十进制数。原创 2014-09-09 22:08:33 · 698 阅读 · 0 评论 -
(《剑指Offer》笔记)调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序,使得所有奇数位于原创 2014-09-09 22:28:20 · 556 阅读 · 0 评论 -
Java多线程之interrupt()的深度研究
Java多线程之interrupt()的深度研究yuan网址:http://www.cnblogs.com/carmanloneliness/p/3516405.html近期学习Java多线程的中断机制,网上的帖子说得很浅,并没深究其原理。看了Java源码,对Java的中断机制有了略深入的理解,在这篇文章中向感兴趣的网友分享下。这篇文章主要通过一个典型例子对中断机制进行剖析。转载 2014-08-27 15:20:27 · 717 阅读 · 0 评论 -
用PriorityQueue实现哈夫曼编码
哈夫曼编码(Huffman Coding)哈夫曼编码是一种被广泛应用而且非常有效的数据压缩技术,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码长度算法一族。意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。哈夫曼编码是由一颗满二叉树来实现的,即哈夫曼树。构造哈夫曼树转载 2014-02-21 10:27:14 · 1346 阅读 · 0 评论 -
螺旋矩阵求指定位置的数字
import java.util.Arrays;public class SpiralMatrix { public static int getNumber(int n, int row, int column) { if(row>=n||column>=n) return -1; // 第i层矩阵四顶点为(i.i) (n-i-1,i) (n-i-1,i) (m-i-1,n-i-原创 2014-09-14 01:39:13 · 1138 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(七)二叉树
自由树:连通的无回路的无向图有根树:在自由树中选定一顶点做根。考虑根为r的有根树中的一个结点x祖先:从r到x的唯一路径上的结点y称为x的一个祖先,x称为y的一个子孙。如果x≠y,则成为真祖先、真子孙。双亲:从r到x的路径中最后一条边是(y,x),则y是x的双亲,x是y的子女兄弟:具有同样双亲的两个结点互为兄弟结点叶结点:没有子女的结点结点的度:有根树T中结点x的子女数目原创 2013-11-20 16:32:51 · 1144 阅读 · 0 评论 -
(《剑指Offer》笔记)顺时针打印矩阵
联系螺旋矩阵那一道题。解题思路都是先画图,然后原创 2014-09-15 16:24:07 · 602 阅读 · 0 评论 -
forName、loadClass、NewInstance、new
一,类加载的过程转载 2014-09-24 20:37:56 · 846 阅读 · 0 评论 -
单例模式
1,votalize和双重检查加锁单例模式原创 2015-02-05 11:20:01 · 475 阅读 · 0 评论 -
静态内部类和内部类的区别
内部类持有了一个指向外部类的引用,而静态内部类没有。我们可以通过查看类的fields来发现这一点。public class MyClassTest { A a; B b; @Before public void setUp() throws Exception { a=new A(); a.setName(原创 2016-07-13 14:49:18 · 727 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(二)——二分法检索
一,在一个数组里搜索某个元素,最容易被想到的是顺序搜索,从头开始搜,直到搜到为止。最坏情况运行时间和平均运行时间都和n成线性关系 二,二叉树搜索的递归算法:要求数组已经进行了排序,一般按照升序基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中原创 2013-10-21 11:02:18 · 1129 阅读 · 1 评论 -
《数据结构和Java集合框架第三版》读书笔记(十二)快速排序
快速排序符合分治法。分解:选择 枢轴,将数组划分成两个子数组,左子数组的每个元素都小于或等于 枢轴元素,右子数组的每个元素都大于或等于 枢轴元素,左子数组的每个元素都小于右子数组。解决:通过递归调用快速排序分别对两个子数组进行排序。合并:由于快速排序是就地排序,不需合并,快速排序进行完后整个数组就已经排序完毕。private static void sort1(int x[ ],原创 2014-02-11 17:11:54 · 760 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(十一)归并排序
排序能有多快用决策树分析。排序n个元素,每种排列有一个叶结点,决策树t总共n!个叶结点。n!≤2^height(t)所以树的高度height(t) ≥log2(n!)O(log(n!))=O(nlogn)所以对于基于比较的排序,最差时间不可能比O(nlogn)小。平均时间也是不可能比O(nlogn)小,不证明了。一,归并排序Merge Sort算法思想:分治法——将原问题划分成原创 2014-01-02 10:52:05 · 889 阅读 · 0 评论 -
《Java并发编程的艺术》读书笔记——Java内存模型
第三章 Java内存模型3.1 内存模型基础3.1.1 并发编程的两个关键问题线程之间如何通信 java采用共享内存模型隐式通信线程之间如何同步 共享内存模型模型需要显式指定同步3.1.2 内存模型抽象结构3.1.3 从源代码到指令序列的重排序3.1.5 happens-beforeJSR-133内存模型采用了happens-before概念,指前一个操作执行的结果对后一个操作可见,且前一原创 2016-09-13 10:49:17 · 1102 阅读 · 0 评论 -
HashMap源码解析
HashMap、Hashtable、ConcurrentHashMap原创 2016-09-13 02:26:32 · 1133 阅读 · 0 评论 -
手摇算法
f为翻转映射 假设AB要翻转成BA,f(f(A)f(B))=f(f(B))f(f(A))=BA原创 2016-09-14 00:53:43 · 668 阅读 · 0 评论 -
(剑指offer笔记)根据前序遍历和中序遍历重建二叉树
问题:输入某二叉树的前序遍历和中序遍历的结果,重建出该二叉树,假设输入的前序遍历和终须遍历的结果原创 2014-05-26 22:30:32 · 777 阅读 · 0 评论 -
聊聊并发(一)深入分析Volatile的实现原理
引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通转载 2014-05-27 19:20:41 · 545 阅读 · 0 评论 -
java 位运算符
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:>(带符号右移)和>>>(无符号右移)。yi'wei'yu'h原创 2014-04-23 12:22:58 · 738 阅读 · 0 评论 -
列出100以内的质数
一,筛选法从小到达晒去一个已知质数的原创 2014-04-24 15:23:13 · 1027 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(三)回溯算法
回溯就是通过一系列位置选择到达目的位置并且在不能到达目的位置时反向退回的策略回溯算法:Backtrack 使用Backtrack类的用户需要提供:1,应用程序类 实现Application接口。并且要包含内部迭代类,枚举从当前位置开始所有可能的下一步位置2,Position类 定义“位置”在该应用程序中的意思 应用程序类:import java.util.*;原创 2013-10-21 16:18:19 · 822 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(五)浅复制(shallow copy)和深复制
今天学习ArrayList它的复制构造函数和clone()函数均为浅复制(shallow copy),即复制对象的引用。相反的深复制,则是复制对象的本身。复制构造函数 ArrayList (Collection c)得到了一个新的ArrayList对象,它包含了对c中元素的复制。但是注意,集合c的元素本质是引用,而不是对象。被引用的对象本身并没有被复制。clone()函数也是如此原创 2013-11-08 15:19:08 · 1202 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(六)LinkedList双向链表
JDK6和JDK7的算法有一些区别。JDK6是:带哨兵的环形双向链表,JDK7是不带哨兵、但是有first(头节点)和last(尾节点)的双向非循环链表。哨兵的好处是使得代码更简洁,但并不能降低对链表的操作的渐进时间界;坏处是如果有很多较短链表,使用哨兵会造成存储空间的浪费(哨兵是需要new一个Entry的)。一,JDK6:带哨兵的环形双向链表哨兵是个哑元,它表示NIL,包含和其他元素一样原创 2013-11-13 21:00:26 · 1181 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(九)平衡二叉搜索树的旋转
平衡二叉搜索树的高度是n的对数。一,旋转旋转式保持树平衡的基本机制。左旋转:将一个元素x移动到它的左子结点位置,而该元素的右子结点y移动到该元素原有的位置,而y的左孩子移动到了x的右孩子位置。(因为x的右孩子y的左子树的任意元素都大于x小于y)旋转中位置的改变的实质是对引用的改变。x.right=y.left;//y的左孩子移动到了x的右孩子位置y.left=x;//将原创 2013-12-25 14:44:40 · 737 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(十)简单排序
对数组x进行排序一,插入排序从数组x左边开始,x[1]和x[0]比较,看插入到x[0]之前还是之后。x[2]和已经排好序的x[0]、x[1]比较,找到x[2]的插入位置。......x[i]和已经排好序的x[0]、x[1]、x[2]...x[i-1]比较,找到x[i]的插入位置。如果用off表示开始插入排序的索引值,用len表示将被排序的元素数量,上述过程可表示为外循环原创 2013-12-27 16:28:50 · 810 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(零)——数组、类、集合
Quick Quiz: Could we implement the Collection interface with an array?a. No, because an array is an object, not aclass.b. No, because an array is not a collection.c. No, because you could转载 2013-10-21 10:57:03 · 976 阅读 · 0 评论 -
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现http://www.ibm.com/developerworks/cn/java/j-lo-tree/TreeMap 和 TreeSet 是 Java Collection Framework 的两个重要成员,其中 TreeMap 是 Map 接口的常用实现类,而 TreeSet 是 Set 接口的常用实现类转载 2013-12-19 22:43:09 · 720 阅读 · 0 评论 -
堆排序
堆排序是一种选择排序一,二叉堆二叉堆是一棵完全二叉树,除底层外都填满,底层元素从左向右填入,二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。二叉堆简称为堆。堆可以用数组存储。i结点的父结点为(i-1)/2 ,左子结点为2i+1,右子结点为2i+2对于数组A[],长度为n,子数原创 2014-02-19 10:52:46 · 634 阅读 · 0 评论 -
哈希表
转载 2014-03-10 17:37:18 · 550 阅读 · 0 评论 -
JAVA基础:八进制,十六进制表示
可以使用八进制、十六进制的类型:long, int, short, byte 八进制表示:以0作为前缀,数码有0,1,2,3,4,5,6,7,逢8进位 如:8(十进制)-->010(八进制) 十六进制表示:以0x作为前缀,数码有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,逢16进位 如:16(十进制)-->0x10(十六进制)转载 2014-04-23 10:58:58 · 1238 阅读 · 0 评论 -
java 传值和传引用
javajava函数中的参数实质上都是值传递。转载 2014-04-24 11:54:26 · 544 阅读 · 0 评论 -
TreeMap的运用
最近遇到需要按一个model中不同的列进行排序的问题,查了一下JDK API文档,发现,java中可以排序的工具类和接口共有五个SortedMap 、SortedSet、TreeMap 、TreeSet和Collections,由于我要排序的是一系列model,所以,最后使用了TreeMap对象,而且TreeMap到最后的处理比较自由,可以直接返回TreeMap对象,也可以返回model的一个Co转载 2014-04-24 11:55:31 · 555 阅读 · 0 评论 -
java全排列
把一个数组里的数(无重复)的栈组合原创 2014-04-24 11:51:16 · 835 阅读 · 0 评论 -
ClassLoader.getResourceAsStream(String resName)
resName是调用这个函数的类的ClassPath根路径开始的绝对路径。原创 2014-05-13 16:42:19 · 1114 阅读 · 0 评论 -
java回调函数
把一个方法的指针传递给事件源,当某一事件发生时来调用这个方法在java中没有指针,但是可以用接口来代替。原创 2014-05-12 18:36:05 · 816 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(八)二叉搜索树
一,二叉搜索树的递归定义t为空。或者t的左子树的每个元素都小于t的根元素;t的右子树的每个元素都大于t的根元素;t的左子树和右子树都是二叉搜索树二叉搜索树不允许树中的元素重复二,BinarySearchTree类的实现Java集合框架里没有二叉搜索树BinarySearchTree,因为Java集合框架里实现了红黑树——TreeSet二叉搜索树不原创 2013-11-28 17:58:27 · 1036 阅读 · 0 评论 -
《数据结构和Java集合框架第三版》读书笔记(一)递归
一,十进制转二进制计算十进制(12)转二进制递归函数的设计:双层外层getBinary()抓异常内层getBin递归计算 public static String getBin (int n){if (n return Integer.toString (n);return getBin (n / 2) + Integer.toString (原创 2013-10-21 20:06:25 · 1164 阅读 · 0 评论