241216 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school

2024. 12. 16. 16:54·TIL

Scanner 객체 매개변수 메소드

  • 재사용성 : 동일한 Scanner 객체를 여러 매소드에서 재사용
  • 자원 관리: 하나의 Scanner 객체를 공유함으로써 불필요한 자원 사용을 줄임
import java.util.Scanner;

public class UserInputHandler {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        collectPersonalInfo(scanner);
        collectContactInfo(scanner);
        collectPreferences(scanner);
        
        scanner.close();
    }
    
    public static void collectPersonalInfo(Scanner scanner) {
        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();
        
        System.out.print("나이를 입력하세요: ");
        while (!scanner.hasNextInt()) {
            System.out.print("유효한 나이를 입력하세요: ");
            scanner.next(); // 잘못된 입력 버리기
        }
        int age = scanner.nextInt();
        scanner.nextLine(); // 개행 문자 제거
        
        System.out.println("이름: " + name + ", 나이: " + age);
    }
    
    public static void collectContactInfo(Scanner scanner) {
        System.out.print("이메일을 입력하세요: ");
        String email = scanner.nextLine();
        
        System.out.print("전화번호를 입력하세요: ");
        String phone = scanner.nextLine();
        
        System.out.println("이메일: " + email + ", 전화번호: " + phone);
    }
    
    public static void collectPreferences(Scanner scanner) {
        System.out.print("좋아하는 색깔을 입력하세요: ");
        String color = scanner.nextLine();
        
        System.out.print("좋아하는 음식은 무엇인가요? ");
        String food = scanner.nextLine();
        
        System.out.println("좋아하는 색깔: " + color + ", 좋아하는 음식: " + food);
    }
}

  • 입력 버퍼 문제
    • nextInt()와 nextLine() 메소드를 함께 사용할 때 발생
    • nextInt(), nextDouble(), 등: 숫자 타입을 읽어들이지만, 개행 문자 (\\n)를 포함한 나머지 문자열은 버퍼에 남겨둠
    • nextLine(): 개행 문자까지 포함하여 한 줄 전체를 읽어들입니다.
    따라서, nextInt() 후 바로 nextLine()을 호출하면 nextLine()이 남아 있는 개행 문자를 읽어들여 빈 문자열을 반환
Scanner scanner = new Scanner(System.in);
System.out.print("나이를 입력하세요: ");
int age = scanner.nextInt();
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine(); // 개행 문자 때문에 빈 문자열이 입력됨
//사용자가 나이를 입력하고 엔터(개행문자 \\n)는 입력 버퍼에 남아있다
//다음 nextInt()를 호출 할 때 남아 있는 개행 문자를 읽어들여 빈 문자열("")반환

//해결 방법
//nextInt() 후 scanner.nextLine()을 한 번 호출하여 버퍼를 비워줌
int age = scanner.nextInt();
scanner.nextLine(); // 개행 문자 제거
String name = scanner.nextLine();


데이터베이스

항목  데이터베이스(Database)  DBMS(Database Management System)
정의 데이터를 체계적으로 저장한 집합체 데이터베이스를 관리하고 운영하는 소프트웨어
역할 데이터를 저장, 관리, 검색 데이터베이스 생성, 관리, 유지보수, 보안 제공
예시 고객 정보, 도서 목록, 판매 기록 등 MySQL, PostgreSQL, Oracle, MongoDB 등
의존성 DBMS에 의해 관리됨 데이터베이스를 생성하고 관리하기 위한 필수 요소
구성 요소 테이블, 레코드, 필드 등 데이터 정의, 데이터 조작, 보안, 무결성 관리 기능 등

관계형 데이터베이스 ( Relational Database = RDB )

  • **테이블(Relations)**로 구성되며, 각 테이블은 **행(레코드)과 열(필드)**로 이루어짐
  • **SQL(Structured Query Language)**을 사용하여 데이터 조작

