Академия Кода – Telegram
Академия Кода
2K subscribers
673 photos
2 videos
2 files
50 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Что такое «пул строк»?

Пул строк – это набор строк, хранящийся в Heap.

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

#java

Подписывайтесь на канал 👉@cod_academy
👍3
Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет.

Синтаксис:
isalpha(int ch).

Возвращаемое значение:
Функция возвращает ненулевое значение, если ch – буква и ноль, если ch не буква.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Регулярное выражение для электронной почты

Регулярные выражения представляют собой формальный язык поиска и редактирования подстрок в тексте. К примеру, надо провалидировать email адрес. Это будет проверка на наличие имени адреса, домена, символа @, точки и доменной зоны.

#java

Подписывайтесь на канал 👉@cod_academy
🔥1
Могут ли статические функции быть виртуальными в C++?

В C++ статическая функция-член класса не может быть виртуальной.

Кроме того, статические функции-члены класса не могут быть const и volatile.

В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.

#cpp

Подписывайтесь на канал 👉@cod_academy
Метод retainAll()

Используется для удаления всех элементов списка массива, не содержащихся в указанной коллекции, или для сохранения всех совпадающих элементов в текущем экземпляре ArrayList, которые соответствуют всем элементам из списка Collection, переданного методу в качестве параметра.

Подробнее про метод можно почитать здесь.

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Распаковка последовательности при неизвестном числе элементов.

Для этого в Python есть оператор звездочки – расширенная операция распаковывания последовательности. Переменной со звездочкой присваивается часть списка, содержащая все неприсвоенные элементы, соответствующие этой позиции

#python

Подписывайтесь на канал 👉@cod_academy
Алгоритм stable_partition

Упорядочивает последовательность, определенную параметрами 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
Инкапсуляция

Инкапсуляция в 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
Методов списков list

Напоминаю, списки в 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

Объединяет две отсортированные последовательности, ограниченные диапазонами [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
Методы list в Python

Во время собеседования на вакансию
python-разработчика очень часто звучат вопросы про списки и их методы.
Мы собрали для вас часть этих методов.

1. append() - добавляет элемент в конец списка.

2. clear() - удаляет все элементы из списка

3. copy() - делает поверхностную копию списка. Почему нужно пользоваться именно этим методом, а не присваиванием мы разбирали в другой статье.

4. count() - считает, сколько раз в списке встречается переданный аргумент.

#python

Подписывайтесь на канал 👉@cod_academy
👍2
Некоторые различия между ссылками и указателями

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
Сортировка методом выбора

Данный алгоритм имеет схожесть с пузырьковой сортировкой, но работает он несколько быстрее. В качестве примера возьмём ряд чисел, которые мы хотим расставить в возрастающем порядке.

Суть алгоритма заключается в последовательном переборе всех чисел и выборе наименьшего элемента, который мы возьмём и поменяем местами с крайним элементом слева (0 элементом).

Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Не знаешь на кого пойти учиться ?💥

🛑Пройди бесплатные онлайн-курсы

🛑Узнай о самых востребованных профессиях

🛑Получи уникальную возможность поступить в «Алабуга Политех» после 9 или 11 класса

ПРОЙДИ КУРС ПРЯМО СЕЙЧАС!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👌1
Как читать бинарные файлы на python?
Вы можете читать бинарные файлы с помощью режима чтения "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. 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