Traffic Shaping with the Token Bucket Algorithm
The Token Bucket (or Leaking Bucket) algorithm is a mechanism to rate-limit the average traffic in a stream, while allowing for a certain amount of burstiness as well.
The Token Bucket (or Leaking Bucket) algorithm is a mechanism to rate-limit the average traffic in a stream, while allowing for a certain amount of burstiness as well.
The functional equation of the logarithm is well-known:
\[ \log(xy) = \log(x) + \log(y) \]
But why is this so?
When I discovered the first edition of Carl D. Meyer’s book on “Matrix Analysis and Applied Linear Algebra”, I considered it the best book on Linear Algebra I was aware of — and surely the best available book for an application-minded reader. In short: the book I really wished had been available when I was a graduate student and encountering this material for the first time.
So it was with great excitement and curiosity when I saw that a new, second edition was available. How could a near-perfect book be made even better?
The proof that $\sqrt{2}$ is irrational is part of the standard high-school curriculum. The same cannot be said for the proof that $e$, the base of the natural logarithm, is irrational as well. Yet the proof is short, simple, elegant.
Let a
be a Go slice. Under what conditions is the following
statement true: len(a) == 0
?
Bernhard von Lepel ist für uns hauptsächlich interessant durch seine Freundschaft mit Theodor Fontane, und das meiste, das wir über ihn wissen, wissen wir durch Fontane. Fontane hat dem Freund ein langes Kapitel in seinen Jugenderinnerungen (Kapitel 8 von “Der Tunnel über der Spree” in “Von 20 bis 30”) gewidmet, und ihn auch sonst gelegentlich beschrieben — seltsamerweise zum Teil verfremdet (z.B. als der “Italienenthusiast” in der etwas mysteriösen Skizze “Cafés von heut und Konditoreien von ehmals” von 1886). Dennoch bleibt Lepel’s Persönlichkeit überraschend undeutlich.
Absence of Evidence is not Evidence of Absence.
Here is the situation: an application maintains an in-memory cache. The cache is accessed by two threads (goroutines) concurrently. The first one constantly tries to read from the cache: very busy. The other goroutine updates the cache, relatively rarely (maybe a few times an hour). What are some synchronization/locking methods and how do they compare?
The so-called “birthday paradox” concerns the fact that even in surprisingly small groups the probability for at least two people to share their birthdate is surprisingly high.
The combinatorics of the Birthday Paradox are not hard; in fact, it is a standard example in introductory textbooks. Yet, the typical exact treatment provides no intuitive sense for the way the probability depends on the size of the sample and the population.
Here is an approximate solution that shows that the probability in question is, in fact, a Gaussian.
Having done extensive programming in C, I am not particularly spoiled when it comes to idiosyncrasies of a language’s “string” type. Yet, Go’s string types keeps tripping me up — why does it all still have to be that complicated?