Что такое «пул строк»?
Пул строк – это набор строк, хранящийся в Heap.
• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).
#java
Подписывайтесь на канал 👉@cod_academy
Пул строк – это набор строк, хранящийся в Heap.
• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).
#java
Подписывайтесь на канал 👉@cod_academy
👍3
Функция
Синтаксис:
Возвращаемое значение:
Функция возвращает ненулевое значение, если
#cpp
Подписывайтесь на канал 👉@cod_academy
isalpha() в С++ проверяет, является ли данный символ буквой или нет.Синтаксис:
isalpha(int ch).Возвращаемое значение:
Функция возвращает ненулевое значение, если
ch – буква и ноль, если ch не буква.#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Регулярное выражение для электронной почты
Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа
#java
Подписывайтесь на канал 👉@cod_academy
Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа
@, точки и доменной зоны.#java
Подписывайтесь на канал 👉@cod_academy
🔥1
Могут ли статические функции быть виртуальными в C++?
В C++ статическая функция-член класса не может быть виртуальной.
Кроме того, статические функции-члены класса не могут быть
В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#cpp
Подписывайтесь на канал 👉@cod_academy
В C++ статическая функция-член класса не может быть виртуальной.
Кроме того, статические функции-члены класса не могут быть
const и volatile. В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#cpp
Подписывайтесь на канал 👉@cod_academy
Метод retainAll()
Используется для удаления всех элементов списка массива, не содержащихся в указанной коллекции, или для сохранения всех совпадающих элементов в текущем экземпляре
Подробнее про метод можно почитать здесь.
#java
Подписывайтесь на канал 👉@cod_academy
Используется для удаления всех элементов списка массива, не содержащихся в указанной коллекции, или для сохранения всех совпадающих элементов в текущем экземпляре
ArrayList, которые соответствуют всем элементам из списка Collection, переданного методу в качестве параметра.Подробнее про метод можно почитать здесь.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Распаковка последовательности при неизвестном числе элементов.
Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции
#python
Подписывайтесь на канал 👉@cod_academy
Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции
#python
Подписывайтесь на канал 👉@cod_academy
Алгоритм stable_partition
Упорядочивает последовательность, определенную параметрами
#cpp
Подписывайтесь на канал 👉@cod_academy
Упорядочивает последовательность, определенную параметрами
start и end, так, чтобы все элементы, для которых предикат возвращал true, предшествовали тем, для которых предикат возвращает false. Разметка стабильная. Это означает, что относительный порядок последовательности сохраняется.#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода 📢
13 мая в 20:00 МСК в OTUS пройдёт открытый вебинар «DI и жизненный цикл модулей во Flutter на yx_scope».
Что разберём
— yx_scope vs Kiwi, Injector, Auto Injector, Scope — когда и почему выигрывает первое решение
— Безопасное DI на этапе компиляции — без глобальных синглтонов
— Гибкий lifecycle — как избежать утечек памяти при навигации
— Интеграция yx_scope в многомодульный интернет‑магазин (live‑код)
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex. 23 года опыта: full‑stack (Flutter/Python/Kotlin/Go/C++), DevOps, системное администрирование. Контрибьютор ReOpenLDAP, автор серий вебинаров по Kubernetes и кроссплатформенной разработке, приглашённый преподаватель в ИТМО.
Кому будет полезно
— Flutter‑инженерам, которые ищут чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим проекты с десятками экранов и активной навигацией
— Тем, кто хочет ускорить релизы, сохраняя контроль над памятью и зависимостями
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов так, чтобы память оставалась под контролем
— Масштабировать фичи, не переписывая DI‑слой
Участие бесплатное. Мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
13 мая в 20:00 МСК в OTUS пройдёт открытый вебинар «DI и жизненный цикл модулей во Flutter на yx_scope».
Что разберём
— yx_scope vs Kiwi, Injector, Auto Injector, Scope — когда и почему выигрывает первое решение
— Безопасное DI на этапе компиляции — без глобальных синглтонов
— Гибкий lifecycle — как избежать утечек памяти при навигации
— Интеграция yx_scope в многомодульный интернет‑магазин (live‑код)
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex. 23 года опыта: full‑stack (Flutter/Python/Kotlin/Go/C++), DevOps, системное администрирование. Контрибьютор ReOpenLDAP, автор серий вебинаров по Kubernetes и кроссплатформенной разработке, приглашённый преподаватель в ИТМО.
Кому будет полезно
— Flutter‑инженерам, которые ищут чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим проекты с десятками экранов и активной навигацией
— Тем, кто хочет ускорить релизы, сохраняя контроль над памятью и зависимостями
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов так, чтобы память оставалась под контролем
— Масштабировать фичи, не переписывая DI‑слой
Участие бесплатное. Мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
#java
Подписывайтесь на канал 👉@cod_academy
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Осталось 2 дня до вебинара! Успейте зарегистрироваться ⌛️
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода
🗓 13 мая, 20:00 МСК — открытый вебинар OTUS
Коротко о программе
— yx_scope vs Kiwi / Injector / Auto Injector / Scope — покажем, где выигрывает yx_scope
— Безопасное DI на этапе компиляции, никаких глобальных синглтонов
— Гибкий lifecycle: как избежать утечек памяти при навигации
— Live-код: интегрируем yx_scope в многомодульный интернет-магазин
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта full-stack и DevOps.
Кому зайдёт
— Flutter-инженерам, ищущим чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим большие проекты с активной навигацией
— Всем, кто хочет ускорить релизы и держать память под контролем
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов без утечек
— Масштабировать фичи без переписывания DI-слоя
Участие бесплатное, мест всё меньше.
→ Регистрируйтесь сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода
🗓 13 мая, 20:00 МСК — открытый вебинар OTUS
Коротко о программе
— yx_scope vs Kiwi / Injector / Auto Injector / Scope — покажем, где выигрывает yx_scope
— Безопасное DI на этапе компиляции, никаких глобальных синглтонов
— Гибкий lifecycle: как избежать утечек памяти при навигации
— Live-код: интегрируем yx_scope в многомодульный интернет-магазин
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта full-stack и DevOps.
Кому зайдёт
— Flutter-инженерам, ищущим чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим большие проекты с активной навигацией
— Всем, кто хочет ускорить релизы и держать память под контролем
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов без утечек
— Масштабировать фичи без переписывания DI-слоя
Участие бесплатное, мест всё меньше.
→ Регистрируйтесь сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Методов списков list
Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы.
1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.
2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.
Таким образом,
3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.
#python
Подписывайтесь на канал 👉@cod_academy
Напоминаю, списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы.
1. list.append(x) – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.
2. list.insert(i, x) – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.
Таким образом,
list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x).3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.
#python
Подписывайтесь на канал 👉@cod_academy
👍1
Алгоритм merge
Объединяет две отсортированные последовательности, ограниченные диапазонами
Шаблон:
#cpp
Подписывайтесь на канал 👉@cod_academy
Объединяет две отсортированные последовательности, ограниченные диапазонами
[first1,last1) и [first2,last2), в единую отсортированную последовательность, начинающуюся с позиции result.Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).#cpp
Подписывайтесь на канал 👉@cod_academy
❤1👍1
Интеллект внутри: делаем умные Flutter‑приложения с ML и AI 🤖
20 мая в 20:00 МСК OTUS проведёт открытый вебинар для мобильных разработчиков, которые хотят вывести свои приложения на новый уровень: жесты, эмоции, LLM‑подсказки — всё прямо на устройстве.
Что будет:
— TensorFlow Lite и ONNXRuntime — запускаем модели офлайн;
— MediaPipe — работаем с камерой, жестами и лицами;
— Интеграция OpenAI / Google AI / Hugging Face — подключаем LLM за 15 минут;
— Живой код: интернет‑магазин, в который добавляем ML‑функции шаг за шагом.
Спикер: Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта, контрибьютор ReOpenLDAP, приглашённый преподаватель ИТМО.
Участие бесплатное, места ограничены. Забронируйте прямо сейчас и добавьте AI‑магию в своё портфолио.
→ Зарегистрироваться
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
20 мая в 20:00 МСК OTUS проведёт открытый вебинар для мобильных разработчиков, которые хотят вывести свои приложения на новый уровень: жесты, эмоции, LLM‑подсказки — всё прямо на устройстве.
Что будет:
— TensorFlow Lite и ONNXRuntime — запускаем модели офлайн;
— MediaPipe — работаем с камерой, жестами и лицами;
— Интеграция OpenAI / Google AI / Hugging Face — подключаем LLM за 15 минут;
— Живой код: интернет‑магазин, в который добавляем ML‑функции шаг за шагом.
Спикер: Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта, контрибьютор ReOpenLDAP, приглашённый преподаватель ИТМО.
Участие бесплатное, места ограничены. Забронируйте прямо сейчас и добавьте AI‑магию в своё портфолио.
→ Зарегистрироваться
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Методы list в Python
Во время собеседования на вакансию
python-разработчика очень часто звучат вопросы про списки и их методы.
Мы собрали для вас часть этих методов.
1.
2.
3.
4.
#python
Подписывайтесь на канал 👉@cod_academy
Во время собеседования на вакансию
python-разработчика очень часто звучат вопросы про списки и их методы.
Мы собрали для вас часть этих методов.
1.
append() - добавляет элемент в конец списка.2.
clear() - удаляет все элементы из списка3.
copy() - делает поверхностную копию списка. Почему нужно пользоваться именно этим методом, а не присваиванием мы разбирали в другой статье.4.
count() - считает, сколько раз в списке встречается переданный аргумент. #python
Подписывайтесь на канал 👉@cod_academy
👍2
Некоторые различия между ссылками и указателями
1. Указатель может быть объявлен
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
#cpp
Подписывайтесь на канал 👉@cod_academy
1. Указатель может быть объявлен
void, а ссылка - никогда. Пример на картинке.2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
#cpp
Подписывайтесь на канал 👉@cod_academy
👍1
Через два дня — живой разбор AI в Flutter
⏰ 20 мая, 20:00 МСК. Бесплатный вебинар «Интеллект внутри: делаем умные Flutter‑приложения с ML и AI».
Почему стоит подключиться:
— увидите, как запустить нейросети офлайн без серверных счетов;
— разберётесь, чем MediaPipe лучше готовых SDK для жестов;
— научитесь подключать LLM‑подсказки к любому экрану приложения;
— получите скидку на курс «Flutter Mobile Developer».
Код пишем в прямом эфире вместе с Дмитрием Золотовым (Yandex).
Не откладывайте — регистрация закроется при наборе группы.
→ Забронировать место
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏰ 20 мая, 20:00 МСК. Бесплатный вебинар «Интеллект внутри: делаем умные Flutter‑приложения с ML и AI».
Почему стоит подключиться:
— увидите, как запустить нейросети офлайн без серверных счетов;
— разберётесь, чем MediaPipe лучше готовых SDK для жестов;
— научитесь подключать LLM‑подсказки к любому экрану приложения;
— получите скидку на курс «Flutter Mobile Developer».
Код пишем в прямом эфире вместе с Дмитрием Золотовым (Yandex).
Не откладывайте — регистрация закроется при наборе группы.
→ Забронировать место
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Сортировка методом выбора
Данный алгоритм имеет схожесть с пузырьковой сортировкой, но работает он несколько быстрее. В качестве примера возьмём ряд чисел, которые мы хотим расставить в возрастающем порядке.
Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).
Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).
#java
Подписывайтесь на канал 👉@cod_academy
Данный алгоритм имеет схожесть с пузырьковой сортировкой, но работает он несколько быстрее. В качестве примера возьмём ряд чисел, которые мы хотим расставить в возрастающем порядке.
Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).
Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).
#java
Подписывайтесь на канал 👉@cod_academy
👍2
Не знаешь на кого пойти учиться ?💥
🛑 Пройди бесплатные онлайн-курсы
🛑 Узнай о самых востребованных профессиях
🛑 Получи уникальную возможность поступить в «Алабуга Политех» после 9 или 11 класса
ПРОЙДИ КУРС ПРЯМО СЕЙЧАС!
ПРОЙДИ КУРС ПРЯМО СЕЙЧАС!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1👌1
Как читать бинарные файлы на python?
Вы можете читать бинарные файлы с помощью режима чтения "rb"
Как читать большие файлы в python?
Самый простой метод чтения больших файлов - чтение построчно. При таком методе оперативная память не забивается.
#python
Подписывайтесь на канал 👉@cod_academy
Вы можете читать бинарные файлы с помощью режима чтения "rb"
with open('index.dat', 'rb') as binary_file:
info = binary_file.read()Как читать большие файлы в python?
Самый простой метод чтения больших файлов - чтение построчно. При таком методе оперативная память не забивается.
with open('data.txt', 'r') as file:
for line in file:
print(line) #python
Подписывайтесь на канал 👉@cod_academy
👍2
Функции map(), filter() и reduce() используют, чтобы привнести в Python немного функционального программирования.
Все три из них являются удобными функциями, которые можно заменить на списки или циклы. Но они
обеспечивают более элегантный и краткий подход к некоторым задачам.
1.
2.
3.
Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).
#python
Подписывайтесь на канал 👉@cod_academy
Все три из них являются удобными функциями, которые можно заменить на списки или циклы. Но они
обеспечивают более элегантный и краткий подход к некоторым задачам.
1.
map() - функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.2.
filter() - Подобно map(), filter() принимает объект функции и итерацию и создает новый список. Как следует из названия, filter() формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.3.
reduce() - reduce работает иначе, чем map() и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).
#python
Подписывайтесь на канал 👉@cod_academy
👍1
📲 Как сделать так, чтобы пользователи всегда возвращались туда, где они остановились в приложении?
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLkF9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLkF9
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru