java_zdf | Unsorted

Telegram-канал java_zdf - Java программирование

-

Java программирование Если во только начинаете изучение java, то этот канал для вас.

Subscribe to a channel

Java программирование

Когда сейчас день, и ты пытаешься понять код, который написал ночью

Читать полностью…

Java программирование

👨‍💻4 способа прокачать свою карьеру в разработке, аналитике, менеджменте и попасть в Яндекс

1️⃣Летние школы Академии Яндекса
Для тех, у кого уже есть опыт в разработке. До 27 апреля продолжается набор в Школу бэкенд-разработки (Python, Java, C++, Go). Обучение бесплатное. Иногородним Яндекс оплатит билеты и проживание на период практики в офисах компании в Москве, Алматы и Белграде. Лучшим студентам — офер в штат Яндекса.

2️⃣Открытый лекторий Академии Яндекса
Если нет времени на Школы, регистрируйтесь на бесплатный Открытый лекторий. Это часть программы Летних школ — 120 лекций по soft skills, бэкенд-, фронтенд- и мобильной разработке, аналитике и продакт-менеджменту.

3️⃣Стажировки по бэкенд-, фронтенд- и мобильной разработке, аналитике и ML
Получите опыт работы над продуктами Яндекса, которыми пользуются миллионы. Подайте заявку на оплачиваемую стажировку (от 3 до 6 месяцев). Иногородним стажёрам Яндекс оплачивает проживание и билеты.

4️⃣Intern Meetup Week и пробные собеседования
Всё про стажировки,...

Читать полностью…

Java программирование

В сегодняшнем выпуске дикого мира JavaScript...

Читать полностью…

Java программирование

Java Чистый код: Как его писать? Лучшие практики от экспертов

Разработка программного обеспечения - сложное ремесло.

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

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

В этой статье мы сосредоточимся на написании чистого кода на Java. Почему так важно писать легко читаемый код? Каковы лучшие практики разработки кода на Java? Продолжайте читать, чтобы узнать!

https://stratoflow.com/java-clean-code/

👉👆

Читать полностью…

Java программирование

😎Хотите расширить свой стек языком Clojure? Приходите ЗАВТРА, 6.04 в 20:00 мск на бесплатный вебинар «Разработка скриптов на Clojure», приуроченный к старту онлайн-курса «Clojure Developer» в OTUS.

— Clojure — это язык программирования общего назначения, на нём можно разрабатывать абсолютно все. До недавнего времени разработка скриптов на Clojure была трудной задачей в основном из-за медленного старта JVM, но появление GraalVM позволило обойти это ограничение. Скрипты, написанные на Clojure, теперь стартуют практически мгновенно, при этом, в процессе разработки доступен REPL и весь арсенал языка Clojure.

— На занятии мы познакомимся с проектом Babashka и узнаем, как именно эта библиотека помогает разрабатывать скрипты.

✅ Не упустите возможность протестировать курс! После открытого урока вы сможете приобрести курс, доступный в рассрочку.

👉Пройдите полный тест на сайте, узнайте, осилите ли вы обучение, и запишитесь на бесплатный вебинар: https://otus.pw/33in/

Читать полностью…

Java программирование

Мы создали практическую онлайн-программу «Java-разработчик», которая позволит за 10 месяцев плотной практики стать высокооплачиваемым специалистом.

Учиться на Хекслете удобно:
✔️Все лекции доступны 24/7 на платформе — занимайтесь в удобное время
✔️ Практика прямо в браузере
✔️Наставники, которые помогут в процессе обучения, и кураторы, контролирующие прогресс

Вы также сможете принять участие в открытых проектах Хекслета на GitHub. Научитесь работать с реальными приложениями и закреплять навыки, полученные на курсе, прямо в браузере.

А самое главное — вы станете участником Карьерного трека уже во время обучения.

Пройдете вебинары, которые охватывают все темы по трудоустройству: от составления резюме и рабочих профилей до психологических аспектов собеседования и адаптации на рабочем месте. Получите рекомендации по своему первому резюме от HR-специалистов и более опытных разработчиков.

Мы заинтересованы, чтобы вы нашли первую работу. Получите полную консультацию по профессии и карьере в IT!

