Обложка канала

Java библиотека. Страница 39

12847 @javalib

Всё для Java разработчиков.

  • Java библиотека

    Почему char[] предпочтительнее String для хранения пароля? С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
  • Java библиотека

    Что выбрать: однообразные задачи и легаси-код или highload-проект на стыке ML, NLP и AI? Ответ очевиден. SberDevices ищет Java-разработчиков для создания цифровых поверхностей Сбера. Подходящему кандидату готовы сделать предложение в течение одного дня: проходите интервью — получаете оффер. Нужно, чтобы специалист, как минимум 2 года до этого занимался разработкой высоконагруженных сервисов в крупных IT-компаниях или банках, жил в Москве или был готов к переезду. Работать будете с Java, Kotlin, Spring Boot, PostgreSQL, MongoDB, Oracle DB, Kafka, Kuberenetes, Docker, OpenShift, ELK, Hadoop, Spark, Ansible, Jenkins, Prometheus, Grafana. Вам предстоит вместе с командой генерить идеи, тестировать гипотезы и находить программные решения, а после релиза с удовольствием наблюдать, как готовым продуктом пользуются друзья и многочисленные пользователи умных устройств, виртуальных ассистентов Салют. Узнать больше о вакансии и откликнуться: http://sber.me/?p=3sLCD
  • Java библиотека

    Вашему вниманию предлагается новая подборка Java-новостей от InfoQ: 😃 ✔️ Стал доступен билд № 26 для JDK 20 (ранний доступ) ✔️ Вышел релиз Spring Integration 6.0 ✔️ AWS выкатил новую фичу для AWS Lambda - Lambda SnapSTart ✔️ Вышел релиз Apache Camel 3.18.4 и д.р. Приятного чтения! Читать статью
  • Реклама

  • Java библиотека

    Очень скоро долгожданный митап Сбера в Рязани – 8 декабря в 19:00 поговорим о Service Mesh и SBER NDR. Ещё недавно Service Mesh был самой хайповой технологией, а сейчас стал стандартом для проектирования backend сервисов. Максим Чудновский, лидер направления мультикластерных сервисов в проекте Platform V Synapse Service Mesh, расскажет, как получить Service Mesh из коробки в gRPC, используя протокол XDS. О попытке объять необъятное, или о том, как была разработана система по детектированию и анализу сетевых атак, узнаете из доклада владельца продукта Sber NDR, руководителя направления Центра киберзащиты Сбера, Алины Светловой. Также в программе вечера нетворкинг, кофе-брейки и вручение призов. Встречаемся в четверг, 8 декабря, на площадке «Свобода Лофт». Регистрируйтесь на митап по ссылке.
  • Java библиотека

    Почему String неизменяемый и финализированный класс? Есть несколько преимуществ в неизменности строк: • Пул строк возможен только потому, что строка неизменяемая, таким образом виртуальная машина сохраняет больше свободного места в Heap, поскольку разные строковые переменные указывают на одну и ту же переменную в пуле. Если бы строка была изменяемой, то интернирование строк не было бы возможным, потому что изменение значения одной переменной отразилось бы также и на остальных переменных, ссылающихся на эту строку. • Если строка будет изменяемой, тогда это станет серьезной угрозой безопасности приложения. Например, имя пользователя базы данных и пароль передаются строкой для получения соединения с базой данных и в программировании сокетов реквизиты хоста и порта передаются строкой. Так как строка неизменяемая, её значение не может быть изменено, в противном случае злоумышленник может изменить значение ссылки и вызвать проблемы в безопасности приложения. • Неизменяемость позволяет избежать синхронизации: строки безопасны для многопоточности и один экземпляр строки может быть совместно использован различными потоками. • Строки используются classloader и неизменность обеспечивает правильность загрузки класса. • Поскольку строка неизменяемая, её hashCode() кэшируется в момент создания и нет необходимости рассчитывать его снова. Это делает строку отличным кандидатом для ключа в HashMap т.к. его обработка происходит быстрее.
  • Java библиотека

    Друзья, пришла зима, а значит, время поделиться планами на этот морозный декабрь! 🔷 9 декабря в Санкт-Петербурге стартует конференция «Технологии ПСБ. Поговорим в СПб» 📋 О чем будем говорить? За один день с экспертами разных ИТ-направлений ПСБ участники узнают о том, как создавать, развивать и эффективно управлять цифровыми сервисами для крупного банка. И как делать это без потери качества и связи с клиентами! 📍 Сайт мероприятия — скорее регистрируйтесь! ▪️ Микросервисы ▪️ DevOps ▪️ Shift-left testing и развитие команды 🔷 Всё это и многое другое в докладах наших спикеров! ✅ Регистрируйтесь сами и поделитесь приглашением со знакомыми из ИТ, которым интересны эти темы! ID рекламы: Pb3XmBtztBQYqCwkpwUudGm7n4r9SEEd67mqd1Q
  • Java библиотека

    Эффективный Java. Тюнинг кода на Java 8, 11 и дальше (2021) PDF, EPUB Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные уборщики мусора). В этой книге вы: - Узнаете, как платформы и компиляторы Java влияют на производительность. - Разберетесь c механизмом уборки мусора. - Освоите четыре принципа получения наилучших результатов при тестировании производительности. - Научитесь пользоваться JDK и другими инструментами оценки производительности. - Узнаете как настройка и приемы программирования позволяют минимизировать последствия уборки мусора. - Научитесь решать проблемы производительности средствами Java API. - Поймете, как улучшить производительность приложений баз данных Java.
  • Java библиотека

    Несмотря на то, что Java 11 была выпущена в сентябре 2018 года, а Java 17 — в 2021 году, даже сегодня многие разработчики по-прежнему используют Java 11 или даже Java 8. 🙈 В предложенном докладе, Nikhil Nanivadekar постарается убедить вас перейти с Java 8 или с Java 11 на Java 17 и на реальных примерах продемонстрирует: ✔️ Новые фичи ✔️ Улучшения функционала ✔️ Сравнение производительности различных версий Java и др. Приятного просмотра!
    IntelliJ IDEA Conf 2022 | Should I Upgrade to Java 17?

    Java 11 was released in September 2018, and Java 17 was released in 2021. However, even today, plenty of developers still use Java 11 or even Java 8. The motivation behind this talk is to make a compelling argument for an upgrade from Java 8 or 11 to Java 17. In this session, Nikhil will showcase the new features, demonstrate improvements, provide performance comparisons, and briefly discuss upgrade strategies. There will be a mix of live coding and presentation, and at the end, you’ll be able to answer the question, “Should I upgrade to Java 17?” Speaker: Nikhil Nanivadekar (Principal Engineer at Amazon) 00:00 - Introduction 03:25 - Presentation 53:05 - Q&A Download IntelliJ IDEA: https://jb.gg/download-intellij-idea Top 15 IntelliJ IDEA shortcuts: https://youtu.be/QYO5_riePOQ Join us: Website https://jb.gg/website Blog https://jb.gg/blog Twitter https://twitter.com/intellijidea Facebook https://www.facebook.com/IntelliJIDEA/ #IntelliJIDEAConf #intelliJIDEA #intelliJ #jetbrains #java #programming #Kotlin #Java17

    YouTube
  • Java библиотека

    Расскажите про приведение типов. Что такое понижение и повышение типа? Java является строго типизированным языком программирования, а это означает, то что каждое выражение и каждая переменная имеет строго определенный тип уже на момент компиляции. Однако определен механизм приведения типов (casting) - способ преобразования значения переменной одного типа в значение другого типа. В Java существуют несколько разновидностей приведения: • Тождественное (identity). Преобразование выражения любого типа к точно такому же типу всегда допустимо и происходит автоматически. • Расширение (повышение, upcasting) примитивного типа (widening primitive). Означает, что осуществляется переход от менее емкого типа к более ёмкому. Например, от типа byte (длина 1 байт) к типу int (длина 4 байта). Такие преобразование безопасны в том смысле, что новый тип всегда гарантировано вмещает в себя все данные, которые хранились в старом типе и таким образом не происходит потери данных. Этот тип приведения всегда допустим и происходит автоматически. • Сужение (понижение, downcasting) примитивного типа (narrowing primitive). Означает, что переход осуществляется от более емкого типа к менее емкому. При таком преобразовании есть риск потерять данные. Например, если число типа int было больше 127, то при приведении его к byte значения битов старше восьмого будут потеряны. В Java такое преобразование должно совершаться явным образом, при этом все старшие биты, не умещающиеся в новом типе, просто отбрасываются - никакого округления или других действий для получения более корректного результата не производится. • Расширение объектного типа (widening reference). Означает неявное восходящее приведение типов или переход от более конкретного типа к менее конкретному, т.е. переход от потомка к предку. Разрешено всегда и происходит автоматически. • Сужение объектного типа (narrowing reference). Означает нисходящее приведение, то есть приведение от предка к потомку (подтипу). Возможно только если исходная переменная является подтипом приводимого типа. При несоответствии типов в момент выполнения выбрасывается исключение ClassCastException. Требует явного указания типа. • Преобразование к строке (to String). Любой тип может быть приведен к строке, т.е. к экземпляру класса String. • Запрещенные преобразования (forbidden). Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того, невозможно привести друг к другу классы, находящиеся на разных ветвях дерева наследования и т.п. При приведении ссылочных типов с самим объектом ничего не происходит, - меняется лишь тип ссылки, через которую происходит обращение к объекту. Для проверки возможности приведения нужно воспользоваться оператором instanceof: Parent parent = new Child(); if (parent instanceof Child) { Child child = (Child) parent; }
  • Java библиотека

    Functional Programming in Kotlin by Tutorials (2022) PDF Learn to handle errors and state changes in a safe way using functional programming fundamentals. Functional programming is a powerful paradigm for building your applications. This book will teach you the fundamentals of functional programming in a practical, hands-on way, while showing you how you can safely handle errors and state changes in your programs.
  • Java библиотека

    Друзья, Vlad Mihalcea подготовил небольшое видео на тему извлечения объектов при помощи JPA и Hibernate. 😃 В этом видео рассмотрено следующее: ✔️ Непосредственное извлечение объектов ✔️ JPQL запросы ✔️ SQL запросы ✔️ Запросы Criteria API Приятного просмотра!
    The best way to fetch entities with JPA and Hibernate

    In this video, we are going to talk about fetching JPA and Hibernate entities. First, I'm going to explain how you fetch entities directly via their entity identifier or natural identifier. Afterward, we are going to see how we can fetch entities via JPQL, SQL, and Criteria API queries. In the end, I'm going to explain how the JPA entity Metamodel works and why you should use it when building dynamic queries using the JPA Criteria API.

    YouTube
  • Java библиотека

    Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение? Непосредственно вызов finalize() происходит в отдельном потоке Finalizer (java.lang.ref.Finalizer.FinalizerThread), который создаётся при запуске виртуальной машины (в статической секции при загрузке класса Finalizer). Методы finalize() вызываются последовательно в том порядке, в котором были добавлены в список сборщиком мусора. Соответственно, если какой-то finalize() зависнет, он подвесит поток Finalizer, но не сборщик мусора. Это в частности означает, что объекты, не имеющие метода finalize(), будут исправно удаляться, а вот имеющие будут добавляться в очередь, пока поток Finalizer не освободится, не завершится приложение или не кончится память. То же самое применимо и выброшенным в процессе finalize() исключениям: метод runFinalizer() у потока Finalizer игнорирует все исключения выброшенные в момент выполнения finalize(). Таким образом возникновение исключительной ситуации никак не скажется на работоспособности сборщика мусора.
  • Java библиотека

    Head First. Паттерны проектирования. 2-е издание (2021) PDF Не имеет смысла каждый раз изобретать велосипед, лучше сразу освоить приемы проектирования, которые уже созданы людьми, сталкивавшимися с аналогичными задачами. В этой книге рассказано, какие паттерны действительно важны, когда и при каких условиях ими необходимо пользоваться, как применить их в ваших проектах и на каких принципах объектно-ориентированного проектирования они построены. Присоединяйтесь к сотням тысяч разработчиков, которые повысили свою квалификацию объектно-ориентированного проектирования благодаря книге «Head First. Паттерны проектирования».Если вы уже читали книги из серии Head First, то знаете, что вас ждет визуально насыщенный формат, разработанный с учетом особенностей работы мозга.
  • Java библиотека

    В следующем году состоится релиз Java 20, но мы уже сегодня можем говорить о том, что нового будет в новой версии. В предложенном сегодня видео рассмотрены: ✔️ Последовательные коллекции ✔️ Фабричные методы для коллекций ✔️ Сопоставление с образцом для оператора Switch ✔️ Паттерны для записей ✔️ Примитивные классы и др. Приятного просмотра!
    Glimpse at Java 20: Pattern Matching, Concurrent Programming and Valhalla - Inside Java Newscast #38

    Java 20 is almost round the corner. We already have a good idea of what new things will be in it. So let us visit them in this newscase: Sequenced Collections, Pattern Matching from project Amber with the support of nesting and type inference, Loom and the new Scoped Values, and an update on Valhalla and value objects. ⎯⎯⎯ Chapters ⎯⎯⎯ 0:00 Introducing the JDK 20 1:00 Sequenced Collections 2:54 Pattern Matching 4:00 Loom 6:18 Valhalla and value objects ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ ⎯⎯ Resources ⎯⎯⎯ JDK 20 EA builds ➱ https://jdk.java.net/20/ Valhalla Project and LW4 Early Access release ➱ https://jdk.java.net/valhalla/ JDK Release process ➱ https://openjdk.org/jeps/1 JEP 431: Sequenced Collections ➱ https://openjdk.org/jeps/431 JEP 269: Convenience Factory Methods for Collections ➱ https://openjdk.org/jeps/269 JEP 433: Pattern Matching for switch (Preview) ➱ https://openjdk.org/jeps/433 JEP 432: Record Patterns (Second Preview) ➱ https://openjdk.org/jeps/432 JEP 436: Virtual Threads (Second Preview) ➱ https://openjdk.org/jeps/436 JEP 437: Structured Concurrency (Second Incubator) ➱ https://openjdk.org/jeps/437 JEP 439: Scoped Values (Incubator) ➱ https://openjdk.org/jeps/439 JEP draft: Value Objects (Preview) ➱ https://openjdk.org/jeps/8277163 JEP 401: Primitive Classes (Preview) ➱ https://openjdk.org/jeps/401 Tags: #Java #OpenJDK #JDK20 #JVM #InsideJava #PatternMatching #Record #Loom #Valhalla

    YouTube
  • Java библиотека

    Друзья, пришла зима, а значит, время поделиться планами на этот морозный декабрь! 🔷 9 декабря в Санкт-Петербурге стартует конференция «Технологии ПСБ. Поговорим в СПб» 📋 О чем будем говорить? За один день с экспертами разных ИТ-направлений ПСБ участники узнают о том, как создавать, развивать и эффективно управлять цифровыми сервисами для крупного банка. И как делать это без потери качества и связи с клиентами! 📍 Сайт мероприятия — скорее регистрируйтесь! ▪️ Микросервисы ▪️ DevOps ▪️ Shift-left testing и развитие команды; 🔷 Всё это и многое другое в докладах наших спикеров! ✅ Регистрируйтесь сами и поделитесь приглашением со знакомыми из ИТ, которым интересны эти темы! ID рекламы: Pb3XmBtztBQYqCwkpwUudGm7n4r9SEEd67mqd1Q
  • Реклама

  • Java библиотека

    Что такое «пул строк»? Пул строк – это набор строк, хранящийся в Heap. • Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк; • Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени; • Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё; • При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением; • Пул строк является примером паттерна «Приспособленец» (Flyweight).
  • Java библиотека

    Какой результат выведет следующая программа?
  • Java библиотека

    Работаем с Java 19 в IntelliJ IDEA Друзья, Mala Gupta подготовила отличную статью по тематике Java 19 применительно к IntelliJ IDEA. Наглядно рассмотрены следующие современные фичи: ✔️ Record Patterns ✔️ Pattern Matching for switch Хорошей практики! Читать статью