- 浏览: 127105 次
- 性别:
- 来自: 深圳
-
最新评论
文章列表
Future使用小例
- 博客分类:
- 多线程
package com.test.current;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;
public class ...
JAVA阻塞队列(BlockingQueue)实践
- 博客分类:
- 多线程
一个指定目录下包含某个关键字的文件,输出文件路径及行号。
同时启动两组线程,一个向队列中添加文件,一个从队列中取文件,并在文件中查找关键字。
package com.test.current;
import java.io.File;
import java.io.FileInputStr ...
使用多线程模拟实现银行转帐功能,先看看未使用同步的代码:
package com.test.current;
public class UnsynchBankTest {
public static final int NACCOUNTS = 100;//帐户数
public static final double INITIAL_BALANCE = 1000;//初始金额
public static void main(String[] args) {
Bank b = new Bank(NACCOUNTS, INITIAL_BALANCE);
in ...
package com.test.collframework;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* TreeSet是一个有序集合
*/
public class TreeSetTest {
public static void main(String[] args) {
Set<Item> set = new TreeSet<Item>();
set.add(new Item("T ...
JAVA LinkedList小例
- 博客分类:
- JAVA基础
package com.test.collframework;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> aList = new LinkedList<String>();
aList.add("apple") ...
HashMap原理及冲突之简谈
- 博客分类:
- JAVA基础
HashMap简析之-HashCode冲突的解决
http://msnvip.iteye.com/blog/619032
深入理解HashMap(及hash函数的真正巧妙之处)
http://www.360doc.com/content/10/0505/19/495229_26234886.shtml
HashMap与Hashtable的区别
- 博客分类:
- JAVA基础
HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。3.HashTable有一个contains(Object value),功能和contains ...
作者:汪海 (Wanghai) 日期:14-Aug-2005 出处:http://spaces.msn.com/members/wzwanghai/
Index Full Scan vs Index Fast Full Scan
index full scan和index fast full scan是指同样的东西吗?答案是no。两者虽然从字面上看起来差不多, 但是实现的机制完全不同。我们一起来看看两者的区别在哪里?
首先来看一下IFS,FFS能用在哪里: 在一句sql中,如果我们想搜索的列都包含在索引里面的话,那么index full scan 和 index fast ful ...
转:oracle 索引跳跃式扫描
- 博客分类:
- 数据库
在oracle9i中我们知道能够使用跳跃式索引扫描(index skip scan).然而,能利用跳跃式索引扫描的情况其实是有些限制的.从oracle的文档中我们可以找到这样的话:index skip scansindex skip scans improve index scans by nonprefix columns.often, scanning index blocks is faster than scanning table data blocks.skip scanning lets a composite index be split logically into sm ...
JAVA内存区域与内存溢出异常
- 博客分类:
- JAVA虚拟机
1,运行时数据区域
根据JAVA虚拟机规范的规定:JAVA虚拟机所管理的内存将会包括以下几个运行时数据区域
程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器,通过改变计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能。每条线程都需要一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存,也是唯一不会出现OutOfMe
模板方法模式(Head first)
- 博客分类:
- 设计模式
有人爱喝茶,有人爱喝咖啡,因为两者都含有咖啡因。
咖啡的冲泡方法: 茶的冲泡法:
1:把水煮沸 1:把水煮沸
2:用沸水冲泡咖啡 2:用沸水浸泡茶叶
3:把咖啡倒进杯子 ...
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
例如在香港的水货手机充电器插头无法适应大陆的插座,需要一个第三方转换器。这个转换器也就是适配器。
在 ...
命令模式(Head First版)
- 博客分类:
- 设计模式
用命令模式实现这样一个需求:
有个按钮,将一盏电灯的开和关动作都绑定在这个按钮上。另外还有一个undo按钮,可撤消之前的一个动作。
package com.headfirst.chapter6;
public interface Command {
public void execute();
public void undo();
}
下面这个电灯类,对应上面的图也就是接收者
package com.headfirst.chapter6;
public class Light {
public void on(){ ...
设计模式:装饰模式(Head First版)
- 博客分类:
- 设计模式
装饰者模式:动态地将责任附加到对象上,若到扩展功能,装饰者提供了比继承更有弹性的替代方案。
UML图
有这样一个需求,咖啡店出售各式咖啡,如深焙、低卡、摩卡等,也有各种调料,如牛奶、奶泡等。
咖啡店需要根据咖啡中所放入的不同调料收取不同的费用。用装饰者模式来实现
定义一个抽象组件
package com.headfirst.chapter3;
/**
* 定义了一个抽象类,用于表示组件,它定义了一个抽象方法cost
*/
public abstract class Beverage {
String description;
pub ...
观察者模式(Head First版)
- 博客分类:
- 设计模式
观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
有这样一个需求:
一个气象站,它会提供气温,气压,湿度等气象数据,要实现一个显示当前气象状态的显示装置。
能显示当前气温、气压、湿度等。当气象站的数据一发生改变,就能通知显示装置。
使用观察者模式实现。
先看看观察者模式类图:
主题是一个接口,定义了注册观察者、删除观察者、通知方法
package com.headfirst.chapter2;
public interface Subject {//主题
public void registerO ...