Java for Beginner
870 subscribers
1.01K photos
275 videos
14 files
1.69K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что выведет код?

import java.util.concurrent.ConcurrentHashMap;

public class task170826 {

public static void main(String[] args) {

ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");

for (Integer key : map.keySet()) {
if (key == 2) {
map.remove(1);
map.remove(3);
}
}
System.out.println(map.size());
}
}


#Tasks
👍4
👍4
Что такое 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 августа


ℹ️ Кто родился в этот день

Влади́мир Андре́евич Ме́льников (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
👍3
Что выведет код?

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
👍1
Варианты ответа:
Anonymous Quiz
9%
true true
27%
true false
27%
false true
36%
false false
👍1
Что такое Entity Graph в JPA? 🤓

Ответ:

@EntityGraph — это аннотация (и API) в JPA 2.1, которая позволяет явно указать, какие связанные сущности должны быть загружены (Eager) в определенном запросе.

Это альтернатива JOIN FETCH. Можно определить именованный граф (
@NamedEntityGraph) и использовать его в @EntityGraph на уровне репозитория или на запросе.

Это дает гибкость: по умолчанию LAZY, но в конкретном месте подгружаем всё необходимое. Решает проблему N+1 запросов без изменения базовых настроек.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🗓 История IT сегодня — 19 августа


ℹ️ Кто родился в этот день

Са́тья Нараяна Наде́лла (англ. 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
👍2
Что выведет код?

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
Варианты ответа:
Anonymous Quiz
56%
200
0%
301
0%
302
44%
Исключение IOException
👍3
Что такое Hibernate Session и Transaction? 🤓

Ответ:

Session — это основной интерфейс Hibernate для работы с БД, обертка над JPA EntityManager. Она представляет единицу работы (unit of work) и содержит Persistence Context.

Через нее выполняются CRUD-операции, запросы. 

Transaction — интерфейс для управления транзакциями. В Spring обычно не работают напрямую с Session (используют EntityManager и 
@Transactional). Важно: Session не потокобезопасна, должна быть закрыта после использования.

В Spring она управляется контейнером и привязана к потоку.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🗓 История IT сегодня — 20 августа


ℹ️ Кто родился в этот день

Том Демарко (также ДеМарко, род. 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]

Тема: BlockingQueue методы put() и take() блокируются, а offer() и poll() с таймаутом — нет.

Проблема: Классы, реализующие BlockingQueue (например, ArrayBlockingQueueLinkedBlockingQueue), предоставляют два набора методов для добавления и извлечения элементов.

Методы 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 #советы
👍2
Что выведет код?

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
👍2
Варианты ответа:
Anonymous Quiz
0%
true 1
0%
true 2
100%
false 0
0%
false 1
👍1