COLL Wiki
website·Indexed 29 days ago
https://wiki.coll.devA technical knowledge base covering a wide range of software engineering topics, including algorithms and data structures (Dijkstra's, Hash tables), security and cryptography (RSA, Diffie-Hellman), design patterns (SOLID, Dependency Injection), and various technologies such as Docker, RabbitMQ, AMQP, and WebSockets.
What's inside COLL Wiki
- The Diffie-Hellman key exchange is a method for two parties to establish a shared secret key over a public, insecure channel. This shared secret can subsequently be used for symmetric encryption of their communication. The security of the process relies on a one-way function—specifically the discrete exponential function (modular exponentiation)—which is computationally easy to perform but computationally difficult to reverse (the discrete logarithm problem).
Overview of Diffie-Hellman key exchange
The Diffie-Hellman key exchange is a cryptographic method that allows two parties to establish a shared secret key over an insecure communication channel. This shared secret can subsequently be used as a key for symmetric encryption. The security of the method relies on the difficulty of the discrete logarithm problem: while it is computationally easy to perform modular exponentiation, it is practically impossible to invert the operation (find the exponent) for sufficiently large numbers.Introduction to JUnit and Mockito for Java Testing
JUnit is a programmer-friendly framework used for writing both unit and integration tests for Java applications on the JVM. It provides essential features such as test methods, assertions, and test runners. Because JUnit does not natively support mocking, it is commonly paired with the Mockito library to create mock objects for dependencies.Overview of AMQP Architecture
The Advanced Message Queuing Protocol (AMQP) is an open standard for message-oriented middleware that enables communication between distributed systems. It operates over TCP/IP and involves three primary participants:
- Producer (Sender): Generates messages and sends them to an Exchange on the Broker.
- Broker: The central hub responsible for message distribution. It receives messages via Exchanges and routes them to bound Queues.
- Consumer (Receiver): Retrieves and processes messages from the Queues.
AMQP is a programmable protocol, meaning clients can dynamically create and configure the Exchanges and Queues they require during runtime.
Overview of the COLL Advent of Code C++ library
The COLL Advent of Code library is a C++ framework designed to streamline the process of solving Advent of Code puzzles. It provides automation for project structure, input handling, and submission, as well as a set of algorithmic helpers.# Source code available at: https://github.com/colllijo/advent-of-codeOverview of the Advent of Code competition
Advent of Code is an annual programming competition created by Eric Wastl, structured as an Advent calendar. It consists of small programming puzzles for various skill levels that can be solved using any programming language. The puzzles are designed to be efficient, with solutions typically completing in under 15 seconds on older hardware.Overview of NgRx State Management Concepts
NgRx is a reactive state management framework for Angular based on Redux. It utilizes a unidirectional data flow consisting of four primary components:
- State: An immutable object representing the current application state. It can be read by the application but only updated by a reducer.
- Action: Triggers that initiate state changes or side effects. They are dispatched to signal that something has happened (e.g., a button click or page load).
- Reducer: Pure functions that take the current state and an action to produce a new state. Reducers must not have side effects.
- Effects: Handle side effects such as API calls or database queries. Effects listen for specific actions, perform an asynchronous task, and then dispatch a new action to update the state via a reducer.
Overview of the Quick Sort algorithm
Quick Sort is a fast, non-stable sorting algorithm based on the divide-and-conquer principle. Because it is non-stable, the relative order of elements with identical sorting keys may not be preserved.
Complexity Analysis:
- Average Runtime: $O(n \log n)$
- Worst-case Runtime: $O(n^2)$
- Worst-case Space Complexity: $O(n)$
Overview of RabbitMQ
RabbitMQ is an open-source message broker developed by VMware, written in Erlang, and implements the Advanced Message Queuing Protocol (AMQP). It is one of the most popular AMQP implementations and provides client libraries for numerous programming languages.Introduction to GraalVM Native Images
GraalVM is an extended Java Development Kit (JDK) that allows Java applications to be compiled into Native Images. A Native Image is a standalone executable file that does not require a Java Runtime Environment (JRE) to be installed on the target system. This allows applications to start faster and be executed directly (e.g.,./Appinstead ofjava -jar App.jar). Note that Native Images are platform-dependent; an image built for Unix will not run on Windows.Overview of the Advent of Code competition
Advent of Code is a yearly programming competition consisting of small programming puzzles released daily from December 1st to December 25th. Puzzles are released at midnight EST (UTC-5) / 6 am CET (UTC+1). Each daily puzzle is split into two parts; the second part is unlocked only after the first part is solved. Participants receive unique puzzle inputs, meaning solutions vary by user.Overview of Dijkstra's Algorithm
Dijkstra's Algorithm is used to find the shortest (cheapest) path between nodes in a weighted graph. It calculates the shortest path from a single starting node to all other nodes in the graph. Common applications include finding the shortest route between cities or determining the fastest network connection in routing protocols like OSPF (Open Shortest Path First).