Читать полностью…

Java программирование

JavaFX Game: Пишем Battleship (Морской бой)

Source Code: https://github.com/AlmasB/Battleship/tree/master/src/com/almasb/battleship

👉👆

Читать полностью…

Java программирование

Забавный чехол для подушки, который я нашел на Aliexpress

Читать полностью…

Java программирование

51 Java -Spring Boot- Лучшие практики для разработчиков приложений

1.Использовать внешний сервер конфигурации
2. Используйте правильные зависимости
3. Сохраняйте модульность приложения
4. Используйте кэширование с умом
5. Контролируйте и протоколируйте свое приложение
6. Используйте последовательный стиль кода
7. Пишите модульные и интеграционные тесты
8. Используйте балансировщик нагрузки
9. Используйте последовательный формат протоколирования
10. Используйте инструмент мониторинга
11. Используйте инструмент сборки
12. Используйте инструмент версионирования кода
13. Использовать IDE
14. Использовать форматтер кода
15. Используйте линкер кода
16. Используйте клиентскую библиотеку HTTP
17. Использовать библиотеку JSON
18. Использовать пул соединений с базой данных
19. Использовать библиотеку безопасности
20. Использовать библиотеку тестирования
21. Использовать фреймворк для инъекции зависимостей
22. Используйте клиентскую библиотеку REST
23. Используйте брокер сообщений
24. Используйте профилировщик
25. Используйте инструмент обзора кода
26. Используйте инструмент статического анализа
27. Используйте инструмент покрытия кода
28. Используйте инструмент непрерывной интеграции
29. Используйте инструмент развертывания
30. Используйте инструмент управления конфигурацией
31. Использовать инструмент контейнеризации
32. Использовать облачную платформу
33. Использовать инструмент миграции баз данных
34. Использовать веб-сервер
35. Использовать инструмент CI/CD
36. Использовать обратный прокси-сервер HTTP
37. Используйте профилировщик JVM
38. Используйте профилировщик базы данных
39. Используйте инструмент нагрузочного тестирования
40. Используйте инструмент непрерывной доставки
41. Используйте API-шлюз
42. Используйте очередь сообщений
43. Используйте сетку сервисов
44. Используйте инструмент управления конфигурацией
45. Используйте конвейер развертывания
46. Использование Swagger для документации Api
47. Использование актуатора
48. Использование AOP
49. Использование рулевых диаграмм
50. Использование распределенной трассировки
51. Использование Lombok

https://connect2grp.medium.com/51-java-spring-boot-best-practices-for-application-developers-cafff2766896

👉👆

Читать полностью…

Java программирование

JAVA SPRING TRANSACTIONAL: ОСНОВЫ ТРАНЗАКЦИЙ ЗА 7 МИНУТ

00:00 - Определение транзакции, схематичный пример
00:46 - Свойство транзакции
00:59 - Знакомство с кодовой базой
02:05 - Пример, где нужна аннотация Transactional
03:10 - Вызов в пределах одного класса
04:04 - Обработка не всех исключений
04:47 - Область видимости метода
05:10 - Транзакция занимает соединение с БД
06:25 - Повторяем

Код примера: https://github.com/dispikerton/transactional

источник

👉👆

Читать полностью…

Java программирование

Академия Яндекса продолжает набор в Летние школы для джунов и других спецов с опытом работы. Они пройдут в 3 странах — Россия, Сербия и Казахстан.

— Школа фронтенда;
— Школа мобильной разработки (iOS, Android, Flutter);
— Школа бэкенд-разработки (Python, Java, C++, Go)
— Школа менеджеров (управление проектами и продуктами, маркетинг, продуктовая аналитика)

Сначала пройдут лекции в онлайне, а затем практика в офисах Яндекса в Москве, Белграде и Алматы. Участники будут работать над реальными проектами в фулстек-группах с опытным экспертом-наставником. Лучшие студенты смогут получить оффер в штат или приглашение на стажировку – по внутренней статистике Яндекса, 50% выпускников с каждого потока становятся стажерами или сотрудниками.

Если вы из другого города, но успешно закончите онлайн-этап, Яндекс оплатит билеты и проживание на период практики.

