LibCode»Блог

LibCode — это библиотека кода и знаний для разработчиков, где каждый найдет полезные ресурсы, уроки и инструменты для создания и совершенствования своих проектов.

MySQL | PHP | Python | C++ | JavaScript

Создано при поддержке GigaChat.

C++: Оптимизация и производительность

Цель урока:
Познакомиться с методами оптимизации кода в C++ и научиться анализировать производительность.

Что мы узнаем:
  • Методы оптимизации кода.
  • Профилирование и анализ производительности.
  • Использование инструментов для оптимизации.

Теоретическая часть:

Методы оптимизации кода


Оптимизация кода может значительно улучшить производительность программы. Вот несколько методов:
  • Использование встроенных функций: Компилятор может оптимизировать код, если использовать встроенные функции.
  • Минимизация копирования: Избегайте ненужного копирования данных.
  • Использование констант: Используйте константы вместо переменных, если это возможно.

Пример оптимизации:
const int num = 10;

Профилирование и анализ производительности


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

Пример использования std::chrono для измерения времени:
#include <chrono>

auto start = std::chrono::high_resolution_clock::now();
// Ваш код
auto end =
...

C++: Работа с графикой и OpenGL

Цель урока:
Познакомиться с 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 =
...

PHP: Динамические свойства

Создание динамических свойств в PHP — это практика добавления новых свойств классу во время выполнения программы, без предварительного объявления этих свойств в определении класса. Несмотря на то, что раньше это считалось нормальным поведением, начиная с версии PHP 8.2, такой подход объявлен устаревшим и в ближайшем будущем будет полностью запрещён.

Что такое динамические свойства?


Динамическое свойство — это свойство класса, которое создаётся "на ходу", без предварительного объявления в определении класса. Ранее PHP позволял добавлять такие свойства в любом месте программы, что могло приводить к путанице и трудно обнаруживаемым ошибкам.

Пример старого стиля:
class User {}

$user = new User();
$user->name = "Иван"; // Динамическое создание свойства
echo $user->name; // выведет "Иван"

Почему это устарело?


Создание динамических свойств признано устаревшим по ряду веских причин:
  1. Потеря прозрачности кода: Без явного объявления свойств сложно понять, какие свойства реально существуют в
...

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,
...

C++: Многопоточность и параллельное программирование

Цель урока:
Познакомиться с многопоточностью в C++ и научиться создавать параллельные программы.

Что мы узнаем:
  • Что такое многопоточность и как её использовать.
  • Создание и управление потоками.
  • Синхронизация потоков.

Теоретическая часть:

Что такое многопоточность?


Многопоточность позволяет выполнять несколько задач одновременно, что может значительно повысить производительность программы.

Пример создания потока:
#include <thread>

void printHello() {
    std::cout << "Привет из потока!" << std::endl;
}

int main() {
    std::thread t(printHello);
    t.join();
    return 0;
}

Представленный код демонстрирует простой пример использования потоков (std::thread) в C++.

Шаги программы:
  1. Объявление функции:
    Функция printHello() выводит сообщение "Привет из потока!":
    void printHello() {
        std::cout << "Привет из потока!" << std::endl;
    }
  2. Создание потока:
    В основной функции main создается объект типа std::thread, передающий функцию printHello() в качестве аргумента. Это запускает выполнение
...