Найти в Дзене
Теория

Теория

теория Go и не только Go
подборка · 13 материалов
328 читали · 1 год назад
#24 Планировщик горутин
Чтобы понять, как работает планировщик горутин, рассмотрим наглядный пример. Есть ресторан, в котором работают повара и у них множество заказов, которые необходимо приготовить. Повара в данном случае - это логические процессоры, а заказы это горутины, которые нужно обработать. Каждый повар работает только над одним заказом за раз. Аналогично этому логический процессор выполняет одну горутину. Если заказ требует длительного ожидания (например, нужно сварить 40 хинкалей), повар может начать работать над другим заказом...
525 читали · 1 год назад
#23 TCP vs UDP. Реализация на Go
Назовите разницу между протоколами TCP и UDP Этот вопрос часто встречается на собеседованиях в секции про сети или Computer Science. Важно понимать, в каких ситуациях предпочтительнее использовать TCP (Transmission Control Protocol), а в каких — UDP (User Datagram Protocol). Выбор протокола должен основываться на требованиях к приложению, особенно в контексте скорости, надежности и последовательности передачи данных. Транспортный уровень модели OSI TCP и UDP расположены на транспортном уровне (4-м уровне) модели OSI...
1229 читали · 1 год назад
#21 Отличие горутин от потоков
Горутина — блок кода, который работает асинхронно. Объявляется через оператор go перед функцией. Главной горутиной является вызов функции main. Если завершается выполнение этой функции, то завершается и выполнение всей программы. Размер Системный поток имеет блок памяти фиксированного размера (стек), который зависит от операционной системы. Например, для Windows размер стека обычно 1 МБ. В Linux размер стека для потоков, как правило, составляет от 2 до 10 МБ, в зависимости от дистрибутива и настроек ядра...
347 читали · 1 год назад
#18 Приципы SOLID в Go. Часть II
Подстановки Лисков Liskov Substitution Principle - LSP Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы. В классических ООП языках подкласс наследует функциональность родителей. В Go вместо наследования используется композиция. Структура может использовать функциональность встроенной родительской структуры, однако тип родителя или какая-либо иерархия отсутствует. То есть мы не можем просто так подставить одну структуру вместо другой...
471 читали · 1 год назад
#16 Приципы SOLID в Go. Часть I
Принцип единственной ответственности Single Responsibility Principle - SRP Структура (в оригинале класс) должна иметь только одну причину для изменения, другими словами, структура должна иметь только одну ответственность. Представьте, что есть устройство, которое и печатает, и сканирует документы. Если это устройство сломается, то придется заменить и печатающую, и сканирующую части, даже если сломалась только одна. Лучше иметь два отдельных устройства для каждой функции. В Go, можно использовать структуры и интерфейсы, чтобы обеспечить единственную ответственность...
884 читали · 1 год назад
#15 Приведение типов в Go
Чтобы убедиться, что значение переменной соответствует определенному типу или интерфейсу перед выполнением операций над ним, используют механизм приведения этого типа. Основное приведение типов Приведение типов выполняется с использованием оператора точки. Полностью выражение выглядит так x.(T), где x — это значение, которое нужно привести, а T — тип, к которому хотим привести. Если приведение прошло успешно, результатом будет базовое значение типа T, и паника если приведение не удалось. В примере переменная a интерфейсного типа принимает значение 10...