Posts by Tag

Data Structures

System Design Compendium

less than 1 minute read

System design is a part of the system development process, focusing on the creation of a comprehensive blueprint for a system to satisfy specified requiremen...

Trees

2 minute read

a data structure that is constructed with nodes, where each has some value and may point to child-nodes, which recursively form subtrees in the tree.

Graphs

1 minute read

Graph is a collection of nodes that may or may not be connected to each other.

Strings

less than 1 minute read

String

Hash Tables

1 minute read

A data structure that store data in key-value pairs and provides fast insertion, deletion and searching.

Linked Lists

1 minute read

Is very similar to array, at least conceptually, to an array.

Arrays

2 minute read

There are two types of arrays. Static and dynamic ones.

Logarithm

1 minute read

It’s mathematical concept which is very often used in Computer Science in context of algorithms complexity, it’s even sounds similar 😀

Big O Notation

3 minute read

The Big O Notation is a mathematical, asymptotic notation that describes time complexity and space complexity of algorithms/ function when the argument tends...

Data Structures Compendium

less than 1 minute read

Data structures can be seen as instrumental tools used to address a wide array of problems. They frequently encompass complex and mathematical concepts and c...

Back to Top ↑

Complexity Analysis

Trees

2 minute read

a data structure that is constructed with nodes, where each has some value and may point to child-nodes, which recursively form subtrees in the tree.

Graphs

1 minute read

Graph is a collection of nodes that may or may not be connected to each other.

Strings

less than 1 minute read

String

Hash Tables

1 minute read

A data structure that store data in key-value pairs and provides fast insertion, deletion and searching.

Linked Lists

1 minute read

Is very similar to array, at least conceptually, to an array.

Arrays

2 minute read

There are two types of arrays. Static and dynamic ones.

Logarithm

1 minute read

It’s mathematical concept which is very often used in Computer Science in context of algorithms complexity, it’s even sounds similar 😀

Complexity Analysis

less than 1 minute read

It’s a process in which we determine how efficient an algorithm is. There are multiple ways to solve the same issue but the complexity analysis will likely d...

Back to Top ↑

Testing

Why Are Tests Essential?

2 minute read

Software testing is a fundamental aspect of any successful software development project. It is the process of examining a system or system component to deter...

Back to Top ↑

SOLID

Facade Design Pattern

2 minute read

The Facade design pattern is a structural pattern that allows for hiding the complexity of a subsystem by providing a simple interface to it. The interface ...

Builder Design Patter

1 minute read

Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to produce different types and representa...

Observer Design Patter

1 minute read

The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, known as observers, and notifie...

Back to Top ↑

OOP

Back to Top ↑

Databases

Replication And Sharding

4 minute read

The performance of a system often depends on the efficiency of its database. By optimizing the database, the system’s performance can be significantly improv...

Specialized Storage Paradigms

2 minute read

In addition to widely known SQL and NoSQL databases, such as document or key-value stores, there are specialized storage paradigms that are well-suited for s...

SQL vs NoSQL Databases

2 minute read

SQL vs NoSQL Databases: Understanding the Difference and When to Choose Each

Back to Top ↑

Domain Driven Design

Aggregate Pattern

1 minute read

The Aggregate is one of the main pattern in Domain Driven Design (DDD) introduced by Martin Fowler.

Custom Assertions with AssertJ

less than 1 minute read

You might have encountered tests that are difficult to read, especially when the failure messages are unclear. In such cases, consider creating your own spec...

Back to Top ↑

DDD

Aggregate Pattern

1 minute read

The Aggregate is one of the main pattern in Domain Driven Design (DDD) introduced by Martin Fowler.

Custom Assertions with AssertJ

less than 1 minute read

You might have encountered tests that are difficult to read, especially when the failure messages are unclear. In such cases, consider creating your own spec...

Back to Top ↑

Design patterns

Facade Design Pattern

2 minute read

The Facade design pattern is a structural pattern that allows for hiding the complexity of a subsystem by providing a simple interface to it. The interface ...

Builder Design Patter

1 minute read

Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to produce different types and representa...

Observer Design Patter

1 minute read

The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, known as observers, and notifie...

Back to Top ↑

Java

Back to Top ↑

Test

Custom Assertions with AssertJ