Чтобы попасть в интересующую вас Школу, нужно отправить заявку и пройти конкурсный отбор на основе тестового задания, опубликованного на странице Школ.

Читать полностью…

Java программирование

Не самые очевидные советы по написанию DTO на Java

Чтобы воспользоваться данными из внешней службы, мы обычно преобразуем полезную нагрузку JSON в объект передачи данных (Data Transfer Object, DTO). Код, обрабатывающий DTO, быстро усложняется, но с этим могут помочь несколько советов. Вполне возможно писать DTO, с которыми легче взаимодействовать и которые облегчают написание и чтение кода. Если объединить их вместе  —  можно упростить себе работу.

https://medium.com/javarevisited/not-so-obvious-tips-to-write-better-dtos-in-java-c6116895b180

👉👆

Читать полностью…

Java программирование

Инкапсуляции в Java

Инкапсуляция - это фундаментальная концепция объектно-ориентированного программирования (ООП), которая позволяет разработчикам создавать классы, скрывающие свои внутренние детали и защищающие их состояние и поведение от доступа или изменения извне класса.

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

Прежде чем прочитать эту стаью, вы можете прочитать наше руководство "Как работать с классами и объектами в Java", если у вас нет твердого понимания концепций объектно-ориентированного программирования или вам необходимо освежить знания.

https://www.developer.com/java/java-encapsulation/

👉👆

Читать полностью…

Java программирование

Прокачай свои знания в архитектуре современных распределенных систем

Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!

✅Разберешься в event-driven системах
✅Обретешь уверенность на system design интервью в российских и зарубежных компаниях
✅Поймешь как устроен подход event sourcing, паттерн CQRS
✅Твердо поймешь основы Domain-driven design, как его применять
✅Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию

Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.

Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.

❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!

Читать полностью…

Java программирование

Академия Яндекса продолжает набор в Летние школы сразу в трех странах — в РФ, Сербии и Казахстане. Предусмотрено обучение для специалистов с опытом работы по следующим направлениям:

— фронтенд
— бэкенд-разработка (Python, Java, C++, Go)
— мобильная разработка (iOS, Android, Flutter)
— школа менеджеров (управление проектами и продуктами, продуктовая аналитика)

Программа начнется с теории и небольших заданий в онлайне, а затем студенты школ будут практиковаться на реальных проектах в фулстэк-группах с опытными наставниками в офисах Яндекса в Москве, Белграде и Алматы. Всем иногородним студентам, успешно прошедшим отбор и онлайн-этап, Яндекс оплатит билеты и проживание на период оффлайн-обучения.

Для участия необходимо отправить заявку и выполнить тестовое задание, которое размещено на страницах Школ. Дедлайны вступительных испытаний: до 13 апреля (Школа для менеджеров), до 27 апреля (Школы для разработчиков). В общем, go rockstars 🦾

Читать полностью…

Java программирование

Какими свойствами обладает порождаемое equals() отношение эквивалентности?

☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.

Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.

#вопросы_с_собеседований

Читать полностью…

Java программирование

Приведите примеры структурных шаблонов проектирования.

Адаптер (Adapter) — объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.

👉👆

Читать полностью…

Java программирование

Сравните Iterator и ListIterator.

☕️ ListIterator расширяет интерфейс Iterator;
☕️ ListIterator может быть использован только для перебора элементов коллекции List;
☕️ Iterator позволяет перебирать элементы только в одном направлении при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();
☕️ ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().
☕️ При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.

#вопросы_с_собеседований

Читать полностью…

Java программирование

😎Хотите расширить свой стек языком Clojure? Приходите ЗАВТРА, 6.04 в 20:00 мск на бесплатный вебинар «Разработка скриптов на Clojure», приуроченный к старту онлайн-курса «Clojure Developer» в OTUS.

— Clojure — это язык программирования общего назначения, на нём можно разрабатывать абсолютно все. До недавнего времени разработка скриптов на Clojure была трудной задачей в основном из-за медленного старта JVM, но появление GraalVM позволило обойти это ограничение. Скрипты, написанные на Clojure, теперь стартуют практически мгновенно, при этом, в процессе разработки доступен REPL и весь арсенал языка Clojure.

