Sobes.tech

Golang

Pastāstiet par in-memory pozīciju un bilancu glabāšanu ar sinhronisku saglabāšanu no kopsavilkuma.

Senior
OZONOZON
59

Kas ir Stop the World Go?

Middle+
VK CloudVK Cloud
59

Kas ir kanāls Go un kā tas pārsūta datus?

Middle
Сбертех
59

Kā sazināties starp pakalpojumiem — gRPC, REST vai kaut kas cits?

Middle+
Magnit Tech
59

Vai esi strādājis ar Docker, Kubernetes? Vai runāji par pipeline būvniecību?

Middle+
А7
59

pakuotes glabāšana importēt ( "database/sql" "errors" "fmt" "time" "github.com/company/my-service/internal/event" "github.com/company/my-service/internal/metric" ) type Partner struct { ID string `db:"id" json:"id"` Balance float32 `db:"balance" json:"balance"` Hold float32 `db:"hold" json:"hold"` } type PayoutRepository struct { db sql.DB eventPublisher event.Publisher metricCollector metric.Collector totalPayouts int } func NewPayoutRepository() *PayoutRepository { db, err := sql.Open("postgres", "host=localhost user=postgres password=postgres dbname=affiliate") if err != nil { panic(err) } r := PayoutRepository{ db: db, eventPublisher: event.NewKafkaPublisher("localhost:9092"), metricCollector: metric.NewPrometheusCollector("localhost:9090"), } go func() { for range time.Tick(time.Minute) { _ = r.metricCollector.Send("TotalPayouts", r.totalPayouts) } }() return r } func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil } func (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner not found") } return p, err } return p, nil } func (r *PayoutRepository) save(p Partner) error { _, err := r.db.Exec( fmt.Sprintf("UPDATE partners SET balance = %s, hold = %s WHERE id = %s", p.Balance, p.Hold, p.ID), ) if err != nil { return err } if err := r.eventPublisher.Publish("BalanceChanged", p); err != nil { return err } return nil }

Senior
Pasul LTD
59

Kā konkurētspēja atšķiras no paralēlās?

Middle
Effective Technologies
59

Kā tiek nodrošināta drošība REST un Kafka? Kas ir HTTPS/TLS?

Middle
СБЕРСБЕР
59

Pastāstiet par select operatoru, ko tas dara un kam tas ir nepieciešams.

Senior
sber tech
59

Kā izdevās uzlabot medicīnas agregatora integritāti un samazināt datu zudumu no 2% līdz 0,01%? Vai tas nav pārāk daudz — 2% zaudētu datu medicīnā?

Middle+
OZONOZON
59

grpc-server AddItemAndOrder metodi īstenošanai: 1. Pievienojiet preces grozam 2. Ir obligāti jāinformē potenciālie patērētāji par to, ka grozs ir izveidots, izmantojot ziņojumu brokeri. 3. Mainot groza sastāvu, jāveic pārskaitījums basket.Total = summa(skaits * cena) 4. Visiem groza elementiem jābūt unikāliem pēc atslēgas ProductID 5. Lai noformētu pasūtījumu, ir jāmaina tā statuss uz ordered 6. Jau pasūtītajos grozos izmaiņas veikt nav iespējams Ir tabula, kurā visas kolonnas ir veseli skaitļi. Kodā ir vaicājums: select * from t1 where a > ? and b = ? and c != ? order by a;

Middle+
КуперКупер
59

Kāpēc ir labāk veidot statusu kā enum un kad ir labāk izmantot string?

Senior
Магнит Тех
58

Kādu problēmu kopumā risina Redis?

Senior
X5 techX5 tech
58

HeadHunter ir dienas limits – 16 tūkst. CV apskates, un plašs filtrs visu ko ēd — kā to atrisināt?

Senior
OZONOZON
58

Kā dati tiek glabāti datu bāzē?

Senior
Cloud.ru
58

Jums ir divas tabulas: orders (pasūtījumi): order_id (unikāls pasūtījuma identifikators) customer_id (klienta identifikators) order_date (pasūtījuma datums) total_amount (kopējā pasūtījuma summa) customers (klienti): customer_id (klienta identifikators) customer_name (klienta vārds) city (klienta pilsēta) Uzdevums: Rakstiet SQL vaicājumu, kas atgriezīs šādus datus: Klientu saraksts (vārds un pilsēta), kuri ir veikuši pasūtījumus par kopējo summu vairāk nekā 1000 dolāru. Katram 1. punktā minētajam klientam parādiet visu pasūtījumu kopējo summu.

Senior
WildberriesWildberries
58

API dizaina principi

Senior
I-teco
58

Tu teici, ka tev ir 4 gadu pieredze, bet universitāti pabeidzi 2024. gadā. Vai mācījies pēdējā kursā un strādāji tajā pašā laikā?

Middle
Aliexpress
58

Vai jums ir jautājumi man?

Senior
Cloud.ru
58

Kāda ir atšķirība starp TCP un UDP? Kādi ir lietošanas gadījumi?

Middle+
MAX LTD Group
58
/412