Источник
Программируя мы часто сталкиваемся с необходимостью ограничить множество допустимых значений для некоторого типа данных. Так, например, день недели может иметь 7 разных значений, месяц в году - 12, а время года - 4. Для решения подобных задач во многих языках программирования со статической типизацией предусмотрен специальный тип данных - перечисление (enum). В Java перечисление появилось не сразу. Специализированная языковая конструкция enum была введена начиная с версии 1.5. До этого момента программисты использовали другие методы для реализации перечислений.
Read more...
Enum, Java, Перечисления, Программирование, разработка
Источник
Концепция Jini была впервые представлена фирмой Sun Microsystems в начале 1999 года. С тех пор она претерпела некоторые изменения, сделанные сообществом Jini (Jini Community), которое сейчас включает такие компании, как 3Com, Canon, Epson, Kodak, Motorolla, Nokia, Novell, Quantum, Segate, Sharp, Siemens, Sony, Xerox.
Jini - это набор API и сетевых протоколов, которые призваны помочь построить и развернуть распределенную систему, организованную как федерация сервисов. Сервисы могут быть всем, что выполняется в сети и готово выполнить какое-либо действие, - аппаратными устройствами, программами и т.д. Например, Jini-совместимые принтеры могут предлагать сервис печати, Jini-совместимые видеокамеры - сервис съемки и просмотра изображения. Таким образом, федерация служб является набором сервисов, доступных в сети в данный момент, которыми могут воспользоваться клиенты для достижения некоторой цели.
Read more...
Java, JINI, Программирование, разработка
Источник
В сфинксе (sphinx-search) существует очень хорошее решение для оптимизации процесса индексации.
Суть решения рассмотрена в статье “Дельта индекс в Sphinx“. Дельта индексы существенно снижают ресурсоемкость постоянной переиндексации, позволяя делать ее чаще и иметь более актуальные данные в результатах поиска.
Использование дельта индексов тем не менее требует периодичного обновления основного индекса, чтобы обновить изменившиеся и выбросить удаленные сущности. Да и сам по себе дельта индекс растет со временем, требуя все больше ресурсов для переиндексации (что делает его неэффективным).
Самое простое решение этой задачи - полная переиндексация в непиковые часы (или дни). Это не самый оптимальный подход, т.к. полная переиндексация может занимать часы, а иногда и дни. Существует другое решение для обновления основного индекса, которое может сэкономить множество ресурсов - объединение индексов (index merging).
Read more...
Delta, Index, main, merging, Search, Sphinx, web, Дельта, Индекс, объединение индексов, поиск, Программирование, разработка, Сфинкс
Источник
Sphinx отлично зарекомендовал себя, как движок полнотекстового поиска. Он обладает отличными показателями производительности и вместе с этим является функционально мощным инструментом. Sphinx прекрасно справляется с большими объемами данных при поиске.
Но есть и другая, более медленная операция, с которой приходится сталкиваться - построение индекса. На малых объемах обычно используют перестройку всего индекса, которая занимает не много времени. В случае же большого количества данных индексирование может стать очень медленным процессом (время полной переиндексации в некторых системах достигает дней и недель). В этом случае результаты поиска будут обладать малой временной актуальностью.
Одним из решений подобной проблемы является использование дельта индекса, о чем мы поговорим в этой статье.
Read more...
Delta, Index, main, Search, Sphinx, Дельта, Индекс, поиск, Программирование, разработка, Сфинкс
Источник
Паттерны проектирования - это описание некоторых проблем, возникающих во время объектно-ориентированного проектирования, а также способов их решения (как практических, так и теоретических). Иными словами - это примеры правильных подходов к решению типичных задач проектирования.
Одним из самых распространенных паттернов является Singleton (Одиночка). Задача этого паттерна ограничить количество экземпляров некоторого класса. Зачем это может понадобиться? Об этом читайте ниже. Реализовать же паттерн Singleton на языке Java можно следующим образом:
public final class Singleton {
private static Singleton _instance = null;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (_instance == null)
_instance = new Singleton();
return _instance;
}
}
Read more...
Java, Singleton, Одиночка, Паттерны, Программирование, разработка