Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Java Arrays
  • Java Strings
  • Java OOPs
  • Java Collection
  • Java 8 Tutorial
  • Java Multithreading
  • Java Exception Handling
  • Java Programs
  • Java Project
  • Java Collections Interview
  • Java Interview Questions
  • Java MCQs
  • Spring
  • Spring MVC
  • Spring Boot
  • Hibernate
Open In App
Next Article:
Java Spring Boot Microservices Sample Project
Next article icon

Java Spring Boot Microservices Sample Project

Last Updated : 06 Jan, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Microservices are more popular nowadays. They can be written in any language. In this article, let us see Spring Boot Microservices. in this article let us see a base project "currency-exchange-sample-service" which has a business logic and which can be invoked in another project "currency-conversion-sample-service". Both are Maven projects and let us see them one by one

Microservice 1: currency-exchange-sample-service

Project Structure

Project structure
 

pom.xml

XML
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                               https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.2.1.RELEASE</version>         <relativePath/> <!-- lookup parent from repository -->     </parent>     <groupId>com.gfg.microservices</groupId>     <artifactId>currency-exchange-sample-service</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>currency-exchange-sample-service</name>     <description>Demo project for Spring Boot</description>      <properties>         <java.version>1.8</java.version>         <spring-cloud.version>Hoxton.RC2</spring-cloud.version>     </properties>      <dependencies>                <!-- Starter for building web, including RESTful,               applications using Spring MVC. -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-config</artifactId>         </dependency>         <!-- The spring-boot-devtools module can be included in any               project to provide additional development-time features -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-devtools</artifactId>             <scope>runtime</scope>             <optional>true</optional>         </dependency>         <!-- H2 is an open-source lightweight Java database -->         <dependency>             <groupId>com.h2database</groupId>             <artifactId>h2</artifactId>                           <scope>runtime</scope>           </dependency>           <!--  starter for using Spring Data JPA with Hibernate. -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-jpa</artifactId>             <version>2.1.3.RELEASE</version>           </dependency>          <!-- provides secured endpoints for monitoring               and managing your Spring Boot application -->         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-actuator</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>             <exclusions>                 <exclusion>                     <groupId>org.junit.vintage</groupId>                     <artifactId>junit-vintage-engine</artifactId>                 </exclusion>             </exclusions>         </dependency>     </dependencies>      <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <version>${spring-cloud.version}</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencyManagement>      <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build>      <repositories>         <repository>             <id>spring-milestones</id>             <name>Spring Milestones</name>             <url>https://repo.spring.io/milestone</url>         </repository>     </repositories>  </project> 

Let us see the important files 

CurrencyExchangeServiceSampleApplication.java

Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication // It is equivalent to using @Configuration, // @EnableAutoConfiguration and @ComponentScan with their // default attributes: public class CurrencyExchangeServiceSampleApplication {      public static void main(String[] args)     {         SpringApplication.run(             CurrencyExchangeServiceSampleApplication.class,             args);     } } 

CurrencyExchangeSampleController.java

@GetMapping("/currency-exchange-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}")  // where {fromCurrency} and {toCurrency} are path variable // fromCurrency can be USD,EUR,AUD,INR and toCurrency can be the opposite of any fromCurrency
Java
import java.math.BigDecimal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController;  @SpringBootApplication @RestController // The @RestController annotation in Spring is essentially // just a combination of // @Controller and @ResponseBody. This annotation was added // during Spring 4.0 to remove the redundancy of declaring // the @ResponseBody annotation in your controller public class CurrencyExchangeSampleController {     @Autowired private Environment environment;      @GetMapping(         "/currency-exchange-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}")     // where {fromCurrency} and {toCurrency} are path     // variable     // fromCurrency can be USD,EUR,AUD,INR and toCurrency     // can be the opposite of any fromCurrency     public ExchangeValue     retrieveExchangeValue(@PathVariable String fromCurrency,                           @PathVariable String toCurrency)     {         // Here we need to write all of our business logic         BigDecimal conversionMultiple = null;         ExchangeValue exchangeValue = new ExchangeValue();         if (fromCurrency != null && toCurrency != null) {             if (fromCurrency.equalsIgnoreCase("USD")                 && toCurrency.equalsIgnoreCase("INR")) {                 conversionMultiple = BigDecimal.valueOf(78);             }             if (fromCurrency.equalsIgnoreCase("INR")                 && toCurrency.equalsIgnoreCase("USD")) {                 conversionMultiple                     = BigDecimal.valueOf(0.013);             }             if (fromCurrency.equalsIgnoreCase("EUR")                 && toCurrency.equalsIgnoreCase("INR")) {                 conversionMultiple = BigDecimal.valueOf(82);             }             if (fromCurrency.equalsIgnoreCase("AUD")                 && toCurrency.equalsIgnoreCase("INR")) {                 conversionMultiple = BigDecimal.valueOf(54);             }         }         // setting the port         exchangeValue = new ExchangeValue(             1000L, fromCurrency, toCurrency,             conversionMultiple);         exchangeValue.setPort(Integer.parseInt(             environment.getProperty("local.server.port")));         return exchangeValue;     } } 

ExchangeValue.java

Java
import java.math.BigDecimal; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table;  // @Entity annotation defines that a class can be mapped to // a table @Entity  // Representation of the table name @Table(name = "Exchange_Value") public class ExchangeValue {     // The @Id annotation is inherited from     // javax.persistence.Id, indicating the member field     // below is the primary key of the current entity     @Id @Column(name = "id") private Long id;     @Column(name = "currency_from")     private String fromCurrency;     @Column(name = "currency_to") private String toCurrency;     @Column(name = "conversion_multiple")     private BigDecimal conversionMultiple;     @Column(name = "port") private int port;      public ExchangeValue() {}      // generating constructor using fields     public ExchangeValue(Long id, String fromCurrency,                          String toCurrency,                          BigDecimal conversionMultiple)     {         super();         this.id = id;         this.fromCurrency = fromCurrency;         this.toCurrency = toCurrency;         this.conversionMultiple = conversionMultiple;     }      // generating getters     public int getPort() { return port; }      public void setPort(int port) { this.port = port; }      public Long getId() { return id; }      public String getFrom() { return fromCurrency; }      public String getTo() { return toCurrency; }      public BigDecimal getConversionMultiple()     {         return conversionMultiple;     } } 

application.properties

spring.application.name=currency-exchange-sample-service server.port=8000 #Representation of the port number . We can set different port number in run configuration also spring.jpa.show-sql=true  #To display the SQL spring.h2.console.enabled=true   spring.datasource.platform=h2  #As we are using h2 datasource  spring.datasource.url=jdbc:h2:mem:gfg 

data.sql

insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)   values(10001,'USD', 'INR' ,65,0);   insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)   values(10002,'EUR', 'INR' ,82,0);   insert into exchange_value(id,currency_from,currency_to,conversion_multiple,port)   values(10003,'AUD', 'INR' ,53,0);

By default, it has been set to run on port 8000. We can create another instance and can make the project run on port 8001 in the below ways

 

As this is the spring boot application, it can be normally run as Java application

 

If we set to run the application on two different ports, we will get the below options

 

Let us select the first one. On running the application, in the console, we see as

 

From the console, we can see that it used default Tomcat and the project is running on port 8080. As we have used 3 insert scripts, automatically table is created and the data is inserted. We can able to do the following 

http://localhost:8000/currency-exchange-sample/fromCurrency/USD/toCurrency/INR
 

When this URL is hit, it will be redirected to the controller, and fromCurrency is taken as "USD" and toCurrency is taken as "INR"

Because of this,

// Below set of code is executed and hence we are seeing the result like above if (fromCurrency != null && toCurrency != null) {             if (fromCurrency.equalsIgnoreCase("USD") && toCurrency.equalsIgnoreCase("INR")) {                 conversionMultiple = BigDecimal.valueOf(78);             }

Similarly, we can able to execute the below following URLs

http://localhost:8000/currency-exchange-sample/fromCurrency/EUR/toCurrency/INR
 
http://localhost:8000/currency-exchange-sample/fromCurrency/AUD/toCurrency/INR
 

Hence according to our business needs, we can add business logic to the controller file. Let us see how the above service is getting called in the currency-conversion project

Microservice 2:currency-conversion-sample-service

 

This is also a maven project

pom.xml

XML
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                               https://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>2.2.1.RELEASE</version>         <relativePath/>      </parent>     <groupId>com.gfg.microservices</groupId>     <artifactId>currency-conversion-sample-service</artifactId>     <version>0.0.1-SNAPSHOT</version>     <name>currency-conversion-servicce</name>     <description>Demo project for Spring Boot</description>      <properties>         <java.version>1.8</java.version>         <spring-cloud.version>Hoxton.RC2</spring-cloud.version>     </properties>      <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-actuator</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-config</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-devtools</artifactId>             <scope>runtime</scope>             <optional>true</optional>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>             <exclusions>                 <exclusion>                     <groupId>org.junit.vintage</groupId>                     <artifactId>junit-vintage-engine</artifactId>                 </exclusion>             </exclusions>         </dependency>     </dependencies>      <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <version>${spring-cloud.version}</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencyManagement>      <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>             </plugin>         </plugins>     </build>      <repositories>         <repository>             <id>spring-milestones</id>             <name>Spring Milestones</name>             <url>https://repo.spring.io/milestone</url>         </repository>     </repositories>  </project> 

