Jetty
int port = 80;
Server server = new Server(port);
ServletContextHandler context = new ServletContextHandler(server, "/");
context.addServlet(MyServlet.class, "/*");
server.start();
Jetty - это встраиваемый веб-сервер и контейнер сервлетов, разрабатываемый Eclipse Foundation. Jetty предоставляет компактное и легковесное решение для обработки HTTP-запросов и запуска веб-приложений в среде Java. Он широко используется в индустрии веб-разработки и часто встречается в различных проектах и приложениях, где требуется встроенный сервер.
Читать дальшеJava NIO
Java NIO (New I/O) — это набор функциональных возможностей для работы с вводом и выводом данных (I/O), представленный в Java 1.4. Этот набор функций предоставляет более эффективный и мощный способ обработки операций ввода-вывода по сравнению с традиционным I/O API, известным как Java IO (или Java I/O).
Вот основные компоненты Java NIO:
Буферы (Buffers): Основная идея в Java NIO - работа с данными через буферы. Буферы - это области памяти, которые используются для временного хранения данных перед и после их обработки. Java NIO предоставляет разные типы буферов, такие как ByteBuffer, CharBuffer, IntBuffer и другие, каждый из которых предназначен для работы с определенными типами данных.
Каналы (Channels): Каналы представляют собой абстракцию для работы с источниками данных и целевыми местами данных. Каналы могут быть использованы для чтения из файлов, записи в файлы, работы с сетевыми соединениями и т. д. Основные классы для каналов включают FileChannel, SocketChannel, ServerSocketChannel и DatagramChannel.
Селекторы (Selectors): Селекторы предоставляют механизм для мультиплексирования операций ввода-вывода на нескольких каналах. Селекторы позволяют одному потоку обрабатывать несколько каналов одновременно, что делает Java NIO особенно полезным для серверных приложений, обслуживающих множество клиентов.
Читать дальшеJTwig
import org.jtwig.JtwigModel;
import org.jtwig.JtwigTemplate;
public class TwigExample {
public static void main(String[] args) {
JtwigTemplate template = JtwigTemplate.inline("Hello, {{ name }}!");
JtwigModel model = JtwigModel.newModel().with("name", "JTwig" ) ;
String output = template.render(model);
System.out.println(output); // Hello, JTwig!
}
}
JTwig - это библиотека шаблонизации для языка программирования Java. Она предоставляет удобный способ создания и обработки шаблонов для генерации текстового или HTML-кода. JTwig особенно полезен, когда вам нужно создавать динамические страницы в веб-приложениях, генерировать отчеты, email-рассылки или форматировать текстовый вывод.
Читать дальшеSerialVersionUID
private static final long serialVersionUID = -6849794470754667710L;
SerialVersionUID - это private static final поле типа long класса который реализует интерфейс Serializable.
Во время сериализации, если мы не объявляем SerialVersionUID в нашем классе, среда выполнения Java создает номер версии для класса, так что она может десереализировать его позже. Если во время десериализации, SerialVersionUID не соответствует, то процесс завершится с исключением InvalidClassException.
Читать дальшеКонстанты в Java
public static final double PI = 3.1415;
В Java нет специального ключевого слова для определения константы как в других языках.
Константа в языке Java реализована комбинацией двух ключевых слов: static и final.
static означает, что значение принадлежит классу. А final разрешает присвоить переменной значение только один раз.
Читать дальшеThreadLocal
ThreadLocal - это класс в Java, который позволяет создавать локальные переменные, привязанные к каждому потоку. Это полезно, когда вам нужно иметь уникальную копию переменной для каждого потока, чтобы избежать конфликтов и обеспечить безопасность в многопоточной среде.
Преимущества ThreadLocal:
- Безопасность потоков: Каждый поток имеет свою собственную копию переменной, что устраняет соревнование и конфликты доступа.
- Улучшение производительности: Использование ThreadLocal может уменьшить необходимость синхронизации при доступе к переменным в многопоточной среде.
- Удобство: ThreadLocal делает работу с потоками более удобной и чистой, позволяя каждому потоку иметь свои собственные данные.
Тернарный оператор
public int max(int a, int b) {
return a > b ? a : b;
}
Тернарный оператор (также известный как условный оператор) - это сокращенная форма записи условного выражения.
Он имеет следующий синтаксис:
условие ? значение_если_истина : значение_если_ложь;
Множественное присваивание
int a, b, c;
a = b = c = 5;
System.out.println(a); // 5
System.out.println(b); // 5
System.out.println(c); // 5
Операция присваивания работает следующим образом: сначала вычисляется значение выражения в правой части, потом это значение присваивается переменной, которая размещается в левой части от знака ‘=‘.
Операция присваивания может иметь вид цепочки:
переменная1 = переменная2 = выражение;
Библиотека Lombok
import lombok.Data;
@Data
public class Person {
private String name;
private int age;
}
Разрабатывая на Java, мы сталкиваемся с множеством рутинных операций, связанных с написанием геттеров, сеттеров, equals, hashCode и других стандартных методов. Есть способ существенно упростить этот процесс. В этом нам поможет библиотека Lombok!
Lombok – это основанная на аннотациях библиотека Java, позволяющая сократить шаблонный код. В Lombok предлагаются различные аннотации, цель которых – заменить ненужный повторяющийся код, писать который утомительно. Например, Lombok избавит вас от написания безаргументных конструкторов, методов toString(), equals() и hashCode(), для этого нужно просто добавить несколько аннотаций. Плюс, эта библиотека подключается прямо к вашей IDE, поэтому работа воспринимается так, словно вы написали весь шаблонный код сами.
Читать дальше🍝 Спагетти-код: когда разработка становится беспорядком
Спагетти-код – это одна из самых неприятных "болезней" в мире программирования. Этот термин используется для описания плохо организованного и труднопонимаемого кода, который напоминает спагетти – пасту, перепутанную в неразгадываемую массу.
Почему спагетти-код возникает?
- Недостаток планирования: Недостаточное предварительное проектирование приложения может привести к хаотичной разработке, когда каждая часть кода создается независимо от других.
- Отсутствие структуры: Если разработчики не следят за структурой проекта, код может быстро превратиться в беспорядок.
- Отсутствие документации: Неадекватно задокументированный код может сделать его понимание и редактирование настоящим испытанием.
- Недостаток опыта: Новички в программировании могут создавать спагетти-код из-за отсутствия опыта и знаний о лучших практиках.