Artur
Кстати, я все еще ищу людей, студентов или просто желающих помочь/подзаработать для придумывания задач по языку Go.
Задачи как по теории так и практические. Темы разные.
Деньги: от 100 до 1000 рублей за задачу (зависит от сложности задачи).
Писать в ЛС.
Ваня Гречка
1 - 50
2 - 1000
3 - 2000
4 - 200
5 - 700
6 - 800
7 - 900
8 - 1000
9 - 5000
10 - 11000
Кіт ✙
скажите, при -benchmem, что за колонка - B/op? Это операции на хипе? Как они измеряются?
Danil👽
Ребят, а кто может рассказать как работает evacuation в мапах
Илья
Ребят, а кто может рассказать как работает evacuation в мапах
Из исходников:
......
Buckets are incrementally copied from the old bucket array to the new bucket array.
........
When growing the table, iterators remain iterating through the old table and must check the new table if the bucket they are iterating through has been moved ("evacuated") to the new table.
Грубо говоря при поиске твоего ключа мапа пытается перемещать данные в новые бакеты, проверяя при поиске как новые, так и старые
Emin Zalaev
Danil👽
Илья
Илья
В некоторых случаях может просто очищать ключ, т.к. сборщик потом сам почистит значения
Vladislav
Илья
Илья
Можно сойтись на том, что мапа не копирует все значения сразу при расширении (как append()), а просто ищет в двух мапах списках бакетов
Илья
Но было бы неплохо изучить, никогда этим не интересовался
Vladislav
growWork() вызывается только mapassign и mapdelete
а growWork эвакуацию дергает
Илья
вроде выглядит логично
Vladislav
https://github.com/golang/go/blob/0a6c4c87404ecb018faf002919e5d5db04c69ee2/src/runtime/map.go#L1152 там тудушка забавная
Eugene
Я когда вижу, что пишет Владислав
Eugene
думаю о другом
Eugene
@illiadimura согласен?
Илья
Eugene
надо будет сына назвать Владиславом
Vladislav
Илья
Артем
Господа, доброе утро. Сорян за тупой вопрос. Подскажите, пожалуйста, как правильно организовать работу с бд. У меня несколько запросов отдельными функциями. Нужно ли в каждой из них вызывать sql.Open или можно более грамотно сделать?
Артем
Я ж правильно понимаю, open нужно один раз вызывать и потом использовать везде, но как это сделать на уровне модуля, чтоб определить handler и потом юзать везде
Илья
kostyaBro
Я ж вроде вчера отвечал на это🤔
Siva
Hcl or Cognizant which is better for no work pressure
Артем
Если потом еще раз запрос кинуть то он просыпается
Артем
Я допустим сделал
var db = database.NewClient(…)
И юзаю эту дб потом для запросов, то он мне кидается i/o таймаут если первый раз запрос кидать, потом все ок, но спустя 10 секунд примерно опять кидает таймаут
Илья
какие запросы делаешь?
Артем
Илья
https://go-database-sql.org/
вот сайт с полным гайдом, но у меня он перестал открываться
Илья
defer rows.Close() делаешь?
Артем
kostyaBro
и не стоит хранить коннект к бд в х
Артем
kostyaBro
и глобальное тоже не ок
потом рефакторить больно
kostyaBro
вот да, создать объект бд, репозиторий
который умеет делать что надо
и прокидывать как параметр
kostyaBro
хотябы так
kostyaBro
но вообще почему таймауты, странно
где бд находится?
kostyaBro
Артем
А может эта хрень быть из за того, что я 3 запроса в горутинах делаю? Я не очень с бд просто, они синхронны асинхронны или как вообще
kostyaBro
ахах, конечно по большей части асинхронны
kostyaBro
но ты можешь написать запросы так что залочишь выполнение последущих
Артем
Alexander
дак может return err
Alexander
точнее даж без err
Артем
А ну кстати да, щас
Alexander
return db.GetContext и т.д
Артем
Артем
Это я про себя
Alexander
Я 100 раз так делал)
Илья
а как их в горутинах вызываешь?
Артем
kostyaBro
У тебя может так контекст с таймаутом сгорать просто?
Илья
как вариант
Артем
Артем
Ну вот блет
kostyaBro
Ещё в оракл вроде надо коммитить каждый вызов
Артем
Я сейчас потестил, подождал, ничего не отваливается
Артем
Может на серваке проблема?
kostyaBro
Но это предположение.
Я помню где-то была херота что запись делаешь, и в бд видишь её, но так как не закомитил, записи нет
kostyaBro
И вроде это был оракл
Артем
У меня селекты тупо, в базу не пишу ничего
kostyaBro
Но я смутно помню что точно было.
При том что транзакцию не открывал а коммит нужно всеравно было
kostyaBro
Артем
Хм, спасибо большое всем, короче надо мне бд подтягивать а то глуховат немного в этом
kostyaBro
Покажи как вызываешь всеже
Илья
Я бы убрал errgroup и вызывал последовательно
Илья
потому что у тебя на один запрос юзается три коннекта к бд