— На занятии мы познакомимся с проектом Babashka и узнаем, как именно эта библиотека помогает разрабатывать скрипты.

✅ Не упустите возможность протестировать курс! После открытого урока вы сможете приобрести курс, доступный в рассрочку.

👉Пройдите полный тест на сайте, узнайте, осилите ли вы обучение, и запишитесь на бесплатный вебинар: https://otus.pw/hMtmJ/

Читать полностью…

Java программирование

Следующий станция localhost

Читать полностью…

Java программирование

⚡️ Один из важных шагов в проверке мобильного приложения — доступность для большого числа людей.

Как тестироващику автоматизировать проверку доступности (Accessibility)?

📢📢 Узнаем 5 апреля в 20:00 на вебинаре, приуроченном к онлайн-курсу «Kotlin QA Engineer» OTUS.

Какие темы мы затронем на уроке?
- Cтандарты и методы проверки соответствия требованиям Accessibility
- Разметка семантической информации в мобильных приложениях Android XML, Jetpack Compose, KMM и Flutter
- Разработка тестов с использованием Accessibility Test Framework для Android и Google Scanner for A11y (KMM)
- Создание валидаторов для сложных визуальных проверок

В результате мы научимся:
— Проверять готовность мобильного приложения для использования людьми с ограничениями здоровья
— Автоматически проверять соответствие требованиям визуальной контрастности, адаптации верстки под увеличенный шрифт, наличие семантической разметки для вспомогательных инструментов для приложений Android (XML и Compose) и iOS (Flutter и KMM).
— Использо...

Читать полностью…

Java программирование

Побитовые операции

~ : Побитовый унарный оператор NOT;
& : Побитовый AND;
&= : Побитовый AND с присваиванием;
| : Побитовый OR;
|= : Побитовый OR с присваиванием;
^: Побитовый исключающее XOR;
^= : Побитовый исключающее XOR с присваиванием;
>> : Сдвиг вправо (деление на 2 в степени сдвига);
>>= : Сдвиг вправо с присваиванием;
>>> : Сдвиг вправо без учёта знака;
>>>= : Сдвиг вправо без учёта знака с присваиванием;
<< : Сдвиг влево (умножение на 2 в степени сдвига);
<<= : Сдвиг влево с присваиванием.

👉👆

Читать полностью…

Java программирование

Вся технологическая индустрия прямо сейчас

Читать полностью…

Java программирование

😎Хотите расширить свой стек языком Clojure? Приходите на бесплатный вебинар «Разработка скриптов на Clojure», приуроченный к старту онлайн-курса «Clojure Developer» в OTUS.

— Clojure — это язык программирования общего назначения, на нём можно разрабатывать абсолютно все. До недавнего времени разработка скриптов на Clojure была трудной задачей в основном из-за медленного старта JVM, но появление GraalVM позволило обойти это ограничение. Скрипты, написанные на Clojure, теперь стартуют практически мгновенно, при этом, в процессе разработки доступен REPL и весь арсенал языка Clojure.

— На занятии мы познакомимся с проектом Babashka и узнаем, как именно эта библиотека помогает разрабатывать скрипты.

✅ Не упустите возможность протестировать курс! После открытого урока вы сможете приобрести курс, доступный в рассрочку.

👉Пройдите полный тест на сайте, узнайте, осилите ли вы обучение: https://otus.pw/TutR/

Читать полностью…

Java программирование

Оптимизация запросов

В этом посте хочу рассказать основы оптимизации запросов в БД. Буду говорить на примере Postgre, но в других БД процесс похож.

Шаг 0. Вспоминаем основы

При выполнении запроса участвуют два процесса:

▪️ Планировщик — составляет план выполнения запроса. Какие таблицы обойти, что проверить и в какой последовательности
▪️ Исполнитель — извлекает данные по заданному плану

Разработчик может создать дополнительные структуры данных — индексы. Индексы помогают быстрее выполнять запросы, но занимают много места. Если данные в таблице занимают 1 ГБ, то индекс с id займёт 250 МБ.

Шаг 1. Ищем, что оптимизировать

Смотрим таблицу pg_stat_statements — там собирается статистика по запросам. Чтобы получить достоверные данные, берём статистику с продакшн базы.

