The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Суд обязал Google выплатить 5 млн долларов за использование ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Ссылки "<<" и ">>" открывают первые и последние 10 сообщений.
. "Суд обязал Google выплатить 5 млн долларов за нарушение пате..." +1 +/
Сообщение от assss (?), 22-Апр-11, 19:59 
я тож в феврале изобрёл такой алгоритм где брать РОЯЛИТИ ?
у Bedrock брать за то что слетали в будущее и укарали мой патент ?

/**
* User: xxx
* Date: 18.02.2011
*/
public class CurrentOnline<T> {
    private X<T, Long> x = new X<T, Long>();
    private long duration;
    private long last;
    private long delta;

    public CurrentOnline(TimeUnit unit, int duration) {
        this.duration = unit.toMillis(duration);
        this.delta = unit.toMillis(1) / 2;
    }

    public synchronized void add(T id) {
        x.add(id, System.currentTimeMillis());
    }

    public synchronized int size() {
        clear();
        return x.size();
    }

    public synchronized Collection<T> get() {
        clear();
        return x.get();
    }

    private void clear() {
        long time = System.currentTimeMillis();
        if (time - last <= delta) return;
        last = time;
        x.removeOlder(time - duration);
    }

    private static class X<K, V extends Comparable<V>> {
        private Map<K, V> idTime = new LinkedHashMap<K, V>(16, 0.75F, true);

        public void add(K id, V value) {
            idTime.put(id, value);
        }

        public int size() {
            return idTime.size();
        }

        public Collection<K> get() {
            List<K> r = new ArrayList<K>(idTime.size());
            for (K x : idTime.keySet()) {
                r.add(x);
            }
            return r;
        }

        private void removeOlder(V old) {
            Iterator<Map.Entry<K, V>> it = idTime.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry<K, V> x = it.next();
                if (x.getValue().compareTo(old) < 0) {
                    it.remove();
                } else {
                    break;
                }
            }
        }
    }
}

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Суд обязал Google выплатить 5 млн долларов за использование ..., opennews, 22-Апр-11, 06:20  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру