package main
/* Билеты по Проектированию Высоко нагруженных систем
- В этом конспекте нет автоматической грамматической проверки
- Он написан для личного пользования, исключительно для подготовки к экзамену
package main
/* Билеты по Проектированию Высоко нагруженных систем
| ############################################### | |
| # General parameters | |
| # Sets the verbosity of the program; available values are "error", "warn", "info", "debug". | |
| logLevel: debug | |
| # Destinations of log messages; available values are "stdout", "file" and "syslog". | |
| logDestinations: [stdout] | |
| # If "file" is in logDestinations, this is the file which will receive the logs. | |
| logFile: rtsp-simple-server.log |
I hereby claim:
To claim this, I am signing this object:
| apiVersion: 1 | |
| datasources: | |
| - name: prometheus | |
| type: prometheus | |
| access: proxy | |
| url: http://127.0.0.1:9090/ | |
| version: 1 | |
| isDefault: true | |
| jsonData: | |
| timeInterval: '30s' |
| import asyncio | |
| import logging | |
| import ecs_logging | |
| import sys | |
| import json | |
| from dataclasses import dataclass | |
| from typing import Callable | |
| from aiokafka import AIOKafkaConsumer, AIOKafkaProducer | |
| from aiokafka.helpers import create_ssl_context | |
| from .config import BOOTSTRAP_SERVERS # <--- that is supposed to be some valid connection string |
| package main | |
| import ( | |
| "encoding/json" | |
| "fmt" | |
| "os" | |
| yaml "gopkg.in/yaml.v2" | |
| ) |
| #include <atomic> | |
| #include <condition_variable> | |
| #include <deque> | |
| #include <functional> | |
| #include <iostream> | |
| #include <memory> | |
| #include <mutex> | |
| #include <thread> | |
| extern "C" { |
| #include <sys/socket.h> | |
| #include <sys/un.h> | |
| #include <stdlib.h> | |
| #include <stdio.h> | |
| #include <string.h> | |
| #include <iostream> | |
| /*! Код без проверок, он примерный, он не важен!!! | |
| */ | |
| int create_socket() |
Приветствую тебя, читающий это. Если ты юн, неопытен и желаешь приобщиться к разработке на C++ в славном Kraftway, то ниже описано небольшое испытание, которое следует пройти, чтобы доказать свою преданность Тёмным Искусствам способность с этим самым C++ обращаться. Они несложные.
Тут две части: вопросы, на которые надо дать ответ (в виде кода) и небольшое практическое задание, максимально приближенное к тому, что программисты делают в повседневной работе.
Дисклеймер: наличие целого ряда заданий вовсе не означает, что необходимо выполнить идеально их все до единого, надо просто быть лучше остальных претендентов =)
Описанное ниже предлагается выполнить на C++ без использования сторонних библиотек, оформив в виде компилирующегося и запускающегося проекта для QMake/CMake на выбор. Использование Qt в основной части задания допускается, но не рекомендуется ограничиваться встроенными классами (очевидно, что тестовое окошко делать лучше именно на Qt, но свести всю многопоточность к вызову QtConcurrent::run было бы неправильно, что станет ясно из последующих уточнений). Проект должен быть совместим с компилятором, поддерживающим С++11, а также Qt 5.
Предлагается реализовать пул потоков, класс для одновременного многопоточного выполнения произвольных задач, а также небольшое оконное приложение для проверки работоспособности получившегося решения.
Назовём классThreadPool, он должен уметь следующее: