观察者模式和海量数据处理

观察者模式

观察者模式:也叫订阅模式或发布模式,使得对象间相互对话。

                  假设用户界面是观察者,业务数据是被观察者,当数据变化时会通知界面,

                  界面会做出相应的修改和变化。

作用:提供了组件之间紧密联系地一种方式,将观察者与被观察的对象分开。

具体实现:一个对象添加一个方法(允许观察者注册自己),使得本身变得可以观察。

 

//问题:观察者收到消息后所执行的操作与观察的对象无关?

 

 

比如实现天气预报的主要功能,同样的天气预报有不同的显示方式。

<interface>                                <interface>

Subject                                       Observer

———————                             ———————

+addObserver()     ————>         +update()

+removeObserver()                              |

+notifyObservers()                               |

        |                                                | 

        |                                              

        |                                        ConcretSubject

   ConcretSubject

实现增删观察者,通知观察者对象        实际观察者

 

思路:

import java.util.ArrayList;

interface Subject{

public void registerObserver(Observer o);

public void removeObserver(Observer o);

public void notifyObserver();

}

 

class Whether implements Subject{

private ArrayList<Observer>observers=new ArrayList<Observer>();

private float temperature;

@verride

...

@verride

...

@verride

...
 

//重写Subject中的三个方法


//更改、设置、并通知观察者对象

}

 

interface Observer{

public void update(float temp);

}
 

class WhetherDisplay1 implements Observer{

…

//参数传递进来并修改

@verride

...

//重写update方法并打印显示

}

 

class WhetherDisplay2 implements Observer{

private float temperature;

public WhetherDisplay2(Subject whether){

whether.registerObserver(this);

@verride

...

//重写update方法并打印显示

}


public class Test{

public static void main(String[] args) {

 Whether whether=new Whether();

 WhetherDisplay1 d1=new WhetherDisplay1();

 WhetherDisplay2 d2=new WhetherDisplay2();

    whether.setTemperature(27);

    whether.setTemperature(26);

    }
}

 

海量数据处理

题目:有一个10亿条记录的文本文件,已按照关键字拍好序存储,请设计一个算法,

         可以从文件中快速查找指定的记录。

         答:10亿条记录的数据量较大,无法一次读入内存,所以要把它分成100份,

把第一条记录关键字和此记录对应的文件偏移量先扫入内存,定位出指定关键字的

记录块,把相应的记录块拿到内存,用二分法即可。

         

        //文件偏移量:指从指定位置向前或向后移动的字节数,偏移量是用来从文件中找到所用数据时用的。 

成年人的世界没有那么多的童话,也没有那么多的逆袭。
原文地址:https://www.cnblogs.com/shijinglu2018/p/8468882.html