Java那些事
文章平均质量分 81
zl3450341
随心而为
展开
-
对Synchronied对象锁的一些理解与测试
作为Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。那么他的同步机制到底是怎么的?让我们来做一些测试。测试一:public class SynchronTest { /** * @param ar原创 2011-07-31 13:12:40 · 2516 阅读 · 7 评论 -
HashMap 源码分析
/** * The default initial capacity - MUST be a power of two. * 默认的初始容量必须是2的几次方。 */ static final int DEFAULT_INITIAL_CAPACITY = 16; /** * The maximum capacity, used原创 2010-11-25 23:10:00 · 1311 阅读 · 1 评论 -
深入理解java的clone
为了理解java的clone,有必要先温习以下的知识。 java的类型,java的类型分为两大类,一类为primitive,如int,另一类为引用类型,如String,Object等等。 java引用类型的存储,java的引用类型都是存储在堆上的。 public class B { int a; String b; public转载 2009-11-26 15:11:00 · 828 阅读 · 0 评论 -
将一个数字转化成中文输出
import java.util.*;public class RmbConvert { public void convertToCapital(double money){ String[] capitalRmb=new String[14]; for(int i=0;icapitalRmb.length;i++){原创 2009-10-27 22:30:00 · 995 阅读 · 1 评论 -
使用顺序表求解约瑟夫环问题
//distance 想要第几个出局.就传入参数为几private static void josephus(int[] array,int distance){ ArrayList list=new ArrayList(); for (int i : array) { list.add(i); } int index=0; while(list.size原创 2010-11-23 22:42:00 · 3767 阅读 · 0 评论 -
java中有垃圾回收GC, 为什么还要调用close
比如说流操作结束后, 为什么一定要close掉. java有垃圾回收器, 这样做不就是多此一举吗.?流不单在内存中分配了空间,也在操作系统占有了资源,java的gc是能从内存中回收不使用的对象,但对操作系统分配的资源是无能为力的,所以就要调用close()方法来通知OS来释放这个资源。转载 2009-11-21 00:10:00 · 1208 阅读 · 2 评论 -
JAVA迷宫算法&进制转换---栈的典型应用
package org.stack;public class Maze { private static int startI,startJ;//入口坐标 private static int endI,endJ;//出口坐标 public void start(int startI,int startJ){ this.startI=startI; this.原创 2010-11-24 23:50:00 · 2747 阅读 · 0 评论 -
JDK动态代理实例
public interface Hello { public void hello();} import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import org.Hello;public原创 2010-12-03 00:07:00 · 1061 阅读 · 0 评论 -
随机一个数组 用户输入n,则输出比n大的数以及该数在数组中的位置
/*run:请输入数组,输入end数组输入结束,exit退出1-5-5053885516424824-512end输入查找的关键字50查找结果:数据:88,数组位置:5数据:55,数组位置:6数据:164,数组位置:7数据:248,数组位置:8end输入的不是数字exit成功生成(总时间:38 秒)转载 2009-11-28 00:23:00 · 1459 阅读 · 0 评论 -
java中的静态代理与动态代理
java中的静态代理与动态代理 本来打算今天写点jpa方面的东西,结果搞上了代理,索性就把研究成果放出来吧,java中的代理有两种一种是静态代理一种是动态代理,静态代理其实很容易理解,静态代理其实就是个装饰器而已,而动态代理则借助于jvm的支持,在运行时动态生成代理类。 在这里我通过一个UserDao阐述这个问题。现实生活中这是一个很实际的应用。 package co转载 2009-11-26 15:30:00 · 741 阅读 · 1 评论 -
用正则表达式提取网页中的邮箱地址
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.regex.*; public class MyRegex { public static void main(String[]原创 2009-10-27 20:57:00 · 1898 阅读 · 2 评论 -
JAXB的应用,及如何自定义namespace的prefix(前缀)
什么是JAXB? 不多解释,可以参见维基百科,亦或是百度百科。本文不会对基础部分进行讲解,因为我也没去细看,我只看了了他最简洁的应用方式(基于Annotaion),技术是项目服务,会用,能用好即可。本文主要给出一个Demo,并就JAXB生成xml文件的namespace的prefix不能自定义的问题进行解决。 直接来看代码,首先定义一个 Book类package co原创 2012-11-06 21:52:49 · 19596 阅读 · 1 评论 -
JAXB的应用之二---------Xml与多个对象的映射(聚合或组合)及注意事项
在我们的实际应用中,Xml中的结构往往不止这么简单,一般都会有2,3层。也就是说如果映射成对象就是聚合(组合)的情况 。就用我们上一章的例子继续来讲,简单我们的Book的author现在不止是一个String类型的名子,他是一个对象Author,并包含作者的相关个人信息。那我们怎么做列?直接看代码package com.jaxb.first;import javax.xml.bin原创 2012-11-06 22:11:23 · 5415 阅读 · 0 评论 -
Log4j解惑之一
Log4j这个东东,大家一直都在用,可是真正有多少人知道,为什么要那样配列?或者说有多少不抄袭可以自己配一份log4j列?读者可以问问自己能否办到。我们本章就一些重要的环节结合源码进行分析。一、Log4j是在那个地方读取配置文件的?在回答这个问题前,首先想想我们在程序中是怎么用Log4j来打印日志的?1.获取Logger,如 private static Logger logg原创 2013-12-14 00:29:45 · 2561 阅读 · 1 评论 -
LinkedList 源码分析
LinkedList数据结构是 双向链表 先来讲下单链表和双向链表 单链表:链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用来存储数据元素,一个域是指向其他单元的指针,指针域用于指向下一个具有相同结构的节点 双向链表:单链表相对于双向链表来说,结构简单。但有一个缺点,即在单链表中只能通过一个节点的引用访问其后续节点,无法直接访问其前原创 2010-11-21 22:29:00 · 1304 阅读 · 1 评论 -
ArrayList 源码分析
ArrayList //从源码中可以很清楚的看到ArrayList继承哪个类 实现了哪些接口public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable{} ArrayList源码相对 来说比较简单,主要讲讲大家常被问到的一些问题,从源原创 2010-11-19 16:14:00 · 1078 阅读 · 0 评论 -
简单排序 --(冒泡排序,简单选择排序,直接插入排序)
public class SwapUtil { public static void swap(int i,int j,int[] block){ int temp = block[i]; block[i] = block[j]; block[j] = temp;原创 2011-08-04 18:59:41 · 1479 阅读 · 1 评论 -
快速排序算法
public class QuickSort { static int[] data = new int[]{50,10,90,30,70,40,80,60,20}; public static void main(String[] args) { qSort原创 2011-08-04 23:57:46 · 1146 阅读 · 3 评论 -
Class.forName 和 classloader
首先来看看Class.forName到底是执行的什么方法 public static Class forName(String className) throws ClassNotFoundException { retur原创 2011-09-07 14:25:43 · 2170 阅读 · 2 评论 -
Junit使用说明之一-----Junit初窥以及老版本的简单使用
最近在看《重构-改善既有代码结构》一书,里面提到,要有一个好的测试环境。作者采用的是Junit来进行单元测试,正好我也是这么做的。关于Junit,还是有很同学不清楚他的用途,或者说具体怎么用,所以决定有空的时候就简单讲讲关于他使用。 首先讲讲Junit目原创 2011-09-21 00:57:32 · 4299 阅读 · 1 评论 -
Junit使用说明之二---Junit3.x的测试环境初始化以及收尾工作
看到这个标题,很多人可能会疑惑。首先我来解释一下,什么叫测试环境初始化,它是指:在进行测试之前,将必要的数据进行准备。收尾则是对资源进行回收等操作。比如我们以I/0为例,假如现在有N个方法,然后以不同的文件对文件进行读取,打印其中的内容,并确定耗时,以完成这几种方式效率的对比。每原创 2011-09-21 21:25:59 · 2969 阅读 · 0 评论 -
Junit使用之四---使用Junit测试WEB项目
其实这篇文章是之前就写了的,现在把他归入Junit系列,这里说的web项目,是指用了spring来管理的的Web Project。因为涉及到Ioc容器,所以就不能像测试一个单纯的类那样来测试了。我们需要对web配置文件进行加载。 spring提供了这个测试功能,它封装了Junit原创 2011-07-21 17:26:31 · 12136 阅读 · 4 评论 -
服务提供者框架(Service Provider Framework)
服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就是用了服务提供者框架 从字面意思看就是:实何实现服务提供者提供服务功能的设计结构,主体有服务、服务提供者。反映到我们程序中,通常有四个组件:Service Interface:服原创 2012-02-02 09:12:39 · 10595 阅读 · 3 评论 -
Junit使用说明之三---Junit4.0的新特性
4.0兼容了之前的老版本。并提供了新特性,所以这篇文章我以Junit4.0的新特性作标题,而不是以Junit4.0的使用。老版本的功能,在前面已经介绍的七七八八的了。这篇就来让我们看看4.0给我们带来那些方便快捷的功能吧。主要都是对比3.x的来看。 废话我们就不多说,直接来看一个例子,代码如下:import org.junit.Test;public class MyN原创 2011-09-21 21:55:54 · 1403 阅读 · 0 评论 -
jtree 节点编辑事件
import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.tree.*;public class SimpleTree extends JFrame{ static int i = 0; Defaul转载 2009-10-19 17:44:00 · 4066 阅读 · 6 评论 -
JAVA反射机制
Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。 Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。Jav转载 2009-10-21 20:53:00 · 949 阅读 · 0 评论 -
二叉树简单说明
二叉树的定义就不写了,不清楚了可以看书或者google下.1,二叉树的存储结构 a,顺序存储结构 对于满二叉树和完全二叉树来说,可以将元素逐层放入一组连续的存储单元中,用数组来实现顺序存储结构时,可以将二叉树节点编号和数组的位置对应。如下图所示 数组对于完全二叉树和满二叉树是非常方便和高效的,但是对于一般的二叉树来说,缺点是相当明显原创 2010-12-01 00:24:00 · 1608 阅读 · 1 评论 -
JAVA多线程模拟生产者与消费者_实例
用两个线程模拟存票、售票过程 假定开始售票处并没有票,一个线程往里存票,另外一个线程则往出卖票public class ThreadTest { public static void main(String[] args) { Tickets t=new Tickets(20); new Producer(t).start(); new Consumer(t).start()原创 2010-11-30 18:24:00 · 1123 阅读 · 1 评论 -
HashTable & HashSet 源码分析
建议大家看这篇之前先看上一篇HashMap的源码分析,因为这篇是基于上篇大家理解了HashMap的前提下写的。所以这篇大家有什么不明白的地方,先看上篇了解HashMap的源码实现。^_^ HashTable 源码部分可以参考上一篇HashMap,差不多的。 以下几个点注意, 1,HashTable是extends Dictionary的,原创 2010-11-26 22:53:00 · 1248 阅读 · 0 评论 -
关于Thoughtworks在拉勾的那个面试题
题目内容:FizzBuzzWhizz你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏。此时有100名学生在上课。游戏的规则是:1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3、5、7。2. 让所有学生拍成一队,然后按顺序报数。3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz;如果所报数字是第原创 2014-05-07 15:43:15 · 3001 阅读 · 2 评论