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

Библиотека джависта. Страница 58

20804 @javaproglib

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

  • Библиотека джависта

    Как работают MySQL Индексы? ⚡️Приглашаем разобрать этот вопрос 17 мая в 20:00 на бесплатном вебинаре «ИНДЕКСЫ MYSQL» Что вас ждет на вебинаре? 🔸 Разберемся в типах индексов, плюсах и минусах. 🔸 Рассмотрим преимущества и недостатки индексов, виды и возможности индексов. 🔸 Узнаем, как создавать, удалять и мониторить индексы для оптимизации БД. 🔸 Ответим на вопросы: как MySQL хранит индексы, как работают индексы, что такое статистика. 🔥 Бонус: Среди участников вебинара, будет разыграна электронная версия книги “PostgreSQL 14. Оптимизация, Kubernetes, кластера, облака.” - Автор книги Аристов Евгений 👉🏻Регистрация на вебинар: https://otus.pw/8o7z/
  • Библиотека джависта

    Какой существует эффективный способ удостовериться, что все сервлеты доступны только для пользователя с верной сессией? Сервлет фильтры используются для перехвата всех запросов между контейнером сервлетов и сервлетом. Поэтому логично использовать соответствующий фильтр для проверки необходимой информации (например валидности сессии) в запросе.
  • Библиотека джависта

    🔥Начните осваивать самый востребованный Java-фреймворк Spring! 🗣 16 мая в 20:00 пройдет открытый урок «Validation Framework в Spring» с Юрием Дворжецким, ведущим fullstack-разработчиком. Мы рассмотрим, как валидировать различные объекты с использованием javax.validation в Spring-проектах с особенностями. 🔸Не упустите возможность попробовать обучение на онлайн-курсе «Spring Framework Developer». Программа ориентирована на Java-разработчиков с опытом. 📌Пройдите вступительный тест для регистрации на вебинар: https://otus.pw/oW7p/
  • Реклама

  • Библиотека джависта

    Как избежать ConcurrentModificationException во время перебора коллекции? • Попробовать подобрать или реализовать самостоятельно другой итератор, работающий по принципу fail-safe. • Использовать ConcurrentHashMap и CopyOnWriteArrayList. • Преобразовать список в массив и перебирать массив. • Блокировать изменения списка на время перебора с помощью блока synchronized. Отрицательная сторона последних двух вариантов - ухудшение производительности.
  • Библиотека джависта

    Сравните Iterator и ListIterator. ListIterator расширяет интерфейс Iterator ListIterator может быть использован только для перебора элементов коллекции List; • Iterator позволяет перебирать элементы только в одном направлении, при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous(); • ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next(). • При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
  • Библиотека джависта

    #вопросы_с_собеседований Как поведёт себя коллекция, если вызвать iterator.remove()? Если вызову iterator.remove() предшествовал вызов iterator.next(), то iterator.remove() удалит элемент коллекции, на который указывает итератор, в противном случае будет выброшено IllegalStateException().
  • Библиотека джависта

    #вопросы_с_собеседований Что такое ThreadLocal-переменная? ThreadLocal - класс, позволяющий имея одну переменную, иметь различное её значение для каждого из потоков. У каждого потока - т.е. экземпляра класса Thread - есть ассоциированная с ним таблица ThreadLocal-переменных. Ключами таблицы являются cсылки на объекты класса ThreadLocal, а значениями - ссылки на объекты, «захваченные» ThreadLocal-переменными, т.е. ThreadLocal-переменные отличаются от обычных переменных тем, что у каждого потока свой собственный, индивидуально инициализируемый экземпляр переменной. Доступ к значению можно получить через методы get() или set(). Например, если мы объявим ThreadLocal-переменную: ThreadLocal<Object> locals = new ThreadLocal<Object>();. А затем, в потоке, сделаем locals.set(myObject), то ключом таблицы будет ссылка на объект locals, а значением - ссылка на объект myObject. При этом для другого потока существует возможность «положить» внутрь locals другое значение. Следует обратить внимание, что ThreadLocal изолирует именно ссылки на объекты, а не сами объекты. Если изолированные внутри потоков ссылки ведут на один и тот же объект, то возможны коллизии. Так же важно отметить, что т.к. ThreadLocal-переменные изолированы в потоках, то инициализация такой переменной должна происходить в том же потоке, в котором она будет использоваться. Ошибкой является инициализация такой переменной (вызов метода set()) в главном потоке приложения, потому как в данном случае значение, переданное в методе set(), будет «захвачено» для главного потока, и при вызове метода get() в целевом потоке будет возвращен null.
  • Библиотека джависта

    Открытая трансляция главного зала HighLoad++ Foundation  13 и 14 мая! ✅Для просмотра необходима только регистрация: https://bit.ly/3sdkadM Программа охватывает такие аспекты веб-разработок, как архитектуры крупных проектов, базы данных и системы хранения, devops и системное администрирование, нагрузочное тестирование, эксплуатация крупных проектов и другие направления, связанные с большими и высоконагруженными IT-системами.
  • Библиотека джависта

    #вопросы_с_собеседований Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()? Если итератор указывает на последний элемент коллекции, то возникнет исключение NoSuchElementException, иначе будет возвращен следующий элемент.
  • Библиотека джависта

    Как работают Тинькофф Центры Разработки ⚙️ Тинькофф Центры Разработки — это современные финтех-пространства, где аналитики, разработчики, дизайнеры, инженеры по качеству и другие специалисты создают и развивают продукты компании. Центры работают в 20 городах России, в Минске и в Казахстане — здесь начинает работать новый офис. Эксперты Тинькофф расскажут, какие задачи решают команды, как выстроены процессы внутри них, о проектах и карьерном треке, по которому можно развиваться в Тинькофф. Митап разделим по стримам: QA Backend & Mobile, Java, Android, iOS и .NET. Встречу проведем в Zoom 19 мая. Ссылку на нее пришлем по почте после регистрации: https://l.tinkoff.ru/kz-development-centre-2022
  • Библиотека джависта

    Под каким типом хранить период времени? В стандартной библиотеке современных версий Java для этих целей есть два класса: Period – календарный период. Количество дней, месяцев и лет. Одним днем здесь считается день в терминах ZonedDateTime. Duration – длительность времени. Количество наносекунд, секунд, минут, часов, и тоже дней. Здесь один день – ровно 24 часа. Оба класса реализуют общий интерфейс TemporalAmount – период времени вообще. Оба иммутабельны, и как следствие, потокобезопасны. Любая модифицирующая операция вроде plusX() возвращает новый экземпляр с измененным значением. Экземпляры обоих классов могут быть созданы из значений отдельных компонентов, из двух моментов времени методом between, или из строки. Строковое представление Duration: "P2DT3H4M", Period: "P1Y2M3D". До Java 8 основным способом хранения периода были числовые примитивы. В этом подходе есть много недостатков, среди которых в первую очередь неограниченность значений и ненаглядность. Чтобы в Java 8+ получить период числом, используется метод between() нужного элемента енама ChronoUnit.
  • Библиотека джависта

    #вопросы_с_собеседований Какие существуют способы конфигурирования log4j? Для того, чтобы log4j начал работать нужно предоставить ему конфигурацию. Это можно сделать несколькими путями: Создать конфигурацию программно, т.е. получить logger, определить уровень журналирования, прикрепить appender и задать способ форматирования. Указать файл или URL как аргумент при запуске java-машины -Dlog4j.configuration=путь/к/файлу/конфигурации, а затем прочитать его в программе при помощи PropertyConfigurator.configure(...)/ DOMConfigurator.configure(...) для формата .properties или XML соответственно. Загрузить конфигурацию из файла в формате XML или .properties: log4j ищет файл конфигурации в classpath. Сначала ищется файл log4j.xml и, если таковой не найден, - файл log4j.properties.
  • Библиотека джависта

    ⁉️Разрабатываете на Java, хотите развития и интересных проектов? 💪🏻Без фреймворка Spring это невозможно. Сделайте первый шаг к своему карьерному росту — приходите 12 мая в 20:00 на открытый урок «Разработка консольных приложений на Spring и Picocli». Занятие проведет опытный fullstack-разработчик Юрий Дворжецкий. 📚 Мы покажем, как строить Command Line Interface и утилиты командной строки на Picocli как альтернативу Spring Shell. А также рассмотрим некоторые возможности Java для создания таких консольных утилит. Урок пройдет в рамках онлайн-курса «Spring Framework Developer» для джавистов с опытом. 📌Пройдите вступительный тест, чтобы участвовать в вебинаре: https://otus.pw/GChG/
  • Библиотека джависта

    Создание аналога Google Фото на Spring Boot В этом видео автор показывает, как создать приложение, похожее на Google Фото, с помощью Spring Boot. Кроме того, вы узнаете много нового о Spring Dependency Injection и MVC frameworks, Validation and File Handling, Spring Data и базах данных, а также о том, как задеплоить свое приложение.
    Spring Boot Tutorial - Nice & Easy

    ► Referenceshttps://docs.google.com/document/d/14i1qoMYjnsc7LiehVlNLRF6KfrE1yRb3CfPuD9SDSGQ/edit?usp=sharing ► Table Of Contents00:00:00 Intro00:00:51 Spring ...

    YouTube
  • Библиотека джависта

    #вопросы_с_собеседований Что такое Logger в log4j? Logger представляет собой объект класса org.apache.log4j.Logger, который используется как управляющий интерфейс для журналирования сообщений с возможностью задавать уровень детализации. Именно logger проверяет нужно ли обрабатывать сообщение и если журналирование необходимо, то сообщение передаётся в appender, если нет - система завершает обработку данного сообщения.
  • Реклама

  • Библиотека джависта

    #вопросы_с_собеседований Как между собой связаны Iterable и Iterator? Интерфейс Iterable имеет только один метод - iterator(), который возвращает Iterator.
  • Библиотека джависта

    #вопросы_с_собеседований Какие промежуточные методы работы со стримами вы знаете? filter() отфильтровывает записи, возвращая только записи, соответствующие условию; skip() позволяет пропустить определённое количество элементов в начале; distinct() возвращает стрим без дубликатов (для метода equals()); map() преобразует каждый элемент; peek() возвращает тот же стрим, применяя к каждому элементу функцию; limit() позволяет ограничить выборку определенным количеством первых элементов; sorted() позволяет сортировать значения либо в натуральном порядке, либо задавая Comparator; mapToInt(), mapToDouble(), mapToLong() - аналоги map() возвращающие стрим числовых примитивов; flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong() - похожи на map(), но могут создавать из одного элемента несколько. Для числовых стримов дополнительно доступен метод mapToObj(), который преобразует числовой стрим обратно в объектный.
  • Библиотека джависта

    #вопросы_с_собеседований Что такое протокол передачи данных? Какие протоколы вы знаете? Протокол передачи данных — набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры, соединённой тем или иным интерфейсом. Наиболее известные протоколы передачи данных: HTTP (Hyper Text Transfer Protocol) FTP (File Transfer Protocol) POP3 (Post Office Protocol) SMTP (Simple Mail Transfer Protocol) TELNET (TErminaL NETwork)