Sobes.tech

// илова кардан $1

Senior
424

Агар шумо тестҳои ягона барои коди худ нависед, кадомҳоро менависед? Кадом ҳолатҳои канорӣро санҷед?

Senior
305

Азод кардани ID-и ҳодиса барои идемпотентӣ ва дар куҷо онро тавлид кардан?

Senior
203

Логҳоро дар куҷо нигоҳ медоштед, кадом бастаи логгириро дар код истифода бурдед ва чӣ гуна логҳо аз stdout ба Elasticsearch ворид шуданд?

Senior
203

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 }

Senior
194

Чӣ тавр дар сатҳи SQL фаҳмидан мумкин аст, ки аллакай калиди идемпотентӣ вуҷуд дорад? Чӣ тавр истифода бурдани ON CONFLICT?

Senior
186

Дар бораи лоиҳа/вакансия: стек технологияҳо, вазифаҳои гурӯҳ

Senior
167

Кадом дигар мушкилоти глобалӣ дар код ҳаст? Чӣ тавр пулро нигоҳ доштан — оё мумкин аст float истифода бурдан?

Senior
160

функция (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 // защита на SELECT FOR UPDATE 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 }

Senior
157

Агар транзаксия тасдиқ нашавад, ID дар outbox чӣ мешавад?

Senior
156

/* Тартибланган бўйича камайишга тўғри келадиган тўғри рақамлар рўйхати a, индекс index ва бутун son k. Рўйхатдан a[index] элементга энг яқин бўлган k рақамни исталган тартибда қайтариш керак. a=[2, 3, 5, 7, 11], index=3, k=2 -> [5, 7] a=[4, 12, 15, 15, 24], index=1, k=3 -> [12, 15, 15] a=[2, 3, 5, 7, 11], index=2, k=2 -> [3, 5] ёки [5, 7] */

Senior
154

func (p *Pool) Stop() { p.mu.Unlock() // Τώρα είναι ασφαλές να κλείσουμε το κανάλι close(p.tasks) // σήμα στους εργαζόμενους: δεν θα υπάρχουν νέες εργασίες, διαβάστε το υπόλοιπο p.wg.Wait() // περιμένουμε να ολοκληρωθούν όλα τα goroutine p.cancel() // ακυρώνουμε το πλαίσιο, αν χρειάζεται fmt.Println("Pool σταμάτησε.") } // ForceStop αναγκαστικά σταματά όλους τους εργαζόμενους χωρίς να περιμένει την ολοκλήρωση των εργασιών. // Οι εργαζόμενοι θα διακοπούν αμέσως μέσω του πλαισίου. func (p *Pool) ForceStop(timeout time.Duration) { fmt.Printf("Αναγκαστική διακοπή του pool (timeout: %v)...\n", timeout) // Μπλοκάρει την προσθήκη νέων εργασιών p.mu.Lock() p.isOpen = false p.mu.Unlock() // Ζαλίζει το κανάλι ώστε οι εργαζόμενοι να μην πάρουν νέες εργασίες close(p.tasks) // Ακυρώνουμε το πλαίσιο – αυτό θα διακόψει όλες τις τρέχουσες εργασίες p.cancel() // Δίνουμε περιορισμένο χρόνο για να ολοκληρωθούν done := make(chan struct{}) go func() { p.wg.Wait() close(done) }() select { case <-done: fmt.Println("Pool αναγκαστικά σταμάτησε (όλοι οι εργαζόμενοι τερματίστηκαν)") case <-time.After(timeout): fmt.Println("Pool αναγκαστικά σταμάτησε (timeout, ενδέχεται να παραμείνουν goroutines σε αναμονή)") } }

Senior
151

Масъалаи нусхабардории sql.DB бо арзиш, на бо ишора?

Senior
142

Чӣ қадар вақт логҳо нигоҳ дошта мешуданд ва чӣ қадар вақт маълумотҳо дар Kafka нигоҳ дошта мешуданд?

Senior
135

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
131

Аз ази суоли/вазифаи мусоҳиба аз ин тасвири экранӣ бароред. Забонро дар асл нигоҳ доред.

Senior
129

func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(totalPayouts) // транзакция қосу егер err != nil { қайтару err } партнер, err := r.find(partnerID) егер err != nil { қайтару err } рекламодател, Бейланс -= сумма партнер.Hold -= сумма партнер.Баланса += сумма егер err := r.save(рекламодател); err != nil { қайтару err } егер err := r.save(партнер); err != nil { қайтару err } r.totalPayouts++ қайтару nil } функция (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) // $1 қосу егер err != nil { егер err == sql.ErrNoRows { қайтару p, errors.New("серіктес табылмады") } қайтару p, err } қайтару p, nil }

Senior
127

Чӣ тавр бояд дар паёми Kafka нависем? Кадом майдонҳоро ба истеъмолкунандагон интиқол диҳем?

Senior
120

Дар бораи ld, rd := 1<<62, 1<<62 дар контексти алгоритм чӣ аст?

Senior
115

пакет за съхранение import ( "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
99
/2