Size: a a a

2020 July 29

RA

Ruslan Askme in Go-go!
Всем спасибо =3
источник

A

Aleksandr in Go-go!
Локоть Анатолий
Отличный доклад по теме
https://youtu.be/VlnxsfSs1ms, который когда-то меня погрузил в тему линтеров в го.

Автор также обещал конфиг линтеоа выложить или ссылку дать, может она там где-то в описании есть или в самом докладе он словами говорил, плохо помню
примите, пожалуйста, моё вам громадное спасибище!
источник

DP

Daniel Podolsky in Go-go!
Локоть Анатолий
Отличный доклад по теме
https://youtu.be/VlnxsfSs1ms, который когда-то меня погрузил в тему линтеров в го.

Автор также обещал конфиг линтеоа выложить или ссылку дать, может она там где-то в описании есть или в самом докладе он словами говорил, плохо помню
автор есть в этом чате
источник

D

Denis in Go-go!
Есть микросервисы, каждый из них общается со своей бд в монге (/user, /company). Монгу планировал задеплоить через k8s оператор
Я уже на старте знаю что в коллекциях в базе /company будут миллионы доков с кучей индексов (требуется много оперативы под индексы), а например в коллекциях в базе /user доков совсем чуть-чуть
Есть ли смысл в данном кейсе поднять 2 монги отдельных, чтобы была возможность гибко добавлять secondary реплики только тому кому они нужны, а не накидывать на все-все базы (в случае если я поднимаю 1 монгу) ?
источник

AM

Anton Molchanov in Go-go!
коллеги подскажите пожалуйста
источник

AM

Anton Molchanov in Go-go!
package main


type Service interface{
   ReadFile(ctx context.context) (file []byte, err error)
}


type service struct{
   conn net.Conn
}


func (* service) ReadFile(ctx context.context) (file []byte, err error){
   return
}


func GetFile(svc Service, ctx context.Context) (file []byte, err error){
   for i:=0;i<10;i++{
       go svc.ReadFile(ctx)
   }
   return
}


func main(){

   svc:=InitService()

   file, err:=GetFile(svc, context.Background)
   if err!=nil{
       bla bla
   }

}
источник

AM

Anton Molchanov in Go-go!
это прототип чтобы объяснить проблему
источник

DP

Daniel Podolsky in Go-go!
Anton Molchanov
package main


type Service interface{
   ReadFile(ctx context.context) (file []byte, err error)
}


type service struct{
   conn net.Conn
}


func (* service) ReadFile(ctx context.context) (file []byte, err error){
   return
}


func GetFile(svc Service, ctx context.Context) (file []byte, err error){
   for i:=0;i<10;i++{
       go svc.ReadFile(ctx)
   }
   return
}


func main(){

   svc:=InitService()

   file, err:=GetFile(svc, context.Background)
   if err!=nil{
       bla bla
   }

}
лучше в плейграунд
источник

AM

Anton Molchanov in Go-go!
суть вопроса такая, если в процессе работа цикла в GetFile(svc Service, ctx context.Context)  я на ходу подменю соединение которое в интерфейсе (по причине того что старое соединение оборвалось)  svc.ReadFile(ctx) подхватит новое соединени, не знаю правильно ли задал вопрос?
источник

AM

Anton Molchanov in Go-go!
Другими словами, при передачи в функцию интерфейсной переменной передается это копия?
источник

AM

Anton Molchanov in Go-go!
Понимаю что вопрос странный но...
источник

DP

Daniel Podolsky in Go-go!
при передаче в функцию всегда передается копия
источник

DP

Daniel Podolsky in Go-go!
ингда это копия указателя, но всегда - копия
источник

АД

Алексей Долгов... in Go-go!
Ruslan Askme
Всем привет.
Объясните, пожалуйста, почему мапы не безопасны в многопоточной среде ? (или можно ссылки на статьи)
и не только мапы. есть такое явление как race condition. любая статья про race condition подойдет для начала. вкратце
Под гонкой условий (Condition Race), которую также называют гонкой данных (Data Race) понимают ситуацию, когда два или более потока соперничают за обладание некоторым общим ресурсом. Чаще всего соперничество возникает из-за такого ресурса как оперативная память. Но таковым ресурсом может быть и внешняя память (работа с одним и тем же файлом, например), или некоторое устройство, подключенное к компьютеру. 
Для возникновения соперничества хотя бы один поток должен изменять ресурс.

В книге "Язык программирования Go" Донована хороший пример с банком.
источник

RA

Ruslan Askme in Go-go!
Алексей Долгов
и не только мапы. есть такое явление как race condition. любая статья про race condition подойдет для начала. вкратце
Под гонкой условий (Condition Race), которую также называют гонкой данных (Data Race) понимают ситуацию, когда два или более потока соперничают за обладание некоторым общим ресурсом. Чаще всего соперничество возникает из-за такого ресурса как оперативная память. Но таковым ресурсом может быть и внешняя память (работа с одним и тем же файлом, например), или некоторое устройство, подключенное к компьютеру. 
Для возникновения соперничества хотя бы один поток должен изменять ресурс.

В книге "Язык программирования Go" Донована хороший пример с банком.
Благодарю )
источник

DP

Daniel Podolsky in Go-go!
соперничают - плохое слово
источник

DP

Daniel Podolsky in Go-go!
не отражает сути
источник

ЛА

Локоть Анатолий... in Go-go!
Daniel Podolsky
соперничают - плохое слово
Да, потоки , не зная друг про друга вносят противоречивые изменения. Соперничества нет, они просто перетрут с некой вероятностью чужие правки
источник

VM

Vladislav Milenin in Go-go!
Daniel Podolsky
не отражает сути
Вся суть переводов книг в 3 словах
источник

DP

Daniel Podolsky in Go-go!
Vladislav Milenin
Вся суть переводов книг в 3 словах
ну да, в оригинале было, небойсь, конкурируют
источник