Main important java files

CurrencyConversionSampleServiceApplication.java

Java
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication public class CurrencyConversionSampleServiceApplication {     public static void main(String[] args) {         SpringApplication.run(CurrencyConversionSampleServiceApplication.class, args);     } } 

CurrencyConversionSampleBean.java

Java
import java.math.BigDecimal;  public class CurrencyConversionSampleBean {     // We need to set all the fields that is going to     // received in response     private Long id;     private String from;     private String to;     private BigDecimal ConversionMultiple;     private BigDecimal quantity;     private BigDecimal totalCalculatedAmount;     private int port;      // default constructor     public CurrencyConversionSampleBean() {}      // creating constructor     public CurrencyConversionSampleBean(         Long id, String from, String to,         BigDecimal conversionMultiple, BigDecimal quantity,         BigDecimal totalCalculatedAmount, int port)     {         super();         this.id = id;         this.from = from;         this.to = to;         ConversionMultiple = conversionMultiple;         this.quantity = quantity;         this.totalCalculatedAmount = totalCalculatedAmount;         this.port = port;     }      // creating setters and getters     public Long getId() { return id; }      public void setId(Long id) { this.id = id; }      public String getFrom() { return from; }      public void setFrom(String from) { this.from = from; }      public String getTo() { return to; }      public void setTo(String to) { this.to = to; }      public BigDecimal getConversionMultiple()     {         return ConversionMultiple;     }      public void     setConversionMultiple(BigDecimal conversionMultiple)     {         ConversionMultiple = conversionMultiple;     }      public BigDecimal getQuantity() { return quantity; }      public void setQuantity(BigDecimal quantity)     {         this.quantity = quantity;     }      public BigDecimal getTotalCalculatedAmount()     {         return totalCalculatedAmount;     }      public void setTotalCalculatedAmount(         BigDecimal totalCalculatedAmount)     {         this.totalCalculatedAmount = totalCalculatedAmount;     }      public int getPort() { return port; }      public void setPort(int port) { this.port = port; } } 

CurrencyConversionSampleController.java

@GetMapping("/currency-converter-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}/quantity/{quantity}")
Java
package com.gfg.microservices.currencyconversionservice;  import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate;  // To invoke an external service, RestTemplate() constructor // is used @RestController public class CurrencyConversionSampleController {     @GetMapping(         "/currency-converter-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}/quantity/{quantity}")     // where {from} and {to} represents the     // column     // returns a bean back     public CurrencyConversionSampleBean     convertCurrency(@PathVariable String fromCurrency,                     @PathVariable String toCurrency,                     @PathVariable BigDecimal quantity)     {          // setting variables to currency exchange service         Map<String, String> uriVariables = new HashMap<>();         // urlParams should match properly         uriVariables.put("fromCurrency", fromCurrency);         uriVariables.put("toCurrency", toCurrency);         // calling the currency-exchange-sample-service         // http://localhost:8000/currency-exchange-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}         // is the service that got called from part 1. Its         // response is received and via         // CurrencyConversionSampleBean we are getting the         // results back         ResponseEntity<CurrencyConversionSampleBean>             responseEntity             = new RestTemplate().getForEntity(                 "http://localhost:8000/currency-exchange-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}",                 CurrencyConversionSampleBean.class,                 uriVariables);         CurrencyConversionSampleBean response             = responseEntity.getBody();         // creating a new response bean and getting the         // response back and taking it into Bean Hence the         // output bean should have all the fields that is         // received from the response         return new CurrencyConversionSampleBean(             response.getId(), fromCurrency, toCurrency,             response.getConversionMultiple(), quantity,             quantity.multiply(                 response.getConversionMultiple()),             response.getPort());     } } 

That is this project is started on port 8100. Now we can able to execute the following URLS

http://localhost:8100/currency-converter-sample/fromCurrency/USD/toCurrency/INR/quantity/1000
 

When this service is called, it will in turn invoke.

Assumption: currency-exchange-sample is running in port 8000 and it produces the required response

http://localhost:8000/currency-exchange-sample/fromCurrency/USD/toCurrency/INR

And then as the logic is written as

ResponseEntity<CurrencyConversionSampleBean>responseEntity=new RestTemplate().getForEntity("http://localhost:8000/currency-exchange-sample/fromCurrency/{fromCurrency}/toCurrency/{toCurrency}",CurrencyConversionSampleBean.class, uriVariables);         CurrencyConversionSampleBean response=responseEntity.getBody();           // creating a new response bean and getting the response back and taking it into Bean         // Hence the output bean should have all the fields that is received from the response         return new CurrencyConversionSampleBean(response.getId(), fromCurrency,toCurrency,response.getConversionMultiple(), quantity,quantity.multiply(response.getConversionMultiple()),response.getPort());  

We are seeing the totalCalculatedAmount as 78 * 1000  i.e. 78000. We are getting "conversionMultiple" from the first URL and it is multiplied with the quantity value here. It is very ideal that, we no need to carry exchange service logic into this application i.e. part 1 project can be separate and part 2 project can invoke part 1 URLs here. So microservices can run separately and other services can use them. Rest of the URLs that can be checked

Example

http://localhost:8100/currency-converter-sample/fromCurrency/EUR/toCurrency/INR/quantity/5000

This will call in turn

http://localhost:8000/currency-exchange-sample/fromCurrency/EUR/toCurrency/INR

And the output will be 

 

Example

http://localhost:8100/currency-converter-sample/fromCurrency/AUD/toCurrency/INR/quantity/2000

This will call in turn

http://localhost:8000/currency-exchange-sample/fromCurrency/AUD/toCurrency/INR

And the output will be

 

Next Article
Java Spring Boot Microservices Sample Project

P

priyarajtt
Improve
Article Tags :
  • Java
  • Java-Spring
  • Java-Spring-Boot
Practice Tags :
  • Java

Similar Reads

    Spring Boot Tutorial
    Spring Boot is a Java framework that makes it easier to create and run Java applications. It simplifies the configuration and setup process, allowing developers to focus more on writing code for their applications. This Spring Boot Tutorial is a comprehensive guide that covers both basic and advance
    10 min read
    Introduction to Spring Boot
    Spring is widely used for creating scalable applications. For web applications, Spring provides Spring MVC, a commonly used module for building robust web applications. The major drawback of traditional Spring projects is that configuration can be time-consuming and overwhelming for new developers.
    5 min read
    Best Way to Master Spring Boot – A Complete Roadmap
    In the corporate world, they say "Java is immortal!". But Why? Java remains one of the major platforms for developing enterprise applications. Enterprise Applications are used by large companies to make money. Those applications have high-reliability requirements and an enormous codebase. According
    14 min read
    How to Create a Spring Boot Project?
    Spring Boot is built on top of the spring and contains all the features of spring. It is one of the most popular frameworks for building Java-based web applications and microservices. It is a favorite among developers due to its rapid, production-ready environment, which allows developers to focus o
    6 min read
    Spring Boot - Annotations
    Spring Boot Annotations are a form of metadata that provides data about a spring application. Spring Boot is built on the top of the spring and contains all the features of spring. And is becoming a favorite of developers these days because of its rapid production-ready environment which enables the
    7 min read
    Spring Boot - Architecture
    Spring Boot is built on top of the core Spring framework. It simplifies and automates Spring-based application development by reducing the need for manual configuration. Spring Boot follows a layered architecture, where each layer interacts with other layers in a hierarchical order. The official Spr
    3 min read
    Spring Boot Actuator
    Developing and managing an application are the two most important aspects of the application’s life cycle. It is very important to know what is going on beneath the application. Also, when we push the application into production, managing it gradually becomes critically important. Therefore, it is a
    5 min read
    Spring Boot - Introduction to RESTful Web Services
    RESTful Web Services REST stands for REpresentational State Transfer. It was developed by Roy Thomas Fielding, one of the principal authors of the web protocol HTTP. Consequently, REST was an architectural approach designed to make the optimum use of the HTTP protocol. It uses the concepts and verbs
    5 min read
    How to create a basic application in Java Spring Boot
    Spring Boot is the most popular Java framework that is used for developing RESTful web applications. In this article, we will see how to create a basic Spring Boot application.Spring Initializr is a web-based tool using which we can easily generate the structure of the Spring Boot project. It also p
    3 min read
    How to Create a REST API using Java Spring Boot?
    Representational State Transfer (REST) is a software architectural style that defines a set of constraints for creating web services. RESTful web services allow systems to access and manipulate web resources through a uniform and predefined set of stateless operations. Unlike SOAP, which exposes its
    4 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences