LibCode
LibCode — это библиотека кода и знаний для разработчиков, где каждый найдет полезные ресурсы, уроки и инструменты для создания и совершенствования своих проектов.
MySQL | PHP | Python | C++ | JavaScript
Создано при поддержке GigaChat.
MySQL | PHP | Python | C++ | JavaScript
Создано при поддержке GigaChat.
Блог :: 49 минут назад
PHP традиционно ассоциируется с однопоточным исполнением, что накладывает серьёзные ограничения на разработку высокопроизводительных приложений. В рамках классического подхода каждая HTTP-запрос исполняется последовательно, что приводит к значительным задержкам при обработке больших объёмов данных или длительных операциях.
Однако в ряде ситуаций требуется одновременное исполнение нескольких задач параллельно. Это может понадобиться для:
Потоки (Threads)
PHP изначально не поддерживает многопоточное исполнение на низком уровне, как в языках типа Java или Go. Однако существуют различные подходы для эмуляции параллельного выполнения задач:
Пример использования pcntl_fork():
...
Однако в ряде ситуаций требуется одновременное исполнение нескольких задач параллельно. Это может понадобиться для:
- Ускорения выполнения длинных операций (например, импорта данных, обработки изображений).
- Распараллеливания сетевых запросов (API-вызовы, загрузки файлов).
- Асинхронной обработки событий (рассылка уведомлений, email-уведомления).
Параллельное выполнение задач в PHP
Потоки (Threads)
PHP изначально не поддерживает многопоточное исполнение на низком уровне, как в языках типа Java или Go. Однако существуют различные подходы для эмуляции параллельного выполнения задач:
- Fork-процессов: создание копий текущего процесса с помощью функции
pcntl_fork(). - Process Control Extension: библиотечные расширения, такие как pthreads, Parallel или ReactPHP, которые добавляют возможность многопроцессорной обработки.
- Параллельный вызов CLI-версии PHP: использование оболочки для параллельной обработки задач.
Пример использования pcntl_fork():
$pid = pcntl_fork();
if ($pid == -1) {
die('Error creating child process');
} elseif ($pid) {
// Родительский процесс
pcntl_wait($status); // Ждать завершения дочернего процесса
echo "Parent process- Жалоба
Блог :: 2 часа назад
Одной из самых полезных и недооценённых функций JavaScript является метод
Метод reduce() проходит по каждому элементу массива и накапливает результат предыдущего шага в специальном аккумуляторе. Результатом выполнения метода является конечное значение аккумулятора.
Синтаксис метода reduce()
Функция обратного вызова имеет четыре аргумента:
1. Суммирование элементов массива
2. Нахождение максимального элемента
3. Преобразование массива объектов в объект
...
reduce(). Этот метод позволяет последовательно обработать элементы массива и свести их к одному значению, которое можно использовать далее. С помощью reduce() решаются самые разные задачи: суммирование, фильтрация, сортировка и многое другое.Суть метода reduce()
Метод reduce() проходит по каждому элементу массива и накапливает результат предыдущего шага в специальном аккумуляторе. Результатом выполнения метода является конечное значение аккумулятора.
Синтаксис метода reduce()
arr.reduce(callback[, initialValue])callback— функция обратного вызова, выполняющаяся на каждом шаге итерации.initialValue— начальное значение аккумулятора (необязательно).
Функция обратного вызова имеет четыре аргумента:
function callback(acc, currentValue, index, arr) {
// acc — аккумулированное значение
// currentValue — текущий элемент массива
// index — индекс текущего элемента
// arr — оригинальный массив
}Примеры использования
1. Суммирование элементов массива
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, val) => acc + val, 0);
console.log(sum); // Output: 152. Нахождение максимального элемента
const nums = [5, 3, 9, 1, 11];
const maxNum = nums.reduce((prevMax, currVal) => Math.max(prevMax, currVal));
console.log(maxNum); // Output: 113. Преобразование массива объектов в объект
const users = [{ id: 1, name: 'John' }, { id: 2, name: 'Alice' }];
const userMap =
Блог :: 2 часа назад
Destructuring (Деструктуризация) — это одна из полезных возможностей, появившихся в ES6 (EcmaScript 2015), которая позволяет быстро и удобно извлекать значения из массивов и объектов. Она помогает сделать код более лаконичным и выразительным.
Destructuring — это способ присваивания переменных из массива или объекта. Она позволяет легко получить доступ к свойствам объекта или элементам массива и присвоить их значения другим переменным.
Синтаксис деструктуризации:
1. Деструктуризация массивов
2. Деструктуризация объектов
3. Переименование свойств
4. Default values
5. Nested destructuring
...
Что такое деструктуризация?
Destructuring — это способ присваивания переменных из массива или объекта. Она позволяет легко получить доступ к свойствам объекта или элементам массива и присвоить их значения другим переменным.
Синтаксис деструктуризации:
- Массивы:
const [first, second] = array;. - Объекты:
const { prop1, prop2 } = object;.
Примеры использования деструктуризации
1. Деструктуризация массивов
const fruits = ["Apple", "Banana", "Cherry"];
const [firstFruit, secondFruit] = fruits;
console.log(firstFruit); // "Apple"
console.log(secondFruit); // "Banana"2. Деструктуризация объектов
const person = { name: "John", age: 30 };
const { name, age } = person;
console.log(name); // "John"
console.log(age); // 303. Переименование свойств
const user = { fullName: "Jane Smith", birthYear: 1990 };
const { fullName: name, birthYear: year } = user;
console.log(name); // "Jane Smith"
console.log(year); // 19904. Default values
const config = { theme: "dark" };
const { theme = "light", language = "English" } = config;
console.log(theme); // "dark"
console.log(language); // "English"5. Nested destructuring
const nestedObj = { profile: { name: "Bob", age: 25 } };
const { profile: { name, age } } = nestedObj;
console.log(name); //
Блог :: 12 часов назад
Template literals (шаблонные строки) — это мощная и удобная возможность JavaScript, представленная в ES6 (EcmaScript 2015). Они позволяют создавать динамические строки, легко вставлять переменные и выражения, а также выводить строки в несколько строк без использования специальных символов.
Шаблонные строки — это строки, заключенные в обратные кавычки (
1. Простая подстановка переменных
2. Multiline строки
3. Вставка выражений
4. Tagged Templates
...
Что такое шаблонные строки?
Шаблонные строки — это строки, заключенные в обратные кавычки (
`), которые позволяют вставлять переменные и выражения непосредственно в строку с помощью синтаксиса ${expression}.Преимущества шаблонных строк
- Подстановка переменных: легко вставлять переменные и выражения прямо в строку.
- Multiline строки: строки могут быть разбиты на несколько строк без использования специальных символов (
\n). - Tagged templates: возможность применить функцию к строке, что позволяет расширить возможности использования строк.
Примеры использования шаблонных строк
1. Простая подстановка переменных
const name = "John";
const greeting = `Hello, ${name}!`;
console.log(greeting); // "Hello, John!"2. Multiline строки
const poem = `
Розовый куст расцветает весной,
Солнце сияет, прохладный покой.
`;
console.log(poem);3. Вставка выражений
const price = 10;
const taxRate = 0.15;
const totalPrice = `Total Price: \$${price * (1 + taxRate)}`;
console.log(totalPrice); // Total Price: $11.54. Tagged Templates
function highlight(strings, ...values) {
return strings.raw[0].trim() + "<b>" + values.join("</b>\n<b>") + "</b>";
}
const list = highlight`Item 1\nItem 2\nItem
Блог :: 31.10.2025 07:19:10 am
Стрелочные функции (arrow functions) — это новая особенность JavaScript, представленная в ES6 (EcmaScript 2015). Они существенно упростили объявление функций, сделали код более лаконичным и убрали необходимость работы с контекстом (
Стрелочные функции — это укороченный синтаксис для объявления функций, который позволяет писать более компактный и читаемый код. Они выглядят так:
1. Короткий синтаксис
Стрелочные функции сокращают количество символов и делают код чище. Сравните:
2. Implicit returns
Если тело функции состоит из одного выражения, можно убрать фигурные скобки и оператор return. Значение выражения автоматически вернется:
3. Связывание контекста (this)
Одна из ключевых особенностей стрелочных функций — это автоматическое связывание контекста (
4. No pro...
this).Что такое стрелочные функции?
Стрелочные функции — это укороченный синтаксис для объявления функций, который позволяет писать более компактный и читаемый код. Они выглядят так:
// Обычная функция
function greet(name) {
return `Hello, ${name}!`;
}
// Стрелочная функция
const greet = (name) => `Hello, ${name}!`;Особенности стрелочных функций
1. Короткий синтаксис
Стрелочные функции сокращают количество символов и делают код чище. Сравните:
// До ES6
var squares = [1, 2, 3].map(function(num) {
return num * num;
});
// После ES6
const squares = [1, 2, 3].map(num => num * num);2. Implicit returns
Если тело функции состоит из одного выражения, можно убрать фигурные скобки и оператор return. Значение выражения автоматически вернется:
const add = (a, b) => a + b;3. Связывание контекста (this)
Одна из ключевых особенностей стрелочных функций — это автоматическое связывание контекста (
this). В отличие от обычных функций, стрелочные функции берут this из внешнего контекста:
const obj = {
name: "John",
greet: () => `Hello, ${this.name}`, // this будет undefined в strict mode
};
// Лучше использовать обычную функцию
const obj = {
name: "John",
greet() {
return `Hello, ${this.name}`;
},
};4. No pro...
Блог :: 31.10.2025 07:06:33 am
ES6 (EcmaScript 2015) и последующие версии принесли в JavaScript множество новых возможностей, которые значительно упростили разработку и повысили производительность. В этой статье мы рассмотрим основные нововведения, появившиеся в ES6 и последующих версиях (ES7, ES8 и позже), и как они влияют на современный JavaScript.
1. Стрелочные функции (Arrow Functions)
Стрелочные функции — это более короткий и удобный способ объявления функций. Они позволяют избежать проблем с областью видимости переменной
2. Шаблонные строки (Template Literals)
Шаблонные строки позволяют удобно вставлять переменные и выражения в строки, используя обратные кавычки (
3. Разрушающее присваивание (Destructuring)
Разрушающее присваивание позволяет легко извлекать значения из массивов и объектов.
4. Rest и Spread операторы
Операторы Rest (
5. Модули (Modules)
ES6 представил механизм модулей, позволяющий разделять код на отдельные файлы и импортировать...
Ключевые нововведения ES6+
1. Стрелочные функции (Arrow Functions)
Стрелочные функции — это более короткий и удобный способ объявления функций. Они позволяют избежать проблем с областью видимости переменной
this.
// До ES6
var square = function(num) {
return num * num;
};
// После ES6
const square = num => num * num;2. Шаблонные строки (Template Literals)
Шаблонные строки позволяют удобно вставлять переменные и выражения в строки, используя обратные кавычки (
`) и синтаксис ${expression}.
const name = "Alice";
const greeting = `Hello, ${name}!`;3. Разрушающее присваивание (Destructuring)
Разрушающее присваивание позволяет легко извлекать значения из массивов и объектов.
const person = {firstName: "John", lastName: "Doe"};
const {firstName, lastName} = person;4. Rest и Spread операторы
Операторы Rest (
...) и Spread (...) позволяют легко работать с коллекциями и параметрами функций.
// Rest
function sum(...args) {
return args.reduce((acc, curr) => acc + curr, 0);
}
// Spread
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];5. Модули (Modules)
ES6 представил механизм модулей, позволяющий разделять код на отдельные файлы и импортировать...
Блог :: 30.10.2025 06:40:23 am
Функция preg_match() в PHP — это мощный инструмент для поиска и сопоставления строк с регулярными выражениями. Она позволяет осуществлять сложные операции по проверке и извлечению данных из строк, что делает её незаменимой при обработке текстовой информации.
Функция preg_match() выполняет поиск регулярного выражения в строке и возвращает количество совпадающих результатов. Если найдено хотя бы одно совпадение, возвращается
Синтаксис функции:
1. Простая проверка наличия строки
Проверка наличия телефонного номера в строке:
Результат:
2. Извлечение данных
Извлечение электронной почты из строки:
...
Что делает функция preg_match()?
Функция preg_match() выполняет поиск регулярного выражения в строке и возвращает количество совпадающих результатов. Если найдено хотя бы одно совпадение, возвращается
1, если совпадений нет — 0, а в случае ошибки — false.Синтаксис функции:
preg_match(pattern, subject, matches, flags, offset)pattern: регулярное выражение, которое нужно искать.subject: строка, в которой ведется поиск.matches(необязательный): массив, в который сохраняются найденные совпадения.flags(необязательный): флаги, влияющие на поиск (например,PREG_OFFSET_CAPTURE).offset(необязательный): позиция в строке, с которой начинается поиск.
Примеры использования функции preg_match()
1. Простая проверка наличия строки
Проверка наличия телефонного номера в строке:
$string = "Телефон: +7 (999) 123-45-67";
$pattern = "/\+\d{1,3}\s*$\d{3}$\s*\d{3}-\d{2}-\d{2}/";
if (preg_match($pattern, $string)) {
echo "Телефон найден!";
} else {
echo "Телефона нет.";
}
Результат:
Телефон найден!
2. Извлечение данных
Извлечение электронной почты из строки:
$string = "Контакт: ivan.petrovski@gmail.com";
$pattern = "/[\w.-]+@[a-z\d.-]+\.[a-z]{2,4}/";
preg_match($pattern, $string, $match);
echo $match[0]; //
Блог :: 29.10.2025 08:39:52 pm
Функция array_filter() в PHP — это удобный инструмент для фильтрации элементов массива по заданному условию. Она позволяет избирательно удалять или оставлять элементы массива, основываясь на определенном критерии. Это делает её незаменимой при обработке данных и очистке массивов от ненужных элементов.
Функция array_filter() принимает массив и, при необходимости, функцию обратного вызова (callback), которая определяет, какие элементы массива должны остаться, а какие — удалены. Результатом работы функции является новый массив, содержащий только те элементы, которые прошли фильтрацию.
Синтаксис функции:
1. Простая фильтрация массива чисел
Оставляем только нечётные числа:
Результат:
2. Фильтрация ассоциативного массива
Оставляем только элементы с ненулевыми значениями:
Резуль...
Что делает функция array_filter()?
Функция array_filter() принимает массив и, при необходимости, функцию обратного вызова (callback), которая определяет, какие элементы массива должны остаться, а какие — удалены. Результатом работы функции является новый массив, содержащий только те элементы, которые прошли фильтрацию.
Синтаксис функции:
array_filter(array, callable_function, flags)array: исходный массив, который нужно отфильтровать.callable_function(необязательный): функция обратного вызова, которая принимает элемент массива и возвращает true, если элемент должен остаться, и false, если элемент должен быть удалён.flags(необязательный): флаги, управляющие обработкой ключей массива.
Примеры использования функции array_filter()
1. Простая фильтрация массива чисел
Оставляем только нечётные числа:
$numbers = [1, 2, 3, 4, 5];
$oddNumbers = array_filter($numbers, fn($num) => $num % 2 !== 0);
print_r($oddNumbers);Результат:
Array
(
[0] =>1
[2] =>3
[4] => 5
)2. Фильтрация ассоциативного массива
Оставляем только элементы с ненулевыми значениями:
$data = ["apple" => 1, "banana" => 0, "cherry" => 3];
$filteredData = array_filter($data);
print_r($filteredData);Резуль...
Блог :: 29.10.2025 08:26:39 pm
Функция explode() в PHP — это мощный инструмент для обработки строк, который позволяет разбить строку на массив по указанному разделителю. Это одна из самых популярных и часто используемых функций в PHP, которая находит применение в различных сценариях, от парсинга CSV-файлов до обработки адресов электронной почты.
Функция explode() принимает строку и разделитель, затем разбивает строку на части по указанному разделителю и возвращает массив полученных фрагментов.
Синтаксис функции:
1. Простое разбиение строки
Разделение строки по пробелам:
Результат:
2. Разбиение строки с ограничением
Разделение строки на 2 части:
Результат:
3. Отрицательный limit
Оставляем все элементы, кроме последнего:
Результат:
Что делает функция explode()?
Функция explode() принимает строку и разделитель, затем разбивает строку на части по указанному разделителю и возвращает массив полученных фрагментов.
Синтаксис функции:
explode(separator, string, limit)separator: строка, по которой будет происходить разбиение.string: исходная строка, подлежащая разбиению.limit(необязательный): максимальное количество элементов в результирующем массиве. Если указан отрицательныйlimit, то функция вернёт все элементы, кроме последнихabs(limit)элементов.
Примеры использования функции explode()
1. Простое разбиение строки
Разделение строки по пробелам:
$str = "Привет, мир!";
$arr = explode(" ", $str);
print_r($arr);Результат:
Array
(
[0] => Привет,
[1] => мир!
)2. Разбиение строки с ограничением
Разделение строки на 2 части:
$str = "один,два,три,четыре";
$arr = explode(",", $str, 2);
print_r($arr);Результат:
Array
(
[0] => один
[1] => два,три,четыре
)3. Отрицательный limit
Оставляем все элементы, кроме последнего:
$str = "один,два,три,четыре";
$arr = explode(",", $str, -1);
print_r($arr);Результат:
Array
(
[0] => один
[1] => два
[2] => три
)Практ
...
Блог :: 26.10.2025 06:38:18 am
Цель урока:
Создать небольшой проект, объединяющий все изученные навыки и знания.
Что мы узнаем:
Теоретическая часть:
Выберите тему, которая вам интересна, например, веб-приложение, анализ данных или автоматизация задач.
Создайте план проекта, определите необходимые шаги и функции.
Напишите код, используя все изученные навыки.
Практическая часть:
Задача 1: Создайте веб-приложение с Flask.
Задача 2: Создайте анализ данных с помощью Pandas.
Итог урока:
Сегодня мы создали практический проект, объединив все изученные навыки. Эти знания помогут вам создавать более сложные и функциональные программы.
Создать небольшой проект, объединяющий все изученные навыки и знания.
Что мы узнаем:
- Как применить полученные знания на практике.
- Как структурировать и организовать код.
- Как тестировать и отлаживать проект.
Теоретическая часть:
Выбор темы проекта
Выберите тему, которая вам интересна, например, веб-приложение, анализ данных или автоматизация задач.
Планирование проекта
Создайте план проекта, определите необходимые шаги и функции.
Реализация проекта
Напишите код, используя все изученные навыки.
Практическая часть:
Задача 1: Создайте веб-приложение с Flask.
#include <iostream>
int main() {
std::cout << "Привет, мир!" << std::endl;
return 0;
}Задача 2: Создайте анализ данных с помощью Pandas.
#include <iostream>
int main() {
std::cout << "Привет, мир!" << std::endl;
return 0;
}Итог урока:
Сегодня мы создали практический проект, объединив все изученные навыки. Эти знания помогут вам создавать более сложные и функциональные программы.
Блог :: 25.10.2025 03:10:24 pm
Цель урока:
Познакомиться с методами оптимизации кода в C++ и научиться анализировать производительность.
Что мы узнаем:
Теоретическая часть:
Оптимизация кода может значительно улучшить производительность программы. Вот несколько методов:
Пример оптимизации:
Профилирование позволяет анализировать производительность программы и находить узкие места.
Пример использования
Инструменты, такие как
Пример использования
Практическая часть:
Задача 1: Создайте программу и измерьте её время выполнения.
...
Познакомиться с методами оптимизации кода в C++ и научиться анализировать производительность.
Что мы узнаем:
- Методы оптимизации кода.
- Профилирование и анализ производительности.
- Использование инструментов для оптимизации.
Теоретическая часть:
Методы оптимизации кода
Оптимизация кода может значительно улучшить производительность программы. Вот несколько методов:
- Использование встроенных функций: Компилятор может оптимизировать код, если использовать встроенные функции.
- Минимизация копирования: Избегайте ненужного копирования данных.
- Использование констант: Используйте константы вместо переменных, если это возможно.
Пример оптимизации:
const int num = 10;Профилирование и анализ производительности
Профилирование позволяет анализировать производительность программы и находить узкие места.
Пример использования
std::chrono для измерения времени:
#include <chrono>
auto start = std::chrono::high_resolution_clock::now();
// Ваш код
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = end - start;
std::cout << "Время выполнения: " << elapsed.count() << " секунд" << std::endl;Использование инструментов для оптимизации
Инструменты, такие как
valgrind и gprof, помогают анализировать производительность и находить утечки памяти.Пример использования
valgrind:
valgrind --leak-check=full ./your_programПрактическая часть:
Задача 1: Создайте программу и измерьте её время выполнения.
#include <chrono>
auto start =
Блог :: 24.10.2025 07:22:24 am
Цель урока:
Познакомиться с OpenGL и научиться создавать простые графические приложения.
Что мы узнаем:
Теоретическая часть:
OpenGL — это кросс-платформенный API для работы с графикой. Он позволяет создавать 2D и 3D графику.
Пример инициализации OpenGL:
Для создания окна и рендеринга графики используются библиотеки GLFW и GLEW.
Пример рендеринга треугольника:
...
Познакомиться с OpenGL и научиться создавать простые графические приложения.
Что мы узнаем:
- Что такое OpenGL и как его использовать.
- Создание окна и рендеринг графики.
- Работа с вершинами и примитивами.
Теоретическая часть:
Что такое OpenGL?
OpenGL — это кросс-платформенный API для работы с графикой. Он позволяет создавать 2D и 3D графику.
Пример инициализации OpenGL:
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main() {
glfwInit();
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
glewInit();
while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}Создание окна и рендеринг графики
Для создания окна и рендеринга графики используются библиотеки GLFW и GLEW.
Пример рендеринга треугольника:
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main() {
glfwInit();
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);
glfwMakeContextCurrent(window);
glewInit();
float vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
GLuint VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
Блог :: 23.10.2025 07:02:21 pm
Создание динамических свойств в PHP — это практика добавления новых свойств классу во время выполнения программы, без предварительного объявления этих свойств в определении класса. Несмотря на то, что раньше это считалось нормальным поведением, начиная с версии PHP 8.2, такой подход объявлен устаревшим и в ближайшем будущем будет полностью запрещён.
Динамическое свойство — это свойство класса, которое создаётся "на ходу", без предварительного объявления в определении класса. Ранее PHP позволял добавлять такие свойства в любом месте программы, что могло приводить к путанице и трудно обнаруживаемым ошибкам.
Пример старого стиля:
Создание динамических свойств признано устаревшим по ряду веских причин:
Что такое динамические свойства?
Динамическое свойство — это свойство класса, которое создаётся "на ходу", без предварительного объявления в определении класса. Ранее PHP позволял добавлять такие свойства в любом месте программы, что могло приводить к путанице и трудно обнаруживаемым ошибкам.
Пример старого стиля:
class User {}
$user = new User();
$user->name = "Иван"; // Динамическое создание свойства
echo $user->name; // выведет "Иван"Почему это устарело?
Создание динамических свойств признано устаревшим по ряду веских причин:
- Потеря прозрачности кода: Без явного объявления свойств сложно понять, какие свойства реально существуют в классе, что затрудняет чтение и сопровождение кода.
- Трудности статического анализа: Современные IDE и инструменты статического анализа не могут адекватно обрабатывать классы с динамическими свойствами, что ухудшает качество автодополнения и рефакторинга.
- Возможность ошибок: Отсутствие явного объявления свойств увеличивает вероятность случайного создания нового свойства вместо использования существующего, что приводит к трудноуловимым багам.
- Совместимость с новыми стандартами: Новые стандарты PHP (PSR
Блог :: 22.10.2025 06:39:34 am
Цель урока:
Познакомиться с сетевым программированием в C++ и научиться создавать клиент-серверные приложения.
Что мы узнаем:
Теоретическая часть:
Сокеты — это интерфейс для взаимодействия с сетью. Они позволяют создавать клиент-серверные приложения.
Пример создания сокета:
Серверное приложение принимает соединения от клиентов и обрабатывает запросы.
Пример серверного приложения:
Данный фрагмент кода демонстрирует создание простого TCP-сервера на языке программирования C++. Рассмотрим пошагово каждую часть кода:
Ключевые компоненты программы:
Познакомиться с сетевым программированием в C++ и научиться создавать клиент-серверные приложения.
Что мы узнаем:
- Что такое сокеты и как их использовать.
- Создание клиент-серверных приложений.
- Обработка сетевых запросов.
Теоретическая часть:
Что такое сокеты?
Сокеты — это интерфейс для взаимодействия с сетью. Они позволяют создавать клиент-серверные приложения.
Пример создания сокета:
#include <sys/socket.h>
#include <netinet/in.h>
int sock = socket(AF_INET, SOCK_STREAM, 0);Создание серверного приложения
Серверное приложение принимает соединения от клиентов и обрабатывает запросы.
Пример серверного приложения:
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = INADDR_ANY;
bind(sock, (sockaddr*)&server_addr, sizeof(server_addr));
listen(sock, 5);
int client_sock = accept(sock, NULL, NULL);
char buffer[1024];
recv(client_sock, buffer, sizeof(buffer), 0);
std::cout << buffer << std::endl;
close(client_sock);
close(sock);
return 0;
}Данный фрагмент кода демонстрирует создание простого TCP-сервера на языке программирования C++. Рассмотрим пошагово каждую часть кода:
Ключевые компоненты программы:
- Создание сокета (socket()):
int sock = socket(AF_INET, SOCK_STREAM, 0);
Создается сокет типаSOCK_STREAM, раб
Блог :: 21.10.2025 07:18:20 am
Цель урока:
Познакомиться с многопоточностью в C++ и научиться создавать параллельные программы.
Что мы узнаем:
Теоретическая часть:
Многопоточность позволяет выполнять несколько задач одновременно, что может значительно повысить производительность программы.
Пример создания потока:
Представленный код демонстрирует простой пример использования потоков (
Шаги программы:
Что происходит?
Познакомиться с многопоточностью в C++ и научиться создавать параллельные программы.
Что мы узнаем:
- Что такое многопоточность и как её использовать.
- Создание и управление потоками.
- Синхронизация потоков.
Теоретическая часть:
Что такое многопоточность?
Многопоточность позволяет выполнять несколько задач одновременно, что может значительно повысить производительность программы.
Пример создания потока:
#include <thread>
void printHello() {
std::cout << "Привет из потока!" << std::endl;
}
int main() {
std::thread t(printHello);
t.join();
return 0;
}Представленный код демонстрирует простой пример использования потоков (
std::thread) в C++.Шаги программы:
- Объявление функции:
ФункцияprintHello()выводит сообщение"Привет из потока!":void printHello() { std::cout << "Привет из потока!" << std::endl; } - Создание потока:
В основной функцииmainсоздается объект типаstd::thread, передающий функциюprintHello()в качестве аргумента. Это запускает выполнение функции в отдельном потоке исполнения:std::thread t(printHello); - Присоединение потока:
Методjoin()ожидает завершения потока, прежде чем продолжить выполнение основного потока:t.join(); - Завершение программы:
После завершения потока программа завершается нормально:return 0;
Что происходит?
- Когда поток запускается командой
std::thread t(printHello);, создаётся новый поток, выполняющий функциюprintHello. - Основной поток ждёт завершения дочернего потока с помощью метода
join(), после чего завершает
Блоги
PHP традиционно ассоциируется с однопоточным исполнением, что накладывает серьёзные ограничения на разработку высокопроизводительных приложений. В...
Одной из самых полезных и недооценённых функций JavaScript является метод reduce(). Этот метод позволяет последовательно обработать элементы массива...
Destructuring (Деструктуризация) — это одна из полезных возможностей, появившихся в ES6 (EcmaScript 2015), которая позволяет быстро и удобно...
Темы
2 ответа
1 ответ
2 ответа
3 ответа
4 ответа
Ссылки
Web Мастерская
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт,...
Реклама





