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
Создание и использование объектов

Объекты создаются с помощью оператора new.

Пример в методе main:

public class Main {
public static void main(String[] args) {
// Создание объекта
Person person1 = new Person("Алексей", 35);

// Вызов метода
person1.introduce(); // Вывод: Привет, меня зовут Алексей, мне 35 лет.

// Использование геттера и сеттера
System.out.println("Текущий возраст: " + person1.getAge());
person1.setAge(36);
System.out.println("Новый возраст: " + person1.getAge());
}
}

new Person("Алексей", 35): Создает объект и вызывает конструктор.
person1.introduce(): Вызывает метод объекта.



Как создать это в IntelliJ IDEA


Создайте класс:

В проекте щелкните правой кнопкой на src → New → Java Class.
Назовите Person и добавьте код выше.


Создайте класс Main:
Аналогично создайте Main с методом main.

Запустите:
Правой кнопкой на Main.java → Run 'Main.main()'.


Полезные советы для новичков

Используйте this: Для отличия полей класса от параметров методов (например, this.name = name;).
Конструкторы по умолчанию: Если конструктор не указан, Java создает пустой конструктор public Person() {}.
Множественные конструкторы: Можно иметь несколько конструкторов (перегрузка), перегрузка, но об этом в следующем уроке.
Практика инкапсуляции: Всегда делайте поля private и предоставляйте доступ через геттеры/сеттеры.
Проверки в сеттерах: Добавляйте логику, чтобы избежать некорректных данных.



#Java #для_новичков #beginner #class #object
👍3
Что выведет код?

class Parent150825 {
Parent150825() {
print();
}
void print() {
System.out.println("Parent");
}
}

class Child150825 extends Parent150825 {
int value = 10;

@Override
void print() {
System.out.println(value);
}
}

public class Task150825 {
public static void main(String[] args) {
new Child150825();
}
}


#Tasks
👍4
Варианты ответа:
Anonymous Quiz
21%
"Parent"
10%
0
48%
10
21%
Ошибка компиляции
🤯2😱1
Карточка для запоминания for 😎

#memory_card
👍2
Что такое LockSupport? 🤓

Ответ:
LockSupport
предоставляет низкоуровневые методы (park, unpark) для приостановки и возобновления потоков. Используется в реализации Lock. Пример:

Thread t = new Thread(() -> {
LockSupport.park();
System.out.println("Unparked");
});
t.start();
LockSupport.unpark(t);

Более гибкий, чем wait/notify.


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


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

Христос Харилаос Пападимитриу (греч. Χρήστος Χαριλάος Παπαδημητρίου; род. 1949, Афины) один из ведущих теоретиков в компьютерных науках; важные работы по теории алгоритмов, сложности вычислений и теория игр, автор фундаментальных учебников и исследований. Член Национальных Академии наук (2009) и Инженерной академии США, профессор Калифорнийского университета в Беркли.


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

1890 — Электромеханическая обработка переписи США: Бюро переписи объявляет результаты, подсчитанные машинами Германа Холлерита — рубеж для истории вычислений и табуляторов.

1993 — Иан Мёрдок основал сообщество «Debian», занимающееся созданием и распространением свободного дистрибутива Debian GNU/Linux.

2006 — в русской Википедии появилась юбилейная, 100-тысячная статья.


#Biography #Birth_Date #Events #16Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Mems. Пятничные мемы.
🆒2👍1
Вновь создаем встречу, обсуждаем Java, заходите, поговорим.
Java for Beginner
Вновь создаем встречу, обсуждаем Java, заходите, поговорим.
Всем спасибо кто пришел🫡
Классно поговорили и обменялись мнениями👍
Думаю надо повторить🤝
👍6
🗓 История IT сегодня — 17 августа


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

Ло́уренс Джо́зеф «Ла́рри» Э́ллисон (англ. Lawrence Joseph «Larry» Ellison; род. 17 августа 1944 года, Бронкс, Нью-Йорк, США) сооснователь и долгосрочный руководитель Oracle Corporation; ключевая фигура в развитии коммерческих СУБД и корпоративного программного обеспечения.


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


1958 — Pioneer 0 (Thor-Able) — первая американская попытка отправить аппарат к Луне; запуск 17 августа, авария на взлёте.

1970 программа «Венера»: запуск аппарата Венера-7, первого успешно передавшего данные с поверхности другой планеты — Венеры.

1982 — Германия/Япония: на заводе Philips (Ганновер) начинают серийно прессовать первые компакт-диски (CD); коммерческий старт CD-эры — осень 1982.


#Biography #Birth_Date #Events #17Августа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Если твой баг стоит миллионы: кто виноват и кто заплатит?

