Computer Science
الذهاب إلى القناة على Telegram
По всем вопросам: @altmainf Уважаемый менеджер: @altaiface
إظهار المزيد7 713
المشتركون
-324 ساعات
-117 أيام
-6130 أيام
أرشيف المشاركات
7 713
Получи грант на обучение в Центральном университете
Центральный университет выдает гранты на 4 года обучения в бакалавриате. Гранты покрывают 100%, 75%, 50% и 25% стоимости обучения.
Участвуй в отборе, чтобы получить грант. Подай заявку, пройди онлайн-тест на математическое и логическое мышление, а затем прими участие в бизнес-игре. Попытки не ограничены.
Для выпускников 11-х классов и колледжей.
Подать заявку
#реклама
apply.centraluniversity.ru
О рекламодателе
7 713
«Битый сектор» или «бэд сектор»
Сталкиваясь с понятиями «битый сектор» или начинающие пользователи обычно понимают, что речь идет о какой-то серьезной проблеме, но не понимают как эту проблему решать.
Допустим, что жесткий диск вашего компьютера подвергся низкоуровневому форматированию на заводе-изготовителе. В результате этого процесса на магнитном носителе были созданы дорожки и сектора, которые в процессе работы компьютера используются для хранения данных. Сектора – это физически размеченные области на поверхности магнитного носителя, предназначенные для хранения данных.
Если такой сектор будет поврежден механически, то вся информация, которая в нем хранилась, будет безвозвратно утеряна.
Такие поврежденные механически сектора и называются битыми секторами. В них уже невозможно хранить данные и те данные, которые были в них записаны ранее, с большей долей вероятности восстановить не получится.
7 713
Иногда главное — не только внимание.
Превосходные подарки для самых искушенных ценителей прекрасного.
BORK. Фабрика ваших желаний.
Детали и стоимость на сайте и в мобильном приложении.
Перейти на сайт
#реклама 0+
bork.ru
О рекламодателе
7 713
Что такое хеш-таблицы?
Хеш-таблица — это контейнер для хранения пар ключей и их значений. По сути это ассоциативный массив, в котором ключ представлен в виде хеш-функции. Главное свойство hash-таблиц — три операции: вставка, поиск и удаление — в среднем выполняются за время O(1),
Принято считать, что хорошей, с точки зрения практического применения, является такая хеш-функция, которая удовлетворяет следующим условиям:
⁃ функция должна быть простой с вычислительной точки зрения;
⁃ функция должна распределять ключи в хеш-таблице наиболее равномерно;
⁃ функция не должна отображать какую-либо связь между значениями ключей в связь между значениями адресов;
⁃ функция должна минимизировать число коллизий – то есть ситуаций, когда разным ключам соответствует одно значение хеш- функции(ключи в этом случае называются синонимами ).
Выполнение операции в хеш-таблице начинается с вычисления хеш-функции от ключа.
Именно с ее помощью мы находим индекс, зная который, можно выполнить требующую операцию.
7 713
Плюсы и минусы рекурсивных функций
Плюсы:
1. Снижают время выполнения функции
Рекурсия, в сравнении с циклами, тратят меньше времени до завершении функции. Чем меньше строк кода у нас будет, тем быстрее функция будет обрабатывать вызовы внутри себя.
НО
Если функция плохо написана, то мы рискуем переполнить стек, что в конечном счете приведет к снижению скорости и программным ошибкам.
2. Легче отлаживать
Многие согласятся, что эта причина очень важна. Рекурсия проста в отладке из-за того, что она не содержит сложных и длинных конструкций.
Минусы:
3. Занимают много места
Занимают значительный объем памяти во время своего выполнения. При каждом вызове функции в стек будет добавляться новый элемент, который будет занимать место до тех пор, пока функция не завершит работу.
7 713
Рекурсия
В программирование рекурсия — вызов функции самой себя. Это используется для реализации большого спектра самых разнообразных задач связанных с перебором (перебор чисел, букв, объектов, файлов и тд).
Чтобы понять как работает рекурсия, желательно понимать как работает стек, так как реализация рекурсивных вызовов функций опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно.
Оборотной стороной этого довольно простого по структуре механизма является то, что на каждый рекурсивный вызов требуется некоторое количество оперативной памяти компьютера, и при чрезмерно большой глубине рекурсии может наступить переполнения стека вызовов.
7 713
Домены
Имена в DNS (Domain Name System) называются доменными именами или доменами. Они состоят из текстовых меток, разделенных точками. Метки могут использовать 26 букв от а до z, цифры от 0 до 9, а также дефис (-).
Например:
home-3.coding.exemple — это домен с тремя метками.
Точки обозначают иерархические поддомены. Это домены, контролируемые более коротким родительским доменом: home-3.coding.exemple является поддоменом coding.exemple. Кроме того, coding.exemple является поддоменом однокомпонентного домена exemple. Домены нечувствительны к регистру: coding.exemple и CoDing.eXamplE идентичны.
Домены из одной метки, такие как com, net, а также exemple, называются доменами высшего уровня (Top Level Domains, TLDs). Благодаря своему устройству DNS наиболее эффективен при ограниченном количестве TLD. По этой причине создание новых TLD представляет сложность.7 713
Когда следует использовать язык ассемблера
Программисты, которые пишут код на языке ассемблера, говорят, что у такого подхода есть три преимущества. Первые два очевидны: код занимает меньше места и работает быстрее. Третье не столь очевидно: если в коде есть ошибка, то она, как правило, приводит к катастрофическому сбою. На первый взгляд это не кажется преимуществом, однако сразу дает понять, что вы сделали что-то не так.
В подавляющем большинстве случаев проще работать на высокоуровневом языке. Язык ассемблера стоит использовать при работе со встроенными системами с ограниченной вычислительной мощностью, особенно когда экономия места позволяет задействовать более дешевые процессоры.
В случае создания крупномасштабных приложений экономия на процессорах может более чем компенсировать дополнительное время разработчика. Например, программы DSP (цифровой обработки сигналов) часто пишутся на языке ассемблера.
7 713
Кредит для бизнеса в Альфа-Банке
Скидка на ставку до 3,5% за подключение полезных услуг и сервисов.
Скидка до 8% при оформлении подписки на кредитные линии.
Сумма за 5 минут. Узнайте размер доступного кредита без открытия расчетного счета
Деньги сразу на счет ИП или юрлица.
Подать заявку
Финансовые услуги оказывает: АО "АЛЬФА-БАНК", АО "АльфаСтрахование"
#реклама
alfabank.ru
О рекламодателе
7 713
Принципы построения современных ОС
1. Принцип модульности
Мы говорим о системных программных модулях, которые являются программными ресурсами и могут быть распределены между выполняющимися процессами. Этот принцип отражает технологические и эксплуатационные свойства системы.
2. Принцип параметрической настраиваемости
Возможность учета ОС параметров конфигурации ВС называется параметрической настраиваемостью. ОС должна быть способна распознавать как старые, так новые устройства и обеспечивать их работу.
3. Принцип функциональной избыточности
Принцип функциональной избыточности состоит во включении в состав ОС различных программных средств, выполняющих одну и ту же функцию, но которые в различных ситуациях работают с различной эффективностью.
4. Принцип функциональной избирательности
Принцип функциональной избирательности состоит в возможности учета целей, для которых используется система. Воплощение этого принципа позволяет в зависимости от области применения сгенерировать такой вариант системы, который был бы эффективен в данном конкретном применении.
5. Принцип абстракции и виртуализации
Использование интерфейсов, отделяющие друг от друга уровни абстракции, облегчает независимую разработку аппаратных и программных подсистем силами разных групп специалистов.
7 713
Основные аспекты человеко-машинного взаимодействия:
Интерфейсы пользователя: Разработка графических интерфейсов, виртуальных клавиатур, жестов и других элементов, которые позволяют людям взаимодействовать с компьютером.
Эргономика: Изучение того, как дизайн интерфейсов может быть адаптирован к физиологии и психологии человека для обеспечения максимального комфорта и эффективности в использовании.
Ввод и вывод данных: Разработка средств ввода и вывода, таких как сенсорные экраны, голосовые команды, трекпады и т.д.
Доступность: Создание технологий, которые делают компьютерные системы доступными для людей с ограниченными возможностями.
Визуализация данных: Представление информации в удобной форме для восприятия и понимания.
Интерактивный дизайн: Разработка интерфейсов, которые стимулируют взаимодействие и обеспечивают позитивный опыт пользователей.
7 713
Хеширование
Hashing – это преобразование входного массива данных определенного типа и произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свертки, а их результаты называют хешем, хеш-кодом, хеш-таблицей или дайджестом сообщения
Хеширование является распространенным методом обеспечения быстрого доступа к информации, хранящейся во внешней памяти. Оно полезно, когда широкий диапазон возможных значений должен быть сохранен в малом объеме памяти, и нужен способ быстрого, практически произвольного доступа.
Хэш-таблицы часто применяются в базах данных, и, особенно, в языковых процессорах типа компиляторов и ассемблеров, где они повышают скорость обработки таблицы идентификаторов. В качестве использования хеширования в повседневной жизни можно привести примеры распределение книг в библиотеке по тематическим каталогам, упорядочивание в словарях по первым буквам слов, шифрование специальностей в вузах и т.д.
7 713
Требуется разработчик С++ Backend / Платформа обработки данных
ООО «Лаборатория Современных Цифровых Технологий» – Разработчик программного обеспечения
Обязанности:
• Разработка микросервисов и алгоритмов для поиска и обработки данных
• Разработка высоконагруженных сервисов для обслуживания запросов пользователей
• Разработка документации и описание используемых алгоритмов
• Разработка unit/malfunction/regression/performance тестов.
• Оптимизация кода и разработка надежного кода;
Требования:
• Имеет опыт коммерческой разработки ПО на С++ от 3 лет
• Имеет опыт работы с библиотеками Boost/STL
• Понимает принципы ООП С++ и знает базовые идиомы С++
• Владеет основами отладки кода Linux GDB
• Имеет опыт разработки TCP/IP приложений в Linux
• Умеет работать с механизмами IPC в Linux
• Имеет навыки работы с реляционными / не реляционными БД (Будет большим плюсом)
• Опыт работы в команде
• Знание SQL, умение писать и оптимизировать SQL запросы
Плюсами будут:
• Быстрая обучаемость
• Английский язык на уровне чтения документации
Условия работы:
• Оклад от 300 000 ₽;
• Уютный офис в г.Москва
• Молодой дружный коллектив профессионалов
• ДМС, официальное трудоустройство по ТК РФ
• Дистанционный или гибридный формат работы после успешного прохождения испытательного срока
• Повышение зарплаты при переходе по грейдам
• Самое важное для нас — мотивация сотрудника, желание расти, эффективное решение задач
Откликнуться на почту: hr@digtechlab.ru
7 713
Особенности удаления файлов на SSD-носителях
В SSD-накопителе, как и в HDD, данные не удаляются сразу после того, как файл был стёрт из ОС. Даже если затереть файл нулями, физически данные ещё остаются, и если чипы флэш-памяти достать и считать на программаторе – можно найти 4 КБ фрагменты файлов. Полное стирание данных стоит ждать тогда, когда на диск будет записано число данных, равное количеству свободного места + объём резерва (примерно 4 ГБ для 60 ГБ SSD). Если файл попадёт на «изношенную» ячейку, контроллер ещё не скоро перезапишет её новыми данными.
Восстановление данных с SSD-накопителей – достаточно трудоёмкий и долгий процесс, по сравнению с портативными flash-накопителями. Процесс поиска правильного порядка, объединения результатов и выбора необходимого сборщика (алгоритм/программа, полностью эмулирующая работу контроллера SSD-накопителя) для создания образа диска – нелёгкая задача.
Связано это в первую очередь с увеличением числа микросхем в составе SSD накопителя, что во много раз увеличивает число возможных вариантов действий на каждом этапе восстановления данных, каждое из которых требует проверки и специализированных знаний. Также в силу того, что к SSD предъявляются значительно более жёсткие требования по всем характеристикам (надёжность, быстродействие и т. д.), чем к мобильным флэш-накопителям, технологии и методики работы с данными, применяемые в них, достаточно сложны, что требует индивидуального подхода к каждому решению и наличия специализированных инструментов и знаний.
7 713
SSD (Solid State Drive) - это устройство хранения данных, которое использует память NAND flash для сохранения информации.
Основные принципы работы SSD:
Накопление данных в ячейках памяти NAND:
• В основе SSD лежит NAND-флэш-память, которая состоит из ячеек памяти. Эти ячейки могут хранить информацию в виде электрических зарядов.
• В зависимости от типа NAND-памяти (например, SLC, MLC, TLC, QLC), каждая ячейка может хранить один или несколько бит информации.
Блоки, страницы и циклы:
• Данные в NAND-памяти организованы в блоках, которые делятся на страницы. Блоки являются минимальной единицей для операций записи и стирания.
• Запись происходит на уровне страниц, но стирание осуществляется на уровне блоков. Это приводит к тому, что перед записью новых данных необходимо стереть целый блок, что увеличивает износ ячеек памяти.
Контроллер:
• SSD оборудован контроллером, который управляет операциями чтения, записи и стирания данных.
• Контроллер также отвечает за управление износом ячеек памяти, используя технологии, такие как TRIM, wear leveling и garbage collection.
Wear Leveling:
• Износ ячеек памяти при многократных операциях записи может быть неравномерным. Технология wear leveling используется для равномерного распределения износа по всем блокам, увеличивая таким образом срок службы SSD.
TRIM:
• Операционные системы, поддерживающие технологию TRIM, сообщают SSD, какие блоки данных больше не используются. Это помогает контроллеру оптимизировать процессы стирания и записи, улучшая производительность.
"Сборка мусора" (Garbage Collection):
• После того как данные удаляются, остаются "мусорные" блоки, которые нужно стереть перед записью новых данных. Сборка мусора - это процесс, который осуществляет контроллер для оптимизации пространства и улучшения производительности.
В результате этих принципов SSD обеспечивает более быстрый доступ к данным, чем традиционные механические жесткие диски, и имеет преимущества в плане надежности, энергопотребления и компактности.
7 713
Arduino - это открытая платформа для создания прототипов электронных устройств.
Несколько популярных моделей плат Arduino:
Arduino Uno: Это одна из самых популярных моделей. Она имеет микроконтроллер ATmega328P и набор входов/выходов для подключения различных датчиков и устройств.
Arduino Mega: Предназначена для проектов, требующих большего количества входов/выходов. Она оборудована микроконтроллером ATmega2560.
Arduino Nano: Компактная версия Arduino Uno, предназначенная для проектов, где важен небольшой размер. Она также оснащена микроконтроллером ATmega328P.
Arduino Due: Эта плата оснащена микроконтроллером SAM3X8E на базе архитектуры ARM Cortex-M3. Она предоставляет больше ресурсов для более сложных проектов.
Arduino Leonardo: Эта модель оснащена микроконтроллером ATmega32u4 и имеет встроенную поддержку USB, что делает ее подходящей для проектов, требующих взаимодействия с компьютером.
Arduino Pro Mini: Компактная и урезанная версия Arduino Uno, предназначенная для проектов, где важен небольшой размер и нет необходимости в множестве входов/выходов.
Arduino MKR серия: Это семейство плат, разработанных специально для интернета вещей (IoT). Они оборудованы различными средствами связи, такими как Wi-Fi, Bluetooth, и LoRa.
7 713
Обзор моделей Raspberry Pi:
Raspberry Pi 1 Model A и Model B:
• Raspberry Pi 1 Model A: 256 МБ оперативной памяти, один порт USB.
• Raspberry Pi 1 Model B: 512 МБ оперативной памяти, два порта USB.
Raspberry Pi 2 Model B:
• 1 ГБ оперативной памяти, четыре порта USB, более мощный процессор.
Raspberry Pi 3 Model B и Model B+:
• Raspberry Pi 3 Model B: 1 ГБ оперативной памяти, четыре порта USB, встроенный модуль Bluetooth и Wi-Fi.
• Raspberry Pi 3 Model B+: улучшенная версия с более высокими тактовыми частотами, улучшенной сетевой поддержкой и другими улучшениями.
Raspberry Pi 4 Model B:
• Доступны версии с 2, 4, или 8 ГБ оперативной памяти.
• Четыре порта USB 3.0, два порта USB 2.0, два порта micro-HDMI, более мощный процессор и графический процессор, поддержка двух мониторов, гигабитный Ethernet, поддержка 4K-видео и другие улучшения.
Raspberry Pi Zero и Raspberry Pi Zero W:
• Крайне компактные и доступные модели, предназначенные для проектов с ограниченными ресурсами.
Кроме того, у Raspberry Pi существует множество различных модулей и дополнений (HATs), которые позволяют расширять функциональность устройства.
7 713
USB 3.0:
Скорость передачи данных:
• USB 3.0 обеспечивает гораздо более высокую скорость передачи данных по сравнению с USB 2.0.
• Максимальная теоретическая скорость USB 3.0 составляет 5 Гбит/с, что в восемь раз быстрее, чем максимальная скорость USB 2.0 (480 Мбит/с).
Совместимость:
• USB 3.0 совместим с предыдущей версией (USB 2.0), что означает, что устройства USB 3.0 можно подключать к USB 2.0 портам, но в этом случае будет использоваться скорость USB 2.0.
Энергопотребление:
• USB 3.0 может предоставлять больше энергии для подключенных устройств, что полезно для зарядки и питания более мощных устройств.
USB 2.0:
Скорость передачи данных:
• Максимальная скорость передачи данных USB 2.0 составляет 480 Мбит/с, что быстрее, чем предыдущие версии, но медленнее по сравнению с USB 3.0.
Совместимость:
• USB 2.0 совместим с предыдущими версиями, но не поддерживает высокие скорости передачи данных USB 3.0.
Энергопотребление:
• Общее энергопотребление USB 2.0 ограничено, что может быть недостаточным для более мощных устройств.
USB 3.0 предоставляет значительное увеличение скорости передачи данных по сравнению с USB 2.0, что особенно важно при работе с большими файлами, например, при передаче видео или резервном копировании данных. Однако совместимость с более старыми портами USB 2.0 делает его удобным для использования с различными устройствами.
7 713
Разгон (overclocking) процессоров — процедура увеличения рабочей частоты (тактовой частоты) процессора сверх его заводских настроек. Это позволяет увеличить производительность компьютера за счет выполнения большего числа операций за секунду. Разгон может быть полезен для геймеров, разработчиков, видеомонтажеров и других пользователей, которым требуется высокая производительность. Однако разгон также сопряжен с определенными рисками и ограничениями.
Некоторые ключевые аспекты разгона процессоров:
Увеличение частоты: Разгон может включать в себя увеличение тактовой частоты процессора, которая измеряется в гигагерцах (GHz). Увеличение частоты позволяет процессору выполнять больше вычислений за секунду.
Риск повреждения: При неправильном разгоне или использовании некачественного оборудования можно повредить процессор или другие компоненты компьютера. Это может привести к потере гарантии на оборудование.
Охлаждение: Увеличение частоты процессора приводит к увеличению выделения тепла. Это требует более эффективной системы охлаждения, чтобы предотвратить перегрев компонентов.
Совместимость: Не все процессоры можно разогнать. Некоторые модели ограничивают разгон, а некоторые материнские платы и биосы предоставляют ограниченные возможности разгона.
Параметры BIOS: Разгон часто выполняется путем настройки параметров BIOS материнской платы. Это включает в себя изменение тактовой частоты процессора, напряжения и других параметров.
Программное обеспечение: Существует специальное программное обеспечение, которое может помочь вам разогнать процессор и проверить стабильность системы после разгона.
Осторожность: Разгон требует осторожности и тщательного тестирования, чтобы убедиться в стабильности системы. Некорректный разгон может привести к сбоям и потере данных.
7 713
Процессор - ключевой компонент компьютера, отвечающий за выполнение инструкций программ и управление операциями данных. Давайте рассмотрим, как устроен процессор изнутри.
Ядра процессора:
• Процессор состоит из одного или более вычислительных ядер (cores). Каждое ядро может выполнять инструкции независимо друг от друга.
• Многозадачные операции могут выполняться параллельно на разных ядрах, что увеличивает общую производительность.
Кэш-память:
• Каждое ядро обычно имеет свой набор кэш-памяти разного уровня (L1, L2, L3). Кэш-память используется для временного хранения данных и инструкций, ускоряя доступ к ним.
Управляющая единица (Control Unit):
• Управляющая единица отвечает за управление работой ядра. Она извлекает инструкции из памяти, декодирует их и управляет исполнением.
Арифметико-логическое устройство (ALU):
• ALU выполняет арифметические и логические операции. Он способен выполнять сложение, вычитание, умножение, деление и другие операции.
Регистры:
• Регистры - это маленькие, но очень быстрые области памяти, встроенные в сам процессор. Они используются для хранения промежуточных результатов, адресов и другой важной информации.
Шина данных и шина адреса:
• Шина данных передает информацию между процессором и памятью. Шина адреса определяет, куда идет эта информация в памяти.
Микроархитектура:
• Это внутренняя структура процессора, определяющая, как он реализует свою функциональность на микроуровне. Микроархитектура включает в себя организацию кэша, предикторы ветвлений и другие технологии, влияющие на производительность.
Тактовая частота:
• Тактовая частота определяет, как часто процессор выполняет операции в секунду. Высокая тактовая частота обычно свидетельствует о более быстрой обработке данных.
