Telegram Web Link
MyBatis или Hibernate?

Рано или поздно Java-разработчик задаёт себе вопрос: Hibernate или MyBatis? От ответа зависит архитектура проекта, а ответ, в свою очередь, зависит от задачи. Давайте разберёмся, что они такое и когда какой лучше.

Итак, Hibernate это ORM framework. Его полное название Hibernate ORM. Он полностью поддерживает JPA и, фактически, является имплементацией JPA. Его основная задача – понять, как размечены ваши классы аннотациями ORM, построить по ним схему и собирать объекты по строкам из базы. Hibernate сам пишет за вас запросы к базе. Для вас работа с базой выглядит как работа с объектами. Сохранить объект, загрузить объект, обновить объект. Как, собственно, и должно быть. Это же Object Relational Mapping!

MyBatis это Java persistence framework. Не ORM. MyBatis связывает методы интерфейса маппера с SQL-запросом. MyBatis не умеет создавать схему. И, честно говоря, вообще ничего о схеме не знает. Он превращает вызов метода в запрос к базе, и как результат вызова метода возвращает результат запроса.

➡️ Читать дальше

@javatg
👍71🔥1
Thread’ом Java не испортишь: Callable, Future и друзья

Поток — это Thread, в нём что-то запускается run, поэтому воспользуемся tutorialspoint java online compiler‘ом и выполним следующий код:

public class HelloWorld {

public static void main(String []args){
Runnable task = () -> {
System.out.println("Hello World");
};
new Thread(task).start();
}
}


Единтсвенный ли это вариант запуска задачи в потоке?


➡️ Читать дальше

@javatg
👍91🔥1🤔1
➡️ Управление памятью Java


Это глубокое погружение в управление памятью Java позволит расширить ваши знания о том, как работает куча, ссылочные типы и сборка мусора.

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

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

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

➡️ Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111🔥1
Что такое busy spin?

busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо, для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах, существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.

➡️ Подробнее

@javatg
👍81🔥1
Оптимизация программ на Java

Производительность программ на Java в AIX моно улучшить разными способами.

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

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

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

- Объединяйте в группы внутренние операции для уменьшения числа вызовов интерфейса JNI Java.

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

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

- Используйте тип int вместо long всегда, когда это возможно, потому что 32-разрядные операции выполняются быстрее, чем 64-разрядные.

- Объявляйте методы с ключевым словом final всегда, когда это возможно. В JVM такие методы обрабатываются быстрее.

- Для снижения числа операций по инициализации переменных создавайте константы с ключевым словом static final.

- Постарайтесь сократить число ссылок "cast" и "instanceof", поскольку соответствующие ссылки в Java преобразуются во время выполнения.

- Старайтесь использовать массивы вместо векторов.

- Добавляйте и удаляйте элементы из конца вектора.

-Избегайте операций выделения памяти под объекты внутри циклов.

- Пользуйтесь буферизованным вводом-выводом и выберите оптимальный размер буфера.

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

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

- Применяйте максимальное возможное время жизни нити и минимизируйте количество операций по созданию и уничтожению нитей.

- Минимизируйте конкуренцию за общие ресурсы.

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

- Старайтесь как можно реже вызывать удаленные методы.

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

- Не создавайте объекты, которые будут применяться только для обращения к методам.

- По возможности не пользуйтесь синхронизированными методами внутри циклов.

- Храните строковые и символьные данные в базе данных в формате Unicode.

- Выберите оптимальный порядок библиотек в переменной CLASSPATH.

➡️ Еще советы

@javatg
👍5👎2🔥21🤔1
Spring Boot: Up and Running

Автор:
Mark Heckler
Год издания: 2021

Рецензия на книгу:

Spring Boot - это самый популярный фреймворк Java. В этом практическом пособии показано, как использовать Spring Boot для написания приложений.

Плюсы: хороший авторский стиль, книга легко читается.

Минусы: не замечено.

#java #kotlin #spring #english

📒 Книга

@javatg
👍11🔥21
🔥 Полезнейшая Подборка каналов

🖥 Java
@javatg - Java для програмистов
@javachats Java чат
@java_library - книги Java
@android_its Android разработка
@java_quizes - тесты Java
@Java_workit - работа Java
@progersit - шпаргалки ит

🖥 Python

@pro_python_code – погружение в python
@python_job_interview – подготовка к Python собеседованию
@python_testit тесты на python
@pythonlbooks - книги Python
@Django_pythonl django
@python_djangojobs - работа Python

🖥 Machine learning
@ai_machinelearning_big_data – все о машинном обучении
@data_analysis_ml – все о анализе данных.
@machinelearning_ru – машинное обучении на русском от новичка до профессионала.
@machinelearning_interview – подготовка к собеседования Data Science
@datascienceiot – бесплатные книги Machine learning
@ArtificialIntelligencedl – канал о искусственном интеллекте
@neural – все о нейронных сетях
@machinee_learning – чат о машинном обучении
@datascienceml_jobs - работа ds, ml

🖥 Javascript / front
@javascriptv - javascript изучение
@about_javascript - javascript продвинутый
@JavaScript_testit -тесты JS
@htmlcssjavas - web
@hashdev - web разработка

👣 Golang
@golang_interview - вопросы и ответы с собеседований по Go. Для всех уровней разработчиков.
@Golang_google - go для разработчиков
@golangtests - тесты и задачи GO
@golangl - чат Golang
@GolangJobsit - вакансии и работа GO
@golang_jobsgo - чат вакансий
@golang_books - книги Golang
@golang_speak - обсуждение задач Go

🖥 Linux
@linux_kal - чат kali linux
@linuxkalii - linux kali
@linux_read - книги linux


👷‍♂️ IT работа

@hr_itwork - ит-ваканнсии