Ты написал код. Код ушёл в прод.
Через час — у компании минус 10 миллионов рублей из-за сбоя в платёжке.
Тебя вызывает тимлид. Потом HR. Потом юрист.

А в голове вертится одна мысль: если я сяду, где я возьму столько денег?



😉 Давайте сегодня развеем страхи любого начинающего разработчика


🤓 Где закон встречает программиста

В России у программиста есть три юридических ловушки:

Гражданский кодекс РФ

ст. 1064 ГК РФ — "Общая ответственность за причинение вреда".
ст. 15 ГК РФ "Компенсация убытков".
Если из-за твоего кода компания реально потеряла деньги, теоретически она может взыскать ущерб.


Трудовой кодекс РФ
ст. 232–233, 238 ТК РФ обязанность работника, как стороны трудового договора, нести материальную ответственность, но только в пределах своего заработка, если иное не доказано.

Уголовный кодекс РФ
(крайне редкий, но встречающийся кейс)
ст. 272 УК РФнеправомерный доступ к компьютерной информации.
ст. 273 УК РФсоздание и распространение вредоносных программ.


❗️Вот что важно - это наличие виновности❗️

😔 Что такое "виновность"
В трудовом праве РФ "виновность" это наличие твоих неправомерных действий (или бездействия) и наличие причинно-следственной связи с ущербом. Виновность полностью может установить только суд/специальная комиссия/уполномоченные лица.
При любом раскладе все решения можно обжаловать в вышестоящем суде.



🫰 Когда ты реально можешь заплатить?

🔴 Ущерб доказан и он прямой (сломанный сервер, утраченные данные, деньги реально ушли).
🔴 Ты действовал с нарушением правил, инструкций или проявил грубую небрежность.
🔴 Есть приказ о привлечении к ответственности (работодатель должен провести служебное расследование и зафиксировать все сопутствующие моменты).
🔴 Есть документально подтвержденное, законное, оформленное подтверждение ущерба.
🔴 Суд/комиссия установила, что вина в причиненном ущербе - твоя.

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

Важно: по ст. 241 ТК РФ твой максимум ответственности это средняя месячная зарплата.

А вот полную сумму ущерба взыщут только в спецслучаях (ст. 243 ТК РФ):
- умышленный вред,
- кража,
- разглашение тайны,
- алкоголь/наркотики,
- договор о полной мат. ответственности,
- причинение ущерба не при исполнении работником трудовых обязанностей.

Пример: ты по невнимательности, пьяный, уронил серверный блок, отчего удалилась продовая БД. Твой напарник, по инструкции обязан был делать бэкап — и не сделал. Полный ущерб причиненный компании выплатите пополам 🤣.


✌️ Когда ты НЕ платишь?

🔵 Ошибка нормальная рабочая, без умысла, в рабочем процессе или при выполнения задания.
🔵 Работодатель сам не создал условий (например, не было ревью, тестирования, или тебя заставили задеплоить в прод ночью) и т.д. Но важно это с твоей стороны это доказать!
🔵 Ущерб — это "упущенная выгода" (например, "мы могли заработать, но баг помешал" — это не взыскивается по ТК РФ).
🔵 Крайняя необходимость и необходимая оборона (если ты разбил монитор об голову грабителя — это не взыскивается по ТК РФ).

Пример: тебя попросили срочно вкатить фиксы без тестов, всё упало, компания потеряла клиентов. Тут вина на организации процесса, а не на тебе.


🤫 Вот мои советы, чтобы избежать проблем:

Документируйте всё
Ведите переписку с руководством и коллегами через корпоративные каналы (почта, мессенджеры) по рискованным задачам и условиям, которые могут привести к ущербу.

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

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

Соблюдайте стандарты разработки
Регулярно проводите тестирование и ревью кода, ведите подробную документацию по проекту, если этого нет.


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

😎

#motivation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
🗓 История IT сегодня — 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
👍1
Apache Kafka

Consumer — группы, оффсеты, ребалансинг


Apache Kafka Consumer — это клиент, ответственный за чтение и обработку сообщений из топиков.


Group coordinator, heartbeat, session.timeout.ms

Consumer groups позволяют нескольким потребителям параллельно обрабатывать топик, распределяя партиции между ними для load balancing. Группа идентифицируется по group.id; каждый потребитель в группе — member с уникальным member.id (генерируется при join).

Group coordinator это брокер, выбранный для управления группой (hash(group.id) % num_brokers определяет координатора).

Координатор хранит состояние группы: members, assignments партиций, committed offsets (в внутренней теме __consumer_offsets).

В памяти брокера: состояние в GroupMetadataManager, с off-heap структурами для efficiency; offsets реплицированы как обычные записи.


