Java | Фишки и трюки
الذهاب إلى القناة على Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg
إظهار المزيد6 824
المشتركون
+724 ساعات
-97 أيام
-6030 أيام
أرشيف المشاركات
6 826
public class Boom {
private Boom internalInstance = new Boom();
public Boom() throws Exception {
throw new Exception("Boom!");
}
public static void main(String[] args) {
try {
Boom b = new Boom();
System.out.println("Surprise");
} catch (Exception e) {
System.out.println("I caught!");
}
}
}6 826
☕️Использование библиотеки MapStruct
MapStruct – это библиотека, которая позволяет автоматически генерировать код для преобразования объектов Java одного типа в объекты другого типа. Это делает процесс маппинга объектов быстрым, удобным и безопасным.
Основные методы, которые предоставляет MapStruct:
1. @Mapper – аннотация, которая указывает, что интерфейс является маппером и должен быть компилирован в реализацию маппера.
Пример:
@Mapper
public interface CarMapper {
CarDto carToCarDto(Car car);
List<CarDto> carsToCarDtos(List<Car> cars);
}
2. @Mappings – аннотация, которая позволяет настроить маппинг полей объектов.
Пример:
@Mappings({
@Mapping(source = "make", target = "manufacturer"),
@Mapping(source = "numberOfSeats", target = "seatCount")
})
CarDto carToCarDto(Car car);
3. @Mapping – аннотация, которая позволяет настроить конкретное преобразование для поля.
Пример:
@Mapping(source = "make", target = "manufacturer")
CarDto carToCarDto(Car car);
4. @InheritInverseConfiguration – аннотация, которая указывает, что метод должен использовать обратное преобразование.
Пример:
@InheritInverseConfiguration
Car carDtoToCar(CarDto carDto);
5. @IterableMapping – аннотация, которая позволяет настроить преобразование коллекций.
Пример:
@IterableMapping(elementTargetType = CarDto.class)
List<CarDto> carsToCarDtos(List<Car> cars);
🔖Используя эти методы и аннотации, разработчики могут эффективно и легко создавать мапперы для преобразования объектов Java. MapStruct делает код более чистым, читаемым и уменьшает вероятность ошибок при преобразовании объектов.6 826
Готовы улучшить свое владение Java?
Присоединяйся к нашему каналу - https://t.me/java_secrets 📲
Свежие советы, лучшие практики, примеры кода и обсуждения, чтобы стать настоящим профессионалом в программировании на Java.
Повышай свой уровень!
6 826
☕️Использование библиотеки Hibernate
Hibernate - это фреймворк для работы с базами данных в Java, который облегчает взаимодействие с базой данных с использованием объектно-ориентированной парадигмы. Hibernate позволяет разработчикам работать с объектами Java, а не с SQL запросами напрямую.
Пример использования Hibernate для работы с базой данных:
1. Создание сессии:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
2. Получение объекта из базы данных:
Employee employee = session.get(Employee.class, 1); // получение сотрудника с id = 1
System.out.println(employee.getName());
3. Сохранение объекта в базу данных:
Employee newEmployee = new Employee();
newEmployee.setName("John Doe");
newEmployee.setDepartment("IT");
session.save(newEmployee);
4. Обновление объекта в базе данных:
Employee employee = session.get(Employee.class, 1);
employee.setDepartment("HR");
session.update(employee);
5. Удаление объекта из базы данных:
Employee employee = session.get(Employee.class, 1);
session.delete(employee);
Hibernate предоставляет различные методы для работы с объектами и базой данных, такие как save, update, delete, get и др. Он также поддерживает механизмы маппинга объектов на таблицы базы данных и управления транзакциями.
🔔Hibernate облегчает работу с базой данных для Java разработчиков, позволяя им сосредоточиться на объектно-ориентированном программировании, а не на SQL запросах и управлении соединениями.6 826
🔥 Стань Архитектором ПО бесплатно! 🔥
Учебный центр IBS разыгрывает грант на обучение на курсе «Архитектор ПО. Путь к мастерству». Старт в апреле 2024.
О конкурсе
Для участия необходимо разработать архитектуру для сервиса мобильной уличной еды. Требования к проекту.
Комиссия из преподавателей курса — наградит призами победителей:
🥇 1-е место — бесплатное обучение на курсе «Архитектор ПО»
🥈 2-е место — скидка 50%
🥉 3-е место — скидка 25%
О программе курса - «Архитектор ПО. Путь к мастерству»
6 826
☕️Использование библиотеки Mockito
Mockito - это фреймворк для создания и использования динамических мок-объектов (mock objects) в юнит-тестах Java. Он позволяет заменить зависимости вашего класса на мок-объекты, что позволяет вам изолировать код и тестировать его отдельно.
Mockito предоставляет множество методов для создания и использования мок-объектов. Некоторые из наиболее часто используемых методов:
1. mock() - создает мок-объект класса или интерфейса.
List<String> mockedList = Mockito.mock(List.class);
2. when() - определяет поведение мок-объекта при вызове определенного метода.
Mockito.when(mockedList.size()).thenReturn(10);
3. verify() - проверяет, был ли вызван определенный метод мок-объекта.
Mockito.verify(mockedList).add("test");
4. any() - используется для указания любого аргумента при вызове метода.
Mockito.when(mockedList.get(Mockito.anyInt())).thenReturn("element");
5. spy() - создает мок-объект, который делегирует вызовы реальным методам переданного объекта.
List<String> list = new ArrayList<>();
List<String> spyList = Mockito.spy(list);
6. doReturn() - используется для указания возвращаемого значения метода мок-объекта.
Mockito.doReturn("element").when(mockedList).get(0);
🔥Mockito является мощным инструментом для написания эффективных и надежных юнит-тестов в Java. Он помогает программистам создавать изолированные тесты и проверять поведение кода в контролируемой среде.6 826
Он расшифровал код Яндекса, и ему пришлось уехать из страны...
Теперь он делится в своем канале самыми мощными фишками и бесплатно обучает разработке.
Ты еще не успел войти в айти и ждал сигнал от вселенной?
Это он: https://t.me/+smEILMPQXxYxNWVi
6 826
☕️Использование библиотеки Apache Kafka
Apache Kafka - это распределенная система обмена сообщениями, которая позволяет создавать высокопроизводительные приложения, обрабатывающие и потребляющие потоковые данные. Он предоставляет надежную, масштабируемую и устойчивую платформу для обработки данных в реальном времени.
Ниже приведены некоторые основные методы Apache Kafka и примеры их использования на Java:
1. Producer API используется для отправки сообщений в топики Kafka. Пример кода для отправки сообщения:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<String, String>("my_topic", "key", "value"));
producer.close();
2. Consumer API используется для чтения сообщений из топиков Kafka. Пример кода для чтения сообщений:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "my_group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("my_topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}
3. Streams API используется для обработки и анализа данных в реальном времени. Пример кода для обработки данных:
Properties props = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my_stream_app");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> inputStream = builder.stream("input_topic");
KStream<String, String> outputStream = inputStream.mapValues(value -> value.toUpperCase());
outputStream.to("output_topic");
KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();
Apache Kafka предоставляет разнообразные API и методы для работы с данными в реальном времени. Представленные выше примеры кода помогут начать использовать Apache Kafka для создания высокопроизводительных потоковых приложений.6 826
Repost from N/a
☕️Использование библиотеки Apache Kafka
Apache Kafka - это распределенная система обмена сообщениями, которая позволяет создавать высокопроизводительные приложения, обрабатывающие и потребляющие потоковые данные. Он предоставляет надежную, масштабируемую и устойчивую платформу для обработки данных в реальном времени.
Ниже приведены некоторые основные методы Apache Kafka и примеры их использования на Java:
1. Producer API используется для отправки сообщений в топики Kafka. Пример кода для отправки сообщения:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<String, String>("my_topic", "key", "value"));
producer.close();
2. Consumer API используется для чтения сообщений из топиков Kafka. Пример кода для чтения сообщений:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "my_group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("my_topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}
3. Streams API используется для обработки и анализа данных в реальном времени. Пример кода для обработки данных:
Properties props = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my_stream_app");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> inputStream = builder.stream("input_topic");
KStream<String, String> outputStream = inputStream.mapValues(value -> value.toUpperCase());
outputStream.to("output_topic");
KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();
Apache Kafka предоставляет разнообразные API и методы для работы с данными в реальном времени. Представленные выше примеры кода помогут начать использовать Apache Kafka для создания высокопроизводительных потоковых приложений.6 826
☕️Использование библиотеки Apache Kafka
Apache Kafka - это распределенная система обмена сообщениями, которая позволяет создавать высокопроизводительные приложения, обрабатывающие и потребляющие потоковые данные. Он предоставляет надежную, масштабируемую и устойчивую платформу для обработки данных в реальном времени.
Ниже приведены некоторые основные методы Apache Kafka и примеры их использования на Java:
1. Producer API:
Producer API используется для отправки сообщений в топики Kafka. Пример кода для отправки сообщения:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<String, String>("my_topic", "key", "value"));
producer.close();
2. Consumer API:
Consumer API используется для чтения сообщений из топиков Kafka. Пример кода для чтения сообщений:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "my_group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("my_topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}
3. Streams API:
Streams API используется для обработки и анализа данных в реальном времени. Пример кода для обработки данных:
Properties props = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "my_stream_app");
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass());
props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, Serdes.String().getClass());
StreamsBuilder builder = new StreamsBuilder();
KStream<String, String> inputStream = builder.stream("input_topic");
KStream<String, String> outputStream = inputStream.mapValues(value -> value.toUpperCase());
outputStream.to("output_topic");
KafkaStreams streams = new KafkaStreams(builder.build(), props);
streams.start();
Apache Kafka предоставляет разнообразные API и методы для работы с данными в реальном времени. Представленные выше примеры кода помогут программистам на Java начать использовать Apache Kafka для создания высокопроизводительных потоковых приложений.6 826
Жадный техдир не повышает зарплату? Давай исправим!
Учиться и работать — больше не нужно. За тебя это сделал Роман Шубин, тимлид девопсов и автор канала «BashDays».
Следуй за ним и через неделю вместо медной зарплатной вилки, тебе предложат золотую.
Ты узнаешь:
✔️ Как меньше кодить и больше зарабатывать
✔️ Про скрытые возможности Linux и методы отладки
✔️ Как выжить среди велосипедов и костылей
✔️ Почему наличие бэкапов, не спасет упавший прод
✔️ Как при поиске виноватого, не выйти на себя
И это только цветочки. А если заскучал, поиграй с друзьями в PIU-PIU и надери им бэкенд. Рекомендую!
В BashDays даже джуны становятся сеньорами.
Подписывайся: @bashdays
6 826
☕️Использование библиотеки Elasticsearch
Elasticsearch - это распределенный поисковый и аналитический движок, основанный на Apache Lucene. Он предоставляет возможность хранить, искать и анализировать большие объемы данных в реальном времени. Elasticsearch имеет открытый и гибкий API на основе HTTP, что делает его легко интегрируемым с различными языками программирования, включая Java.
Основные методы Elasticsearch на Java:
1. Создание индекса:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
CreateIndexRequest request = new CreateIndexRequest("my_index");
client.indices().create(request, RequestOptions.DEFAULT);
client.close();
2. Добавление документа в индекс:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
IndexRequest request = new IndexRequest("my_index").id("1")
.source("field1", "value1",
"field2", "value2");
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
client.close();
3. Получение документа из индекса:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
GetRequest request = new GetRequest("my_index", "1");
GetResponse response = client.get(request, RequestOptions.DEFAULT);
String document = response.getSourceAsString();
client.close();
4. Поиск документов в индексе:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
SearchRequest request = new SearchRequest("my_index");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("field1", "value1"));
request.source(sourceBuilder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
client.close();
5. Удаление документа из индекса:
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
DeleteRequest request = new DeleteRequest("my_index", "1");
DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
client.close();
🔖Это лишь небольшой набор методов, которые предоставляет Elasticsearch на Java. Он также имеет множество других методов для выполнения различных операций, таких как обновление документа, агрегации данных, управление индексами и многое другое. Elasticsearch обладает широкими возможностями для работы с данными и поиска, что делает его популярным инструментом в различных областях программирования и аналитики.6 826
Суровый Энтерпрайз - канал действующего java-тимлида одной банковской команды. Канал показывает всю внутреннюю кухню разработки в настоящем банковском энтерпрайзе без прикрас.
Также множество лайфхаков разработки, построения архитектуры и управления командой.
Подписаться
6 826
☕️Использование библиотеки Spring Framework
⚙️Spring Framework - это один из самых популярных и широко используемых фреймворков для разработки приложений на Java. Он предоставляет множество инструментов и возможностей для упрощения создания и управления приложениями, таких как внедрение зависимостей, управление транзакциями, аспектно-ориентированное программирование и многое другое.
Ниже представлены некоторые из основных методов и функциональностей Spring Framework
1. Внедрение зависимостей (Dependency Injection):
public class ExampleService {
private ExampleRepository exampleRepository;
@Autowired
public ExampleService(ExampleRepository exampleRepository) {
this.exampleRepository = exampleRepository;
}
}
В данном примере класс ExampleService использует внедрение зависимостей для инъекции зависимости ExampleRepository. Аннотация @Autowired указывает Spring Framework на то, что нужно внедрить экземпляр ExampleRepository.
2. Управление транзакциями (Transaction Management):
@Transactional
public void saveData(Data data) {
// Сохранение данных в базу
}
Аннотация @Transactional позволяет Spring Framework управлять транзакциями в методе saveData. После выполнения метода, транзакция будет завершена автоматически, и любые изменения будут сохранены или откатаны в зависимости от результата метода.
3. Аспектно-ориентированное программирование (Aspect-Oriented Programming):
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before method: " + joinPoint.getSignature());
}
}
В данном примере класс LoggingAspect используется для создания аспекта логирования, который будет выполняться перед выполнением методов в пакете com.example.service. Аннотация @Aspect указывает Spring Framework, что данный класс является аспектом.6 826
Microservices | Вопросы с Собеседований
- Подборка вопросов по микросервисной архитектуре с реальных собеседований
- Авторские статьи по архитектуре, проектированию, базам данных
- Автор - Lead Developer на Java/Kotlin
