#46_ASM_TOS_TP
РЕГИСТРЫ xmm и ymm — используются для операций с числами с плавающей точкой и в инструкциях со многими потоками данных (SIMD).
РЕГИСТРЫ xmm и ymm — используются для операций с числами с плавающей точкой и в инструкциях со многими потоками данных (SIMD).
#47_CMPL_TP
ЭЛИЗИЯ — процесс когда компилятору разрешается упростить (сократить, оптимизировать код), например отказаться от вызова конструктора копирования и просто выполнить прямую инициализацию.
Например, в следующем случае:
ClassName objectName(ClassName(int arg));
компилятор может заменить это на:
ClassName objectName(int arg);
ЭЛИЗИЯ — процесс когда компилятору разрешается упростить (сократить, оптимизировать код), например отказаться от вызова конструктора копирования и просто выполнить прямую инициализацию.
Например, в следующем случае:
ClassName objectName(ClassName(int arg));
компилятор может заменить это на:
ClassName objectName(int arg);
#50_TOS_TP
ВИРТУАЛЬНАЯ ПАМЯТЬ.
В основе виртуальной памяти лежит идея, что у каждой программы имеется собственное адресное пространство, которое разбивается на участки, называемые СТРАНИЦАМИ.
Каждая страница представляет собой непрерывный диапазон адресов. Эти страницы отображаются на физическую память, но для запуска программы одновременное присутствие в памяти всех страниц необязательно.
Когда программа ссылается на часть своего адресного пространства, находящегося в физической памяти, аппаратное обеспечение осуществляет необходимое отображение на лету.
Когда программа ссылается на часть своего адресного пространства, которое не находится в физической памяти, ОС предупреждается о том, что необходимо получить недостающую часть и повторно выполнить потерпевшую неудачу команду.
Виртуальная память неплохо работает и в многозадачных системах, когда в памяти одновременно содержатся составные части многих программ.
Пока программа ждет считывания какой-либо собственной части, ЦП может быть отдан другому процессу.
PAGING — страничная организация виртуальной памяти.
ДИСПЕТЧЕР ПАМЯТИ (Memory Management Unit - MMU) — отображает виртуальные адреса на адреса физической памяти.
Виртуальное адресное пространство состоит из блоков фиксированного размера, называемых страницами.
Соответствующие блоки в физической памяти называются страничными блоками.
Страницы и страничные блоки имеют, как правило, одинаковые размеры. В системах используются размеры страниц от 512 байт до 1 Гбайт.
Перенос информации между оперативной памятью и диском всегда осуществляется целыми страницами.
Многие ЦП поддерживают несколько размеров страниц, которые могут быть смешаны и подобраны по усмотрению ОС.
Например, архитектура x86-64 поддерживает страницы размером 4 Кбайт, 2 Мбайт и 1 Гбайт, поэтому для пользовательских приложений можно использовать страницы размером 4 Кбайт, а для ядра — одну страницу размером 1 Гбайт.
Реальное оборудование отслеживает присутствие конкретных страниц в физической памяти за счет бита ПРИСУТСТВИЯ-ОТСУТСТВИЯ.
PAGE FAULT (ОШИБКА ОТСУТСТВИЯ СТРАНИЦЫ) — это название системного прерывания.
Оно происходит когда запрашивается страница памяти, которой нет в физической памяти.
После того как осуществлено прерывание ОС выбирает редко используемый страничный блок и сбрасывает его содержимое на диск (если оно еще не там). Затем она извлекает (также с диска) страницу, на которую была ссылка, и помещает ее в только что освободившийся страничный блок, вносит изменения в таблицы и заново запускает прерванную команду.
ВИРТУАЛЬНАЯ ПАМЯТЬ.
В основе виртуальной памяти лежит идея, что у каждой программы имеется собственное адресное пространство, которое разбивается на участки, называемые СТРАНИЦАМИ.
Каждая страница представляет собой непрерывный диапазон адресов. Эти страницы отображаются на физическую память, но для запуска программы одновременное присутствие в памяти всех страниц необязательно.
Когда программа ссылается на часть своего адресного пространства, находящегося в физической памяти, аппаратное обеспечение осуществляет необходимое отображение на лету.
Когда программа ссылается на часть своего адресного пространства, которое не находится в физической памяти, ОС предупреждается о том, что необходимо получить недостающую часть и повторно выполнить потерпевшую неудачу команду.
Виртуальная память неплохо работает и в многозадачных системах, когда в памяти одновременно содержатся составные части многих программ.
Пока программа ждет считывания какой-либо собственной части, ЦП может быть отдан другому процессу.
PAGING — страничная организация виртуальной памяти.
ДИСПЕТЧЕР ПАМЯТИ (Memory Management Unit - MMU) — отображает виртуальные адреса на адреса физической памяти.
Виртуальное адресное пространство состоит из блоков фиксированного размера, называемых страницами.
Соответствующие блоки в физической памяти называются страничными блоками.
Страницы и страничные блоки имеют, как правило, одинаковые размеры. В системах используются размеры страниц от 512 байт до 1 Гбайт.
Перенос информации между оперативной памятью и диском всегда осуществляется целыми страницами.
Многие ЦП поддерживают несколько размеров страниц, которые могут быть смешаны и подобраны по усмотрению ОС.
Например, архитектура x86-64 поддерживает страницы размером 4 Кбайт, 2 Мбайт и 1 Гбайт, поэтому для пользовательских приложений можно использовать страницы размером 4 Кбайт, а для ядра — одну страницу размером 1 Гбайт.
Реальное оборудование отслеживает присутствие конкретных страниц в физической памяти за счет бита ПРИСУТСТВИЯ-ОТСУТСТВИЯ.
PAGE FAULT (ОШИБКА ОТСУТСТВИЯ СТРАНИЦЫ) — это название системного прерывания.
Оно происходит когда запрашивается страница памяти, которой нет в физической памяти.
После того как осуществлено прерывание ОС выбирает редко используемый страничный блок и сбрасывает его содержимое на диск (если оно еще не там). Затем она извлекает (также с диска) страницу, на которую была ссылка, и помещает ее в только что освободившийся страничный блок, вносит изменения в таблицы и заново запускает прерванную команду.
#51_BASH
Команда time — используется для измерения времени выполнения команды или скрипта. Она выводит статистику по использованию процессора и других ресурсов, затраченных на выполнение указанной команды.
Синтаксис:
$ time [options] command [arguments]
Примеры.
Измерение времени выполнения команды:
$ time ls -l
Запуск скрипта и измерение времени его выполнения:
$ time ./my_script.sh
Вывод реального времени:
$ time date
Вт 12 ноя 2024 16:29:50 MSK
Опции:
-p — формат вывода в POSIX формате;
-f FORMAT, --format=FORMAT — настройка формата вывода статистики;
-a, --append — добавление результатов к существующему файлу журнала вместо перезаписи;
-o FILE, --output=FILE — сохранение результатов в указанный файл.
Пример вывода:
real 0m0.024s
user 0m0.016s
sys 0m0.008s
где:
real — общее реальное время выполнения команды;
user — время, проведённое в пользовательском режиме (код приложения);
sys — время, проведённое в ядре системы (системные вызовы).
Команда time полезна для оценки производительности команд и скриптов, особенно при оптимизации или сравнении различных подходов к решению одной и той же задачи.
Команда time — используется для измерения времени выполнения команды или скрипта. Она выводит статистику по использованию процессора и других ресурсов, затраченных на выполнение указанной команды.
Синтаксис:
$ time [options] command [arguments]
Примеры.
Измерение времени выполнения команды:
$ time ls -l
Запуск скрипта и измерение времени его выполнения:
$ time ./my_script.sh
Вывод реального времени:
$ time date
Вт 12 ноя 2024 16:29:50 MSK
Опции:
-p — формат вывода в POSIX формате;
-f FORMAT, --format=FORMAT — настройка формата вывода статистики;
-a, --append — добавление результатов к существующему файлу журнала вместо перезаписи;
-o FILE, --output=FILE — сохранение результатов в указанный файл.
Пример вывода:
real 0m0.024s
user 0m0.016s
sys 0m0.008s
где:
real — общее реальное время выполнения команды;
user — время, проведённое в пользовательском режиме (код приложения);
sys — время, проведённое в ядре системы (системные вызовы).
Команда time полезна для оценки производительности команд и скриптов, особенно при оптимизации или сравнении различных подходов к решению одной и той же задачи.
#52_ALG
ДЕРЕВО — это неориентированный граф с одним и только одним путем между любыми двумя узлами.
Самый верхний узел называется КОРНЕМ ДЕРЕВА.
Как и в генеалогическом древе, у узла могут быть потомки и предки:
ПОТОМКИ УЗЛА — все следующие за ним узлы,
ПРЕДКИ УЗЛА — все предшествующие ему узлы.
Узлы не имеющие потомков называются ЛИСТЬЯМИ.
Одно из основных свойств дерева — СБАЛАНСИРОВАННОСТЬ — одинаковое количество узлов в поддеревьях.
ДЕРЕВО — это неориентированный граф с одним и только одним путем между любыми двумя узлами.
Самый верхний узел называется КОРНЕМ ДЕРЕВА.
Как и в генеалогическом древе, у узла могут быть потомки и предки:
ПОТОМКИ УЗЛА — все следующие за ним узлы,
ПРЕДКИ УЗЛА — все предшествующие ему узлы.
Узлы не имеющие потомков называются ЛИСТЬЯМИ.
Одно из основных свойств дерева — СБАЛАНСИРОВАННОСТЬ — одинаковое количество узлов в поддеревьях.
#53_ALG
КРАСНО-ЧЕРНОЕ ДЕРЕВО - бинарное самобалансирующееся дерево должно соответствовать следующим характеристикам:
1. Все вершины дерева покрашены в КРАСНЫЙ или ЧЕРНЫЙ цвет;
2. Корень дерева всегда ЧЕРНОГО цвета;
3. Красно-черное дерево является бинарным деревом, т.е. у каждой вершины имеется не более двух сыновей (потомков) и они могут быть черными вершинами без ключей - ЛИСТЬЯМИ;
4. Потомки красной вершины всегда ЧЕРНЫЕ;
5. Для любой вершины V на любом нисходящем пути от V до листа ОДИНАКОВОЕ количество ЧЕРНЫХ ВЕРШИН.
6. ЛИСТЬЯ красно-черного дерева всегда ЧЕРНЫЕ.
Алгоритм ВСТАВКИ вершины в RBT (red-black tree) - INSERT:
Для вставки вершины X в RBT,
ЕСЛИ дерево было пустым, то просто вставляем X в дерево и красим его в ЧЕРНЫЙ цвет так как Х становиться корнем дерева, а корень должен быть черным;
ИНАЧЕ ЕСЛИ вершина подходящая на роль родителя для Х - ЧЕРНАЯ, ТО осуществляем вставку Х в дерево, красим Х в КРАСНЫЙ и на этом вставка завершается;
ИНАЧЕ ЕСЛИ вершина подходящая на роль родителя для Х - КРАСНАЯ, ТО:
ЕСЛИ ДЯДЯ икса (Х) - КРАСНЫЙ, перекрашиваем ДЯДЮ и РОДИТЕЛЯ в ЧЕРНЫЙ, А ДЕДУШКУ в КРАСНЫЙ и проверяем рекурсивно остальные вершины пока не достигнем корня или балансировки;
ЕСЛИ ДЯДЯ - ЧЕРНЫЙ, то выполняем не более 2-х поворотов и перекрашивание.
КРАСНО-ЧЕРНОЕ ДЕРЕВО - бинарное самобалансирующееся дерево должно соответствовать следующим характеристикам:
1. Все вершины дерева покрашены в КРАСНЫЙ или ЧЕРНЫЙ цвет;
2. Корень дерева всегда ЧЕРНОГО цвета;
3. Красно-черное дерево является бинарным деревом, т.е. у каждой вершины имеется не более двух сыновей (потомков) и они могут быть черными вершинами без ключей - ЛИСТЬЯМИ;
4. Потомки красной вершины всегда ЧЕРНЫЕ;
5. Для любой вершины V на любом нисходящем пути от V до листа ОДИНАКОВОЕ количество ЧЕРНЫХ ВЕРШИН.
6. ЛИСТЬЯ красно-черного дерева всегда ЧЕРНЫЕ.
Алгоритм ВСТАВКИ вершины в RBT (red-black tree) - INSERT:
Для вставки вершины X в RBT,
ЕСЛИ дерево было пустым, то просто вставляем X в дерево и красим его в ЧЕРНЫЙ цвет так как Х становиться корнем дерева, а корень должен быть черным;
ИНАЧЕ ЕСЛИ вершина подходящая на роль родителя для Х - ЧЕРНАЯ, ТО осуществляем вставку Х в дерево, красим Х в КРАСНЫЙ и на этом вставка завершается;
ИНАЧЕ ЕСЛИ вершина подходящая на роль родителя для Х - КРАСНАЯ, ТО:
ЕСЛИ ДЯДЯ икса (Х) - КРАСНЫЙ, перекрашиваем ДЯДЮ и РОДИТЕЛЯ в ЧЕРНЫЙ, А ДЕДУШКУ в КРАСНЫЙ и проверяем рекурсивно остальные вершины пока не достигнем корня или балансировки;
ЕСЛИ ДЯДЯ - ЧЕРНЫЙ, то выполняем не более 2-х поворотов и перекрашивание.
#54_Сpp
numeric_limits в C++ определяют диапазон и характеристики фундаментальных числовых типов. Это помогает предотвратить переполнение, недополнение и другие потенциальные числовые ошибки.
Для работы с numeric_limits в C++ используется шаблонный класс
std::numeric_limits
из заголовка <limits>. Он предлагает комплексную информацию о свойствах числовых типов.
numeric_limits в C++ определяют диапазон и характеристики фундаментальных числовых типов. Это помогает предотвратить переполнение, недополнение и другие потенциальные числовые ошибки.
Для работы с numeric_limits в C++ используется шаблонный класс
std::numeric_limits
из заголовка <limits>. Он предлагает комплексную информацию о свойствах числовых типов.
#55_Cpp
Оператор "->" в определении функции в C++ указывает завершающий возвращаемый тип.
Его можно использовать для явного указания типов возвращаемых значений для лямбда-выражений или для указания типов возвращаемых значений, которые зависят от параметров функции.
Оператор "->" в определении функции в C++ указывает завершающий возвращаемый тип.
Его можно использовать для явного указания типов возвращаемых значений для лямбда-выражений или для указания типов возвращаемых значений, которые зависят от параметров функции.
#56_Cpp
std::exchange — это функция из стандартной библиотеки C++, определённая в заголовке <utility> или <algorithm>.
Она выполняет обмен значениями между двумя параметрами, возвращая старое значение.
Например, после выполнения кода
int x{3};
int y{22};
int z = std::exchange(x, y);
переменной x будет присвоено значение y, а переменной z — значение, которое x имело изначально. Т.о. в приведенном примере x получит значение 22, а z получит значение 3.
std::exchange была введена в C++14. Её можно использовать, например, при реализации операторов назначения перемещения и конструкторов перемещения.
Синтаксис функции:
std::exchange(old, new);
У неё два параметра: параметр, который нужно установить, и параметр, с помощью которого нужно установить первый параметр. В качестве результата функция возвращает старое значение установленного параметра old.
std::exchange — это функция из стандартной библиотеки C++, определённая в заголовке <utility> или <algorithm>.
Она выполняет обмен значениями между двумя параметрами, возвращая старое значение.
Например, после выполнения кода
int x{3};
int y{22};
int z = std::exchange(x, y);
переменной x будет присвоено значение y, а переменной z — значение, которое x имело изначально. Т.о. в приведенном примере x получит значение 22, а z получит значение 3.
std::exchange была введена в C++14. Её можно использовать, например, при реализации операторов назначения перемещения и конструкторов перемещения.
Синтаксис функции:
std::exchange(old, new);
У неё два параметра: параметр, который нужно установить, и параметр, с помощью которого нужно установить первый параметр. В качестве результата функция возвращает старое значение установленного параметра old.
#57_Cpp
range_error в C++ — исключение, которое возникает, когда полученный результат превосходит допустимый диапазон.
Оно используется при ошибках при вычислении значений с плавающей запятой, когда компьютер не может обработать значение, поскольку оно является либо слишком большим, либо слишком маленьким.
Для использования исключения range_error в C++ нужно включить в код заголовочный файл <stdexcept>
Например:
.
range_error в C++ — исключение, которое возникает, когда полученный результат превосходит допустимый диапазон.
Оно используется при ошибках при вычислении значений с плавающей запятой, когда компьютер не может обработать значение, поскольку оно является либо слишком большим, либо слишком маленьким.
Для использования исключения range_error в C++ нужно включить в код заголовочный файл <stdexcept>
Например:
#include <stdexcept>
#include <iostream>
int main() {
try {
int value = 100;
if (value < 0 || value > 50) {
// Выбрасывание исключения range_error
throw std::range_error("Value is out of range.");
}
std::cout << "Value is within the range." << std::endl;
}
catch (const std::range_error& e) {
// Ловля и обработка исключения range_error
std::cerr << "Range Error: " << e.what() << std::endl;
}
return 0;
}
.
#58_Cpp
std::forward в C++ — шаблонная функция для достижения идеальной передачи аргументов функциям с сохранением их типа (lvalue или rvalue).
Она принимает forwarding-ссылку, по шаблонному параметру T определяет, передана ей lvalue-ссылка или rvalue-ссылка, и возвращает ссылку соответствующего типа.
Назначение функции std::forward —реализация механизма идеальной передачи (perfect forwarding). Этот механизм подразумевает, что объекты, переданные в функцию в виде lvalue-выражений, должны копироваться, а объекты, переданные в функцию в виде rvalue-выражений, должны перемещаться.
Функция std::forward была введена в C++ 11 и является частью заголовочного файла <utility>
std::forward в C++ — шаблонная функция для достижения идеальной передачи аргументов функциям с сохранением их типа (lvalue или rvalue).
Она принимает forwarding-ссылку, по шаблонному параметру T определяет, передана ей lvalue-ссылка или rvalue-ссылка, и возвращает ссылку соответствующего типа.
Назначение функции std::forward —реализация механизма идеальной передачи (perfect forwarding). Этот механизм подразумевает, что объекты, переданные в функцию в виде lvalue-выражений, должны копироваться, а объекты, переданные в функцию в виде rvalue-выражений, должны перемещаться.
Функция std::forward была введена в C++ 11 и является частью заголовочного файла <utility>
#59_DB_TP
В теории баз данных CAP — это акроним от англоязычных слов Consistency (Согласованность, Целостность), Availability (Доступность) и Partition tolerance (Устойчивость к разделению).
CAP-теорема утверждает, что распределенная система хранения данных не может одновременно удовлетворять всем трем важнейшим аспектам согласованности, доступности и устойчивости к разделению.
Проще говоря, теорема CAP подчеркивает неотъемлемый компромисс в системе, где только два из этих трех основных атрибутов могут быть эффективно достигнуты в любой момент времени.
В теории баз данных CAP — это акроним от англоязычных слов Consistency (Согласованность, Целостность), Availability (Доступность) и Partition tolerance (Устойчивость к разделению).
CAP-теорема утверждает, что распределенная система хранения данных не может одновременно удовлетворять всем трем важнейшим аспектам согласованности, доступности и устойчивости к разделению.
Проще говоря, теорема CAP подчеркивает неотъемлемый компромисс в системе, где только два из этих трех основных атрибутов могут быть эффективно достигнуты в любой момент времени.
#0
Расшифровка акронимов в заголовках постов, для поиска по темам:
- ADM — администрирование;
- ALG — aлгоритмы;
- ASM — ассемблер;
- BASH — командная строка;
- Boost — коллекция библиотек С++;
- С — язык Си;
- Сpp — язык С++;
- CRYP — криптография;
- CMPL — компилирование, компиляторы;
- CS — информационная безопасность;
- DB — базы данных;
- DBG — дебаггеры и дебагинг;
- DvOp — девопс;
- IdPt — идиомы, паттерны, подходы (приемы, принятые практики, полезные советы);
- GCC — компилятор GCC;
- GIT— система контроля версий ПО;
- GO — все что связано с ЯП Golang;
- LIB — библиотеки;
- MTH — многопоточность;
- IF — интересные факты;
- NTWK — компьютерные сети;
- ODP — опросник Даниила Подольского по Golang;
- PkS — подготовка к собеседованиям;
- PPPO — принципы проектирования ПО;
- PRGM — листинги программ;
- PY — все что связано с ЯП Python;
- RUST — все что связано с ЯП Rust;
- SDS — стандартные (встроенные) структуры данных;
- STL — стандартная библиотек шаблонов С++;
- SYSCL — системные вызовы;
- TLS — инструменты для разработчика;
- TOS — теория операционных систем;
- TP — теория программирования;
- UB — неопределенное поведение;
- Vim — посты связанные с настройкой и использованием Vim.
Расшифровка акронимов в заголовках постов, для поиска по темам:
- ADM — администрирование;
- ALG — aлгоритмы;
- ASM — ассемблер;
- BASH — командная строка;
- Boost — коллекция библиотек С++;
- С — язык Си;
- Сpp — язык С++;
- CRYP — криптография;
- CMPL — компилирование, компиляторы;
- CS — информационная безопасность;
- DB — базы данных;
- DBG — дебаггеры и дебагинг;
- DvOp — девопс;
- IdPt — идиомы, паттерны, подходы (приемы, принятые практики, полезные советы);
- GCC — компилятор GCC;
- GIT— система контроля версий ПО;
- GO — все что связано с ЯП Golang;
- LIB — библиотеки;
- MTH — многопоточность;
- IF — интересные факты;
- NTWK — компьютерные сети;
- ODP — опросник Даниила Подольского по Golang;
- PkS — подготовка к собеседованиям;
- PPPO — принципы проектирования ПО;
- PRGM — листинги программ;
- PY — все что связано с ЯП Python;
- RUST — все что связано с ЯП Rust;
- SDS — стандартные (встроенные) структуры данных;
- STL — стандартная библиотек шаблонов С++;
- SYSCL — системные вызовы;
- TLS — инструменты для разработчика;
- TOS — теория операционных систем;
- TP — теория программирования;
- UB — неопределенное поведение;
- Vim — посты связанные с настройкой и использованием Vim.
DNK_C_C++_Go_Rust pinned «#0 Расшифровка акронимов в заголовках постов, для поиска по темам: - ADM — администрирование; - ALG — aлгоритмы; - ASM — ассемблер; - BASH — командная строка; - Boost — коллекция библиотек С++; - С — язык Си; - Сpp — язык С++;…»
#60_DB
Атрибут в таблицах баз данных — это значимая с точки зрения решаемой задачи характеристика (свойство, параметр) объекта. В таблице базы данных атрибуты размещаются в полях, имена полей соответствуют названию атрибута.
Некоторые типы атрибутов:
- АТРИБУТЫ ИМЕНОВАНИЯ — используются для присвоения имени экземпляру объекта данных. Например, марка и модель — атрибуты именования в объекте данных транспортного средства;
- ОПИСАТЕЛЬНЫЕ АТРИБУТЫ — применяются для описания характеристик, особенностей или взаимосвязи объекта данных. Например, в транспортном средстве цвет объекта данных — описательный атрибут, который описывает характеристики объекта;
ССЫЛОЧНЫЕ АТРИБУТЫ — используются для формализации бинарных и ассоциативных отношений и для создания ссылки на другой экземпляр в другой таблице.
Некоторые атрибуты столбцов и таблиц:
- PRIMARY KEY — задает первичный ключ таблицы, который уникально идентифицирует строку в таблице;
- AUTO_INCREMENT — позволяет указать, что значение столбца будет автоматически увеличиваться при добавлении новой строки;
- UNIQUE — указывает, что столбец может хранить только уникальные значения;
- NULL и NOT NULL — указывает может ли столбец принимать значение NULL, при определении столбца ему можно задать атрибут NULL или NOT NULL;
- DEFAULT — определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию;
- CHECK — задает ограничение для диапазона значений, которые могут храниться в столбце.
Атрибут в таблицах баз данных — это значимая с точки зрения решаемой задачи характеристика (свойство, параметр) объекта. В таблице базы данных атрибуты размещаются в полях, имена полей соответствуют названию атрибута.
Некоторые типы атрибутов:
- АТРИБУТЫ ИМЕНОВАНИЯ — используются для присвоения имени экземпляру объекта данных. Например, марка и модель — атрибуты именования в объекте данных транспортного средства;
- ОПИСАТЕЛЬНЫЕ АТРИБУТЫ — применяются для описания характеристик, особенностей или взаимосвязи объекта данных. Например, в транспортном средстве цвет объекта данных — описательный атрибут, который описывает характеристики объекта;
ССЫЛОЧНЫЕ АТРИБУТЫ — используются для формализации бинарных и ассоциативных отношений и для создания ссылки на другой экземпляр в другой таблице.
Некоторые атрибуты столбцов и таблиц:
- PRIMARY KEY — задает первичный ключ таблицы, который уникально идентифицирует строку в таблице;
- AUTO_INCREMENT — позволяет указать, что значение столбца будет автоматически увеличиваться при добавлении новой строки;
- UNIQUE — указывает, что столбец может хранить только уникальные значения;
- NULL и NOT NULL — указывает может ли столбец принимать значение NULL, при определении столбца ему можно задать атрибут NULL или NOT NULL;
- DEFAULT — определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию;
- CHECK — задает ограничение для диапазона значений, которые могут храниться в столбце.
#61_BASH_ADM
Как переименовать Linux-машину?
Чтобы изменить имя хоста в Linux, можно воспользоваться одним из следующих способов:
$ sudo hostnamectl set-hostname <newhostname>.
Для того чтобы изменения вступили в силу требуется перезагрузка.
$ hostnamectl
или
& hostname
(чтобы просмотреть текущее имя хоста).
$ sudo hostname <newhostname>
(для временного изменения имени хоста).
Изменение имени хоста вступит в силу сразу же, перезагрузка не требуется.
Как переименовать Linux-машину?
Чтобы изменить имя хоста в Linux, можно воспользоваться одним из следующих способов:
$ sudo hostnamectl set-hostname <newhostname>.
Для того чтобы изменения вступили в силу требуется перезагрузка.
$ hostnamectl
или
& hostname
(чтобы просмотреть текущее имя хоста).
$ sudo hostname <newhostname>
(для временного изменения имени хоста).
Изменение имени хоста вступит в силу сразу же, перезагрузка не требуется.
#62_BASH_ADM
Для вывода в терминале версии OC можно воспользоваться следующими командами:
$ cat /etc/issue
или
$ lsb_release -d
$ lsb_release -a
Для вывода в терминале версии OC можно воспользоваться следующими командами:
$ cat /etc/issue
или
$ lsb_release -d
$ lsb_release -a
#63_BASH_ADM
IPCALC — это утилита, которая может выполнять простые манипуляции с адресами IPv4. Если вы просто наберете ipcalc без каких-либо параметров ввода, это даст хороший вывод «справки» с некоторыми примерами, которые очень полезны для начала работы.
Инструмент ipcalc можно применять для следующих задач:
- проверить IP-адрес;
- показать рассчитанный широковещательный адрес;
- отображение имени хоста, определенного через DNS;
- отображение сетевого адреса или префикса.
Команда имеет следующий общий вид:
$ ipcalc [options] ADDRESS [ [/]] [NETMASK] .
Опции:
-n (--nocolor) - подавить вывод цветов;
-b (--nobinary) - подавить поразрядный вывод;
-c (--class) - показать маску сети по адресу;
-h (--html) - показать результаты в HTML;
-v (--version) - показать версию программы;
-s (--split n1 n2 n3) - разделить сети по размеру n1, n2, n3;
-r (--range) - исключить диапазон адресов;
--help - помощь.
Особенности ipcalc:
- ipcalc выдает двоичные эквиваленты для каждого адреса, что помогает лучше визуализировать адреса;
- пробел в двоичном представлении разделяет сетевую и хостовую часть адреса;
- нельзя указывать в качестве ввода двоичную форму адреса.
IPCALC вычисляет информацию об IP-адресах и сетях:
$ ipcalc [arguments]
Она принимает на вход IP-адрес и маску сети и на выходе получает:
- адрес сети,
- Cisco wildcard маску,
- широковещательный адрес,
- минимальный хост,
- максимальный хост,
- общее количество хостов.
Также ipcalc может использоваться в качестве учебного пособия для представления результатов подсетей в простых для понимания двоичных значениях.
IPCALC — это утилита, которая может выполнять простые манипуляции с адресами IPv4. Если вы просто наберете ipcalc без каких-либо параметров ввода, это даст хороший вывод «справки» с некоторыми примерами, которые очень полезны для начала работы.
Инструмент ipcalc можно применять для следующих задач:
- проверить IP-адрес;
- показать рассчитанный широковещательный адрес;
- отображение имени хоста, определенного через DNS;
- отображение сетевого адреса или префикса.
Команда имеет следующий общий вид:
$ ipcalc [options] ADDRESS [ [/]] [NETMASK] .
Опции:
-n (--nocolor) - подавить вывод цветов;
-b (--nobinary) - подавить поразрядный вывод;
-c (--class) - показать маску сети по адресу;
-h (--html) - показать результаты в HTML;
-v (--version) - показать версию программы;
-s (--split n1 n2 n3) - разделить сети по размеру n1, n2, n3;
-r (--range) - исключить диапазон адресов;
--help - помощь.
Особенности ipcalc:
- ipcalc выдает двоичные эквиваленты для каждого адреса, что помогает лучше визуализировать адреса;
- пробел в двоичном представлении разделяет сетевую и хостовую часть адреса;
- нельзя указывать в качестве ввода двоичную форму адреса.
IPCALC вычисляет информацию об IP-адресах и сетях:
$ ipcalc [arguments]
Она принимает на вход IP-адрес и маску сети и на выходе получает:
- адрес сети,
- Cisco wildcard маску,
- широковещательный адрес,
- минимальный хост,
- максимальный хост,
- общее количество хостов.
Также ipcalc может использоваться в качестве учебного пособия для представления результатов подсетей в простых для понимания двоичных значениях.