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(): 개행 문자까지 포함하여 한 줄 전체를 읽어들입니다.
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을 도커 위에 설치할 것
- 가상환경을 쓰는 이유는 기존에 설치되었던 프로그램과 충돌 될 수 있음
- 같은 서버 여러개를 운영해야할 때 같은 환경이여야하므로 이미지를 이용해서 복제 한다 .(한번에 설치 할 수 있다)
사용 방법
- 도커 설치
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 |