Примеры паттернов проектирования в JDK
Паттерны проектирования описывают типичные способы решения часто встречающихся проблем при проектировании программ.
Есть ли примеры использования паттернов в самой JDK?
В статье есть примеры: https://www.javacodegeeks.com/2011/03/design-patterns-in-jdk.html
Паттерны проектирования описывают типичные способы решения часто встречающихся проблем при проектировании программ.
Есть ли примеры использования паттернов в самой JDK?
В статье есть примеры: https://www.javacodegeeks.com/2011/03/design-patterns-in-jdk.html
Java Code Geeks
Design Patterns in the JDK - Java Code Geeks
Brian Du Preez, our JCG partner from Zen in the art of IT has made a very fine job of collecting the most common design patterns found in the
🔥1
Java JDBC и PostgreSQL
Интересная статья о взаимодействии JDBC-драйвера с PostgreSQL.
Из нее вы узнаете про:
1. Разницу между простым и расширенным протоколами PostgreSQL.
2. Почему расширенный протокол более эффективен и используется драйвером JDBC по умолчанию.
3. Почему важно закрывать PreparedStatement.
и еще много интересного ))
https://foojay.io/today/a-dissection-of-java-jdbc-to-postgresql-connections/
Интересная статья о взаимодействии JDBC-драйвера с PostgreSQL.
Из нее вы узнаете про:
1. Разницу между простым и расширенным протоколами PostgreSQL.
2. Почему расширенный протокол более эффективен и используется драйвером JDBC по умолчанию.
3. Почему важно закрывать PreparedStatement.
и еще много интересного ))
https://foojay.io/today/a-dissection-of-java-jdbc-to-postgresql-connections/
foojay
A Dissection of Java JDBC to PostgreSQL Connections
When using Java JDBC with PostgreSQL, know the difference between simple and extended protocols, how to recognize protocol implementations, and more.
👍3
Spring Data JPA: проекции в запросах
Проекции в Spring Data JPA очень привлекательный инструмент для реализации запросов. Правильно подобрав проекцию можно добиться хорошей производительности.
https://habr.com/ru/companies/otus/articles/722060/
Проекции в Spring Data JPA очень привлекательный инструмент для реализации запросов. Правильно подобрав проекцию можно добиться хорошей производительности.
https://habr.com/ru/companies/otus/articles/722060/
Хабр
Spring Data JPA: проекции в запросах
Вероятно, первое, что приходит вам на ум, когда вы реализуете запрос с помощью Spring Data JPA — это проекции. Это связано с тем фактом, что проекции определяют атрибуты сущности и столбцы базы...
JBrainfuck — Пишем компилятор Brainfuck под Java VM
Если вы задумывались о написании своего компилятора или того как работают компиляторы, то почитать статью однозначно стоит. Примеры построены на базе ASM для генерации байт-кода. В статье разрабатывается компилятор для языка Brainfuck, но поняв принципы можно попробовать сделать свой DSL, который будет к тому же хорошо интегрироваться с существующими наработками на JVM-ных языках.
Вообще свой DSL "с меньшей болью" можно строить и на Groovy, но...мы же "не ищем легких путей"? )) Пример в статье можно рассматривать больше как хардкордный подход к вопросу с DSL.
https://habr.com/ru/articles/229267/
Если вы задумывались о написании своего компилятора или того как работают компиляторы, то почитать статью однозначно стоит. Примеры построены на базе ASM для генерации байт-кода. В статье разрабатывается компилятор для языка Brainfuck, но поняв принципы можно попробовать сделать свой DSL, который будет к тому же хорошо интегрироваться с существующими наработками на JVM-ных языках.
Вообще свой DSL "с меньшей болью" можно строить и на Groovy, но...мы же "не ищем легких путей"? )) Пример в статье можно рассматривать больше как хардкордный подход к вопросу с DSL.
https://habr.com/ru/articles/229267/
Хабр
JBrainfuck — Пишем компилятор Brainfuck под Java VM
Меня давно интересовал вопрос написания своего компилятора под Java VM, но было недостаточно опыта, дабы сделать это. Да и как-то руки не доходили, а недавно все же решил разобраться в этой теме и...
Что таит в себе метод clear() в Java Collection API?
В статье приведено интересное исследование последствий использования метода clear() на большой коллекции ArrayList.
В стандартной реализации этот метод удаляет содержимое из внутренней структуры данных, которая является Object[]. При этом размер самого массива не уменьшается. Соответственно чем больше у вас таких кейсов тем больше импакт.
https://dzone.com/articles/clear-details-on-java-collection-clear-api
В статье приведено интересное исследование последствий использования метода clear() на большой коллекции ArrayList.
В стандартной реализации этот метод удаляет содержимое из внутренней структуры данных, которая является Object[]. При этом размер самого массива не уменьшается. Соответственно чем больше у вас таких кейсов тем больше импакт.
https://dzone.com/articles/clear-details-on-java-collection-clear-api
DZone
Clear Details on Java Collection ‘Clear()’ API
Several of us might be familiar with the clear () API in the Java collections framework. In this post, let’s discuss what the purpose of this clear() API is. What is the performance impact of using this API? What happens under the JVM when this API is invoked?
👍3🔥1
Потоковый обмен в распределённых системах и использование реактивных потоков в нереактивных приложениях: опыт «Магнита»
Интересный опыт использования реактивных потоков. Рассматриваются три решения, которые позволяют реализовать потоковый обмен данными из БД между распределёнными приложениями:
1 Реализация с использованием hibernate
2 Реализация с использованием mybatis
3 Ограничение скорости обмена с использованием механизма обратного давления («backpressure») и библиотеки Bucket4j
https://habr.com/ru/companies/magnit/articles/726090/
Интересный опыт использования реактивных потоков. Рассматриваются три решения, которые позволяют реализовать потоковый обмен данными из БД между распределёнными приложениями:
1 Реализация с использованием hibernate
2 Реализация с использованием mybatis
3 Ограничение скорости обмена с использованием механизма обратного давления («backpressure») и библиотеки Bucket4j
https://habr.com/ru/companies/magnit/articles/726090/
Хабр
Потоковый обмен в распределённых системах и использование реактивных потоков в нереактивных приложениях: опыт «Магнита»
Привет, Хабр! На связи Андрей Зяблин, Java разработчик компании «Магнит». Несколько лет назад, продляя дочери подписку на Netflix, я заинтересовался, как они поддерживают обслуживание...
❤1🔥1
Обработка исключений в Java в функциональном стиле
В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API).Однако применение функционального стиля на практике осложняется тем, что все стандартные функциональные интерфейсы из пакета
В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.
https://habr.com/ru/articles/676852/
В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API).Однако применение функционального стиля на практике осложняется тем, что все стандартные функциональные интерфейсы из пакета
java.util.function
не объявляют проверяемых исключений (являются checked exception unaware).В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле.
https://habr.com/ru/articles/676852/
Хабр
Обработка исключений в Java в функциональном стиле
Обработка исключений в Java в функциональном стиле В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле. Предпосылки В Java...
🔥2👍1
Java Records
Java Record-ы появились в Java 12 как preview feature (JEP 359), а финальный релиз был в Java 16 (JEP 395). В разных источниках обычно приводят примеры их использования для описания DTO (Data Transfer Objects), но сфера их применения гораздо шире. В статье автор приводит разные примеры. Мне понравился пример реализации стейт машины «State implementation”.
https://www.infoq.com/articles/exploring-java-records/
Java Record-ы появились в Java 12 как preview feature (JEP 359), а финальный релиз был в Java 16 (JEP 395). В разных источниках обычно приводят примеры их использования для описания DTO (Data Transfer Objects), но сфера их применения гораздо шире. В статье автор приводит разные примеры. Мне понравился пример реализации стейт машины «State implementation”.
https://www.infoq.com/articles/exploring-java-records/
InfoQ
Exploring Java Records beyond Data Transfer Objects
Records are a concise and easy-to-use syntax for creating immutable classes. By using Records, you can ensure that your APIs are bulletproof and less prone to errors. Additionally, Records can be applied with Domain-Driven Design (DDD) principles to create…
❤2👍1🔥1
Смерть от тысячи микросервисов
Статья заставляет задуматься ))
Пару фактов: Dropbox, Twitter/X, Facebook, Instagram, Shopify, Stack Overflow — эти и другие компании начинали как монолитные базы кода. Многие по сей день имеют в своей основе монолит. Shopify по-прежнему остается монолитом Rails. WhatsApp стал сверхновой благодаря монолиту Erlang и 50 инженерам. Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и вертикально масштабировать каждый сервер в максимально возможной степени. Instagram был приобретен за миллиарды — с командой из 12 человек.
https://habr.com/ru/articles/760426/
Статья заставляет задуматься ))
Пару фактов: Dropbox, Twitter/X, Facebook, Instagram, Shopify, Stack Overflow — эти и другие компании начинали как монолитные базы кода. Многие по сей день имеют в своей основе монолит. Shopify по-прежнему остается монолитом Rails. WhatsApp стал сверхновой благодаря монолиту Erlang и 50 инженерам. Что касается серверов, WhatsApp предпочитает использовать меньшее количество серверов и вертикально масштабировать каждый сервер в максимально возможной степени. Instagram был приобретен за миллиарды — с командой из 12 человек.
https://habr.com/ru/articles/760426/
Quastor
How Shopify Ensures Consistent Reads
How Shopify deals with consistency issues due to replication lag with their primary-replica database setup.
🔥3❤2
Введение в Java Process Memory Model
В статье довольно простым языком описывается структура памяти виртуальной машины Java и даются параметры командной строки, которыми можно управлять областями памяти.
https://habr.com/ru/articles/744834/
В статье довольно простым языком описывается структура памяти виртуальной машины Java и даются параметры командной строки, которыми можно управлять областями памяти.
https://habr.com/ru/articles/744834/
Хабр
Введение в Java Process Memory Model
Каждое Java приложение, после запуска, создаёт десятки, сотни, тысячи объектов в памяти компьютера на котором оно запущено. Память, при этом, ресурс не бесконечный, и поэтому необходимо использовать...
👍3😍1
Под капотом Apache Kafka: zero copy и быстрые IO-операции с диском
В чем секрет высокой производительности Kafka?
Чтобы обеспечить высокую скорость операций записи на диск и чтения, Kafka использует не классическую передачу данных, а технологию под названием «Zero-copy», когда ЦП не копирует данные из одной области памяти в другую, а работает с прямым доступом к памяти (DMA, direct memory access) и отображением в памяти (memory mapping), а также со страничным кэшем.
https://bigdataschool-ru.turbopages.org/bigdataschool.ru/s/blog/kafka-page-cashe-and-zero-copy-transfer-technology.html
В чем секрет высокой производительности Kafka?
Чтобы обеспечить высокую скорость операций записи на диск и чтения, Kafka использует не классическую передачу данных, а технологию под названием «Zero-copy», когда ЦП не копирует данные из одной области памяти в другую, а работает с прямым доступом к памяти (DMA, direct memory access) и отображением в памяти (memory mapping), а также со страничным кэшем.
https://bigdataschool-ru.turbopages.org/bigdataschool.ru/s/blog/kafka-page-cashe-and-zero-copy-transfer-technology.html
🔥2
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
https://habr.com/ru/articles/762084/
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
https://habr.com/ru/articles/762084/
🔥2🐳1
Перестаём бояться генерировать байт-код
Многие, возможно, думают, что работа с байт-кодом Java — это какая-то особенная магия. Разобраться в этом полезно для лучшего понимания как все работает изнутри.
https://habr.com/ru/articles/759990/
Многие, возможно, думают, что работа с байт-кодом Java — это какая-то особенная магия. Разобраться в этом полезно для лучшего понимания как все работает изнутри.
https://habr.com/ru/articles/759990/
Хабр
Перестаём бояться генерировать байт-код
Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия, доступная только продвинутым разработчикам с особенно крутым опытом....
🔥3
Использование оконных функций с Hibernate 5 и 6
Начиная с версии 6, вы можете использовать оконные функции в запросах JPQL (Java Persistence Query Language — платформенно-независимый объектно-ориентированный язык запросов). Более старые версии Hibernate поддерживают их только в нативных запросах.
https://habr.com/ru/companies/otus/articles/743910/
Начиная с версии 6, вы можете использовать оконные функции в запросах JPQL (Java Persistence Query Language — платформенно-независимый объектно-ориентированный язык запросов). Более старые версии Hibernate поддерживают их только в нативных запросах.
https://habr.com/ru/companies/otus/articles/743910/
Thorben Janssen
JPQL - How to Define Queries in JPA and Hibernate
JPQL allows you to define database queries based on your entity model. Learn how to use all its features to build powerful queries with JPA and Hibernate.
👍3🔥1
Прожарка java.lang.String
Иногда комментарии к статье оказываются интереснее статьи )) вот пример. Хотя подача материала интересная и провокационная: как сломать строки в Java.
https://habr.com/ru/companies/bar/articles/747528/
Иногда комментарии к статье оказываются интереснее статьи )) вот пример. Хотя подача материала интересная и провокационная: как сломать строки в Java.
https://habr.com/ru/companies/bar/articles/747528/
Хабр
Прожарка java.lang.String
Давайте абьюзить баг в java.lang.String , который позволит делать очень странные строки. Мы сделаем "Hello World", который не начинается с "Hello" и покажем, что не все пустые строки...
🤣2🥱1
Выступление на Joker 2023: Польза и вред Java-сообществ для инженеров
Эксперты из разных сфер поделятся опытом. Поговорим о том, как возникают сообщества, какие есть риски и чем сообщества полезны инженерам и компании. Обсудим роли и как начать проявляться.
https://jokerconf.com/talks/8136e7bf53844a45b3a3bde40cfd05bc/?referer=/persons/ee4fea77ee85444cba7f1f866c8b862b/
Эксперты из разных сфер поделятся опытом. Поговорим о том, как возникают сообщества, какие есть риски и чем сообщества полезны инженерам и компании. Обсудим роли и как начать проявляться.
https://jokerconf.com/talks/8136e7bf53844a45b3a3bde40cfd05bc/?referer=/persons/ee4fea77ee85444cba7f1f866c8b862b/
Joker 2023. Конференция для опытных Java‑разработчиков
Польза и вред Java-сообществ для инженеров | Доклад на Joker 2023
Поговорим о том, как возникают сообщества, какие есть риски, и чем сообщества полезны инженерам и компании. Обсудим роли и как начать проявляться.
🔥3❤1
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции
При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени.
https://habr.com/ru/articles/747658/
При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени.
https://habr.com/ru/articles/747658/
Хабр
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции
При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных....
❤1
Как на самом деле работает Java ClassLoader system?
В статье простым языком и с хорошей визуализацие описана работа ClassLoader.
https://habr.com/ru/articles/748758/
В статье простым языком и с хорошей визуализацие описана работа ClassLoader.
https://habr.com/ru/articles/748758/
Хабр
Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка
Когда я впервые погрузился в мир загрузчиков классов Java, это было ответом на любопытный вопрос. Популярные источники ( Wikipedia , Baeldung , DZone ) содержат устаревшую, иногда противоречащую друг...
Spring Data JPA: разница между методами findById, getOne, getById и findOne
Когда ваш репозиторий наследуется от
Но Spring Data явно не стала бы давать нам 4 совершенно одинаковых метода под разными именами. Итак, давайте подробнее рассмотрим эти методы и найдем их отличия.
https://thorben-janssen.com/spring-data-findbyid-getone-getbyid-and-findone/
Когда ваш репозиторий наследуется от
JpaRepository
из Spring Data JPA, он получает методы findById
, getOne
, getById
, и findOne
. Исходя из их имен, вы можете подумать, что они делают одно и то же.Но Spring Data явно не стала бы давать нам 4 совершенно одинаковых метода под разными именами. Итак, давайте подробнее рассмотрим эти методы и найдем их отличия.
https://thorben-janssen.com/spring-data-findbyid-getone-getbyid-and-findone/
Thorben Janssen
The difference between Spring Data JPA's findById, getOne, getById, and findOne methods - Thorben Janssen
Spring Data’s JpaRepository provides a huge set of methods that simplify the implementation of your database operations. You can use them to persist, remove, and read an entity object. Choosing the right method for your use case is one of the few problems…
👍1🔥1
Java 21: новый подход к созданию строк
Java 21 предлагает много классных функциональностей, и одна из них — шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк.
https://nuancesprog.ru/p/18883/
Java 21 предлагает много классных функциональностей, и одна из них — шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк.
https://nuancesprog.ru/p/18883/
NOP::Nuances of programming
Java 21: новый подход к созданию строк
Рассмотрим и сравним существующие техники конкатенации и интерполяции строк в Java, обратив особое внимание на новую функциональность Java 21 - шаблоны строк.
👍1