Java for Beginner
742 subscribers
709 photos
201 videos
12 files
1.15K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что такое Pattern и Matcher в Java? 🤓

Ответ:
Классы Pattern и Matcher
(пакет java.util.regex) используются для работы с регулярными выражениями. Пример:

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("123 abc");
while (matcher.find()) {
System.out.println(
matcher.group()); // 123
}

Подходят для парсинга строк и валидации.

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


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

Пауль Юлиус Готлиб Нипков (нем. Paul Julius Gottlieb Nipkow, 22 августа 1860, Лауэнбург — 24 августа 1940, Берлин)немецкий техник и изобретатель. Изобретённый им диск, получивший название диск Нипкова, послужил основой для появления механического телевидения в 1920-x годах.

Бру́но Макси́мович Понтеко́рво (итал. Bruno Pontecorvo; 22 августа 1913, Марина-ди-Пиза[итал.], Королевство Италия — 24 сентября 1993, Дубна, Московская область, Россия)итальянский и советский физик-ядерщик, один из первых помощников Энрико Ферми и автор многочисленных исследований в области физики высоких энергий, особенно посвящённых нейтрино. Убеждённый коммунист, он бежал в Советский Союз в 1950 году, где продолжил исследования распада мюона и нейтрино. В его память в 1995 году была учреждена престижная премия Понтекорво.

Джеймс Рамбо (англ. James Rumbaugh, род. 1947) — американский учёный в области информатики и объектной методологии, наиболее известный по своей работе над созданием технологии объектного моделирования (OMT) и языка моделирования UML.

Сами Эрол Геленбе (родился 22 августа 1945 года в Стамбуле) — турецкий и французский учёный в области информатики , инженер-электронщик и прикладной математик , известный своими новаторскими работами в области производительности компьютерных систем и сетей.

Джон М. Чоунинг (/ ˈ tʃ aʊ n ɪ ŋ / ; родился 22 августа 1934 года в Сейлеме, штат Нью-Джерси) — американский композитор, музыкант, первооткрыватель и профессор, наиболее известный своей работой в Стэнфордском университете , основанием CCRMA — Центра компьютерных исследований в области музыки и акустики в 1975 году и разработкой им цифровой реализации FM-синтеза и цифрового звукового пространственного представления во время работы там.

Масатоси Сима (яп. 嶋正利; р. 1943) — японский инженер-электронщик, один из архитекторов первого в мире микропроцессора Intel 4004 (работая со стороны Busicom).


🌐 Знаковые события

1955 — основана первая группа пользователей компьютеров (SHARE). После симпозиума IBM участники, использующие мейнфрейм IBM 704, встретились в RAND Corporation и создали SHARE — платформу обмена софтом и документацией для IBM-установок.

1958 — Йсенхауэр объявляет о трехстороннем моратории на ядерные испытания, при условии участия СССР и Великобритании. Мораторий должен был вступить в силу 31 октября.

1960 — в Женеве отложены переговоры США, СССР и Великобритании по договору о запрете ядерных испытаний. Это политико-техническое событие с долгосрочными последствиями в международной безопасности.

1961 — Международный астрономический союз официально утвердил названия деталей обратной стороны Луны, сфотографированных АМС «Луна-3»

1962 — атомоход N.S. Savannah (первое в мире судно на ядерной энергии) совершает своё первое прибытие в Савану, штат Джорджия, продвигая мирное использование энергии.

1989 — открыты кольца Нептуна.


#Biography #Birth_Date #Events #22Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Apache Kafka

Безопасность, мониторинг и эксплуатация


Apache Kafka в производственной среде требует тщательного подхода к безопасности, мониторингу и эксплуатации для обеспечения стабильности, масштабируемости и восстановления после сбоев.


Безопасность: TLS/SSL, SASL (SCRAM, OAUTHBEARER), ACLs

Безопасность в Kafka строится на шифровании трафика, аутентификации и авторизации для предотвращения утечек данных и атак.