🖥 SQL
@sqlhub - базы данных
@chat_sql - базы данных чат

🤡It memes
@memes_prog - ит-мемы

⚙️ Rust
@rust_code - язык программирования rust
@rust_chats - чат rust

#️⃣ c# c++
@csharp_ci - c# c++кодинг
@csharp_cplus чат

📓 Книги

@programming_books_it
@datascienceiot
@pythonlbooks
@golang_books
@frontendbooksit
@progersit
@linux_read
@java_library
@frontendbooksit

📢 English for coders

@english_forprogrammers - Английский для программистов

🖥 Github
@github_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2
🖥 Битва титанов: Java vs Kotlin

Java, по мнению Amazon, один из оптимальных по энергопотреблению и времени выполнения языков программирования. Он зарекомендовал себя для серверной разработки, на тех платформах, где может работать виртуальная машина. Не зря же его называют WORA (Write Once and Run Anywhere — «Напиши один раз, запускай где угодно»). Но кроме того, его применяют для разработки игр, облачных вычислений, больших данных, искусственного интеллекта и интернета вещей.

Кто же ему наступает на пятки и пробует выбить из основных сегментов? Изначальный клон Java под названием Kotlin. Авторы хотели улучшить типобезопасность по сравнению с прародителем и сделать язык более простым, чем Scala.

В мае 2017 года Google объявил, что язык программирования Kotlin теперь является предпочтительным языком для разработчиков приложений для Android. Это стало признанием отрасли.

Google оценивает, что 70% из 1 000 лучших приложений в Play Store написаны на Kotlin. Также на нём сделаны Maps, Play, Drive. Однако этот язык программирования используют и для бэкенд-разработки, например, он доступен в Spring Framework.

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

➡️ Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8👎51🔥1
🖥 Консольное приложение с обработкой событий на Java

Автономные (консольные) приложения Java и аплеты могут создавать окна на базе класса Frame. Если эти окна используются для интерактивного взаимодействия с пользователем, вы должны организовать в соответствующих классах обработку событий, переопределив методы handleEvent, mouseDown, mouseMove и аналогичные.

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

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

↪️ Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥21
🖥 Design patterns implemented in Java

Самый популярный Java-репозиторий на GitHub – коллекция паттернов проектирования всех видов и мастей.

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

Каждый паттерн в репозитории, будь он моно или нет, содержит подробное описание и примеры реализации на Java.

↪️ Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🔥1😢1
Одинарные и двойные кавычки

Что ты ожидаешь в результате выполнения кода с картинки?

Казалось бы, строка должна возвращать «HaHa», но на самом деле это будет «Ha169».

Двойные кавычки обрабатывают символы как строки, но одинарные кавычки ведут себя иначе. Они преобразуют символьные операнды ('H' и 'a') в целые значения посредством расширения примитивных типов — получается 169.

@javatg
👍221👎1🥰1
java8-tutorial

Подробный гайд по Java 8, шаг за шагом описывающий все возможности и особенности Java. Короткие примеры грамотно иллюстрируют основные концепции: минимум текста, максимум наглядности. Данный репозиторий может быть как справочником, так и учебником.

https://github.com/winterbe/java8-tutorial

@javatg
👍10🔥32
🖥 Основные аннотации для работы со Spring.

☕️ @Controller — для классов-контроллеров в проекте Spring MVC.
☕️ @RequestMapping — для настройки сопоставления URI в методах-обработчиках контроллера. Это очень важная аннотация.
☕️ @ResponseBody — для отправки Object в качестве ответа, обычно для отправки данных XML или JSON в качестве ответа.
☕️ @PathVariable — для отображения динамических значений из URI в аргументы метода обработчика.
☕️ @Autowired — для автоматического связывания зависимостей в бинах Spring.
☕️ @Qualifier — с аннотацией @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа bean-компонента.
☕️ @Service — для классов сервисного слоя.
☕️ @Scope — для настройки области действия Spring bean.
☕️ @Configuration, @ComponentScan и @Bean — для конфигураций на основе Java.
Аннотации AspectJ для настройки аспектов и советов, @Aspect, @Before, @After, @Around, @Pointcut и т. д.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍204🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Sidekick

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

🔩 Github
➡️ Docs

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
​​​XPrivacyLua – менеджер по конфиденциальности приложений для Android

Отзыв разрешений у Android приложений часто приводит к ограничениям в функционале или сбоям в работе приложений. XPrivacyLua передаёт приложениям поддельные данные вместо реальных, что позволяет сохранить функционал и конфиденциальность одновременно

#Java #Privacy #Android #Useful

@github_code
👍41🔥1
🖥 Как программист настроил автоматическое развертывание бекенда с базой данных

Сегодня решил рассказать о своем опыте, как при помощи docker-compose и bash скрипта настроил развертывание бекенд приложения с базой данных.

Какая была идея? Хотелось при помощи одной команды в терминале разворачивать Java приложение с базой данных так, чтобы можно было передать все необходимые переменные в момент запуска и нигде не хранить их.
Так, чтобы можно было развернуть новую версию приложения даже с телефона, просто заранее заготовив необходимую команду.

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

➡️ Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111🔥1
Такое не интересует

#ithumor

@javatg
🔥27😁15👍54👎2
🖥 @github_code - лучшие проекты с Github теперь доступны в одном канале.

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

Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
🔩 AST explorer — удобный инструмент для генерации абстрактного синтаксического дерева кода

Стоит также отметить, что проводник предоставляет множество синтаксических анализаторов кода: начиная от esformatter и esprima для JavaScript, заканчивая java-parser для, собственно, Java.

➡️ Сайт проекта
🖥 Github

#web #java

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101🔥1
2025/07/08 18:48:59
Back to Top
HTML Embed Code: