Бэкендошная
107 subscribers
2 photos
66 links
Канал о backend-разработке и backend-разработчиках: языки программирования, алгоритмы и структуры данных, методологии, околопрограммистские темы и никакого (ну почти) фронтенда
Download Telegram
Можно ли обогнать по производительности стандартные структуры данных из пакета atomic? Попытка дать ответ в видео

www.youtube.com/watch?v=9CFbBoMvl48

#golang
Если вам было интересно - на какие концепции опирается Docker и как под капотом устроены контейнеры, то вот отличное видео, где за двадцать минут в режиме live coding'а докладчик создает собственную реализацию контейнеров с изоляцией процессов и файловой системы от родительской ОС

https://www.youtube.com/watch?v=HPuvDm8IC-4

#golang #docker
👍1
Как работает pdqsort в Golang - алгоритм сортировки, позволяющий избежать худшего случая для quicksort

https://itnext.io/gos-new-sorting-algorithm-pdqsort-822053d7801b

#golang
На примере сортировок разбираемся - когда увеличение распараллеливания вычислений не приводит к увеличению производительности

https://convey.earth/conversation?id=44

#golang
Привет!

Сегодня я принес вам доклад про Best Practise разработки на Golang.

Докладу уже более 4х лет, но он все еще не теряет актуальности

https://www.youtube.com/watch?v=MzTcsI6tn-0

#golang
Если вы хотели начать контрибьютить в open source, но не могли найти подходящий проект, то данный репозиторий может стать отличным подспорьем в этом начинании.

В нем собраны различные issue по проектам на разных языках программирования, которые подходят в качестве вашего первого коммита в open source

https://github.com/MunGell/awesome-for-beginners

#opensource #golang #rust #php
👍1
Привет!

Неделю назад я делился лучшими практиками разработки на Golang.

Сегодня делюсь его антиподом - докладом про худшие практики разработки на Golang

https://www.youtube.com/watch?v=Jns0QgJtAYY

#golang
Если вы разрабатываете на Golang, то наверняка знаете о возможности вызова C-кода из программ на Golang через CGO

Но что если есть потребность в транспиляции C-кода в Golang для дальнейшего развития?

Для этого есть полноценная утилита - CCGO.

И основной вопрос, который возникает после подобной манипуляции - насколько полученный код на Golang будет сопоставим по скорости с CGO или даже с чистым C

Автор статьи провел эксперимент, в котором сравнил производительность кода на чистом C, CGO и результата от транспиляции через CCGO.

И его результаты могут вас удивить

https://blog.nobugware.com/post/2022/surprising-result-while-transpiling-go/

#golang #clang
Обширная статья Uber про выявленные шаблоны состояния гонки в микросервисах на Go

https://eng.uber.com/data-race-patterns-in-go/

#golang #microservices
Несмотря на то, что Golang не замечен в высоком потреблении памяти, очень полезно понимать - как она расходуется вашим приложением и не происходит ли где-то избыточных аллокаций.

Часто, оптимизации требуют сложного рефакторинга, но иногда можно обойтись совсем незначительными изменениями, которые не потребуют много ресурсов от разработчиков.

Именно про такие примеры и пойдет речь в сегодняшней статье.

https://www.ribice.ba/golang-memory-savings/

#golang
Обширная статья про некоторые неочевидные подводные камни Golang

Если вы уже знакомы с "50 Shades of Go" - это ее духовный наследник, который помимо всего приносит очень много новых ошибок новичка, на которые можно натолкнуться

https://rytisbiel.com/2021/03/06/darker-corners-of-go/

#golang
Если ваше приложение на Golang активно использует память, то вам наверняка знакома проблема, связанная с частотой запуска GC, которая вызывает частые фризы из-за STW.

По умолчанию GC начинает работать при удвоении размера аллоцируемой памяти - это значит что при небольших значениях памяти и активном ее потреблении - GC будет запускаться чаще чем хочется и приложение будет чаще фризиться.

Несколько лет назад команда Twitch активно продвигала так называемый метод балласта - когда при старте приложения аллоцируется некий объем памяти, являющийся балластом и GC все-также срабатывает при удвоении памяти, но за счет балласта, старт его работы удается значительно отсрочить.

Но метод балласта не убережет вас от OOM так как рано или поздно - удвоение памяти приведет к попытке выхода за границы физической памяти.

Для того чтобы GC срабатывал не только при изменении потребления памяти, но при достижении определенных ее значений - в Go 1.19 был введен параметр GOMEMLIMIT который позволит сделать управление стартом GC более гибким и прозрачным.

Про опыт его использования и пойдет речь в сегодняшней статье

https://weaviate.io/blog/2022/08/GOMEMLIMIT-a-Game-Changer-for-High-Memory-Applications.html

#golang
👍1
Статья про то, как можно быстро, при помощи фреймворка go-zero, сделать ваши gRPC-хэндлеры переиспользуемыми для REST-протокола без необходимости дублирования кода, при помощи декларативного описания и кодогенерации.

https://dev.to/kevwan/5-minutes-to-add-restful-apis-for-your-grpc-services-2dnl

#golang