Proxies are a fundamental component of almost every distributed system. The average person has only a vague understanding of the purpose of proxy servers and often associate them with unblocking some media content from other countries. As a developer however, you should know that proxy servers do much more and are vital for businesses.
A modulo n integer sequence is just a (potentially infinite) integer sequence that wrap to 0 when the current value is n. For example, is a modulo 4 integer sequence.
The Disjoint Set Union (DSU) is a data structure representing a collection of disjoint sets. It is extremely helpful in solving problems where it is required to track the connectivity of elements belonging to a specific subset and to connect different subsets with each other. Each subset is represented in the form of tree and the root of the tree is the representative element of the set.
This post goes through a set of exercises and tasks regarding the Docker platform. The goal is getting familiar with Docker and with the most frequently commands of the Docker CLI. This post requires a basic knowledge of Docker. You can refer to this other post for an introduction to Docker. All the material used in this post is freely available at my Github repository.
Hashing algorithms are useful to solve a lot of problems. In this post we will discuss the rolling hash, an interesting algorithm used in the context of string comparison.
Containers are a streamlined way to package and run software applications. They allow to build any application in any programming language using any operating system (OS). Containerized applications can run anywhere on anything and can also be more efficiently deployed into cloud environments.
A trie, or a prefix tree, is a data structure that is used to represent and store a set of words. Although there are many other structures used to store and represent words, the trie is particularly efficient in performing the following operations:
- find all the words with a common prefix.
- enumerate the words in lexicographical order.
This post is a summary of how multithreading and concurrency are managed in C++.
While all comparison-based algorithms have a time complexity of O(nlogn) to sort an array of n elements, there are sorting algorithms running in linear time provided that some assumptions are verified.
Ring buffers (also known as circular buffers) are fixed-size buffers that works as if the memory were contiguous and circular.