- TLS/SSL: Шифрование соединений для защиты данных в полёте. Настраивается через listeners (прослушиватели), где указывается протокол SASL_SSL или SSL. Брокеры используют keystore (хранилище ключей) для серверных сертификатов и truststore для проверки клиентов.
В памяти брокера: SSL контекст загружается при старте, handshake происходит на сетевом уровне с использованием Java Secure Socket Extension (JSSE). Нюанс: overhead на CPU для шифрования (до 20% при высокой нагрузке), используйте hardware acceleration если возможно.


- SASL (Simple Authentication and Security Layer): Аутентификация клиентов.

Поддерживает механизмы:
- SCRAM (Salted Challenge Response Authentication Mechanism): Безопасный парольный механизм (SHA-256 или SHA-512). Пароли хранятся в ZooKeeper или KRaft в зашифрованном виде. В процессе: клиент посылает challenge-response, брокер проверяет без передачи пароля.
- OAUTHBEARER: Интеграция с OAuth 2.0 для токенов (JWT). Полезно для интеграции с внешними системами (например, Keycloak).

В памяти: токены валидируются через callback handler, overhead на верификацию сигнатуры.


- ACLs (Access Control Lists): Авторизация операций (READ, WRITE, CREATE и т.д.) по пользователям и ресурсам (темы, группы потребителей). Настраивается через authorizer.class.name (KafkaAuthorizer). ACL хранятся в ZooKeeper/KRaft, загружаются в память брокера как Map<Principal, Set<AclEntry>>. При запросе брокер проверяет ACL перед выполнением, добавляя минимальный latency (миллисекунды).

Компромиссы: полная безопасность (TLS + SASL + ACL) снижает производительность на 10-15%, но обязательна для compliance (GDPR, PCI DSS).


Мониторинг: JMX, Prometheus, key metrics, consumer lag tracking


Мониторинг позволяет выявлять узкие места и предотвращать сбои.

- JMX (Java Management Extensions): Встроенный в Kafka для экспорта метрик (MBeans). Брокеры экспортируют метрики вроде kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec.
В памяти: JMX registry держит beans, polling через JmxExporter.


- Prometheus: Интеграция через JMX Exporter (sidecar) или Kafka Exporter. Собирает метрики в формате для Grafana.

Ключевые метрики:
- Брокеры: under-replicated-partitions (недореплицированные разделы), active-controller-count (активный контроллер, должен быть 1), request-queue-size (очередь запросов, >100 — bottleneck).
- Продюсеры: produce-throttle-time-avg (задержка из-за квот), record-error-rate (ошибки отправки).
- Потребители: records-lag-max (максимальное отставание).


- Отслеживание отставания потребителей (consumer lag): Lag = log-end-offset - committed-offset. Мониторится через KafkaConsumer.metrics() или Burrow/LinkedIn's Kafka Monitor.
В памяти потребителя: fetch metadata включает LEO, lag вычисляется локально. Нюанс: высокий lag (>1M) указывает на slow processing; alerting на threshold.


В эксплуатации: настройте dashboards в Grafana для визуализации, с retention метрик 15-30 дней.


#Java #middle #Kafka #Kafka_securiy
👍1
Тюнинг: параметры брокеров (num.partitions, min.insync.replicas, log.retention.hours), GC tuning для Java 21

Тюнинг оптимизирует под нагрузку.

- Параметры брокеров:
- num.partitions: Количество разделов по умолчанию для новых топиков (default 1). Больше — выше parallelism, но overhead на метаданные (каждый раздел — ~1 МБ RAM на брокере).
- min.insync.replicas: Минимальное количество синхронизированных реплик для acks=all (default 1). Установите 2 для durability, но снижает availability при сбоях.
- log.retention.hours: Время хранения логов (default 168 часов). Баланс: дольше — больше диск, короче — риск потери для replay.


- GC tuning для Java 21: Kafka работает на JVM, GC (сборка мусора) влияет на latency. Используйте Shenandoah или ZGC для low-pause (sub-ms).
Параметры: -XX:+UseZGC -XX:ZCollectionInterval=10 (интервал 10 сек), -XX:MaxGCPauseMillis=5.
В памяти: ZGC использует colored pointers для concurrent marking, снижая паузы. Нюанс: для heap >64GB добавьте -XX:+ZGenerational для generational mode. Тестируйте с GC logs (-Xlog:gc*).


