Заходят как-то прогер, девопс и тестировщик в канал IT База Знаний...
А там:
😉 крутое IT-сообщество, с которым хочется расти;
➕ материалы и туториалы, рассказанные доступным языком, необходимые для повышения квалификации и профессионализма;
🤩 актуальные новости и юмор из мира высоких технологий, чтобы быть в курсе последних событий.
Подписывайся на канал для программистов без снобизма!🥳
/channel/+OfLXANl7ARdkOTQy
Фильтрация
Фильтрация — это процесс выбора элементов из коллекции, удовлетворяющих определенному критерию. Фильтрация является одной из базовых операций при работе с коллекциями и позволяет легко извлекать нужные элементы.
В Java фильтрация может быть выполнена с использованием метода filter()
из класса java.util.stream.Stream
. Метод filter()
принимает предикат (функцию, которая возвращает true или false в зависимости от того, удовлетворяет ли элемент критерию) и возвращает новый Stream
, содержащий только те элементы, которые удовлетворяют критерию.
#для_продвинутых
Преобразование файла в строку
В нашем первом примере мы используем встроенный пакет файлов Java 1.11+. Этот метод работает с Java 1.11+.
Также рассмотрим еще один вариант преобразования, а именно использование встроенного пакета Streams Java 1.8+.
Memory Model
Memory Model (модель памяти) в Java определяет взаимодействие потоков с разделяемой памятью. Она гарантирует видимость изменений в памяти и порядок операций.
Java Memory Model (JMM) устанавливает правила для этого взаимодействия. JMM обеспечивает видимость изменений через синхронизацию и волатильные переменные. Она также определяет порядок операций и гарантирует атомарность для некоторых операций.
#для_продвинутых
5 февраля Слёрм запускает курс по 1С в формате потока. Учат и разработчиков, и тех, кто поддерживает 1С на предприятии.
Подробная программа и форма для записи по ссылке.
Это комплексный курс, который сочетает в себе современный нескучный подход к обучению и больше количество практических заданий!
Курс идет 6 недель в формате потока:
➕ Все задания и итоговый проект проверяют спикеры курса и готовят подробное код-ревью.
➕ На время потока будет создан чат. В нём вы сможете задать любой вопрос по разработке на 1С и оперативно получить ответ.
➕ На протяжении курса вы будете разрабатывать мобильное приложение на платформе «1С: Предприятие» и интегрировать сервисы API.
➡️ Ждем вас!
Реклама. ООО «Слёрм» г. Лиски, ОГРН 1193668020545 Erid: 2VtzqvCvipW
Буферизованные потоки
Буферизованные потоки — это классы, которые обеспечивают буферизацию потоковых данных, что может улучшить производительность при чтении и записи больших объемов данных.
Преимущества использования буферизованных потоков включают более эффективную работу с файлами и сетевыми соединениями за счет уменьшения количества операций ввода-вывода. Также буферизация может уменьшить количество запросов к диску или сети, что может улучшить производительность при работе с большими объемами данных.
#для_продвинутых
Условия в блокировках
В Java блокировки могут иметь связанные с ними условия, которые позволяют потокам ожидать определенных условий до получения блокировки или до ее освобождения.
Условия могут использоваться для предотвращения "голодания" некоторых потоков или для более эффективного управления блокировками.
Взаимная блокировка потоков
Взаимная блокировка потоков — это ситуация, когда два или более потоков блокируются, ожидая друг друга, чтобы освободить общие ресурсы, необходимые им для продолжения работы.
Такая ситуация возникает, когда два или более потоков пытаются получить доступ к общему ресурсу одновременно, что может привести к блокировке их работы. Для избежания этой проблемы можно использовать мониторы и ключевое слово synchronized
.
#для_продвинутых
Думаешь, что программирование это про код?
В 2024 году пишут код даже 10-летние, а еще лучше нейронки. Самый ценный навык разработчика — это умение быстро обучаться и развитиваться. Чем быстрее ты начинаешь применять новые знания, тем ценнее ты на рынке. А чтобы быть в топе, учиться нужно всегда.
Для этого всего-то нужно:
~ ходить на митапы
~ читать блоги БигТеха
~ общаться с сильном комьюнити
~ следить за новинками из мира IT
Чтобы собрать все эти ресурсы требуются года, куда легче читать канал XOR. Здесь команда разработчиков постоянно следит за трендами, делится опытом и упрощает жизнь.
Подпишись, стать 10х-программистом проще, чем кажется: @xor_journal
Сортировка Шелла
Если простыми словами, то сортировка Шелла это алгоритм сортировки массива, который улучшает производительность сортировки вставками.
Он основан на сравнении элементов, находящихся не только рядом, но и на определенном расстоянии друг от друга.
Суть алгоритма заключается в том, что на каждом шаге расстояние между элементами уменьшается вдвое, что позволяет ускорить сортировку.
#для_продвинутых
Переопределение методов в классах наследниках
В Java можно переопределить методы в классах-наследниках с помощью ключевого слова @Override
. Переопределение метода позволяет изменить его реализацию в подклассе, сохраняя при этом сигнатуру (имя, типы параметров и возвращаемое значение) метода из суперкласса.
Обратите внимание на использование аннотации @Override
перед переопределенным методом в классе Subclass
. Это помогает компилятору обнаружить ошибки, если вы случайно ошиблись в сигнатуре метода или не переопределили метод правильно.
#для_продвинутых
⚡ Когда мне говорят, что Java слишком простой язык, я показываю канал Java Learning
Здесь я научился:
▪️ Разрабатывать высоконагруженные серверные приложения
▪️ Управлять сложными базами данных
▪️ Организовывать эффективную многопоточную обработку данных
▪️ Проходить технические собеседования в ведущие IT-компании
Самый необычный канал про Java, подписывайся – @Java_per_month
Восходящее и нисходящее преобразование
Восходящее преобразование (upcasting) происходит, когда объект или значение преобразуется в тип, который находится выше в иерархии наследования.
Нисходящее преобразование (downcasting) происходит, когда объект или значение преобразуется в тип, который находится ниже в иерархии наследования. Для выполнения нисходящего преобразования необходимо явно привести типы.
#для_начинающих
ZipOutputStreamZipOutputStream
— это класс в Java, который позволяет создавать архив Zip, добавлять в него файлы и директории, и сохранять его в файловой системе. Он наследует класс DeflaterOutputStream
и реализует интерфейс Closeable
.ZipOutputStream
(OutputStream out
) — создает объект ZipOutputStream
, который будет записывать данные в указанный выходной поток.
#для_продвинутых
Принцип FIFO
Принцип FIFO (First-In-First-Out) относится к упорядочиванию и обработке элементов в порядке их поступления. В Java вы можете реализовать FIFO с использованием структуры данных, такой как очередь (Queue). В стандартной библиотеке Java есть несколько классов и интерфейсов, которые поддерживают FIFO:
— Queue интерфейс: Queue является интерфейсом, который предоставляет основные методы для работы с очередью. Вы можете использовать реализации этого интерфейса, такие как LinkedList или PriorityQueue, чтобы создать FIFO очередь.
— ArrayDeque: ArrayDeque также может быть использован для реализации FIFO очереди. Вы можете добавлять элементы в начало или конец очереди и извлекать их из начала очереди.
#для_продвинутых
Как используется класс Future?
Класс Future является частью пакета java.util.concurrent, и он используется для представления результата асинхронной операции или задачи, которая выполняется в фоновом потоке. Future позволяет вам управлять и получать результаты выполнения задачи в будущем, даже если она еще не завершилась.
#для_начинающих
Прокачайте Java-скилы c Холдингом Т1! 💙 🚀
➕ Если вы уже более года работаете Java-разработчиком и хотите освоить новые перспективы для развития внутри профессии, то Открытые школы Холдинга Т1 для вас!
Мы поможем вам улучшить свои навыки и пригласим лучших в нашу команду!
В программе интенсива:
🔹 Spring Core
🔹 Очереди, брокеры сообщений
Как это работает:
🔹 подать заявку на сайте
🔹 пройти входное тестирование
🔹достаточно 8 часов в неделю: 4 часа на вебинары и 4 часа на практические задания
🔹всё онлайн и без отрыва от работы
Продолжительность - 1 месяц, стартуем уже в январе.🎓
🌟 Подавайте заявку до 24 января!
Реклама. ООО "ГК "ИННОТЕХ". ИНН 9703073496.
Как пройти собеседование в компанию мечты? ☄️
26 января проведем техническое собеседование на позицию Senior Java Developer в «Цифровые Привычки», 350.000₽+
В прямом эфире: •
Разберем реальное CV; •
Обсудим, на что обращают внимание рекрутеры, а на что — интервьюеры; •
Расскажем о частых ошибках на собеседовании и как не допустить их.
А после эфира поделимся чек-листом, который поможет учесть все требования 2024 года при подготовке к собеседованию.
Интервьюер – Роберт Мазипов. Java Architect с опытом программирования на Java 4 года. Преподаватель на курсе Senior Java Developer.
Больше — в прямом эфире!
Регистрация по ссылке: https://clck.ru/386FBo
Реклама. ООО "Платформа непрерывного обучения" ИНН 7839405924
erid: 2VtzqxDo2UE
Оptimistic locking
optimistic locking — это стратегия контроля параллельного доступа к ресурсам или данным, которая позволяет не блокировать ресурсы в течение длительного времени. Она основывается на предположении, что конфликты при доступе к данным встречаются редко, и поэтому вместо того чтобы заблокировать ресурс целиком на протяжении операции, она позволяет нескольким потокам или процессам работать с данными параллельно.
Если возникает конфликт, то один из потоков получит уведомление об этом и может принять меры для разрешения конфликта.
#для_продвинутых
Параллельная редукция
Параллельная редукция в Java — это процесс сокращения (редукции) коллекции элементов с использованием параллельных вычислений. В Java для этого можно использовать параллельные потоки и функциональные интерфейсы, такие как reduce()
, collect()
и stream()
.
Обратите внимание, что использование параллельной редукции имеет смысл только при выполнении тяжелых вычислений или обработки больших коллекций данных. В других случаях, когда нагрузка невелика, последовательная редукция может быть более эффективной.
#для_продвинутых
Старт подготовительного курса по Java-разработке.
⏰ Когда: уже 25 января.
Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком.
Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником.
Всего 990 ₽ и ваше жгучее желание начать. Приходите с любым бэкграундом: нам не важны возраст, пол, образование и текущая профессия.
Запишитесь прямо сейчас!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8KLsLZ
Быстрый офер в Яндекс для бэкенд-разработчиков
Мечтали о возможности самим выбрать команду, в которой будете работать? Приходите в Яндекс за офером! На мероприятии по быстрому найму через MultiTrack 27–28 января можно получить приглашение за два дня, несколько недель поработать в трёх разных командах, а затем выбрать проект, с которым свяжете будущее.
План простой: до 24 января решите задачи в Контесте, 27 января пройдите две технические секции, а 28-го получите офер и знакомьтесь с командами. Мы ждём бэкендеров на C++, Python, Java и Go, которые занимаются коммерческой разработкой больше пяти лет.
Регистрируйтесь и приходите!
В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду
Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java).
Смотреть статью
Ссылочные типы
В Java все типы данных делятся на две категории: примитивные типы и ссылочные типы. Ссылочные типы данных представляют собой объекты, которые содержат данные и методы для работы с ними. В отличие от примитивных типов, переменные ссылочных типов хранят ссылку на объект, а не его значение.
#для_начинающих
☄️ 17 января в 18:00 состоится бесплатный вебинар от HeadBridge!
«Обработка тысяч одновременных записей и обеспечение согласованности данных»
• Разберем уровни изоляции транзакций
• Физический состав работы с базой данных
• Locks: pessimistic, optimistic & advisory
Рассмотрим потенциальные проблемы при работе со связкой java->database. Выполним тысячи апдейтов над одними и теми же строками и покажем наиболее распространенные подходы для достижения согласованности и производительности.
Ведущий: Роман Оборин, Senior Software Engineer
Опыт программирования на Java — 6 лет (Tesco, BNP paribas, Natera)
💖Скорее регистрируйся: https://bit.ly/headbridge
Реклама. ООО "Платформа непрерывного обучения"
erid: 2VtzqwKs6n9, ИНН 7839405924
NavigableSetNavigableSet
— это расширенный интерфейс Set
, который позволяет работать с элементами множества в отсортированном порядке и выполнять различные операции поиска и навигации. NavigableSet
в Java предоставляет ряд методов для работы с элементами в порядке возрастания или убывания.
#для_продвинутых
RecordsRecords
— это новый тип данных, добавленный в Java 14, который позволяет определить класс с набором свойств, аналогичных полям класса, но неизменяемых и доступных только для чтения. Они предоставляют удобный способ объявления простых неизменяемых объектов с сокращенным синтаксисом.
#для_продвинутых
Группировка
Группировка (grouping) — это процесс объединения данных в группы или категории в соответствии с определенным критерием или условием. Группировка является важной операцией при обработке больших объемов данных, поскольку она позволяет легко анализировать и обрабатывать данные, разбивая их на более мелкие подгруппы.
В Java группировка может быть выполнена с использованием метода groupingBy()
из класса java.util.stream.Collectors
. Метод groupingBy()
принимает функцию, которая определяет критерии группировки, и возвращает Map
с ключами, соответствующими группам, и значениями, представляющими элементы группы.
#для_продвинутых
Что такое Shutdown hook?Shutdown hook
— это механизм, который позволяет выполнить код при завершении работы JVM. Например, можно закрыть все открытые ресурсы и завершить потоки перед тем, как программа будет полностью остановлена.
Вы можете зарегистрировать Shutdown hook
с помощью метода Runtime.addShutdownHook()
. Этот метод принимает объект класса Thread
, который представляет код, который вы хотите выполнить при завершении JVM.Shutdown hook
будет выполнен при завершении JVM, независимо от того, был ли завершен процесс JVM нормально (например, с помощью System.exit()
) или из-за необработанного исключения.
#для_продвинутых
BufferedWriterBufferedWriter
- это класс в Java, который позволяет записывать символы в файл с буферизацией. Он наследует класс Writer
и реализует интерфейсы Closeable
, Flushable
и Appendable
.
Конструктор BufferedWriter
имеет одну форму:
— BufferedWriter
(Writer writer
) - создает объект BufferedWriter
, который будет использовать указанный Writer
для записи данных.
#для_продвинутых