Skip to content

Instantly share code, notes, and snippets.

Guide to Adding a New Database User in Atlas

This guide provides step-by-step instructions for creating a new database user in Atlas, including setting up authentication and assigning privileges.

Step 1: Access the Database Users Tab

  1. Navigate to the Database Access page in Atlas.
  2. Click the Database Users tab if it is not already displayed.

Step 2: Open the Add New Database User Dialog

  1. On the Database Users tab, click the Add New Database User button to open the dialog box.

Deep Dive into Recursion: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of recursion, a programming technique where a function calls itself to solve smaller instances of a problem. We cover its concepts, mechanics, algorithms, visualization with Mermaid diagrams (using correct syntax), and implementation in JavaScript with examples. Additionally, we explore three practical use cases, compare recursion with iteration, and discuss optimization techniques like tail recursion and memoization.

Recursion Overview

Recursion involves a function solving a problem by breaking it into smaller subproblems of the same type, each solved by calling the function again. It relies on:

  • Base Case: A condition that stops recursion to prevent infinite calls.
  • Recursive Case: The part where the function calls itself with a modified input.

Deep Dive into Hash Tables: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of the Hash Table data structure, covering its concepts, operations, algorithms, collision resolution techniques, and practical use cases. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. We also explore variations and three real-world use cases to demonstrate the hash table's utility.

Hash Tables Overview

A Hash Table (or hash map) is a data structure that maps keys to values using a hash function to compute an index into an array. It provides average-case O(1) time complexity for lookups, insertions, and deletions, making it ideal for fast data retrieval.

Properties

  • Operations:

Deep Dive into Queues: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of the Queue data structure, covering its concepts, operations, algorithms, and practical use cases. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. Additionally, we explore variations like Circular Queues and Priority Queues, and three real-world use cases to demonstrate the queue's utility.

Queues Overview

A Queue is a linear data structure that follows the First-In-First-Out (FIFO) principle, where elements are added (enqueued) at the rear and removed (dequeued) from the front. Queues are fundamental for managing tasks in order of arrival, such as job scheduling or breadth-first search.

Properties

  • Operations:

Deep Dive into Stacks: Concepts, Algorithms, and Use Cases

This document provides an in-depth exploration of the Stack data structure, covering its concepts, operations, algorithms, and practical use cases. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. Additionally, we explore three real-world use cases with code examples to demonstrate the stack's utility.

Stacks Overview

A Stack is a linear data structure that follows the Last-In-First-Out (LIFO) principle, where elements are added (pushed) and removed (popped) from the same end, called the top. Stacks are simple yet powerful, used in scenarios requiring reversal, backtracking, or hierarchical processing.

Properties

  • Operations:

Deep Dive into Linked Lists: Concepts, Algorithms, and Implementations

This document provides an in-depth exploration of Linked Lists, covering Singly Linked Lists and Doubly Linked Lists, with algorithms for insertion, removal, searching, and sorting. Each operation is explained, visualized with Mermaid diagrams (using correct syntax), and implemented in JavaScript with example usage. We also discuss key properties and use cases.

Linked Lists Overview

A Linked List is a linear data structure where elements (nodes) are stored non-contiguously, each containing a value and a reference (or pointer) to the next node (and previous node in doubly linked lists). Unlike arrays, linked lists offer dynamic memory allocation and efficient insertions/deletions but lack random access.

Types

  • Singly Linked List: Each node points to the next node, with the last node pointing to null.

Graph Traversals and Properties: Concepts, Algorithms, and Implementations

This document elaborates on Graphs, focusing on traversal algorithms (Depth-First Search (DFS) and Breadth-First Search (BFS)), and properties like connected components and cyclic vs. non-cyclic graphs. Each section includes explanations, algorithms visualized with Mermaid diagrams (using correct syntax), and JavaScript implementations with examples.

Graphs Overview

A Graph is a data structure consisting of nodes (vertices) connected by edges. Graphs can be:

  • Directed (edges have direction) or Undirected (edges are bidirectional).
  • Weighted (edges have weights) or Unweighted (edges have no weights).
  • Cyclic (contains cycles) or Acyclic (no cycles).

Binary Tree Traversals: Concepts, Algorithms, and Implementations

This document explains Binary Tree Traversals, including Breadth-First Traversal (BFT) and Depth-First Traversal (DFT) variants: Pre-Order, In-Order, and Post-Order. Each traversal is described with its algorithm, visualized using Mermaid diagrams, and implemented in JavaScript with example usage.

Binary Tree Traversals Overview

Binary Tree Traversals are systematic ways to visit all nodes in a binary tree. They are categorized into:

  • Breadth-First Traversal (BFT): Visits nodes level by level, from left to right.
  • Depth-First Traversal (DFT): Explores as far as possible along each branch before backtracking, with three variants:
  • Pre-Order: Visit root, then left subtree, then right subtree.

Advanced Binary Trees: Variations and Balancing

This document elaborates on Binary Trees, focusing on advanced variations such as Red-Black Trees and techniques for balancing. It explains the concepts, properties, and JavaScript implementations for Binary Search Trees (BSTs), AVL Trees, and Red-Black Trees, including balancing mechanisms.

Binary Search Trees (BST)

Concept

A Binary Search Tree is a binary tree where each node has a value, and for any node, all values in the left subtree are less than the node's value, and all values in the right subtree are greater. BSTs enable efficient searching, insertion, and deletion with an average time complexity of O(log n) when balanced, but O(n) in the worst case (e.g., skewed trees).

Implementation

Sorting Algorithms: JavaScript Implementations

This document provides implementations of common sorting algorithms in JavaScript, including Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, and Heap Sort. Each section explains the algorithm briefly and provides a JavaScript class implementation with example usage.

Bubble Sort

Concept

Bubble Sort repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. It continues until no swaps are needed. Time complexity: O(n²).

Implementation