Компромиссы: агрессивный тюнинг снижает latency, но требует benchmark (k6 или Kafka's perf tools).


Восстановление после катастроф: MirrorMaker 2, репликация между регионами

Disaster recovery обеспечивает continuity.


- MirrorMaker 2 (MM2): Инструмент для зеркалирования тем между кластерами (active-passive или active-active). Работает как consumer-producer: читает из source, пишет в target. Поддерживает offset translation, topic renaming. В памяти: MM2 использует Connect framework, с tasks для parallelism.

- Репликация между регионами: Настройте MM2 с remote clusters, используя topics like mm2-offset-syncs для синхронизации offset'ов. Для cross-DC: настройте replication.factor>1, с geo-aware rack.aware.mode. Нюанс: latency добавляет 100-500 мс, мониторьте replication lag.

Стратегия: регулярные drills, с failover скриптами (изменение bootstrap.servers в клиентах).


Пример конфигурации безопасности (ZooKeeper и KRaft)

Вот пример конфигурации брокера для SASL_SSL с SCRAM (работает как с ZooKeeper, так и KRaft):
# Прослушиватели
listeners=SASL_SSL://:9092
advertised.listeners=SASL_SSL://broker-host:9092

# SSL настройки
ssl.keystore.location=/etc/kafka/secrets/kafka.keystore.jks
ssl.keystore.password=keystore-pass
ssl.truststore.location=/etc/kafka/secrets/kafka.truststore.jks
ssl.truststore.password=truststore-pass
ssl.client.auth=required # Требовать клиентские сертификаты

# SASL
sasl.enabled.mechanisms=SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512

# Для KRaft добавьте:
process.roles=broker,controller
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,SASL_SSL:SASL_SSL

# ACL
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin
allow.everyone.if.no.acl.found=false


В production: генерируйте сертификаты с CA (Let's Encrypt или self-signed), храните секреты в Vault.


#Java #middle #Kafka #Kafka_securiy
👍1
Нюансы

- Планирование ёмкости по количеству разделов: Разделы — единица parallelism, но лимит ~4K на брокер (из-за открытых файлов, RAM ~10 КБ на раздел). Планируйте: throughput / partition-throughput (например, 10 МБ/с на раздел). Для 100K TPS — 100 разделов. Нюанс: слишком много (>1M в кластере) замедляет контроллер (leader election до минут); используйте формулу: num_partitions = (desired_throughput / partition_throughput) * replication_factor.

- Оповещения по недореплицированным разделам: Метрика kafka.server:ReplicaManager:UnderReplicatedPartitions >0 сигнализирует о проблемах (сбой фолловера). Alerting в Prometheus: alert если >0 >5 мин, с playbook (проверить network, restart брокер). Нюанс: chronic under-replication приводит к data loss при unclean election.

- Типичные антипаттерны:
- Слишком много разделов: Приводит к overhead (метаданные, ZK load в старых версиях). Решение: consolidate темы, используйте compaction.
- Unclean election (unclean.leader.election.enable=true): Позволяет non-ISR лидеру, рискуя потерей данных. Держите false, жертвуйте availability.
- Отключенный мониторинг: Без alerting на lag или CPU>80% сбои незаметны. Всегда интегрируйте с ELK/Prometheus, с on-call ротацией.


#Java #middle #Kafka #Kafka_securiy
👍3
Что выведет код?

class Parent220825 {
private int value = 10;
}

class Child220825 extends Parent220825 {
public void printValue(Parent220825 p) {
System.out.println(p.value);
}
}

public class Task220825 {
public static void main(String[] args) {
new Child220825().printValue(new Parent220825());
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
0%
null
15%
0
40%
10
45%
Ошибка компиляции
👍2
🤯42😱1
Карточка для запоминания return 😎

#memory_card
👍5
Что такое ZonedDateTime в Java? 🤓

Ответ:
ZonedDateTime
(Java 8) представляет дату и время с учетом часового пояса.

Пример:
ZonedDateTime zdt =
ZonedDateTime.now(ZoneId.of("Europe/Paris"));
System.out.println(zdt); // 2025-08-04T04:57+02:00[Europe/Paris]

Используется для работы с международными приложениями.


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


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

Константи́н Серге́евич Новосёлов (англ. Konstantin Sergeevich Novoselov; род. 23 августа 1974, Нижний Тагил, СССР) российский и британский физик. Лауреат Нобелевской премии по физике 2010 года (совместно с Андреем Геймом), член Лондонского королевского общества (2011), иностранный член Национальной академии наук США (2019).

Георгий Павлович Лопато (23 августа 1924 — 13 февраля 2003) — советский инженер-компьютерщик, один из создателей серии ЭВМ «Минск».

Сигаев, Фёдор Геннадьевич (23 августа 1973 г.) — российский программист, сооснователь и технический директор компании Постгресс Профессиональный (Postgres Pro), ведущий разработчик (Major Contributor) и коммитер СУБД PostgreSQL, один из крупнейших мировых экспертов по этой СУБД.

Эдгар Франк «Тед» Кодд (англ. Edgar Frank Codd; 23 августа 1923 — 18 апреля 2003)британский учёный, работы которого заложили основы теории реляционных баз данных. Работая в компании IBM, он создал реляционную модель данных. Он также внёс существенный вклад в другие области информатики.


🌐 Знаковые события

1955 — первый полёт первого конвертоплана с поворотным ротором — «Белл XV-3».

1966 — аппарат Lunar Orbiter 1 сделал первую в истории фотографию Земли с Луны. Эталонное событие в истории ДЗЗ и лунной разведки площадок для «Сервеера» и «Аполлона».

1991 Всемирная паутина стала общедоступной: британский ученый Тим Бернерс-Ли открыл доступ к первому в мире веб-серверу, расположенному в ЦЕРН, что ознаменовало начало доступности Всемирной паутины (World Wide Web) для широкой публики.

2023Chandrayaan-3 совершил посадку у южного полюса Луны — первая успешная посадка Индии и первая близ южнополярной области.


#Biography #Birth_Date #Events #23Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Предлагаем темы для разбора и публикации! 📖

В комментариях к данному посту предлагайте вопросы, которые вы хотели бы увидеть максимально подробно разобранными в постах, а если будет интересно то и на видео.

Голосование будет проводиться всю неделю, а статья или видео - выходить по выходным.

Примерные правила:
🟢 темы, не выше уровня middle, чтоб был интерес общим.
🟢Один человек - одна тема.
🟢Тема должна быть отдельным теоретически-практическим вопросом. Готовый проект - это не тема!

Жду Ваших предложений! 👏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Выбираем темы для рассмотрения в следующие выходные! 🤨
Anonymous Poll
30%
AOP
37%
NoSQL BD, вводная информация
30%
REST рекомендации
3%
Phaser
👍4
Forwarded from ChatRoom (Java for Beginner) (Первожрец Java)
«МТС Линк»;
«Контур Толк»;
SaluteJazz;
VK Звонки;
Saby Meet;
CallBridge;
FreeConference;
Jisti Meet.

вот аналоги для встреч, кто что советует?
🗓 История IT-технологий сегодня — 24 августа


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

Ви́ктор Миха́йлович Глушко́в (24 августа 1923, Ростов-на-Дону, РСФСР, СССР — 30 января 1982, Москва, СССР)советский математик, кибернетик. Основоположник советской кибернетики; проекты ОГАС и теоретические основы ИТ. Автор трудов по алгебре, кибернетике и вычислительной технике. Под его руководством в 1966 году была разработана первая в СССР персональная ЭВМ «МИР-1».

Хидэо Кодзима (яп. 小島 秀夫 Кодзима Хидэо, род. 24 августа 1963, Токио) — японский геймдизайнер, геймдиректор, режиссёр, сценарист, продюсер и актёр.

Майкл Артур Сайман (родился 24 августа 1996 года) — перуано - боливийско-американский предприниматель в области мобильных приложений, инженер-программист, политический активист и писатель. Он наиболее известен созданием популярных приложений в подростковом возрасте.

🌐 Знаковые события

1995 — Windows 95 поступила в розницу (GA). Запуск, введший «Пуск»/Taskbar и массовое «Plug and Play», стал поворотным для пользовательских ОС.


#Biography #Birth_Date #Events #24Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Предлагаю сегодня собраться! Пообсуждать наболевшее и просто интересное.

Время встречи в 16:00 МСК!😎
Anonymous Poll
44%
Я приду! 👋
44%
Я хотел бы, но не смогу 🤷‍♀️
13%
Не интересно 👎
👍2
Программист — это не тот, кто знает все.
А тот, кто не боится не знать всего.


Вот скажи, ты реально думаешь, что программисты — это ходячие энциклопедии?
Что в голове у седого синьора-джависта сидят все библиотеки, алгоритмы и спецификации?

Если кто-то говорит что это так, не верь. Это вранье.

Вот несколько лет назад, я вообще не знал о существовании Java. Я видел только установщик JVM и java-игры на древнем телефоне. Ничего не слышал о SOLID и ACID, Spring даже на английском встречал редко.
А теперь я программист. И каждый день узнаю что-то новое о Java (по крайней мере стараюсь).

Почему так получилось? И почему 40-летний дяденька, смог успешно поменять свою жизнь?

Потому, что я признал, что не знаю ВСЕГО.

Но могу попытаться.


Что не смотря на накопленный опыт и знания, мне есть еще чему поучиться.

Чем собственно ежедневно я и занимаю
сь. ☺️



Культ незнания

Вот запускаешь ты код.
Видишь ошибку и стек-трейс на 200 строк.
И мозг кричит: Твою мать WTF?! Я не понимаю, что это такое!


И тут ты можешь решить для себя, кто ты.

🙅‍♂️ Либо ты впадешь в панику и начнешь сомневаться в себе, в своем выборе и вернешься к тому месту, где удобнее и привычнее.
🆗 Либо ты спокойно говоришь себе: Да, я не знаю. Но я разберусь.

На самом деле это происходит ежедневно даже с топовыми программистами. Всегда находится новая ошибка, новая логика, новое приложение которое им не знакомо и не понятно.

Но топовый программист тем и отличается от новичка, что он точно знает как и когда он разберется в этом.

Нужно просто понять и принять то, что КАЖДЫЙ день, ты БУДЕШЬ встречать что-то новое и разбираться в этом.
Нужно просто понять и принять то, что КАЖДЫЙ день, ты ОБЯЗАН искать что-то новое и разбираться в этом.


И это бесконечный процесс пока ты программист.


Почему это важно

Технологии меняются быстрее, чем ты успеваешь их выучить.
Сегодня ты крутой джавист, завтра твоя компания мигрирует на Kotlin или Go.
Через 5 лет твой стек устареет, и если ты привык знать всё, ты сгоришь.

Настоящая сила — не в том, чтобы знать всё.
Настоящая сила — не бояться не знать и быстро учиться.


Иначе завтра, тебя задвинут как старую печатную машинку на антресоль (вроде бы и нахер не нужен, но вдруг пригодится), если вообще не выкинут на свалку.


Как приручить хаос незнания

🟡Признай его. Не пытайся выглядеть всезнайкой. Скажи - я не знаю, но разберусь. Это нормальная фраза для профессионала.

🟡Задавай вопросы. Коллегам, гуглу, сообществам, LLM. Ты не глупый, если спрашиваешь. Ты глуп, если молчишь и деградируешь или не развиваешься.

🟡Учись учиться. Не накапливай статические знания, а тренируй мышцу поиска и анализа.

🟡Не прячься за комфортным. Вечно ковыряться в том, что ты знаешь — это не рост, это болото.


И вот парадокс: именно постоянное напоминание, что я чего-то не знаю, даёт мне такое чувство свободы и силы. Ежедневный поиск и изучение, напоминает, что я уже на шаг впереди тех, кто что-то выучил на отлично и довольствуется этим.

Я не обязан знать всё.

Я ОБЯЗАН не бояться не знать.



Понравилась статья - поделись с другом, позови его на канал и будет тебе моя благодарность 🤝

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥31
Всем привет!

Жду Вас в Яндекс.Телемост!

Заходите поболтаем о IT и около него.
Интересно Ваше мнение о происходящем на рынке и в целом!


Ссылку Вам выдаст бот, не стесняйтесь писать ему) ->

@JFB_admin_bot
👍3