💡Стек или куча?
🤔 Живет ли переменная на стеке вызовов, или она динамически выделена в куче?
В большинстве случаев вам не стоит беспокоиться об этом. Go собирает мусор и автоматически очищает неиспользуемые переменные.
Однако сборка мусора имеет свою цену, поэтому чем меньше выделений делает ваш код, тем быстрее он может работать.
📌 Как узнать, выделяется ли переменная в куче?
Некоторые операции по умолчанию вызывают выделение памяти в куче и поэтому легко обнаруживаются и исправляются. Вот несколько примеров:
🔸Строковые переменные неизменяемы. Конкатенация двух строк приводит к новой аллокации и сборке мусора. В качестве альтернативы можно использовать
🔸Срезы, которые растут за пределы своей емкости, реаллоцируются. Решение: предварительно выделить срез с помощью
🔸Когда функция создает локальную переменную и возвращает указатель на эту переменную, переменная должна быть выделена в куче.
📌 Однако есть ситуации, когда выделения в куче неочевидны. Подумайте об указателях, скрытых внутри других типов данных, таких как срезы или мапы. Или рассмотрите массивы. Если массив слишком большой, чтобы жить на стеке, он выделяется в куче.
📌 Как найти эти случаи выделения в куче?
Запустите или скомпилируйте свой код с флагом сборки мусора "
#tip
🤔 Живет ли переменная на стеке вызовов, или она динамически выделена в куче?
В большинстве случаев вам не стоит беспокоиться об этом. Go собирает мусор и автоматически очищает неиспользуемые переменные.
Однако сборка мусора имеет свою цену, поэтому чем меньше выделений делает ваш код, тем быстрее он может работать.
📌 Как узнать, выделяется ли переменная в куче?
Некоторые операции по умолчанию вызывают выделение памяти в куче и поэтому легко обнаруживаются и исправляются. Вот несколько примеров:
🔸Строковые переменные неизменяемы. Конкатенация двух строк приводит к новой аллокации и сборке мусора. В качестве альтернативы можно использовать
strings.Builde
r.🔸Срезы, которые растут за пределы своей емкости, реаллоцируются. Решение: предварительно выделить срез с помощью
make()
.🔸Когда функция создает локальную переменную и возвращает указатель на эту переменную, переменная должна быть выделена в куче.
📌 Однако есть ситуации, когда выделения в куче неочевидны. Подумайте об указателях, скрытых внутри других типов данных, таких как срезы или мапы. Или рассмотрите массивы. Если массив слишком большой, чтобы жить на стеке, он выделяется в куче.
📌 Как найти эти случаи выделения в куче?
Запустите или скомпилируйте свой код с флагом сборки мусора "
-
m", и команда Go выведет заметку каждый раз, когда переменная перемещается или уходит со стека в кучу:go run -gcflags "-m"
или
go tools compile -m
#tip
❤8
🔥 Пройди подробный ТУР по Golang с примерами (английский язык)
Это материал для разработчиков среднего уровня, имеющих некоторый опыт работы с другими языками программирования и желающих изучить язык Go. Мы считаем, что этот материал идеально подходит для тех, кто хочет начать изучение Go или получить более глубокое представление о языке и его внутреннем устройстве.
💎 Чат: ссылка
Подробнее: https://tour.ardanlabs.com/tour/list
Это материал для разработчиков среднего уровня, имеющих некоторый опыт работы с другими языками программирования и желающих изучить язык Go. Мы считаем, что этот материал идеально подходит для тех, кто хочет начать изучение Go или получить более глубокое представление о языке и его внутреннем устройстве.
💎 Чат: ссылка
Подробнее: https://tour.ardanlabs.com/tour/list
👍4👎1🔥1
⚙️Три паттерна конкурентного кода: гайд для Go-разработчика
Часто для погружения в ту или иную тему необходима мотивация — например, можно в проекте увидеть странное поведение кода, которое вызывает больше вопросов, чем ответов.
Именно так получилось у автора статьи. Он встретил логику ограничения потоков выполнения, основанную на результате выполнения функции
Это подходит под паттерн с параллельными вычислениями на одном процессоре, но использовалось для ограничения количества одновременных запросов к удаленному серверу.
👉 Читать
Часто для погружения в ту или иную тему необходима мотивация — например, можно в проекте увидеть странное поведение кода, которое вызывает больше вопросов, чем ответов.
Именно так получилось у автора статьи. Он встретил логику ограничения потоков выполнения, основанную на результате выполнения функции
GOMAXPROCS(0)
, которая по умолчанию будет равна runtime.NumCPU
. Это подходит под паттерн с параллельными вычислениями на одном процессоре, но использовалось для ограничения количества одновременных запросов к удаленному серверу.
👉 Читать
❤4
Нарезаем массивы правильно в Go
💎 Чат: ссылка
Второй очерк из цикла приключений в мире сусликов.
Это вторая статья серии небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. Напоминаю, что в статьях есть примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
Подробнее: https://habr.com/ru/post/597521/
💎 Чат: ссылка
Второй очерк из цикла приключений в мире сусликов.
Это вторая статья серии небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. Напоминаю, что в статьях есть примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
Подробнее: https://habr.com/ru/post/597521/
🔥4👍1
📕 System Design Blueprint: The Ultimate Guide.
Шаблон-шпаргалка для решения различных проблем системного дизайна на собеседованиях.
В нем кратко затронуты следующие вопросы:
- Балансировка нагрузки
- API
- Коммуникационные протоколы
- CDN
- База данных
- Кэш
- Очередь сообщений
- Генерация уникальных идентификаторов
- Масштабируемость
- Доступность
- Производительность
- Безопасность
- Отказоустойчивость
- И многое другое
@golangprofi
Шаблон-шпаргалка для решения различных проблем системного дизайна на собеседованиях.
В нем кратко затронуты следующие вопросы:
- Балансировка нагрузки
- API
- Коммуникационные протоколы
- CDN
- База данных
- Кэш
- Очередь сообщений
- Генерация уникальных идентификаторов
- Масштабируемость
- Доступность
- Производительность
- Безопасность
- Отказоустойчивость
- И многое другое
@golangprofi
👍6😁2🤔1
🎮 Dendy - это эмулятор NES/Famicom, написанный на Go и названный в честь советского клона Famicom, который был у многих в детстве.
▪️ Github
@golangprofi
$ go install github.com/maxpoletaev/dendy/cmd/dendy@latest
▪️ Github
@golangprofi
🔥5👍2
✅Можно ли быстро научиться разрабатывать веб-приложения?
Да! С помощью языка Golang.
А точнее – с помощью курса «Golang Developer. Basic». Пройдите обучение и приступайте к разработке уже через пять месяцев.
Курс ведут эксперты-разработчики из крупных компаний. Перенимайте реальный опыт, практикуйтесь и дополняйте портфолио.
После обучения вы подтвердите квалификацию и получите свидетельство государственного образца.
Программа подходит для людей без опыта программирования.
Старт занятий – 27 марта.
👉Регистрируйтесь и получите доступ к бесплатным урокам, которые познакомят вас с форматом и содержанием нашего обучения: https://otus.pw/fbcu0/
💪Для опытных разработчиков есть курс Golang Developer. Professional. Регистрация на курс доступна после прохождения бесплатного вступительного теста: https://otus.pw/B9JP/?erid=LjN8KNaj4
Да! С помощью языка Golang.
А точнее – с помощью курса «Golang Developer. Basic». Пройдите обучение и приступайте к разработке уже через пять месяцев.
Курс ведут эксперты-разработчики из крупных компаний. Перенимайте реальный опыт, практикуйтесь и дополняйте портфолио.
После обучения вы подтвердите квалификацию и получите свидетельство государственного образца.
Программа подходит для людей без опыта программирования.
Старт занятий – 27 марта.
👉Регистрируйтесь и получите доступ к бесплатным урокам, которые познакомят вас с форматом и содержанием нашего обучения: https://otus.pw/fbcu0/
💪Для опытных разработчиков есть курс Golang Developer. Professional. Регистрация на курс доступна после прохождения бесплатного вступительного теста: https://otus.pw/B9JP/?erid=LjN8KNaj4
👎4🤡3🤯1
👣 Sipgo
SIPGO - это библиотека для написания быстрых SIP-сервисов (интернет-звонки) на
Поддерживаемые протоколы
▪️ UDP
▪️TCP
▪️ TLS
▪️ WS
▪️WSS
🖥Github
SIPGO - это библиотека для написания быстрых SIP-сервисов (интернет-звонки) на
GO
.Поддерживаемые протоколы
▪️ UDP
▪️TCP
▪️ TLS
▪️ WS
▪️WSS
🖥Github
🎉4👍1🔥1
📢Работаете с небольшим технологическим стеком и не знаете, как дальше пробиваться на IT-рынке?
А теперь представьте, что вы:
🔹на профессиональном уровне пользуетесь востребованным в 2024 году языком
🔹попадаете в среду с низкой конкуренцией между разработчиками
🔹дополняете портфолио ценной разработкой в сфере микросервисов
🔹расширяете компетенции и можете претендовать на повышение
Выходите на новый уровень с помощью курса «Golang Developer. Professional»!
✅ Обучайтесь на реальных задачах разработчиков
✅ Изучайте не только синтаксис языка, но и внутренние механизмы
✅ Исследуйте случаи, когда крупные проекты переводили на Golang с других языков программирования
🗓Начало занятий – 28 марта.
Курс можно приобрести в рассрочку.
👉Пройдите небольшой тест прямо сейчас и узнайте, готовы ли вы к расширению своих карьерных возможностей: https://vk.cc/cuGPZb
А теперь представьте, что вы:
🔹на профессиональном уровне пользуетесь востребованным в 2024 году языком
🔹попадаете в среду с низкой конкуренцией между разработчиками
🔹дополняете портфолио ценной разработкой в сфере микросервисов
🔹расширяете компетенции и можете претендовать на повышение
Выходите на новый уровень с помощью курса «Golang Developer. Professional»!
✅ Обучайтесь на реальных задачах разработчиков
✅ Изучайте не только синтаксис языка, но и внутренние механизмы
✅ Исследуйте случаи, когда крупные проекты переводили на Golang с других языков программирования
🗓Начало занятий – 28 марта.
Курс можно приобрести в рассрочку.
👉Пройдите небольшой тест прямо сейчас и узнайте, готовы ли вы к расширению своих карьерных возможностей: https://vk.cc/cuGPZb
Столбцы таблицы Excel
Сложность: Низкая
Условие : на вход подается номер столбца, необходимо конвертировать его в буквенное представление, которое будет использоваться в таблице-Excel.
Пример:
Ввод:
Вывод: "
Ввод:
Вывод: "
▪️Решение
Пишите свое решение в комментариях👇
Сложность: Низкая
Условие : на вход подается номер столбца, необходимо конвертировать его в буквенное представление, которое будет использоваться в таблице-Excel.
Пример:
Ввод:
columnNumber
= 1Вывод: "
A
"Ввод:
columnNumber
= 28Вывод: "
AB
"▪️Решение
Пишите свое решение в комментариях👇
LeetCode
Excel Sheet Column Title - LeetCode
Can you solve this real interview question? Excel Sheet Column Title - Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
Example…
For example:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
Example…
😁3👍1🥰1
🖥 grape
HTTP библиотека на Go , использующая современные технологии: slog, новый маршрутизатор 1.22 и другие возмоности языка.
Grape - это обертка вокруг стандартной библиотеки, предоставляющая полезные функции для более быстрой и простой разработки. Д
обавляет всего одну зависимость в ваши проекты.
▪️Github
HTTP библиотека на Go , использующая современные технологии: slog, новый маршрутизатор 1.22 и другие возмоности языка.
Grape - это обертка вокруг стандартной библиотеки, предоставляющая полезные функции для более быстрой и простой разработки. Д
обавляет всего одну зависимость в ваши проекты.
go get -u github.com/hossein1376/grape@latest
▪️Github
👍4🤮2😁1💩1
Как углубить свои знания об архитектуре ПО всего за пару часов?
Прийти на бесплатный практический урок «Тактики работы с обнаруживаемостью в архитектуре программного обеспечения» от OTUS. На вебинаре разберём:
- что такое observability и почему это важно для бизнеса;
- как использовать инструменты мониторинга и алертинга для повышения обнаруживаемости;
- принципы и практические примеры использования USE и RED;
- четыре золотых сигнала, которые помогут оптимизировать работу с обнаруживаемостью.
Встречаемся 6 марта в 20:00 мск в рамках курса «Software Architect». Доступна рассрочка на обучение!
Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cuPPLH
Прийти на бесплатный практический урок «Тактики работы с обнаруживаемостью в архитектуре программного обеспечения» от OTUS. На вебинаре разберём:
- что такое observability и почему это важно для бизнеса;
- как использовать инструменты мониторинга и алертинга для повышения обнаруживаемости;
- принципы и практические примеры использования USE и RED;
- четыре золотых сигнала, которые помогут оптимизировать работу с обнаруживаемостью.
Встречаемся 6 марта в 20:00 мск в рамках курса «Software Architect». Доступна рассрочка на обучение!
Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cuPPLH
👍1