Метод File.listFiles() возвращает массив объектов File, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter. Это позволяет включить в список только те элементы, для которых метод accept возвращает true (критерием может быть длина имени файла или его расширение).
Есть опыт и знания в IT, которыми Вы хотите поделиться ?
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
Станьте автором технических статей вместе с Proglib и получайте достойное вознаграждение!
Библиотека программиста приглашает к сотрудничеству внештатных авторов,
которые хотят поделиться знаниями, пропиарить свой авторский блог или просто заработать.
Мы предлагаем удаленную работу, гибкий график, возможность зарабатывать до 12к за статью и выплаты 2 раза в месяц.
Мы не ограничиваем в количестве статей.
Постоянным авторам предусмотрены премии за лояльность.
Интересующие направления для написания статей:
• DevOps
• Блокчейн
• Информационная безопасность
• Ruby on Rails
• C/ C++/ C#
• Java
• Go разработка
• Разработка игр
• Android-разработка
• iOS-разработка
• Системная аналитика
• Тестирование ПО
• Виртуальная реальность
• 1С
• Business Intelligence
• Интернет вещей
• Системы и сети
• IT Management
Оставьте заявку на https://proglib.io/w/186f13ee и мы свяжемся с вами!
LIFO и FIFO
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Терминология, пришедшая в IT из бухучета. Так называют подходы к организации данных.
FIFO (First In, First Out, «первый пришел – первый ушел») – поведение как в очереди в магазине. Ему соответствует структура данных очередь). У такого хранилища две операции: enqueue – добавить элемент в конец, и dequeue – забрать из начала.
LIFO (Last In, First Out, «последний пришел – первый ушел» – наоборот, первый пришедший ждет всех остальных, подобно стопке тарелок. Соответственно, его реализует структура данных стек. Операция push кладет новый элемент наверх стопки, pop забирает сверху же.
Термины применяются не только к способу доступа к данным, но и к порядку разрешения конфликтов. Так, например, по принципу LIFO или FIFO может определяться порядок исполнения параллельно пришедших сигналов какой-либо системы: доступа к диску, планировки задач ОС, и прочих.
#Структуры
Погрузись в разработку на востребованном языке программирования Java!
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw
Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный обмен кодом 😎 Интенсив подойдёт как для начинающих, так и для опытных разработчиков!
⚡️ Познакомишься с enterprise-технологией в Java и микросервисной архитектурой.
⚡️ Узнаешь все стадии разработки приложений, научишься писать микросервисы для полноценного enterprise-проекта, и разберёшься в работе протокола HTTP и стандарте REST.
⚡️ На практике разработаешь корпоративный онлайн-чат на Java.
⚡️ У тебя будет полноценный готовый проект, который сможешь вложить себе в портфолио!
📣 Твоим наставником будет разработчик с 17-летним опытом, директор центра подбора IT-специалистов SymbioWay — Даниил Пилипенко.
🎁 Все участники получат электронную книгу «Век живи — век учись» Кей Петерсон и Дэвида Колба, а те, кто сдаст домашнюю работу, получат сертификат на 15 000 рублей на любой курс Skillbox.
Что такое О-нотация?
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
2. "Недоминантный компонент" тоже можно выбросить:
Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Для оценки сложности алгоритмов по времени или по памяти используется понятие "О большое". Например, алгоритм пузырьковой сортировки работает со скоростью
O(n^2)
. По определению, это ограничение асимптотической сложности сверху, с точностью до константного множителя. То есть, это описание, на что примерно будет похоже поведение алгоритма на большом объеме данных. В случае пузырьковой сортировки – это значит, что чем больше размер n массива данных, тем ближе количество операций для его сортировки будет подходить (не превышая) к
(n*C)^2
. Здесь C
– любая фиксированная величина, не зависящая от n.Два важных вывода, которые следуют из этого определения:
1. Константный множитель из О-нотации можно (и принято) выбрасывать:
O(42*n) = O(n)
.2. "Недоминантный компонент" тоже можно выбросить:
O(n^2 + n) = O(n^2)
. Потому что n^2 + n < 2*n^2
при больших n
.Вопросу понятия и применения асимптотической оценки сложности посвящена глава VI книги Cracking the Coding Interview. Вот некоторые примеры сложностей алгоритмов:
#Алгоритмы
Библиотека программиста планирует организовать серию офлайн-мероприятий.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Мы создали опрос, чтобы учесть пожелания и интересы подписчиков, а также какие темы наиболее интересны. Опрос займет не более 3-х минут и пройти его можно тут.
Google Docs
Какие мероприятия наиболее интересны?
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Погрузись в разработку на востребованном языке программирования Java! Присоединяйся к бесплатному онлайн-интенсиву 24 апреля в 12:00 по московскому времени: 👉 https://clc.am/m0PPxw Тебя ждут 6 часов мощной практики и теории, командная работа и постоянный…»
Связный список
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
Он же просто «список», самая простая после массива структура данных. Каждый элемент данных хранится в ячейке вместе со ссылкой на следующую. Таким образом, ячейки данных выстраиваются в цепочку.
В пользовательском коде сохраняется адрес «головы» списка – первой ячейки. От нее по ссылкам можно дойти до любого элемента «хвоста».
В отличие от простого массива, информация в списке разрозненна в памяти, что делает кэширование процессора менее эффективным. На хранение ссылок тратится дополнительная память. Взамен, список дает возможность вставки/удаления элемента в середине без перезаписывания остальных элементов.
Для ускорения доступа к последним элементам, а также для обхода данных с конца существует модификация, которая называется двусвязный список. В нём каждая ячейка хранит ссылку и на следующую, и на предыдущую.
Сложность поиска по значению и по индексу так же как и модификации в середине – линейная; любых действий с головным элементом – константная.
#Структуры
☕️ 7 причин стать разработчиком на Java в 2021 году
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное
количество ультрамодных альтернатив.
https://proglib.io/sh/q8tzm6yx1V
В чем разница между агрегацией, композицией, и ассоциацией?
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Ассоциация – знание одного класса о другом. Например, класс Начальник может быть связан с классом Подчиненный отношением ассоциации, чтобы передавать ему запросы. Если и Подчиненный должен обращаться к Начальнику – ассоциация называется двунаправленной.
Агрегация и композиция – две разновидности ассоциации. Композиция подразумевает, что ассоциированный объект – «подобъект», составная часть, не имеющая смысла без ссылающегося. На практике, например, отношение композиции появляется когда мы выделяем часть свойств объекта в отдельную сущность.
Агрегация не подразумевает отношения владения. Это просто ссылка на другой, самостоятельный объект. Он может продолжить функционировать, если ссылающийся объект прекратит существование. Например, класс-контейнер агрегирует хранимые элементы.
Как написать синглтон?
Singleton – это паттерн проектирования «одиночка», класс с единственным экземпляром. Такая пространная формулировка открывает простор для подходов к реализации, а значит и для уточняющих вопросов, на которые и рассчитывает интервьюер.
Первое что надо выяснить – единственный экземпляр в рамках чего. В базовом случае уникальность объекта обеспечивается на уровне реализации класса. Но при этом базовом подходе создается по объекту на каждый класслоадер. Для уникальности на всю виртуальную машину реализацию нужно дополнить. Понадобится больше действий уже на уровне ОС чтобы добиться единого экземпляра между процессами JVM. С другой стороны, может требоваться специфичное для фреймворка сужение «области уникальности», например по экземпляру на каждый Spring IoC-контейнер.
Затем вы узнаете, должен ли быть ровно один экземпляр, или не больше одного. Проще говоря, должно ли его создание быть ленивым. Возможно время использования объекта ограничено внешними условиями, и позднее он должен быть утилизирован.
И наконец нужно уточнить, в каких обстоятельствах подразумевается его использовать. Обычно предлагают условие многопоточной среды – инстанцирование необходимо синхронизировать. Другое возможное требование – сохранение состояния от запуска к запуску. Спектр опций здесь ограничивается только фантазией собеседующего.
О вариантах конкретных реализаций написано много статей. Обычно на интервью ожидается знание самых стандартных подходов, которые описаны, например, здесь.
#Классы
Singleton – это паттерн проектирования «одиночка», класс с единственным экземпляром. Такая пространная формулировка открывает простор для подходов к реализации, а значит и для уточняющих вопросов, на которые и рассчитывает интервьюер.
Первое что надо выяснить – единственный экземпляр в рамках чего. В базовом случае уникальность объекта обеспечивается на уровне реализации класса. Но при этом базовом подходе создается по объекту на каждый класслоадер. Для уникальности на всю виртуальную машину реализацию нужно дополнить. Понадобится больше действий уже на уровне ОС чтобы добиться единого экземпляра между процессами JVM. С другой стороны, может требоваться специфичное для фреймворка сужение «области уникальности», например по экземпляру на каждый Spring IoC-контейнер.
Затем вы узнаете, должен ли быть ровно один экземпляр, или не больше одного. Проще говоря, должно ли его создание быть ленивым. Возможно время использования объекта ограничено внешними условиями, и позднее он должен быть утилизирован.
И наконец нужно уточнить, в каких обстоятельствах подразумевается его использовать. Обычно предлагают условие многопоточной среды – инстанцирование необходимо синхронизировать. Другое возможное требование – сохранение состояния от запуска к запуску. Спектр опций здесь ограничивается только фантазией собеседующего.
О вариантах конкретных реализаций написано много статей. Обычно на интервью ожидается знание самых стандартных подходов, которые описаны, например, здесь.
#Классы
Stack Overflow
Singleton class with several different classloaders
E.g I have class Singleton with static field instance:
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
I can load this class
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
I can load this class
#вопросы_с_собеседований
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?