heavycharged
разницы не заметил практически
🏁Александр
а почему обычный лок может быть выгоднее?
Daniel
RWMutex состоит из двух обычных
🏁Александр
даже если мы пишем и читаем на одном уровне, или даже больше пишем. По сравнению с обычным локом должно быть по крайне мерее на уровне производительности обычного lock
Daniel
не совсем обычных, но тем не менее из двух
Daniel
и если мы в основном пишем - Lock на RWMutex просто делает на одну операцию больше, чем надо
🏁Александр
это собственно проверка, что читатели не читают?
Daniel
ага
🏁Александр
ну не думаю что там чудовищный оверхед
Daniel
ну - он есть
Daniel
на самом деле - заметить его довольно трудно
🏁Александр
в случаи "универсальных" структуру, лучше думаю использовать тогда RW. А то завтра понадобиться читать и мы должны будем переписать, а так сразу готовое 🙂
heavycharged
@onokonem а есть какое-то соотношение читателей/писателей, когда есть смысл на обычный Mutex уходить. Чисто логически, это что-то вроде если на протяжении работы софта процент писателей больше 50% практически всегда, то лучше обычный мьютекс. Верно или не?
🏁Александр
если у вас какая то обертка, в которой хрен поймешь как будут использовать то RW имхо 🙂
🏁Александр
потому что оверхед в случаи "неправильного" использования на "только запись" будет небольшой, а вот при приоритете чтения выйгрыш большой
heavycharged
Использовать RWMutex выгодно только тогда, когда большинству go-подпрограмм требуется блокировка читателей, и за блокировку ведется состязание, т.е. go- подпрограммам приходится регулярно ожидать для ее захвата. RWMutex требует бо­ лее сложной внутренней бухгалтерии, что делает его медленнее обычных мьютексов. Из книги
Alisher
помогите с mux http.Router
Alisher
Alisher
Alisher
это в main.go
Alisher
я хотел бы выписать router в отдельный package
Alisher
Alisher
и я это сделал , но потом я хотел расписать еще child route > и пустил его на PathPrefix().Subrouter()
Alisher
и вызвал переменую TodayRouter в другом файле
Alisher
Alisher
чтобы дописать child
Zver
Зачем в гошных сорцах проект лежит?
Aleksey
нет, они нужны не только в циклах, от них хорошо вообще всегда. PREPARE оно ж на сессию, а не на транзакцию.
Ну да, не только в циклах, но сессии не бесконечны, лучше ограничивать количество соответственно не наготовишь на весь проект запросов. Подготовленные запросы нужны когда один и тот же запрос часто повторяется. Если поставить жизнь сессии в минуту, а запрос происходит раз в две минуты, заготовленный не нужен.
Sergey
Всем привет! Может кто то имел дело с webdriver и подскажет есть ли бибилиотеки на чистом C++ для взаимодействия по http?
Aleksey
А? Вставка?
Ну из csv например или наоборот в него
Alexey
Ну из csv например или наоборот в него
Так мы вроде о бд говорим
Aleksey
Так мы вроде о бд говорим
Я уже теряюсь про что мы говорим... какое кэширование, я про prepared query
Alexey
Я уже теряюсь про что мы говорим... какое кэширование, я про prepared query
Я про запросы к бд в циклах. А вы о чем?) Бд кэширует план запросов, которые prepared
Sergey
Боюсь вы немного не по адресу
У меня была надежда, что кто то с этим сталкивался
G72K
Ну да, не только в циклах, но сессии не бесконечны, лучше ограничивать количество соответственно не наготовишь на весь проект запросов. Подготовленные запросы нужны когда один и тот же запрос часто повторяется. Если поставить жизнь сессии в минуту, а запрос происходит раз в две минуты, заготовленный не нужен.
Не знаю как принято в Го, в Slick например PREPARE делается перед первым использованием запроса, если подходящий PREPARE уже был сделан для запроса, то он переиспользуется. т.е. не надо их заранее "наготавливать", всё само.
G72K
Всё кешируется на уровне сессии, т.е. предполагается что используется connection pool
Wingman
`models := make([]Models.AuthProfile,0) err := db.DB.Model(&models).Select() if err != nil && err != pg.ErrNoRows { return err } for _, model := range models {` vetshadow: warning: internal error: no range for "models"
Wingman
что ему не нравится? :)
G72K
незнаю, но slice по ссылке передавать странно точно
Sergey
сишничество)
а строку например по ссылке передать уже не сишничество?
G72K
я ж про слайсы
Sergey
а в чем разница?
Максим
Всем привет! Можно в Go передать фунцию аргументом?
Максим
не знаю, как правильно загуглить
Timur
можно
Максим
А есть пример?
Alexander
https://golang.org/doc/codewalk/functions/
Alexander
можно и передавать и возвращать. гуглил собсно по first class sitizen functions golang
Timur
https://play.golang.org/p/PzNdcpQKCdC
Максим
https://play.golang.org/p/PzNdcpQKCdC
спасибо, то что нужно
🏁Александр
народ, у меня просьба. Если есть у кого винда, проверите плиз - https://play.golang.org/p/CDwposLuNGU 🙂
Pawel
а почему ты думаешь что этот код будет работать в линуксе, и не работать в винде?
🏁Александр
потому что у меня так и не работает 🙂
🏁Александр
я ищу проблему
Pawel
а при чём тут винда?
Aleksandr
ошибки-то какие?
🏁Александр
никакой
🏁Александр
просто архив в 1 кб
Эмин
а ручками этот архив разархивируешь если?
Эмин
то там будет то что ты положил в него?
🏁Александр
неа
Эмин
мне интересно, на 24 строке он не ругается на второй итерации что ты пытаешься объявить уже объявленную переменную?
🏁Александр
нет
🏁Александр
все переменные внутри {} это локальные
🏁Александр
именно поэтому нельзя написать
🏁Александр
if a == b { debug := "hello" } log.Print(debug)
🏁Александр
будет ругаться на необъявленную
🏁Александр
var debug string if a == b { debug = "hello" } log.Print(debug)
🏁Александр
правильный вариант
Эмин
https://golang.org/src/archive/zip/example_test.go вот пример зип архивации
🏁Александр
спасибо кэп