Ищем запросы, которые выполняются часто или долго.

Шаг 2. Работаем с конкретным запросом

Для экспериментов берём тестовую базу с большим количеством данных. Минимум миллион записей, иначе эффект оптимизаций не будет заметен.

Прогоняем запрос через EXPLAIN ANALYZE:

EXPLAIN ANALYZE SELECT * FROM users where name = ’K’;

EXPLAIN пишет только план выполнения запроса. EXPLAIN ANALYZE выполняет запрос и показывает

▪️ planning time — время планирования запроса
▪️ execution time — время выполнения запроса. Работаем с этим значением

Можно поиграть с условиями, порядком соединения таблиц и разными функциями. Обратите внимание на способ обхода таблицы:

Index Scan using name_index on — при выполнении запроса используется индекс, и это отлично

Seq Scan on означает, что происходит долгий последовательный обход таблицы. Причиной может быть
🔸 поиск по условию (where name = …)
🔸 проверка уникальности поля
🔸 проверка внешнего ключа (foreign key)

Решение здесь простое — добавить индекс по проблемному полю. Базовый вариант выглядит так:

CREATE INDEX index_name ON users(name);

Дальше всё просто:

▫️ Запустить EXPLAIN ANALYZE
▫️ Увидеть в плане выполнения новый индекс
▫️ Порадоваться снижению execution time

Для оптимизаций популярных и тяжёлых запросов добавление индекса оправдано. Разумеется, не нужно добавлять индексы для всех запросов и всех условий. Индексы занимают много места и замедляют запись в базу.

В оптимизации запросов огромное количество нюансов, но большинство проблем решается кэшем и добавлением индекса. Более сложные случаи лучше обсуждать с коллегами DBA😌

Читать полностью…

Java программирование

Intern Meetup Week в Яндексе 🎉

С 17 по 20 апреля в Яндексе пройдёт неделя митапов для начинающих разработчиков. Будет доступен офлайн и онлайн формат.

17 апреля состоится митап для направления Backend: C++, Go, Java
Регистрация по ссылке: https://clck.ru/33qW3U

В программе лекции экспертов о технологиях, общение с руководителями команд и рекрутерами, нетворкинг и подарки.

При отборе на митапы у вас есть шанс получить приглашение на пробное собеседование на стажировку в Яндекс 🔥

📆Когда: 17 апреля 17:00 - 21:30, сбор гостей с 16:30
🌐Где: офис Яндекса, ул. Льва Толстого, 16, м.Парк Культуры и трансляция онлайн

Все подробности и регистрация по ссылке: https://clck.ru/33qW3U

А чтобы быть в курсе всех новостей Young&&Yandex, подписывайтесь на чат-бот.

Читать полностью…

Java программирование

Бесплатные Летние школы Академии Яндекса в России, Сербии и Казахстане — summer-dev event с возможностью получить оплачиваемую стажировку или даже оффер в штат компании 💻

Специалисты с опытом разработки могут попробовать себя в следующих направлениях:

🔸разработка интерфейсов;

🔸мобильная разработка (iOS, Android, Flutter);

🔸бэкенд-разработка (Python, Java, C++, Go);

🔸школа менеджеров.

Сначала онлайн-этап с лекциями, а потом — практика в офисах Яндекса в Москве, Белграде или Алматы. При успешном прохождении онлайн-этапа оплату билетов и проживания компания берет на себя.

Чтобы принять участие в программе, нужно подать заявку на сайте Академии и выполнить вступительное задание — до 13 апреля для Школы менеджеров, до 27 апреля для Школы разработчиков.

Всем удачи)

Читать полностью…

Java программирование

А теперь давайте начнем выходные

Читать полностью…

Java программирование

Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?

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

Для метода цепочек коэффициент заполнения может быть больше 1 и с увеличением числа элементов производительность убывает линейно. Такие таблицы удобно использовать, если заранее неизвестно количество хранимых элементов, либо их может быть достаточно много, что приводит к большим значениям коэффициента заполнения.

Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.

Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.

Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации

👉👆

Читать полностью…

Java программирование

Я решаю, как назвать переменные в циклах for

Читать полностью…
Subscribe to a channel