Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.65K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Как хранятся соотношения one-to-one, one-to-many и many-to-many в виде таблиц?

Соотношения one-to-one, one-to-many и many-to-many в таблицах баз данных хранятся следующим образом:

Соотношение one-to-one — в одном primary key одной таблицы хранятся значения, связанные с другой одиночной таблицей во внешнем ключе (foreign key).

Соотношение one-to-many — в таблице, которая «one», в качестве primary key используется идентификатор объекта, который распространяется на все связанные объекты в таблице, которая «many». Так, одно значение может ссылаться на несколько значений в другой таблице.

Соотношение many-to-many — необходимо создать дополнительную таблицу, которая связывает связанные таблицы. Так, в этой дополнительной таблице устанавливается соответствие между primary key одной таблицы и primary key другой таблицы.
👨‍💻🧩 Психология и ИТ: 17 личностных качеств, необходимых для успешной карьеры

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

Читать статью

#новость
⌨️ Управление доступом к членам класса

Модификаторы уровня доступа определяют, могут ли другие классы использовать определенное поле или вызывать определенный метод.

Существует 4 уровня доступа:

private
Указывает, что доступ возможен только в его собственном классе.

package-private (нет явного модификатора)
Указывает, что доступ только внутри своего собственного пакета.

protected
Указывает, что доступ возможен только внутри его собственного пакета (как в случае с package-private) и, кроме того, для подкласса его класса в другом пакете.

public
Указывает, что доступ возможен отовсюду.
Please open Telegram to view this post
VIEW IN TELEGRAM
В чём разница между «конкуренцией» и «параллелизмом»?

Конкуренция — это способ одновременного решения множества задач.

Признаки:
• Наличие нескольких потоков управления (например, Thread в Java, корутина в Kotlin), если поток управления один, то конкурентного выполнения быть не может
• Недетерминированный результат выполнения. Результат зависит от случайных событий, реализации и того, как была проведена синхронизация. Даже если каждый поток полностью детерминированный, итоговый результат будет недетерминированным

Параллелизм — это способ выполнения разных частей одной задачи.

Признаки:
• Необязательно имеет несколько потоков управления
• Может приводить к детерминированному результату, так, например, результат умножения каждого элемента массива на число, не изменится, если умножать его по частям параллельно.
Что такое мёртвая нить?

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

Чтобы избежать мёртвой нити, следует стремиться к тому, чтобы нити блокировали ресурсы в одном и том же порядке. Если это невозможно, можно использовать техники, такие как использование метода tryLock() из java.util.concurrent.locks.Lock, которые позволяют более гибко управлять блокировками и избегать мёртвой нити.

#для_начинающих
🤔 Очередной #дайджет для джавистов

🔺 Kotlin Explorer — инструмент для быстрого и эффективного реверс-инжиниринга Kotlin кода в Java байткод, Android DEX и OAT

🔺 Spring Boot и Apache Camel — как интегрировать опенсорсный фреймворк и Spring Boot

🔺 VisualVM — анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения

🔺 Модульное тестирование вашей архитектуры Java — начните внедрять свою архитектуру в течение 30 минут, используя уже имеющуюся установку

🔺 Spring Boot 3.2.2 уже доступен — пофиксили 53 бага, улучшили документацию и обновили зависимости
🧑‍🍳🧑‍🍳 Apache Maven — введение в автоматизированную сборку проектов

В статье разбирается один из сборщиков проектов Apache Maven. Все начнется с установки, настройки и сборки первого проекта.

Apache Maven — это фреймворк по автоматизации и сборки Java-проектов. Обычно просто называют Maven.

Подробную информацию всегда можно тут.

Продолжить чтение

#гайд
Х5 Backend Meetup

1 февраля в 19:00 состоится третий Backend Meetup от X5 Tech. На этот раз снова собирается бэкенд-сообщество, чтобы обсудить 4 доклада от специалистов по Python и Java. Ждут вcех в пространстве «Весна» и в онлайн-трансляции.

Программа:

DDD в D. Безбородые решения в бородатом стеке (DDD в Django)
Каждый раз, начиная новый проект, мы хотим сделать всё хорошо. Но через некоторое время проект превращается в легаси, которое тяжело изменять.

ElasticSearch как база данных нулевой нормальности
Спикер поделится практическим опытом использования Open Source-системы ElasticSearch в качестве альтернативы привычным реляционным базам данных. О разработке схемы данных, плюсах и минусах, границах применимости.

Прагматичный взгляд на разработку. Почему кодинг — не главное
Автор расскажет, почему написание кода — всего лишь часть работы разработчика, как прагматичный подход может спасти от замены на СhatGPT и на чём нужно сосредоточиться, чтобы приносить максимальную пользу команде.