🐋도커

  • 서버가 여러개 동작 하는 개념
    • 맥에서 윈도우 프로그램 씀
    • 파이썬 여러 버전을 쓸때
  • 내 컴퓨터 안에 (리눅스가 설치된)새로운 컴퓨터
  • 데이터베이스가 내 컴퓨터 안에 영향을 끼칠 수 있으므로 가상의 컴퓨터에 데이터 베이스 설치 (컨테이너화)→ mysql을 도커 위에 설치할 것
  • 가상환경을 쓰는 이유는 기존에 설치되었던 프로그램과 충돌 될 수 있음
  • 같은 서버 여러개를 운영해야할 때 같은 환경이여야하므로 이미지를 이용해서 복제 한다 .(한번에 설치 할 수 있다)

사용 방법

  1. 도커 설치

   https://www.docker.com/products/docker-desktop/ Windows 용 Docker-Desktop 다운로드

   설치 후 PC 재시작

 

   2. 내가 원하는 디렉토리에 docker-compose.yml 파일 작성

//  c드라이브/devel/docker/mysql/docker-compose.yml
version: "2"

services:
  vacation-db:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: "rootj"        # Root account password
      MYSQL_DATABASE: "exam01"           # Database name
      MYSQL_USER: "hwangjy001"                     # Username
      MYSQL_PASSWORD: "0512"                   # User password
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./database/init/:/docker-entrypoint-initdb.d/
      - ./database/data-dir/:/var/lib/mysql/
    platform: linux/x86_64
    ports:
      - "3306:3306"

   

   3. 현재 디렉토리 cmd에서 docker-compose up -d 실행

  • 현재 폴더의 docker-compose.yml 파일을 읽어들여서 MySQL 서버를 실행
  • -d 옵션은 백그라운드로 실행
  • docker-compose.yml 파일이 있는 곳에 database폴더가 생김, 해당 폴더 안에 mysql의 data 저장
  • docker-compose down 명령을 실행하면 mysql서버가 종료된다. database폴더를 삭 제하고 다시 실행하면 모든 데이터가 삭제

 

  4. docker ps → 실행되는 이미지 보기

 

  5. 실행되는 이미지에 접속

  • docker로 실행되는 이미지들은 리눅스 위에서 실행, 일종의 서버가 실행되고 있다
docker exec -it 컨테이너id 실행할프로그램

ex) docker exec -it 4f0a376be6b2 /bin/bash

 

 6. 접속한 컨테이너에서 mysql 서버 접속하기

mysql -u아이디 -p mysql
//mysql->접속할 데이터베이스 이름, 생략해도 됨 

 

루트 사용자

  • 루트 사용자는 모든 권한을 가지고 있음
  • 루트 사용자가 일반 User에게 권한을 주어야 일반 User가 DBMS 사용 가능함

VMware, VirtualBox랑 Docker의 차이

간단하게 

  • Docker가 ****훨씬 더 가벼움,빠름
  • VMware, VirtualBox는 다른 운영체제를 하나 더 만듦

'TIL' 카테고리의 다른 글

241218 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school  (2) 2024.12.18
241217 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school  (1) 2024.12.17
241213 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school  (2) 2024.12.13
241211 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school  (2) 2024.12.11
241210 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school  (2) 2024.12.10
'TIL' 카테고리의 다른 글
  • 241218 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school
  • 241217 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school
  • 241213 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school
  • 241211 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school
Jiyuuuuun
Jiyuuuuun
  • Jiyuuuuun
    Hello, World!
    Jiyuuuuun
  • 전체
    오늘
    어제
    • 분류 전체보기 (112)
      • TIL (56)
      • CS (17)
        • Network (4)
        • Algorithm (10)
      • JAVA (5)
      • Project (10)
        • HakPle (3)
        • JUSEYO (4)
      • Spring (2)
      • C (3)
      • C++ (16)
      • Snags (2)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Docker
    juseyo
    node.js
    back-end
    nginx
    HTML
    멋쟁이사자처럼
    java
    my_favorite_place
    react
    Kubernetes
    JDBC
    db
    부트캠프
    SQL
    CSS
    hakple
    javascript
    JPA
    springboot
    front-end
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jiyuuuuun
241216 [멋쟁이사자처럼 부트캠프 TIL 회고] Back-End school
상단으로

티스토리툴바