If you are just like me, want to learn PostgreSQL but don’t want to mess up your system, docker is for you.
Despite what’s said about Go slices in this blog post, if you really know what dynamic arrays are internally, you should immediately recognize the resemblance between Go’s slices and a dynamic array.
To be more precise, a typical dynamic array implementation is like
typedef struct {
int *array;
int used;
int size;
} Array;
Where the underlying array is allocated by malloc
and will be reallocted by realloc
if need be. Now, let’s take a look at the internals of a Go slice. Oh, it has three parts too. A pointer to an underlying array, a length, and a capacity. Sounds familiar, right? How should we call such a structure if not “dynamic arrays” then?
Test your HTTP server with ApacheBenchmark (shipped along with apache2
) like
ab -n 100 -c 10 -rkl http://127.0.0.1:1234
Check out man ab
to find out what each of these options means.
An similar alternative to ab is wrk.
Install packages using pacman
# update and yes to all questions
sudo pacman -Syyu# install a package, apache in this case
sudo pacman -S apache
Based on this medium post
Long story short, when you use epoll, the kernel keeps relevant data in the kernel space, monitors files in the interest list behind the scene and sends back only a short list of ready descriptors. On the contrary, poll/select is more like an on-demand service, remembers nothing and returns everything, which means that you will have to pass everything to the kernel every time, wait until the kernel is done polling, get back a long list of all the descriptors you just sent and loop through the long list yourself to find out what’s up.
More details can be found here.