Пример использования функционального программирования во избежание дублирования кода


Допустим, перед нами стоит задача загрузить конфиг приложения. Есть внутренний конфиг, который хранится в файле app.properties внутри jar-файла, и есть внешний — хранится в пользовательской директории ~/.config/app.conf.
Приложение при запуске читает внешний конфиг. Если какого-то параметра в нём нет, будет браться значение из внутреннего. Если внешнего конфига вообще нет — читается внутренний.

Для чтения внутреннего конфига используется класс ResourceBundle и его метод getString(String key), для внешнего — Properties
Продолжить

Рейтинг:  7  (Против: 1 | За: 8)
Добавлено: 17.04.2018 от aNNiMON

Комментарии (2)

java.util.concurrent ScheduledThreadPoolExecutor как замена классу Timer


Класс Timer существует в Java уже очень давно и многие по привычке продолжают использовать его по сей день. Однако, у него есть некоторые неприятные особенности и ограничения. Об этом, а также о классе ScheduledThreadPoolExecutor, который служит заменой классу Timer я и расскажу.
Продолжить

Рейтинг:  6  (Против: 0 | За: 6)
Добавлено: 14.03.2018 от aNNiMON

Комментарии (4)

Быстрая и правильная реализация Singleton в Java


images.jpg

Доброго времени суток!

Копаясь в интернете, я наткнулся на интересные статьи о Синглтонах. О быстрых, о медленных. Изучив их, и заметив некоторые недостатки, я решил написать свою версию синглтона, избавившись от части минусов.

Правда то, что я считал самым лучшим подходом, оказалось худшим, но об этом читайте дальше, в статье. :)
Продолжить

Рейтинг:  4  (Против: 1 | За: 5)
Добавлено: 11.02.2018 от Askalite

Комментарии (7)

Оптимизация в языках программирования


Продолжая тему создания своего языка программирования, я решил рассказать об оптимизации.

С последнего 14-го урока в предыдущей серии, язык OwnLang заметно улучшился, поэтому для начала я предлагаю ознакомиться с изменениями.


Все оптимизации делаются после парсинга, в момент, когда у нас уже сформировано дерево AST. Дальше нам поможет Visitor, с его помощью удобно обходить дерево и заменять узлы.
OptimizationVisitor - базовый класс, который может заменить один узел (Statement или Expression) на другой, либо удалить его. Классы всех остальных
Продолжить

Рейтинг:  6  (Против: 0 | За: 6)
Добавлено: 24.11.2017 от aNNiMON

Комментарии (3)
Всего: 40
<< 1 2 3 4 ... 8 >>

Мы в соцсетях

vk tw tg yt gt