Руководство по CompletableFuture с примерами![]() В Java 8 появилось множество новых функций и улучшений, таких как лямбда-выражения, Stream API, CompletableFuture и т.д. В этой статье я подробно расскажу о CompletableFuture и на простых примерах покажу основные его методы. Продолжить Рейтинг: 7 (Против: 0 | За: 7) Добавлено: 29.09.2018 от aNNiMON Комментарии (6) Пример использования функционального программирования во избежание дублирования кодаДопустим, перед нами стоит задача загрузить конфиг приложения. Есть внутренний конфиг, который хранится в файле 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![]() Доброго времени суток! Копаясь в интернете, я наткнулся на интересные статьи о Синглтонах. О быстрых, о медленных. Изучив их, и заметив некоторые недостатки, я решил написать свою версию синглтона, избавившись от части минусов. Правда то, что я считал самым лучшим подходом, оказалось худшим, но об этом читайте дальше, в статье. ![]() Продолжить Рейтинг: 4 (Против: 1 | За: 5) Добавлено: 11.02.2018 от Askalite Комментарии (7) Оптимизация в языках программированияПродолжая тему создания своего языка программирования, я решил рассказать об оптимизации. С последнего 14-го урока в предыдущей серии, язык OwnLang заметно улучшился, поэтому для начала я предлагаю ознакомиться с изменениями. ![]() Все оптимизации делаются после парсинга, в момент, когда у нас уже сформировано дерево AST. Дальше нам поможет Visitor, с его помощью удобно обходить дерево и заменять узлы. OptimizationVisitor - базовый класс, который может заменить один узел (Statement или Expression) на другой, либо удалить его. Классы всех остальных Продолжить Рейтинг: 6 (Против: 0 | За: 6) Добавлено: 24.11.2017 от aNNiMON Комментарии (3) Всего: 41
|