Потребители поддерживают связь через heartbeat'ы: отдельный Heartbeat thread в KafkaConsumer посылает HeartbeatRequest каждые heartbeat.interval.ms (по умолчанию 3 сек) к координатору. Координатор отвечает, подтверждая membership. Если heartbeat не приходит в течение session.timeout.ms (по умолчанию 45 сек), member считается dead, триггеря rebalance.

В памяти потребителя: Coordinator хранит generation (epoch группы), member.id. Нюанс: высокое session.timeout.ms позволяет пережить GC-паузы или network glitches, но замедляет detection failures; низкое — приводит к frequent rebalances. При poll() heartbeat отправляется implicitly, если interval истек.


Offset management: авто-коммит vs ручной (commitSync, commitAsync)

Offsets тракают прогресс чтения: для каждой партиции — committed offset, с которого группа начнет после restart/rebalance.

Авто-коммит: Включается enable.auto.commit=true (default), с auto.commit.interval.ms (5 сек). При poll() потребитель аккумулирует processed offsets в памяти (OffsetAndMetadata), и каждые interval commit'ит их async. В памяти: Map<TopicPartition, OffsetAndMetadata> в KafkaConsumer, flushed periodically.

Trade-offs: удобно, но риск at-most-once (если crash после обработки, но до commit — потеря) или at-least-once (duplicates если commit после обработки, но перед full ack). Не используйте для critical processing.

Ручной коммит: enable.auto.commit=false. commitSync() — synchronous, блокирует до подтверждения от координатора (via OffsetCommitRequest), обеспечивает durability, но увеличивает latency. commitAsync() — asynchronous, с optional callback для error handling; faster, но требует manual retry на failures.

В памяти: offsets буферизуются до commit; при commitSync все in-flight commits ждут. Нюанс: commit только assigned партиций; при rebalance revoked offsets commit'ятся в onPartitionsRevoked. Для EOS используйте с transactions (read-process-write pattern).


#Java #middle #Kafka #Consumer
👍6
Rebalancing: Range, RoundRobin, Cooperative Sticky

Rebalancing — процесс перераспределения партиций при changes в группе (join/leave, failures). Триггерится coordinator'ом: все members посылают JoinGroupRequest, coordinator выбирает leader (первый joiner), который вычисляет assignments via assignor.

Assignors (partition.assignor.class):
- Range: Дефолт до 2.4. Партиции сортируются, делятся по range (например, для 10 partitions, 3 consumers: 0-3,4-6,7-9). Skew если num_partitions не делится evenly.
- RoundRobin: Распределяет round-robin для fairness, минимизируя skew.
- Cooperative Sticky (default с 2.4): Эволюция Sticky (минимизирует перемещения партиций). Cooperative — incremental: вместо full revoke-assign, использует несколько раундов (Eager vs Cooperative protocol). В первом раунде revoke только conflicting partitions, затем assign. Снижает downtime: consumers продолжают process revoked-later.

В памяти coordinator'а: хранит previous assignments для sticky. Нюанс: custom assignor implement ConsumerPartitionAssignor; для large groups (>100) rebalance может занять секунды из-за sync.


Static membership


Static membership избегает rebalance при restarts: group.instance.id (уникальный static ID per instance). При join с тем же ID, coordinator распознает как restart, не триггеря rebalance (если assignments unchanged).

В памяти: coordinator тракает instances в GroupMetadata. Нюанс: полезно для stateful consumers (с local state); но если instance меняет host, rebalance все равно. Комбинируйте с cooperative для minimal disruption.


Pause/Resume и backpressure

Для контроля flow: consumer.pause(Collection<TopicPartition>) останавливает fetch для партиций, но poll() продолжает heartbeat. resume() возобновляет. Используйте для backpressure: если downstream slow, pause до обработки backlog.

В памяти: paused partitions в Set<TopicPartition> в Fetcher; fetch requests skip them. Нюанс: paused не влияет на rebalance; при длительном pause lag растет, рискуя eviction из группы если max.poll.interval.ms истекает.

Backpressure: мониторьте lag, dynamically pause если queue full. В Streams это built-in via task pausing.


Метрики: lag, rebalance-latency

Consumer экспортирует метрики via KafkaConsumer.metrics():
- consumer-lag: Records-lag-max — максимальный lag (LEO - committed offset) по партициям. Вычисляется via FetchRequest с metadata. Высокий lag указывает на slow processing; мониторьте per-partition.
- rebalance-latency-avg: Среднее время rebalance (от trigger до completion). Включает join, sync, assign. Высокое — из-за large groups или slow assignors.

Другие: poll-time, commit-latency. Нюанс: используйте ConsumerMetrics для JMX; в production alert на lag > threshold или frequent rebalances.


#Java #middle #Kafka #Consumer
👍5