Что такое 🤓
Ответ:
Criteria API — это программный API для построения запросов динамически, без использования строковых JPQL.
Использует объекты CriteriaBuilder, CriteriaQuery, Root, Predicate.
Позволяет строить сложные запросы с условиями, которые могут меняться в рантайме (например, фильтры поиска). Пример: cb.equal(root.get("name"), name).
Преимущество: типобезопасность (если использовать Metamodel), динамичность. Недостаток: громоздкость. Используется в сложных приложениях с множеством фильтров .
#собеседование
Criteria API в JPA? Ответ:
Criteria API — это программный API для построения запросов динамически, без использования строковых JPQL.
Использует объекты CriteriaBuilder, CriteriaQuery, Root, Predicate.
Позволяет строить сложные запросы с условиями, которые могут меняться в рантайме (например, фильтры поиска). Пример: cb.equal(root.get("name"), name).
Преимущество: типобезопасность (если использовать Metamodel), динамичность. Недостаток: громоздкость. Используется в сложных приложениях с множеством фильтров
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
https://hh.ru/vacancy/136317412
А вот пример адекватной вакансии. Может кому-то пригодится, откликайтесь🙂
А вот пример адекватной вакансии. Может кому-то пригодится, откликайтесь
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Влади́мир Андре́евич Ме́льников (18 августа 1928, деревня Венюково (ныне Чеховский район Московской области) — 7 мая 1993, Москва) — советский учёный и конструктор вычислительной техники. Член-корреспондент (1976) и академик АН СССР (1981). Лауреат двух Государственных премий СССР. Известен созданием советского суперкомпьютера Электроника СС БИС. Принимал участие в создании БЭСМ-6 (первого советского компьютера с быстродействием более 1 млн операций в секунду).
Самвел Кимович Шукурян (арм. Սամվել Կիմի Շուքուրյան; род. 18 августа 1950) — армянский/советский учёный в области информатики и компьютерной техники; доктор наук, внёс вклад в развитие вычислительной науки в регионе (научные школы, инженерные разработки).
Брук Те́йлор (англ. Brook Taylor, 1685—1731) — английский математик, именем которого называется известная формула, выражающая значение голоморфной функции через значения всех её производных в одной точке.
Брюс Лоуренс Хорн (родился 18 августа 1959 года) — американский инженер-программист. Он создал оригинальный Macintosh Finder и Macintosh Resource Manager для Apple Computer . Его подпись, наряду с подписями остальных членов команды разработчиков Macintosh, отлита на корпусе Macintosh 128K. С июня 2022 года он является выдающимся инженером Siri и Language Technologies в Apple.
1900 — русский инженер Константин Перский предложил слово «телевидение».
1947 — основана компания Hewlett-Packard (HP) Уильямом Хьюлеттом и Дэвидом Паккардом, начавшая с выпуска осцилляторов для аудио-техники и выросшая в глобального гиганта индустрии.
1960 — американский спутник-шпион Discoverer 14 сделал первую в истории фотографию с воздуха, запущенный из космоса, запечатлев советский аэродром на мысе Шмидта. Выдающийся прорыв в аэрофотосъёмке и разведке.
2003 — Adobe впервые выпустила Adobe Audition (ранее Cool Edit Pro 2.0), ставшее стандартом для профессионального звукового монтажа.
2004 — Google осуществила «floats» (публичное размещение акций, IPO), ожидая цену $85–95, что стало знаковым моментом в истории интернета и ИТ-индустрии.
#Biography #Birth_Date #Events #18Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Раздел 12. Работа с файлами, I/O и сетью (NIO.2)
Глава 4. Работа с сетью (Socket, HTTP, HttpClient)
Тема: InetAddress — работа с IP-адресами в Java
Читаем на devforge.ru - ссылка, тык
Заодно расскажите - удобнее ли вам так читать или лучше тут публиковать?
#Java #для_новичков #beginner #IO #NIO #Ip #InetAddress
Глава 4. Работа с сетью (Socket, HTTP, HttpClient)
Тема: InetAddress — работа с IP-адресами в Java
Читаем на devforge.ru - ссылка, тык
Заодно расскажите - удобнее ли вам так читать или лучше тут публиковать?
#Java #для_новичков #beginner #IO #NIO #Ip #InetAddress
👍3
Что выведет код?
#Tasks
import java.net.InetAddress;
public class Task180826 {
public static void main(String[] args) throws Exception {
byte[] ip = {127, 0, 0, 1};
InetAddress addr1 = InetAddress.getByAddress("host1", ip);
InetAddress addr2 = InetAddress.getByAddress("host2", ip);
System.out.println(addr1.equals(addr2));
System.out.println(addr1.getHostName().equals(addr2.getHostName()));
}
}
#Tasks
👍2
👍1
Что такое 🤓
Ответ:
@EntityGraph — это аннотация (и API) в JPA 2.1, которая позволяет явно указать, какие связанные сущности должны быть загружены (Eager) в определенном запросе.
Это альтернатива JOIN FETCH. Можно определить именованный граф ( @NamedEntityGraph ) и использовать его в @EntityGraph на уровне репозитория или на запросе.
Это дает гибкость: по умолчанию LAZY, но в конкретном месте подгружаем всё необходимое. Решает проблему N+1 запросов без изменения базовых настроек.
#собеседование
Entity Graph в JPA? Ответ:
Это альтернатива JOIN FETCH. Можно определить именованный граф (
Это дает гибкость: по умолчанию LAZY, но в конкретном месте подгружаем всё необходимое. Решает проблему N+1 запросов без изменения базовых настроек.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Са́тья Нараяна Наде́лла (англ. Satya Narayana Nadella; телугу సత్యనారాయణ నాదెళ్ల; род. 19 августа 1967, Хайдарабад) — американский топ-менеджер индийского происхождения. Генеральный директор компании Microsoft. CEO Microsoft; развернул компанию на облака и ИИ, провёл сделки LinkedIn и GitHub.
Честер Гордон Белл (англ. Chester Gordon Bell; 19 августа 1934, Керксвилл, США — 17 мая 2024, Коронадо, США) — американский инженер-электрик, компьютерный инженер и менеджер. В 1960—1966 годах в Digital Equipment Corporation (DEC) разработал несколько мини-компьютеров PDP. В 1972—1983 годах был вице-президентом DEC, курируя разработку VAX. Дальнейшая карьера Гордона Белла — предприниматель, инвестор, вице-президент Национального научного фонда, а также почётный представитель Microsoft Research в 1995—2015 годах. В 1972 году сформулировал закон о классах компьютеров (англ. Bell's law of computer classes), в котором обосновал смену компьютерных систем.
Луис Фон Ан (исп. Luis von Ahn; род. 19 августа 1978, Гватемала, Гватемала) — создатель CAPTCHA/reCAPTCHA и со-основатель Duolingo; один из пионеров краудсорсинга.
1960 — «Спутник-5» (Белка и Стрелка): запуск корабля с двумя собаками и бионабором; первый успешный полёт с возвращением живых существ с орбиты (посадка 20 августа).
1964 — Syncom 3: запуск первого геостационарного спутника связи; обеспечил прямые телетрансляции Олимпиады-1964 из Токио.
1976 — «Луна-24»: старт взлётной ступени с лунного грунта (≈170 г) к Земле; последний на сегодня успешный советский/российский образец возврата пробы с Луны.
2003 — Червь Sobig.F: один из самых быстрых почтовых червей; вспышка началась 19 августа и быстро перегрузила почтовые системы мира.
2004 — IPO Google: торги стартовали на NASDAQ по $85; день закрылся $100.34 (+18%). Формат — модифицированный «голландский аукцион».
2010 — Intel покупает McAfee: объявлена сделка на $7.68 млрд (крупнейшая покупка Intel на тот момент) — ставка на интеграцию безопасности в «железо».
#Biography #Birth_Date #Events #19Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Раздел 12. Работа с файлами, I/O и сетью (NIO.2)
Глава 4. Работа с сетью (Socket, HTTP, HttpClient)
Тема: URL, URI и HttpURLConnection: сетевая абстракция Java и путь байтов от сокета до кучи
Читаем на devforge.ru - ссылка, тык
#Java #для_новичков #beginner #HttpURLConnection #URL #URI
Глава 4. Работа с сетью (Socket, HTTP, HttpClient)
Тема: URL, URI и HttpURLConnection: сетевая абстракция Java и путь байтов от сокета до кучи
Читаем на devforge.ru - ссылка, тык
#Java #для_новичков #beginner #HttpURLConnection #URL #URI
👍2
Что выведет код?
#Tasks
import java.net.HttpURLConnection;
import java.net.URL;
public class Task190826 {
public static void main(String[] args) throws Exception {
URL url = new URL("http://example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
System.out.println(conn.getResponseCode());
}
}
#Tasks
👍1
👍3
Что такое 🤓
Ответ:
Session — это основной интерфейс Hibernate для работы с БД, обертка над JPA EntityManager. Она представляет единицу работы (unit of work) и содержит Persistence Context.
Через нее выполняются CRUD-операции, запросы.
Transaction — интерфейс для управления транзакциями. В Spring обычно не работают напрямую с Session (используют EntityManager и @Transactional ). Важно: Session не потокобезопасна, должна быть закрыта после использования.
В Spring она управляется контейнером и привязана к потоку.
#собеседование
Hibernate Session и Transaction? Ответ:
Через нее выполняются CRUD-операции, запросы.
Transaction — интерфейс для управления транзакциями. В Spring обычно не работают напрямую с Session (используют EntityManager и
В Spring она управляется контейнером и привязана к потоку.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Том Демарко (также ДеМарко, род. 20 августа 1940 года, Хейзлтон, штат Пенсильвания, США) — классик инженерии ПО; «Peopleware», структурный анализ, влияние на практику менеджмента проектов.
Мартин Догиамас (Martin Dougiamas 1969) — основатель Moodle, одной из самых распространённых LMS в мире.
Эрик Голес Чакк (Антофагаста, 21 августа 1951) — учёный в области дискретной математики и клеточных автоматов, лауреат премий за вклад в информатику Чили.
1912 — Томас Эдисон патентует электробатарею.
1956 — Начала действовать ядерная электростанция «Колдер Холл», первая ядерная электростанция Британии.
1964 — Основан Интелсат — компания, владеющая группировкой телекоммуникационных спутников.
1975 — запуск американской межпланетной станции Viking 1 к Марсу.
2024 — прекращена работа мессенджера «Агент Mail.ru» (пользователям предложено перейти на VK).
#Biography #Birth_Date #Events #20Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
[Совет по Java #073]
Тема:
Проблема: Классы, реализующие
Методы
Методы
Существуют также перегруженные версии
Решение: Четко различайте сценарии использования. Если поток должен ждать неопределенно долго, пока операция не станет возможной — используйте
Если вы хотите только попытаться выполнить операцию и немедленно вернуть результат — используйте
В многопоточных приложениях предпочтительнее использовать таймауты, чтобы система могла корректно реагировать на перегрузки и завершать потоки.
Объяснение:
При использовании таймаутов всегда проверяйте возвращаемые значения, чтобы отличить успех от таймаута (для
#Java #советы
Тема:
BlockingQueue методы put() и take() блокируются, а offer() и poll() с таймаутом — нет.Проблема: Классы, реализующие
BlockingQueue (например, ArrayBlockingQueue, LinkedBlockingQueue), предоставляют два набора методов для добавления и извлечения элементов. Методы
put() и take() блокируют поток до тех пор, пока не появится возможность выполнить операцию (для put() — пока не освободится место, для take() — пока не появится элемент). Методы
offer() и poll() являются неблокирующими: они пытаются выполнить операцию и сразу возвращают результат (true/false или элемент/null). Существуют также перегруженные версии
offer(e, timeout, unit) и poll(timeout, unit), которые ожидают указанное время и затем возвращают результат. Разработчики часто путают их, полагая, что put() и take() — это просто синонимы, и используют их в ситуациях, где нужна неблокирующая проверка, что приводит к зависанию потоков. В других случаях они используют offer() и poll() без таймаута, когда нужно дождаться освобождения места или появления элемента, что приводит к частым повторным попыткам и busy-wait.Решение: Четко различайте сценарии использования. Если поток должен ждать неопределенно долго, пока операция не станет возможной — используйте
put() и take(). Если вы хотите только попытаться выполнить операцию и немедленно вернуть результат — используйте
offer() и poll() без таймаута. Если нужно ожидать в течение ограниченного времени, а затем отступить — используйте перегруженные версии с таймаутом и обязательно проверяйте возвращаемое значение: offer возвращает true при успешной вставке, poll возвращает null при отсутствии элемента по истечении таймаута. Всегда обрабатывайте случай null или false, чтобы избежать NullPointerException или бесконечных циклов. В многопоточных приложениях предпочтительнее использовать таймауты, чтобы система могла корректно реагировать на перегрузки и завершать потоки.
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
public class BlockingQueueMethods {
private final BlockingQueue<String> queue = new ArrayBlockingQueue<>(1);
//Опасный вариант: put() блокирует навсегда
public void badPut() throws InterruptedException {
queue.put("item"); // Если очередь полна, поток зависнет навсегда
// Никогда не вернется, если никто не потребит
}
//Правильно: try с таймаутом
public boolean safeOffer(String item) throws InterruptedException {
if (queue.offer(item, 1, TimeUnit.SECONDS)) {
System.out.println("Элемент добавлен");
return true;
} else {
System.out.println("Очередь заполнена, таймаут");
return false;
}
}
//Опасный вариант: poll() без таймаута возвращает null немедленно
public String badPoll() {
return queue.poll(); // null, если очередь пуста — нужно проверять!
}
//Блокирующее извлечение, когда нужно ждать
public String takeItem() throws InterruptedException {
return queue.take(); // ждет, пока появится элемент
}
//Извлечение с таймаутом
public String pollWithTimeout() throws InterruptedException {
String item = queue.poll(500, TimeUnit.MILLISECONDS);
if (item != null) {
System.out.println("Получен: " + item);
} else {
System.out.println("Таймаут, элемент не появился");
}
return item;
}
}
Объяснение:
put() и take() используют внутренние условия (Condition) для блокировки, освобождая монитор и вновь захватывая его после пробуждения. Они не возвращают управление до выполнения операции. offer() и poll() без таймаута проверяют состояние очереди и немедленно возвращают результат. Версии с таймаутом реализованы через циклы с ожиданием, но прерываются по истечении времени. При использовании таймаутов всегда проверяйте возвращаемые значения, чтобы отличить успех от таймаута (для
offer — false, для poll — null). Важно также помнить, что null может быть допустимым значением в некоторых очередях (например, LinkedTransferQueue), но в стандартных реализациях null не разрешен, поэтому null однозначно указывает на таймаут.#Java #советы
👍3
Что выведет код?
#Tasks
import java.util.concurrent.*;
public class Task200826 {
public static void main(String[] args) throws InterruptedException {
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(1);
queue.put(1);
Thread consumer = new Thread(() -> {
try {
Thread.sleep(2000);
queue.take();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
consumer.start();
boolean added = queue.offer(2, 1, TimeUnit.SECONDS);
System.out.println(added);
System.out.println(queue.size());
}
}
#Tasks
👍3
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Что такое 🤓
Ответ:
Circuit Breaker (паттерн, реализованный в Resilience4j, Hystrix) — защищает систему от каскадных отказов. Он отслеживает вызовы внешних сервисов.
Если количество неудачных вызовов превышает порог, цепь размыкается (open) — все последующие вызовы немедленно возвращают ошибку (или fallback), не делая запроса. Через некоторое время цепь переходит в полуоткрытое (half-open) состояние — пропускает пробные запросы, и если они успешны, цепь снова замыкается.
Это предотвращает тайм-ауты и перегрузку сбойных сервисов, давая им время восстановиться.
#собеседование
Circuit Breaker и какую роль играет в микросервисах? Ответ:
Если количество неудачных вызовов превышает порог, цепь размыкается (open) — все последующие вызовы немедленно возвращают ошибку (или fallback), не делая запроса. Через некоторое время цепь переходит в полуоткрытое (half-open) состояние — пропускает пробные запросы, и если они успешны, цепь снова замыкается.
Это предотвращает тайм-ауты и перегрузку сбойных сервисов, давая им время восстановиться.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4