22
March
2009

Сколько нужно потоков для обработки пользовательских запросов или крайности при использовании Singleton

Posted in: Java Web Design, J2EE, Java technologies, J2SE, Паттерны проектирования | 13 Comments

Более трех лет назад, когда я только перешел на Java, написал статью об использовании паттерна Singleton. Статья доступна по этой ссылке - Паттерн Singleton. Не смотря на прошествие значительного промежутка времени, статью до сих пор читают и комментируют. Меня заинтересовала одна ссылка из комментариев, в которой довольно неплохо рассказываются нюансы реализации паттерна Singleton.

В статье говорится о том, что следующая реализация с lazy инициализацией является не оптимальной при достаточно частом обращении к getInstance():

public final class Singleton {
    private static Singleton _instance = null;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (_instance == null)
            _instance = new Singleton();
        return _instance;
    }
}

Давайте попробуем определить, что же такое “достаточно часто”. Так же в статье я хочу показать Вам одну достаточно смешную реализацию Singleton, идею которой рассказал мне мой друг.

(more…)

20
February
2009

Генерация Google Sitemap и нюансы его использования (googlesitemap)

Posted in: Интернет Маркетинг, SEO, Java technologies, J2SE | 6 Comments

Sitemap позволяет владельцам сайтов и веб-мастерам сообщить поисковым системам о структуре сайта и обновлении контента на его страницах. Таким образом при правильном использовании sitemap можно добиться лучшего индексирования страниц веб-ресурса поисковыми системами. Соответственно, при неправильном использовании данной технологии можно навредить самому себе (точнее своему интернет детищу).

В этой статье я хочу коротко рассказать вам о Google Sitemap, предоставить программный код на Java для простой генерации sitemap.xml, ну и открыть некоторые нюансы обнаруженные моим другом и мной, и о которых, как мне кажется, многие не знают.
(more…)

18
December
2008

Модель памяти Java и атомарность операций (java memory model)

Posted in: Java technologies, J2SE | 5 Comments

Бывает, что иногда почитываю разные интересные книжки.
Вот например, для собственного развития всякие JSR читаю :).
Из недавнего - просматривал JSR-133 Java Memory Model and Thread Specification (Модель памяти Java).
В данной статье хочу в который раз показать, насколько важна синхронизация потоков, на примере такого понятия как атомарность (Atomicity) операций.

Рассмотрим такой программный код:
(more…)

14
October
2008

Скриптовый движок в Java (Script Engine)

Posted in: Java technologies, J2SE | 10 Comments

Вот скажите, где могут выполняются скрипты написанные на javascript: на сервере, на клиенте? На клиенте, говорите? Это устаревшая информация…

С введением в Java версии 1.6 Scripting API стало очень просто и удобно писать extension поинты и динамические конфигурации для серверной логики.

В этой статье я хочу коротко рассказать вам о ScriptEngine, ну и еще кое о чем.
(more…)

31
May
2008

Аннотации в Java (java annotation types)

Posted in: Java technologies, J2SE | 10 Comments

Продолжаю серию статей о нововведениях в Java (начиная с версии 1.5). На этот раз разговор пойдет об аннотациях (annotation type).

Аннотации представляют собой некие метаданные, которые могут добавлятся в исходный код программы и семантически не влияют на нее, но могут использоваться в процессе анализа кода, компиляции и даже во время выполнения.

Вот основные варианты использования аннтоаций:
(more…)

4
April
2008

Чтение и запись CSV файлов в Java (comma separated values file format)

Posted in: Java open-source проекты, Java technologies, J2SE, Полезные программы | 17 Comments

Решил сделать свой вклад в мировое open-source сообщество. Как вы уже догадались из названия статьи, на этот раз речь пойдет о формате CSV.

Итак, проблема заключалась в том, что генерация отчетов в формате Excel через библиотеку POI кушала много оперативной памяти и процессорного времени.

Сам по себе Excel, наверное, один из немногих хороших продуктов компании Microsoft, но вот формат файлов оставляет желать лучшего. Короче говоря, при генерации документа необходимо полностью держать его в памяти.

Выходом из ситуации является использование формата CSV (comma-separated values file format), который к счастью тоже читается с помощью Excel.
(more…)

26
March
2008

Социальные сети, Co-working Центры, Стартапы и Фрилансеры

Posted in: Разное (uncategorized), Ваш досуг. Полезные советы | 26 Comments

[Disclamer: все персонажы этого стёба выдуманы и не имеют реальных аналогов. Автор статьи не несет ответственности за то, что после ее прочтения вы организуете свой собственный co-working центр или как минимум стартап.]

Читая хабр я обнаружил, что каждая 10-ая статья посвящена Co-working Центрам и Стартапам (скорее всего, пока я напишу этот пост, там добавится еще одна-две статьи о co-working центрах и уж точно не меньше о Стартапах).

Поэтому появилась идея СТАРТАПА - создать социальную сеть (social network), посвященную Co-working центрам и Стартапам (startups). Естественно главной сущностью в этом проекте будет не кто иной как Фрилансер (freelancer).

Смысл социальной сети достаточно прост:
(more…)

26
March
2008

Паттерн Наблюдатель (Observer design pattern)

Posted in: Паттерны проектирования | 9 Comments

По просьбам читателей очередную статью о паттернах проектирования посвящу паттерну Observer (Наблюдатель). Этот шаблон проектирования также известен под именами Dependents (Подчиненные) и Publisher-Subscriber (Издатель-Подписчик).

Реализация данного паттерна используется для наблюдения за состоянием объектов в системе. Если состояние объектов изменяется в процессе их жизненного цикла, то Наблюдатель оповещает другие части системы об этих событиях.

В данной статье я попытаюсь как можно проще и понятнее рассказать об этом паттерне и привести пример программного кода на Java, реализующего Observer.
(more…)

22
March
2008

Результаты голосования

Posted in: Разное (uncategorized) | 4 Comments

Всем доброго времени суток.

Что-то голосование о рефакторинге блога поутихло…
Тем не менее можно подвести какой-никакой итог. К сожалению он будет недостаточно объективным.

В номинации Паттерны Проектирования победил “Паттерн Observer”.

В номинации Open-Source проекты первое место получает “Использование Hibernate”.

В номинации Java статьи побеждают “Нововведения в Java”.

“Фиксим layout для IE 7.0″ победил в номинации Делаем блог красивее.

Ну и лично мое мнение. Небольшое количество проголосовавших можно объяснить тем, что комментарии - не самый удобный спобос голосования. Наверняка нужно прикрутить какой-то хороший плагин для голосований (polls). Чем и займусь в ближайшее время.

Спасибо всем за ваш вклад в развитие данного ресурса. Голосование остается открытыми, высказать ваше мнение никогда не поздно: Refactoring блога Javenue.

Всего хорошего.

22
March
2008

Подсветка синтаксиса (syntax highlighter on javascript)

Posted in: Java Web Design, J2EE, Полезные программы | 3 Comments

Всем привет.
Надеюсь, данная статья поможет сэкономить время владельцам веб-ресурсов, посвященным 1С Бухгалтерии и 1С Предприятию.
Проблема заключалась в том, что в интернете отсутствует какая-либо библиотека для подсвтеки синтаксиса кода. Как ни странно, она была мне очень нужна.
В итоге я принял единственно правильное решение: найти любую открытую библиотеку (желательно pure javascript) и создать для нее 1С скин.
Такая библиотека была найдена - это Syntax Highliter.
(more…)