Чистая архитектура в монолите
Спикер расскажет о предпосылках использования чистой архитектуры и проблемах, с которыми он столкнулся при работе с толстым слоем представления и раздутыми моделями в монолите с фреймворком на паттерне Active Record.
Как получить доступ к переопределенным методам родительского класса?

Ответ: С помощью ключевого слова super мы можем обратиться к любому члену родительского класса — методу или полю, если они не определены с модификатором private.
Метод dropWhile был введен в интерфейсе Stream в JDK 9. Этот метод позволяет пропускать элементы в начале потока данных, пока они удовлетворяют определенному условию, и возвращает новый поток, начиная с первого элемента, который не соответствует условию.

В примере метод dropWhile используется для пропуска элементов в потоке до тех пор, пока они меньше 0. После первого элемента, не соответствующего условию, оставшиеся элементы добавляются в новый поток.
Mastering MEAN Stack: Build full stack applications using MongoDB, Express.js, Angular, and Node.js (2023)
Автор: Pinakin Ashok Chaubal
Количество страниц: 260

#js

Книга представляет собой исчерпывающее руководство по разработке с использованием стека MEAN (MongoDB, Express.js, Angular и Node.js). Книга знакомит с основами полностековой разработки и преимуществами стека MEAN. В ней рассказывается об установке и настройке компонентов MEAN, а также о том, как их подключать для создания мощных полностековых приложений. В книге также рассматриваются механизмы безопасности, такие как аутентификация и авторизация, обеспечивающие безопасность приложений. Поможет вам приобрести навыки разработки фронт-энда с помощью Angular и интеграции бэкЭнда с помощью Node.js. В книге также рассматриваются вопросы обновления данных в реальном времени с NATS Streaming, методы автоматизированного тестирования и интеграция дополнительных сервисов.

📌 Всё самое полезное читайте в нашем канале Frontend 📌

Скачать книгу
👒 Весенние конференции JRG

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

Flow (системный и бизнес-анализ), 12 марта, онлайн
SafeCode (безопасность приложений), 13-14 марта, онлайн
TechTrain (профессиональный рост в IT), 6 апреля
Heisenbug (тестирование), 16 апреля в онлайне и 22-23 апреля в Москве
JPoint (Java-разработка), 17 апреля в онлайне и 24-25 апреля в Москве

#мероприятие
🤔 Очередной #дайджет для джавистов

🔆 Spring Data JPA и Hibernate — решаем проблему динамически изменяемого запроса к базам данных

🔆 Эмулятор QUIK — как наладить тестирование вендорного продукта

🔆 Нагруженные сервисы и нестандартные практики разработки — о нагруженных сервисах, нестандартных практиках в процессах и моделях мотивации людей

🔆 Компоновка аннотаций в Spring — как поместить несколько аннотаций в одну и использовать только ее и как передавать атрибуты в аннотации которые вы объединили

🔆 Разбор задач по программированию и алгоритмам для попадания в Google — разбор 3 типов задач для прохождения собеседования в ведущие технологические компании мира
Какое ключевое слово используется в Java для возвращения величины внутри метода?
Anonymous Quiz
3%
void
1%
break
91%
return
5%
get
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Anonymous Inner Class

Anonymous Inner Class (Анонимный Внутренний Класс) — это специальный тип внутреннего класса, который определяется без имени и создается «на лету» внутри блока кода или выражения. Он является удобным способом создания классов, когда класс нужен только для реализации какого-то интерфейса или абстрактного класса, и нет необходимости создавать отдельный именованный класс.

Анонимные внутренние классы обычно используются для создания объектов, которые реализуют интерфейсы или наследуются от абстрактных классов. Они часто используются в событийном программировании и обработке событий в пользовательском интерфейсе, где нужно определить обратный вызов (callback) или обработчик (handler) на месте.
java.time.LocalDate

Это класс из пакета java.time, введенного в Java 8, который предоставляет удобные средства для работы с датами в формате «год-месяц-день». Этот класс представляет собой дату без времени и без учета часовых поясов. Он используется для выполнения операций, связанных только с датами, без учета времени суток.
⚙️⚙️ Framework для автоматизации тестирования на Java

В качестве языка программирования была выбрана Java, сборщик проектов — Maven, среда тестирования — JUnit5.

Для работы с БД выбран Hibernate. Он широко известен как в кругу автоматизаторов, так и в кругу разработчиков. Hibernate — это фреймворк для Java, предназначен для работы с базой данных. Объекты в нем описываются на языке программирования с применением принципов ООП. Запросы в базу можно писать как в стандартном виде SQL, так и с помощью HQL. HQL — это Hibernate Query Language — объектно‑ориентированный язык запросов, который очень похож на SQL, но, в отличие от него, работает с объектами и полями, в то время как SQL работает с таблицами и столбцами в базе.

В статье будет пример работы с базой.

#туториал