less than 1 minute read

You might have encountered tests that are difficult to read, especially when the failure messages are unclear. In such cases, consider creating your own spec...

What are benefits of testing?

1 minute read

Do I really need tests? Isn’t it a waste of time? These are questions you might have asked once or still find yourself asking. However, the answer is that te...

Back to Top ↑

Spring

Spring Cache

3 minute read

What is Spring Cache? How to configure it in your project and how to use it? How does Spring Cache work? How to add an external provider that allows flexible...

Back to Top ↑

Composition

Back to Top ↑

Refactoring

Back to Top ↑

Clean code

Static Factory Method

1 minute read

In an object-oriented language like Java, what could be wrong with constructors? Overall, nothing. Even so, the famous Joshua Block’s Effective Java Item 1 c...

Back to Top ↑

Memory

Back to Top ↑

Aggregate

Aggregate Pattern

1 minute read

The Aggregate is one of the main pattern in Domain Driven Design (DDD) introduced by Martin Fowler.

Back to Top ↑

Patterns

Aggregate Pattern

1 minute read

The Aggregate is one of the main pattern in Domain Driven Design (DDD) introduced by Martin Fowler.

Back to Top ↑

Design

What is coupling?

3 minute read

In object-oriented paradigm, Coupling refers to the degree of direct knowledge that one element has of another. We may generally divide coupling to tight and...

Back to Top ↑

Software Architecture

Defining Software Architecture

2 minute read

The software community has been engaged in a longstanding debate over how to define “architecture.” Some believe it refers to the underlying structure of a s...

Back to Top ↑

Test Driven Development

What are benefits of testing?

1 minute read

Do I really need tests? Isn’t it a waste of time? These are questions you might have asked once or still find yourself asking. However, the answer is that te...

Back to Top ↑

TDD

What are benefits of testing?

1 minute read

Do I really need tests? Isn’t it a waste of time? These are questions you might have asked once or still find yourself asking. However, the answer is that te...

Back to Top ↑

Strategy pattern

Back to Top ↑

Custom Assertions

Custom Assertions with AssertJ

less than 1 minute read

You might have encountered tests that are difficult to read, especially when the failure messages are unclear. In such cases, consider creating your own spec...

Back to Top ↑

Spring Bean

Back to Top ↑

Context

Back to Top ↑

Bean Scopes

Back to Top ↑

Observer pattern

Observer Design Patter

1 minute read

The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, known as observers, and notifie...

Back to Top ↑

Cache

Spring Cache

3 minute read

What is Spring Cache? How to configure it in your project and how to use it? How does Spring Cache work? How to add an external provider that allows flexible...

Back to Top ↑

Spring Cache

Spring Cache

3 minute read

What is Spring Cache? How to configure it in your project and how to use it? How does Spring Cache work? How to add an external provider that allows flexible...

Back to Top ↑

Comparator

Back to Top ↑

Comparable

Back to Top ↑

Sorting

Back to Top ↑

equals hashCode contract

Back to Top ↑

Builder pattern

Builder Design Patter

1 minute read

Builder is a creational design pattern that lets you construct complex objects step by step. The pattern allows you to produce different types and representa...

Back to Top ↑

DeMorgan's Laws

Back to Top ↑

Logical conditions

Back to Top ↑

BigDecimal and BigInteger

Back to Top ↑

Precise numbers

Back to Top ↑

Association

Back to Top ↑

Aggregation

Back to Top ↑

Communication

Back to Top ↑

Business

Back to Top ↑

Mocks

Back to Top ↑

Big O

Complexity Analysis

less than 1 minute read

It’s a process in which we determine how efficient an algorithm is. There are multiple ways to solve the same issue but the complexity analysis will likely d...

Back to Top ↑

Big O Notation

Big O Notation

3 minute read

The Big O Notation is a mathematical, asymptotic notation that describes time complexity and space complexity of algorithms/ function when the argument tends...

Back to Top ↑

Arrays

Arrays

2 minute read

There are two types of arrays. Static and dynamic ones.

Back to Top ↑

Linked Lists

Linked Lists

1 minute read

Is very similar to array, at least conceptually, to an array.

Back to Top ↑

Hash Tables

Hash Tables

1 minute read

A data structure that store data in key-value pairs and provides fast insertion, deletion and searching.

Back to Top ↑

Stacks

Back to Top ↑

Queues

Back to Top ↑

Strings

Strings

less than 1 minute read

String

Back to Top ↑

Graphs

Graphs

1 minute read

Graph is a collection of nodes that may or may not be connected to each other.

Back to Top ↑

Trees

Trees

2 minute read

a data structure that is constructed with nodes, where each has some value and may point to child-nodes, which recursively form subtrees in the tree.

Back to Top ↑

Effective Java

Static Factory Method

1 minute read

In an object-oriented language like Java, what could be wrong with constructors? Overall, nothing. Even so, the famous Joshua Block’s Effective Java Item 1 c...

Back to Top ↑

Architecture

Back to Top ↑

Monolith

Back to Top ↑

Microservices

Back to Top ↑

Algorithms

Back to Top ↑

Design Patterns

Back to Top ↑

Specification Design Pattern

Back to Top ↑

Metrics

What is coupling?

3 minute read

In object-oriented paradigm, Coupling refers to the degree of direct knowledge that one element has of another. We may generally divide coupling to tight and...

Back to Top ↑

Coupling

What is coupling?

3 minute read

In object-oriented paradigm, Coupling refers to the degree of direct knowledge that one element has of another. We may generally divide coupling to tight and...

Back to Top ↑

Concurrency

Back to Top ↑

Parallelism

Back to Top ↑

IoC and DI

Back to Top ↑

Application Architecture

Back to Top ↑

Inheritance

Back to Top ↑

Facade design pattern

Facade Design Pattern

2 minute read

The Facade design pattern is a structural pattern that allows for hiding the complexity of a subsystem by providing a simple interface to it. The interface ...

Back to Top ↑

CAP

Back to Top ↑

System Design

Defining Software Architecture

2 minute read

The software community has been engaged in a longstanding debate over how to define “architecture.” Some believe it refers to the underlying structure of a s...

Back to Top ↑

Modularity

Back to Top ↑

Cohesion

Back to Top ↑

Memory models

Back to Top ↑

JVM

Back to Top ↑

Network

Back to Top ↑

Protocols

Back to Top ↑

Latency and Throughput

Latency And Throughput

2 minute read

Latency and throughput are the two most important measures of the performance of a system.

Back to Top ↑

Availability

Back to Top ↑

Caching

Caching

4 minute read

Caching is utilized to speed up a system and reduce or improve the latency of that system.

Back to Top ↑

Proxies

Proxies

4 minute read

Commonly utilized by malicious hackers to mask their identity and disguise their location, these distinct proxy servers also serve a variety of essential rea...

Back to Top ↑

Load Balancing

Load Balancing

5 minute read

A load balancer can be better understood through a simple use case. Consider a basic client-server architecture where a client sends requests to a server, wh...

Back to Top ↑

Hashing

Hashing

6 minute read

Hashing is a process that transforms an arbitrary piece of data into a fixed-size value, typically an integer. In the context of system design, this arbitrar...

Back to Top ↑

Synchronized

Back to Top ↑

Volatile

Back to Top ↑

Multithreading

Back to Top ↑

SQL

SQL vs NoSQL Databases

2 minute read

SQL vs NoSQL Databases: Understanding the Difference and When to Choose Each

Back to Top ↑

NoSQL

SQL vs NoSQL Databases

2 minute read

SQL vs NoSQL Databases: Understanding the Difference and When to Choose Each

Back to Top ↑

Leader Election

Leader Election

2 minute read

In most societies, citizens elect their leaders through a voting system. Similarly, in a distributed system, servers utilize a set of algorithms to select a ...

Back to Top ↑

Peer-To-Peer Networks

Back to Top ↑

Polling And Streaming

Polling And Streaming

1 minute read

In computing systems, the interaction between clients and servers is fundamental. This interaction often revolves around the client sending requests, and the...

Back to Top ↑

Rate Limiting

Rate Limiting

2 minute read

Rate limiting is a pivotal technique employed to manage and control the number of incoming and outgoing requests interacting with a system. Not only does it ...

Back to Top ↑

Request Response

Back to Top ↑

Pub-Sub

Back to Top ↑

Communication styles

Back to Top ↑