Статьи
Как масштабирование WhatsApp до 1 миллиарда пользователей с помощью всего 50 инженеров
Инженерная культура
- Делайте вещи небольшими (наличие меньшего количества серверов означает, что меньше вещей ломается, что облегчает работу команды).
- Делайте вещи простыми (Только достаточно разработки,избегайте чрезмерных инвестиций в системы и компоненты, сосредоточьтесь на создании ровно столько, сколько необходимо для масштабируемости, безопасности и надежности.)
- Сосредоточьтесь на миссии (предназначенной для предоставления основного коммуникационного приложения с отличным пользовательским интерфейсом.избегайте лишних наворотов и не внедряйте функции, которые исключительно не сосредоточены на основном коммуникации.)
Почему у вас могут быть миллионы горутин, но только тысячи потоков Java
- JVM делегирует потоки потокам операционной системы. Go реализует собственный планировщик, который позволяет запускать множество горутин в одном потоке ОС.
- JVM по умолчанию использует стек размером 1 МБ на поток. Стеки Go имеют динамический размер, и новая горутина будет иметь стек размером около 4 КБ.
Обучение с недостаточным количеством данных, часть 1: частично контролируемое обучение
Я потратил 720 долларов США на 100 блокнотов от Alibaba и начал бизнес на бумажном веб-сайте
Автор использует NLP API для создания веб-сайта, который принимает изображения и превращает их в сообщения в блоге.
Учебники
Различные способы добавления комментариев на ваш статический сайт
Визуальное руководство по использованию эффектов — очистки
Выполнение HTTP-запросов с помощью сокетов в Python
HTTP — это прикладной протокол. В основном это означает, что HTTP сам по себе не может использоваться для передачи информации в/из удаленной конечной точки. Вместо этого он опирается на базовый протокол, которым в случае HTTP является TCP.
С другой стороны, сокеты — это API, который предоставляет большинство операционных систем для связи с сетью. API сокетов поддерживает различные протоколы от транспортного уровня и ниже.
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(("www.example.com", 80)) sock.send(b"GET / HTTP/1.1\r\nHost:www.example.com\r\n\r\n") response = sock.recv(4096) sock.close() print(response.decode())
чтобы исправить блокирующий сокет, мы можем:
- отключить постоянное HTTP-соединение
- 2) установить тайм-аут на сокете
- 3) прочитайте заголовки ответа HTTP, чтобы определить, когда выйти
Инструменты
codepng — превратите свой код в потрясающие картинки.
Microdiff — крошечная (в настоящее время ‹1 КБ), быстрая библиотека для сравнения объектов и массивов с нулевой зависимостью. Он значительно быстрее, чем большинство других библиотек для глубокого сравнения, и имеет полную поддержку TypeScript.
AppFlowyАльтернатива концепции открытого исходного кода
it-dependsIt-Depends — это инструмент для автоматического построения графа зависимостей и спецификации программного обеспечения (SBOM) для пакетов и произвольных репозиториев исходного кода.
Не по теме
Изготовление табурета из фиванской решетки
Избыточность — это жизнь, за исключением случаев, когда это смерть
Когда у самолета больше двигателей, это не делает его более безопасным