🦦 Otter
Самая быстрая библиотека golang in-memory cache, основанная на алгоритме
Внутри используется хеш таблица, которая имеет мьютекс на каждый бакет
Также исрользуется несколько трюков для избегания частых локов политики вытеснения: при чтении используются wait-free буфферы, которые иногда могут терять данные, но так как главная задача кеша - хранить наиболее частые элементы, то потери незначительны + реализация mpsc очереди при записи, которая значительно превосходит каналы по перфомансу и принцип из статьи bp-wrapper, который коротко можно назвать "batch, batch, batch" aka кеш не обновляет политику мгновенно, а только после наполнения небольшого буффера.
Самая быстрая библиотека golang in-memory cache, основанная на алгоритме
S3-FIFO. Раюотает во много раз быстрее, чем Ristretto.Внутри используется хеш таблица, которая имеет мьютекс на каждый бакет
+ seq lock для чтения + каждый бакет помещается в две кеш линии, что предотвращает false sharing и это намногооо быстрее map с мьютексом и sync.Map. Также исрользуется несколько трюков для избегания частых локов политики вытеснения: при чтении используются wait-free буфферы, которые иногда могут терять данные, но так как главная задача кеша - хранить наиболее частые элементы, то потери незначительны + реализация mpsc очереди при записи, которая значительно превосходит каналы по перфомансу и принцип из статьи bp-wrapper, который коротко можно назвать "batch, batch, batch" aka кеш не обновляет политику мгновенно, а только после наполнения небольшого буффера.
go get -u github.com/maypok86/otter
▪️GithubВакансии для Golang-разработчиков за последние 14 дней:
✓ Golang Developer. Гибрид (Москва), до 220 000 ₽
✓ Backend разработчик. Удалённо, от 290 000 ₽
✓ Golang разработчикУдалёнка, 230–250 т.р.
✓ Golang Developer Удалёнка (РФ), 200–240 т.р.
✓ Golang Blockchain Engineer. Удалённо, 6 000–7 000 USD
✓ Golang Developer Удалённо/офис (Азербайджан, Баку), 400–500 тыс. руб.
✓ Golang Developer Гибрид/удалённо (Москва), 400 000–450 000 ₽
✓ Backend Engineer Офис, 290–310 т.р.
#подборка #go
✓ Golang Developer. Гибрид (Москва), до 220 000 ₽
✓ Backend разработчик. Удалённо, от 290 000 ₽
✓ Golang разработчикУдалёнка, 230–250 т.р.
✓ Golang Developer Удалёнка (РФ), 200–240 т.р.
✓ Golang Blockchain Engineer. Удалённо, 6 000–7 000 USD
✓ Golang Developer Удалённо/офис (Азербайджан, Баку), 400–500 тыс. руб.
✓ Golang Developer Гибрид/удалённо (Москва), 400 000–450 000 ₽
✓ Backend Engineer Офис, 290–310 т.р.
#подборка #go
❤1
Вакансии для C#/.NET разработчиков за последние 14 дней:
✓ C#/.NET-разработчик Удалёнка или гибрид (Москва), 170–200 т.р.
✓ C# Developer Удалённо (РФ), 1400$ - 2500$
✓ .NET разработчик Middle Удалённо, 240–280 т.р.
✓ C#/.NET-разработчик Удалённо/гибрид, 170–200 т.р.
✓ Fullstack QA на С# Удалённо (РФ), 250 000 - 370 000 ₽
✓ QA full stack C# Удалённо (РФ), 250 000 - 280 000 ₽
✓ .NET Backend Developer Удалённо (Бразилия), 5 000 - 6 500 $
✓ C# .NET разработчик Удалёнка, 450-500 т.р.
✓ QA Engineer C# Удалённо (РФ), 334 000 - 378 000 ₽
✓ C# developer Гибрид (Москва), до 350 000 ₽
#подборка #csharp
✓ C#/.NET-разработчик Удалёнка или гибрид (Москва), 170–200 т.р.
✓ C# Developer Удалённо (РФ), 1400$ - 2500$
✓ .NET разработчик Middle Удалённо, 240–280 т.р.
✓ C#/.NET-разработчик Удалённо/гибрид, 170–200 т.р.
✓ Fullstack QA на С# Удалённо (РФ), 250 000 - 370 000 ₽
✓ QA full stack C# Удалённо (РФ), 250 000 - 280 000 ₽
✓ .NET Backend Developer Удалённо (Бразилия), 5 000 - 6 500 $
✓ C# .NET разработчик Удалёнка, 450-500 т.р.
✓ QA Engineer C# Удалённо (РФ), 334 000 - 378 000 ₽
✓ C# developer Гибрид (Москва), до 350 000 ₽
#подборка #csharp
👎8🤔3👍1
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Golang Blockchain Engineer Удалённо, 6000–7000
✓ Golang Engineer Удалённо
✓ Golang Developer Удалённо (РФ)
✓ Go Developer Гибрид, от 5000 до 6000£
✓ Go-разработчик Удалёнка (РФ), 300–340 т.р.
✓ Golang Engineer Удалёнка, 5000 USD
✓ Ведущий Golang-разработчик. Удалённо/гибрид (Москва), от 300 000 до 350 000 ₽
✓ Go разработчик Удалёнка, 300 000 ₽
✓ Go разработчик Удалёнка, 300 000 ₽
#подборка #go
✓ Golang Blockchain Engineer Удалённо, 6000–7000
✓ Golang Engineer Удалённо
✓ Golang Developer Удалённо (РФ)
✓ Go Developer Гибрид, от 5000 до 6000£
✓ Go-разработчик Удалёнка (РФ), 300–340 т.р.
✓ Golang Engineer Удалёнка, 5000 USD
✓ Ведущий Golang-разработчик. Удалённо/гибрид (Москва), от 300 000 до 350 000 ₽
✓ Go разработчик Удалёнка, 300 000 ₽
✓ Go разработчик Удалёнка, 300 000 ₽
#подборка #go
Telegram
Вакансии Golang
Golang Blockchain Engineer
Формат: удалённо
ЗП: 6 000 – 7 000 ₵
Полная занятость
Описание: https://telegra.ph/Golang-Blockchain-Engineer-10-11
#remote #fulltime
Связаться с HR - @HRT_tech
Формат: удалённо
ЗП: 6 000 – 7 000 ₵
Полная занятость
Описание: https://telegra.ph/Golang-Blockchain-Engineer-10-11
#remote #fulltime
Связаться с HR - @HRT_tech
❤2
📌 Задача палиндром наибольшей длины, полученный с помощью соединений из слов, состоящих из двух букв.
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, которая одинаково читаются слева направо и справа налево.
Пример:
Ввод:
Объяснение:
Ввод:
Объяснение:
Ввод:
Решение
Пишите свое решение в комментариях👇
Сложность: Средняя
Условие задачи: дан массив строк, каждый элемент которого состоит из двух букв английского алфавита в нижнем регистре.
Необходимо создать палиндром наибольшей длины путем выбора некоторых элементов из массива строк и компаниовки их в любом порядке. Каждый элемент массива можно использовать не более одного раза.
В ответе надо вернуть длину такого палидрома.
Палиндром - строка, которая одинаково читаются слева направо и справа налево.
Пример:
Ввод:
words = ["lc","cl","gg"]
Вывод: 6Объяснение:
lc" + "gg" + "cl" = "lcggcl" или же "clgglc", но оба имеют максимальную длину 6. Ввод:
words = ["ab","ty","yt","lc","cl","ab"]
Вывод: 8 Объяснение:
"ty" + "lc" + "cl" + "yt" = "tylcclyt" или "lcyttycl"Ввод:
words = ["cc","ll","xx"]
Вывод: 2Решение
Пишите свое решение в комментариях👇
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Go PHP Developer. Удалёнка, $3700–4200
✓ Golang Developer. Удалёнка/гибрид/офис (Ташкент), $3200–4000
✓ Golang Developer. Удалёнка/офис (Лиссабон, Португалия), $4000–6000
✓ Tech Lead Backend-команды (Go). Удалёнка/офис, 7000–9000 €
✓ Go Developer. Удалёнка (РФ, РБ)
✓ Golang разработчик. Удалёнка/офис/гибрид
✓ Golang Разработчик. Офис/удалёнка/гибрид (Москва, Краснодар, Иннополис)
✓ Golang Developer. Гибрид
#подборка #go
✓ Go PHP Developer. Удалёнка, $3700–4200
✓ Golang Developer. Удалёнка/гибрид/офис (Ташкент), $3200–4000
✓ Golang Developer. Удалёнка/офис (Лиссабон, Португалия), $4000–6000
✓ Tech Lead Backend-команды (Go). Удалёнка/офис, 7000–9000 €
✓ Go Developer. Удалёнка (РФ, РБ)
✓ Golang разработчик. Удалёнка/офис/гибрид
✓ Golang Разработчик. Офис/удалёнка/гибрид (Москва, Краснодар, Иннополис)
✓ Golang Developer. Гибрид
#подборка #go
Telegram
Вакансии Golang
Go PHP Developer
Формат: удалённо
ЗП: $ 3700 - 4200
Полная занятость
Описание: https://telegra.ph/Go-PHP-Developer-10-25
#remote #middle #fulltime
Связаться с HR - @Mat_Rocks
Формат: удалённо
ЗП: $ 3700 - 4200
Полная занятость
Описание: https://telegra.ph/Go-PHP-Developer-10-25
#remote #middle #fulltime
Связаться с HR - @Mat_Rocks
👍1👎1
🌐 HTTP уже не тянет? В микросервисной архитектуре запросы множатся, скорость падает, а код превращается в клубок зависимостей. Настало время познакомиться с инструментом, который решает эти проблемы изящно — gRPC.
📗 На открытом уроке вы разберёте, как работает этот фреймворк, почему он вытесняет REST и как описывать API с помощью Protobuf. Вы узнаете, как обеспечить обратную совместимость между сервисами, повысить производительность и упростить взаимодействие микросервисов.
❗️После вебинара вы сможете строить быстрые и надёжные коммуникации между сервисами на Go — с чистой архитектурой и минимумом боли.
➡️ 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Professional». Регистрируйтесь и узнайте, почему gRPC становится стандартом нового поколения для Go-разработчиков: https://vk.cc/cR576N
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📗 На открытом уроке вы разберёте, как работает этот фреймворк, почему он вытесняет REST и как описывать API с помощью Protobuf. Вы узнаете, как обеспечить обратную совместимость между сервисами, повысить производительность и упростить взаимодействие микросервисов.
❗️После вебинара вы сможете строить быстрые и надёжные коммуникации между сервисами на Go — с чистой архитектурой и минимумом боли.
➡️ 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Golang Developer. Professional». Регистрируйтесь и узнайте, почему gRPC становится стандартом нового поколения для Go-разработчиков: https://vk.cc/cR576N
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤣1
Cache-Control. Простота настройки делает Reload удобным инструментом для ускорения разработки и тестирования. Она идеально подходит для разработчиков, которые хотят минимизировать рутинные задачи и сосредоточиться на создании функционального и качественного кода.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
👣 Почему сообщество #golang старается не использовать сторонние библиотеки?
Некоторые причины исторические (до
Безопасность - когда вы добавляете зависимость, вы добавляете разработчика (или команду разработчиков), с которым вы никогда не взаимодействовали, в качестве участника вашего проекта. Вы должны проанализировать библиотеку, как если бы она была написана собственными силами, и убедиться, что она соответствует вашим задачам и не несет никакого риска.
Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.
Воспроизводимые сборки - Вы можете добиться этого с помощью библиотек сторонних производителей, но чем меньше вам придется об этом беспокоиться, тем лучше.
Просто нет необходимости - Это одна из лучших причин. В Go есть замечательная стандартная библиотека, и вы можете добиться очень многого, используя ее.
Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.
Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:
- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.
👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.
@golangprofi
Некоторые причины исторические (до
Go 1.11 в Go была довольно печальная история управления зависимостями), некоторые культурные (сообщество Go пропагандирует простоту и самодостаточность), но некоторые из них, я бы сказал, являются хорошей практикой независимо от используемого языка.Безопасность - когда вы добавляете зависимость, вы добавляете разработчика (или команду разработчиков), с которым вы никогда не взаимодействовали, в качестве участника вашего проекта. Вы должны проанализировать библиотеку, как если бы она была написана собственными силами, и убедиться, что она соответствует вашим задачам и не несет никакого риска.
Сложность в поддержке - теперь вы и ваша команда должны поддерживать добавленную библиотеку в актуальном состоянии.
Воспроизводимые сборки - Вы можете добиться этого с помощью библиотек сторонних производителей, но чем меньше вам придется об этом беспокоиться, тем лучше.
Просто нет необходимости - Это одна из лучших причин. В Go есть замечательная стандартная библиотека, и вы можете добиться очень многого, используя ее.
Так когда же следует обращаться к библиотеке?
Если то, что вы хотите реализовать, является функционально сложным, имеет приемущества от поддержки сообществом и берется из надежного источника, то использование библиотеки может быть хорошим вариантом.
Примерами библиотек, которые, на мой взгляд, являются достойными для внимания:
- Библиотеки шин сообщений (Kafka, RabbitMQ и т.д.)
- Библиотеки БД (Mongo, Postgres).
- Сложные криптографические вещи алгоритмы, которые не поддерживаются стандартной библиотекой.
👇 Напишите в комментаряих о ваших любимых сторонних библиотеках.
@golangprofi
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
Она увеличивается до
Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.
Рассмотрим приведенный выше пример.
Структуры
A и B имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше. Она увеличивается до
32 байт, в то время как структура B остается меньше - 16 байт.👍4
Вакансии для Golang-разработчиков за последние 14 дней:
✓ Golang Developer. Удалёнка, 100–140 т.р.
✓ Golang Developer. Удалёнка, 1700–2300 $
✓ Go Developer. Удалёнка, 150–175 т.р.
✓ Golang Developer. Гибрид
✓ Golang Разработчик. Офис/гибрид/удалёнка (Москва, Краснодар, Иннополис)
✓ Go Developer. Удалёнка
✓ Python Go разработчик. Гибрид/офис (Москва)
✓ Golang Developer. Удалёнка/офис (Лиссабон, Португалия), 4000–6000 $
✓ Golang Developer. Удалёнка, 4000–7000 $
#подборка #go
✓ Golang Developer. Удалёнка, 100–140 т.р.
✓ Golang Developer. Удалёнка, 1700–2300 $
✓ Go Developer. Удалёнка, 150–175 т.р.
✓ Golang Developer. Гибрид
✓ Golang Разработчик. Офис/гибрид/удалёнка (Москва, Краснодар, Иннополис)
✓ Go Developer. Удалёнка
✓ Python Go разработчик. Гибрид/офис (Москва)
✓ Golang Developer. Удалёнка/офис (Лиссабон, Португалия), 4000–6000 $
✓ Golang Developer. Удалёнка, 4000–7000 $
#подборка #go
Разбираем ключевые ошибки и учимся писать Go-код правильно с самого начала.
На уроке изучим:
🔹 особенности синтаксиса
🔹 нюансы concurrency
🔹 обработки ошибок
🔹 управления памятью в Go
Вы узнаете о типичных ловушках, с которыми сталкиваются разработчики при переходе из других языков.
Покажем, как правильно использовать концепции языка и не сломать себе мозг, разбираясь с горутинами.
Освоив эти принципы, вы сможете чувствовать себя уверенней.
👉🏻Забрать видеоурок
На уроке изучим:
🔹 особенности синтаксиса
🔹 нюансы concurrency
🔹 обработки ошибок
🔹 управления памятью в Go
Вы узнаете о типичных ловушках, с которыми сталкиваются разработчики при переходе из других языков.
Покажем, как правильно использовать концепции языка и не сломать себе мозг, разбираясь с горутинами.
Освоив эти принципы, вы сможете чувствовать себя уверенней.
👉🏻Забрать видеоурок
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.
Игра написана с использованием движка Ebitengine и даже доступна в Steam.
•Github
•Проект
#ebitengine #gamedev #golang
❤2👍1
Есть способ лучше. Кодогенерация в Go — это мощный инструмент, который автоматизирует рутину и расширяет возможности языка.
На открытом уроке «Кодогенерация в Go: код, который не пришлось писать» разберем, как это работает. Поговорим о том, когда кодогенерация уместна, какие механизмы Go ее позволяют и как это применяется в реальных проектах.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишем первую программу на Go 🚀 Для самых начинающих.
Привет, будущие гоперы!👋 Давайте отбросим страхи и напишем вашу первую программу на языке Go. Это проще, чем кажется!
Шаг 1: Готовим рабочее место
- Мы уже установили Go и редактор кода (например, VS Code). Открываем редактор и создаем новую папку для нашего проекта.
- Внутри папки жмем на «плюсик» и создаем файл. Но не простой, а с кодом на Go!
Шаг 2: Создаем правильный файл
- Файлы с кодом на Go имеют расширение .go
- Есть важное правило: главный файл программы, с которого всё начинается, принято называть
- Создаем файл
В следующем посте перейдем к самому интересному —написанию кода!
#Go #Программирование #ДляНачинающих #УрокGo #Часть1
@golangprofi
Привет, будущие гоперы!
Шаг 1: Готовим рабочее место
- Мы уже установили Go и редактор кода (например, VS Code). Открываем редактор и создаем новую папку для нашего проекта.
- Внутри папки жмем на «плюсик» и создаем файл. Но не простой, а с кодом на Go!
Шаг 2: Создаем правильный файл
- Файлы с кодом на Go имеют расширение .go
- Есть важное правило: главный файл программы, с которого всё начинается, принято называть
main.go.- Создаем файл
main.go. Теперь мы готовы писать код!В следующем посте перейдем к самому интересному —
#Go #Программирование #ДляНачинающих #УрокGo #Часть1
@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🥰3💩2
Первая программа на Go: разбираем код по косточкам 🦴
В нашем файле
Давайте разберем, что тут происходит:
-
-
-
-
⬇️ Самое главное:
Текст, который мы хотим вывести, пишем в кавычках
В следующем посте мы ЗАПУСТИМ эту программу и увидим легендарный «Hello, World!»
#Go #Программирование #ДляНачинающих #УрокGo #Часть2
@golangprofi
В нашем файле
main.go нужно написать несколько строчек. Не пугайтесь незнакомых слов, сейчас всё объясню!package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Давайте разберем, что тут происходит:
-
package main — объявляем «главный пакет». -
import "fmt" — берем полезный ящик с инструментами под названием fmt. Он нужен, чтобы выводить текст на экран.-
func main() — объявляем главную функцию. Программа всегда начинает свою работу именно отсюда.-
{} — внутри этих фигурных скобок живет код, который будет выполняться.fmt.Println(...) — это команда из нашего ящика fmt, которая печатает текст и переходит на новую строку.Текст, который мы хотим вывести, пишем в кавычках
"..."В следующем посте мы ЗАПУСТИМ эту программу и увидим легендарный «Hello, World!»
#Go #Программирование #ДляНачинающих #УрокGo #Часть2
@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👀1
Запускаем первую программу на Go! Терминал и магия команды «go run» ✨
Код написан, теперь нужно его выполнить. Редактор кода — это умный блокнот, но запускать программы он не умеет. Для этого нам нужен терминал и установленный Go!
Шаг 1: Открываем терминал в редакторе
Откроем сверху вкладку View➡️ Terminal
Шаг 2: Волшебная команда
Убедитесь, что вы в папке с вашим
Вводим команду:
И нажимаем Enter
Что это значит?
-
-
-
Результат:
Если вы всё сделали правильно, в терминале вы увидите заветную надпись:
Hello, World!
Поздравляю!🎉 Вы только что написали и запустили свою первую программу на Go! Это огромный шаг.
#Go #Программирование #ДляНачинающих #УрокGo #Часть3
@golangprofi
Код написан, теперь нужно его выполнить. Редактор кода — это умный блокнот, но запускать программы он не умеет. Для этого нам нужен терминал и установленный Go!
Шаг 1: Открываем терминал в редакторе
Откроем сверху вкладку View
Шаг 2: Волшебная команда
Убедитесь, что вы в папке с вашим
main.go. Можно в терминале написать ls (на MacOS) или dir (на Windows), и нажать Enter, чтобы увидеть список файлов.Вводим команду:
go run main.go
И нажимаем Enter
Что это значит?
-
go — обращаемся к компилятору Go.-
run — просим его запустить файл.-
main.go — указываем, какой именно файл запускать.Результат:
Если вы всё сделали правильно, в терминале вы увидите заветную надпись:
Hello, World!
Поздравляю!
#Go #Программирование #ДляНачинающих #УрокGo #Часть3
@golangprofi
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4😁2