Allow or Deny

Allow or Deny

Ruxsat yoki rad etish

Endi butun loyihaning markaziy savoliga javob berish vaqti keldi: berilgan mijozga so'rovni davom ettirishga ruxsat berilsinmi? Bu — Methods on the Limiter darsidagi Count bilan The Rate Limiter darsidagi limitni birlashtiradi.

example.go
func (l *RateLimiter) Allow(id string) bool {
    if l.counts[id] >= l.limit {
        return false
    }
    l.counts[id]++
    return true
}

Muhim nozik nuqta: tekshirish (>= l.limit) va oshirish (counts[id]++) bitta metod chaqiruvi ichida, ketma-ket sodir bo'ladi. Agar limitga yetgan bo'lsangiz, hisoblagich boshqa oshirilmaydi — bu ortiqcha sarflanmagan tokenni saqlab qolish emas, balki mijoz limitidan chetga chiqmasligini kafolatlaydi.

>_ Exercise

RateLimiter uchun Allow(id string) bool metodini yozing. Agar mijozning joriy soni limitga yetgan yoki undan oshgan bo'lsa, false qaytaring (hisoblagichni oshirmasdan). Aks holda hisoblagichni bittaga oshirib, true qaytaring.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Allow — "tekshir-va-amalga oshir" mantig'ining klassik namunasi: tekshirish va o'zgartirish bitta metod chaqiruvi ichida, bo'linmagan holda sodir bo'ladi. Bu rate limiter'ning butun ishini bitta, aniq nomlangan metodga jamlaydi.

NEXT UP

Concurrency Safety

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Allow or Deny

Ruxsat yoki rad etish

Endi butun loyihaning markaziy savoliga javob berish vaqti keldi: berilgan mijozga so'rovni davom ettirishga ruxsat berilsinmi? Bu — Methods on the Limiter darsidagi Count bilan The Rate Limiter darsidagi limitni birlashtiradi.

example.go
func (l *RateLimiter) Allow(id string) bool {
    if l.counts[id] >= l.limit {
        return false
    }
    l.counts[id]++
    return true
}

Muhim nozik nuqta: tekshirish (>= l.limit) va oshirish (counts[id]++) bitta metod chaqiruvi ichida, ketma-ket sodir bo'ladi. Agar limitga yetgan bo'lsangiz, hisoblagich boshqa oshirilmaydi — bu ortiqcha sarflanmagan tokenni saqlab qolish emas, balki mijoz limitidan chetga chiqmasligini kafolatlaydi.

>_ Exercise

RateLimiter uchun Allow(id string) bool metodini yozing. Agar mijozning joriy soni limitga yetgan yoki undan oshgan bo'lsa, false qaytaring (hisoblagichni oshirmasdan). Aks holda hisoblagichni bittaga oshirib, true qaytaring.

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Allow — "tekshir-va-amalga oshir" mantig'ining klassik namunasi: tekshirish va o'zgartirish bitta metod chaqiruvi ichida, bo'linmagan holda sodir bo'ladi. Bu rate limiter'ning butun ishini bitta, aniq nomlangan metodga jamlaydi.

NEXT UP

Concurrency Safety