- 浏览: 318902 次
- 性别:
- 来自: 西安
最新评论
-
yjq8116:
getString 这个方法你有没有试过,是错误的。这段代码被 ...
ByteBuffer和String的互相转换 -
OnlyForJava:
博主,友情的提醒下,你的Ubuntu写错了
Ubutun上配置hadoop,hbase,zookeeper环境并安装
文章列表
在Eclipse打开多个Console窗口
- 博客分类:
- Eclipse
在eclipse打开多个console窗口
以Socket为例:TestServer.java和TestClient.java分别表示服务器端和客户端。
如果你想要2个窗口,解决步骤:1.运行上述2个程序(它们需要不同的控制台)2.右击已经打开的Console窗口,选择Detached(控制台脱离eclipse,可以调整位置和大小)3.在Console的最右边有个Open Console下拉按钮,选中new console view。此时,又新建了一个Console,这个Console位置可能不在原来的地方,找到它,然后继续右击Detached,让它脱离4.在一个con ...
Java实现生产者消费者问题
- 博客分类:
- Effective Java
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行休眠,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。同样地,当缓冲区已经空了,而消费者还想去取消息,此时也可以让消费者进行休眠,等待生产者放入一个或者多个数据时再唤醒它。
一,首先定义公共资源类,其中的变量number是保存的公共数据。并且定义两个方 ...
多态的思考
- 博客分类:
- Effective Java
abstract class Father{
abstract void show();
}
class Son extends Father
{
public void show(){
System.out.println("I am son.");
}
}
public class start {
public static void main(String[] args)
{
Father son=new Son();
son.show();
}
}
输出结果为:
I ...
Java 插件中获得当前编辑文本的绝对路径
- 博客分类:
- Eclipse
弄了好几天,终于弄出来了。为了实现根据import递归扫描文本,必须获得绝对路径。
IEditorPart editor = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();IEditorInput input = editor.getEditorInput(); if (input instanceof IFileEditorInput) { IFile file = ((IFileEditorInput)input).getFile(); ...
新建---》plug-in Project--->输入名字--》next----》Rich Client Application上选择No------》plug-in with an editor-----》打完收工。
如何使用Rose将类图转化为java代码
- 博客分类:
- 工具的使用
将画好的类图选中后,点击Tools--->java/j2ee---->generate code--->设置一下输出路径———>打完收工。
注意:生成的代码只是框架,具体的实现需要自己填代码。
如何将java工程用Rose转化为 类图
- 博客分类:
- 工具的使用
1.新建一个ROSE工程,选择J2EE模板,2.如图
3.在出现的界面中,CLASSPATH中加入源代码的目录,加入支持的包,点'ADD RECURSIVE'点 ‘SELECT ALL‘‘ 点REVERSE ‘,完成后没任何提示,点'DONE'结束。逆向工程完成。
4 逆向工程以后不会自动生成类图,但在logical view 和component view 里面按照你的java包结构会自动生成相应的包和类,要按照自己的要求建立类图。下面我们将所选包下的所有类显示在新建类图中:
ROSE里新建CLASS DIAGRAM,然后把类包一个个拖到右侧图中,点菜单上的'QUERY ...
简单工厂 和 策略模式的区别
- 博客分类:
- 设计模式
简单工厂 和 策略模式很像,二者都是采用 处理类聚合抽象类(父类)的方法。二者的区别是(以下两句话很重要):
简单工厂是 采用静态的类方法,通过传入的参数,返回参数所指定的所需要的子类(实际上是返回的是父类引用(父类引用指向子类对象))。
策略模式是 通过处理类的构造方法以参数的形式传入子类对象,然后再在处理类中写一个函数用来封装父类和子类共有的处理方法(strategy.Algo())。
由此可见,策略模式封装的更好。用户只需使用 处理类的对象(传入子类的对象)就可以操作相应子类实现他们的处理。
代理模式 Proxy
- 博客分类:
- 设计模式
应用场景
例如:假设有一组对象都实现同一个接口,实现同样的方法,但这组对象中有一部分对象需要有单独的方法,传统的笨办法是在每一个应用端都加上这个单独的方法,但是代码重用性低,耦合性高。
如果用代理的方法则很好的解决了这个问题。
代码示例
示例说明
假设有一个Italk接口,有空的方法talk()(说话),所有的people对象都实现(implements)这个接口,实现talk()方法,前端有很多地方都将people实例化,执行talk方法,后来发现这些前端里有一些除了要说话以外还要唱歌(sing),那么我们既不能在Italk接口里增加sing()方法,又 ...
DF对工厂方法模式的定义是:定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
工厂方法模式 对 简单工厂模式的改变在:将switch中的判断变成了一个个子类。
这样做虽然增加了很多类,但是它是有好处的。因为工厂方法更利于扩展,添加功能只需创建子类即可无需修改switch中的代码。
例如:
interface IFactory
{
Operation CreateOperation();
}
class AddFactory extends IFactory
{
ppublic Oper ...
策略模式 Strategy
- 博客分类:
- 设计模式
public Context(String strategyType)
{
switch(strategyType)
{
case "算法A":
strategy=new ContextStrategyA();
break;
case "算法B":
strategy=new ContextStrategyB();
break;
...............
}
}
DF对策略模式的定义是这样的:它定义了算法家族,分 ...
简单工厂模式很容易理解,在项目中用到了一个这样的例子。
AbstractUMLConnectionModel是一个抽象的父类,它的子类包括:GeneralizationModel,RealizationModel,DependencyModel,AggregationModel,CompositeModel。
那么好,接下类根据需要我们使用简单工厂实现获得需要的子类对象。(又是父类引用指向子类对象,可见这是多么的重要。)。注意抽象方法的引用也是可以的,接口的引用也可以这样用。
package com.jenson.vrp.editor.ir.model.operate;
imp ...
装饰模式 Decorator
- 博客分类:
- 设计模式
装饰模式可以给一个对象动态的添加一些额外的职责(通过装载兄弟类对象的方式)。就增加功能来说,装饰模式比生成子类更加灵活。
接下来我举一个例子:
Finery类是Person类的子类。
BigTrouser类和TShirt类是 Finery类的子类。
现在想给BigTrouser类的对象 添加穿TShirt的功能,就要采用装饰模式。
先上代码:
package com.wjy.decorator;
public class Person {
private String name;
public Person(){
}
pub ...
用适配器模式解决接口的不足
- 博客分类:
- 设计模式
解决的办法是:在EntityModel中不用 implements Ibodyinfo。而是实现getAdapter方法:
public Object getAdapter(Class adapter){
if(adapter==Ibodyinfo.class)
return new BodySource(this);
return null;
}
其中BodySource的代码如下;
package com.wjy.understandinterface;
public class BodySou ...
接口的理解
- 博客分类:
- Effective Java
例如一个EntityModel类拥有很多属性信息:name,age,height,weight。
现在如果想使用其中的height和weight,可以定义一个接口Ibodyinfo
package com.wjy.understandinterface;
public interface Ibodyinfo {
public abstract double getHeight();
public abstract double getWeight();
}
然后让EntityModel类去实现这个接口,就可以像一下这样获得height和weight信息了。
Ib ...