Посты
Полезные комбинации в IntelliJ IDEA

Java_Deep_21.12_site-5020-5bf2f0.png

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

Как написать свой стенд для измерения памяти в Java?

Java_Deep_29.11_site-5020-2215ac.png

Как вы думаете, что общего у следующих вопросов: — Как подписаться на события GC и когда эти события приходят? — Сколько у вас в приложении сборщиков мусора по умолчанию? — Как инструментировать своё java-приложение и самому написать javaagent?

Как знание паттернов проектирования помогает в общении?

Java_Deep_6.12_site-5020-7dddf5.png

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

Java DataBase Connectivity: мощь чистого SQL

Spring_Deep_6.11_site-5020-239eb9.png

Этот пост для тех, кто устал писать запросы в JDBC template и хочет мощи, которая есть в Spring Data JPA-репозиториях, но не может/не готов использовать JPA. А также для тех, кто устал разрабатывать сущности с JPA/Hibernate и хочет более душевного и близкого «к железу» SQL. Как ни странно, но для решения этих противоречивых с первого взгляда вопросов есть один способ — Spring Data JDBC.

X-files в Java: обфускация и виды шифраторов

Java_Deep_12-5020-17c8a3.10_site.png

Вы же знаете, что jar-файл это zip-архив? То есть, его можно unzip -d target my.jar распаковать и достать все class-файлы. А каждый class-файл это bytecode, который легко-легко можно декомпилировать и получить весь ваш проект с именами всех ваших классов и их переменных и методов. И кодом методов. То есть, совсем всё можно из jar-файла получить. Если, конечно, он не обфусцирован.

JMM: ошибки многопоточного доступа к данным

Java_Deep_9-5020-55bf9f.10_site.png

Принято считать, что многопоточность (multithreading) одна из самых сложных тем в программировании. В первой заметке мы постарались ответить на вопрос, почему так много разработчиков делают ошибки при создании приложений, которые работают более чем в одном потоке. В этой заметке разберём типы ошибок многопоточного доступа к данным: race condition и memory consistency errors. Но, перед тем как обсуждать ошибки доступа, давайте сначала разберёмся, что такое многопоточный доступ к данным.

Multithreading в Java: просто о сложном

java_Deep_5-5020-bb8540.10_site.png

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