멋사 Backend 22일차 🦁

신재원·2023년 5월 17일

💯 Java

📚Stack (스택)

  • 쌓는다는 의미이며, 후입선출(LIFO, Last-In-First-Out) 원칙에 따라 동작하는 자료구조입니다.
    • 예시 : 프링글스 감자칩, 각티슈

코드로 예시를 설명하겠습니다.

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        // 스택에 원소 추가
        stack.push(1);
        stack.push(2);
        stack.push(3);
        /*
        3
        2
        1  
        이렇게 쌓여있다고 생각하면 편합니다.
         */

        // 스택의 맨 위 원소 확인 (제거하지 않음)
        int topElement1 = stack.peek();
        System.out.println("맨위의 값 : " + topElement1); // 3

        // 스택의 맨 위 원소 제거
        int poppedElement = stack.pop();
        System.out.println("제거할 값 : " + poppedElement); // 3 제거

        // 스택의 맨 위 원소 확인 (제거하지 않음)
        int topElement2 = stack.peek();
        System.out.println("맨위의 값 : " + topElement2); // 2

        // 스택이 비어있는지 확인
        boolean isEmpty = stack.empty();
        System.out.println("stack이 비었나요 ? : " + isEmpty); // false
    }
}
  • push() : 스택에 값 추가
  • peek() : 스택의 맨 위 값 확인만 (제거하지 않음)
  • pop() : 스택의 맨 위 값 확인 (제거)
  • empty() : 스택이 비었는지 확인 (논리값을 반환)

Queue (큐)

  • FIFO(First-In-First-Out) 원칙을 따르는 자료구조입니다. 즉, 먼저 저장된 요소가 먼저 꺼내지는 구조입니다.
  • 큐는 주로 데이터의 순서를 유지하며 요소를 추가하거나 제거할 때 사용됩니다.

코드로 예시를 설명하겠습니다.

import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // 큐에 원소 추가
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);

        /*
        1
        2
        3 이 순서로 저장되어있다고 생각하면됩니다.
         */

        // 큐의 맨 앞 원소 확인 (제거하지 않음)
        int frontElement1 = queue.peek();
        System.out.println("맨 앞의 값 : " + frontElement1); // 1

        // 큐의 맨 앞 원소 제거
        int removedElement = queue.poll();
        System.out.println("제거할 값 : " + removedElement); // 1

        // 큐의 맨 앞 원소 확인 (제거하지 않음)
        int frontElement2 = queue.peek();
        System.out.println("맨 앞의 값 : " + frontElement2); // 2

        // 큐가 비어있는지 확인
        boolean isEmpty = queue.isEmpty();
        System.out.println("Queue가 비어있나요 ?  " + isEmpty); // false
    }
}
  • offer() : 큐에 값 추가
    • add() 메소드로도 값 추가가 되지만 반환값의 차이가 있음
  • peek() : 큐의 맨 앞 값 확인 (제거하지 않음)
  • poll() : 큐의 맨 앞 값 확인 (제거)
    • remove() 메소드로도 값이 제거가 되지만 반환값의 차이가 있음
  • isEmpty() : 큐가 비어있는지 확인

🎯 정리

  • 스택과 큐 둘다 많이 사용하는 자료구조 입니다.
    • 스택은 LIFO이며, 큐는 FIFO 입니다.
    • 서로 사용하는 메소드명이 다릅니다.

📄 DB (데이터베이스)

DB (데이터베이스) 란?

  • 데이터를 효율적으로 관리하기위해 체계화된 데이터의 모임입니다.
  • 데이터의 구조화와 관리를 위한 환경을 제공하는 개념입니다.

파일 대신 DB를 쓰는 이유?

  1. DB를 사용하면 데이터의 검색과 조작이 용이합니다.
    (Select, Where(조건), Join)
  2. 데이터 중복을 최소화 할수있습니다.
  3. 단점으로는 사용하는 방법을 배워야합니다.
    등등

인텔리제이에 Mysql 연동은 추후에 뒤에서 진행합니다.
▶ Mysql WorkBench로 실습
✔ 테이블을 만들때 기본키 (PK)를 꼭 만들어 줘야합니다.
(PK 없이 만들수도 있지만, 애플리케이션에서 실행이 안됩니다.)

  • PK란?

중복된 값을 가질 수 없으며, 각 행을 고유하게 식별하는 유일한 식별자(identifier) 역할을 합니다.

Like 검색

  • % 예시
select * from book
where book name like "축구%"; // 축구로 시작하는 bookname을 조회
select * from book
where book name like "%축구%"; // 축구가 들어가는 bookname을 조회
  • _ 예시
select * from book
where book name like "축구_"; 
// 축구로 시작하며 3글자인 bookname을 조회 (축구공 등) 

👀 Join

  • 두개 이상의 테이블을 관련된 데이터로 결합하는것입니다.

예시 코드

select bookname from book
where book.id = price.id; // where문으로 조인한다.

0개의 댓글