java 26

cmd 활용법 + Gemini CLI로 스프링부트 프로젝트 빠르게 시작하기

cmd 활용법 + Gemini CLI로 스프링부트 프로젝트 빠르게 시작하기문법 공부와는 별개로, 개발 환경을 더 효율적으로 다루는 법도 함께 배웠다. 매번 탐색기로 폴더를 찾아 들어가던 걸 명령 프롬프트로 한 번에 여는 방법과, Gemini CLI를 인텔리제이에 붙여서 AI에게 코드 작업을 맡기는 방법을 정리해본다.cmd로 원하는 폴더 경로 바로 열기작업할 폴더를 하나 만들어두고, 그 폴더의 주소창(경로 표시줄)에 cmd를 입력하면 명령 프롬프트가 해당 폴더 경로로 곧바로 열린다.지금까지는 명령 프롬프트를 열고 cd 명령으로 폴더를 하나하나 이동해서 들어갔는데, 이 방법을 알고 나니 작업할 폴더마다 빠르게 터미널을 열 수 있어서 훨씬 편해졌다. 특히 여러 프로젝트 폴더를 왔다 갔다 하며 작업할 때 유용하..

FullStack BackEnd 2026.05.11

콘솔 게시판 프로그램으로 배우는 자바 MVC 구조 - 로그인, 게시글 CRUD 실전 예제

콘솔 게시판 프로그램으로 배우는 자바 MVC 구조 - 로그인, 게시글 CRUD 실전 예제지금까지 배운 클래스, 생성자, 컬렉션, 캡슐화를 한꺼번에 적용해보는 실전 프로젝트로 콘솔 게시판 프로그램을 만들었다. 학생관리 프로그램과 뼈대는 비슷하지만 로그인 기능이 추가됐고, 로직을 실행부-컨트롤러-서비스로 나누는 구조를 처음 직접 짜본 날이라 배운 내용을 실습 코드로 정리해본다.MVC란?역할을 나눠서 프로그램을 설계하는 방식이다.model: 데이터view: 화면에 보여주는 부분 (HTML, SSR/CSR 등 웹에서는 다양한 방식이 있음)controller: 서버에서 중재하는 역할콘솔 프로그램에서는 view가 화면 출력(System.out.println)으로 단순화되지만, controller ↔ service ..

FullStack BackEnd 2026.05.11

자바 예외 처리(Exception Handling) 완전정리 - try-catch부터 자주 만나는 예외까지

자바 예외 처리(Exception Handling) 완전정리 - try-catch부터 자주 만나는 예외까지컬렉션까지 배운 다음 예외 처리를 배웠다. 지금까지 실습하면서 배열 범위를 벗어나거나 잘못된 값을 입력할 때마다 프로그램이 그대로 죽어버리는 걸 여러 번 겪었는데, 오늘 배운 try-catch로 그 문제를 어떻게 해결하는지 정리해본다.예외(Exception)란?프로그램 실행 중에 발생하는 예상 가능한 문제 상황이다. 예를 들면:숫자를 입력해야 하는데 문자를 입력함존재하지 않는 학생 번호를 조회함로그인하지 않은 상태에서 글을 작성하려고 함리스트 범위를 벗어난 인덱스에 접근함지금까지 실습하면서 실제로 겪어봤던 상황들이라 공감이 많이 됐다.오류(Error)와 예외(Exception)의 차이구분오류(Erro..

FullStack BackEnd 2026.05.11

자바 컬렉션 프레임워크 완전정리 - List, Set, Map, Iterator, 배열과의 차이

자바 컬렉션 프레임워크 완전정리 - List, Set, Map, Iterator, 배열과의 차이배열의 한계를 겪어본 뒤라 그런지, 컬렉션 프레임워크를 배우면서 "이래서 실무에서 배열을 거의 안 쓰는구나"를 확실히 체감했다. List, Set, Map을 각각 언제 써야 하는지, 그리고 왜 배열보다 컬렉션이 압도적으로 실용적인지 정리해본다.컬렉션 프레임워크란?여러 개의 데이터를 효율적으로 저장하고 관리하기 위한 클래스들의 집합이다.List list = new ArrayList();배열보다 훨씬 유연하고, 실무에서는 필수적으로 사용된다.배열의 한계 - 왜 컬렉션이 필요할까배열을 몇 주간 써보면서 겪었던 불편함이 그대로 정리됐다.크기가 고정되어 있다중간에 데이터를 삭제하거나 삽입하기 불편하다현재 데이터 개수를 ..

FullStack BackEnd 2026.05.11

자바 다형성 심화(업캐스팅·다운캐스팅·instanceof) + 추상 클래스와 인터페이스 완전정리

자바 다형성 심화(업캐스팅·다운캐스팅·instanceof) + 추상 클래스와 인터페이스 완전정리상속과 다형성의 기초 개념을 배운 다음, 타입 변환과 추상 클래스, 인터페이스까지 이어서 배웠다. 특히 다운캐스팅에서 실수하면 어떻게 오류가 나는지 직접 겪어보고 나서야 instanceof가 왜 필요한지 확실히 이해가 됐다.클래스에서의 타입 변환업캐스팅(Upcasting)자식 타입을 부모 타입으로 변환하는 것이다. 자동으로 변환되며(형변환 생략 가능), 다형성을 쓸 때 가장 많이 등장하는 패턴이다.Animal a = new Dog();다운캐스팅(Downcasting)반대로 부모 타입을 자식 타입으로 변환하는 것이다. 이때는 명시적인 형변환이 반드시 필요하다.Animal a = new Dog();Dog d = (..

FullStack BackEnd 2026.05.11

자바 상속(Inheritance), 오버라이딩, 다형성 기초 완전정리

자바 상속(Inheritance), 오버라이딩, 다형성 기초 완전정리접근 제어자까지 배운 다음, 객체지향의 핵심 3대 특성 중 상속과 다형성을 배웠다. 지금까지 클래스 하나하나를 독립적으로 만들었다면, 오늘부터는 클래스끼리 관계를 맺는 방법을 배우기 시작한 셈이다. 개념 자체는 낯설었지만, 자전거와 리모컨 비유 덕분에 왜 이게 필요한지는 확실히 이해가 됐다.상속(Inheritance)이란?상속은 기존 클래스를 기반으로 새로운 클래스를 만드는 것이다. 부모 클래스(상위 클래스)의 속성과 메소드를 자식 클래스(하위 클래스)가 물려받는다."자전거를 물려받은 상황" 으로 비유하면 이해가 쉽다. 기본 기능(핸들, 바퀴, 페달)은 그대로 있고, 필요하면 바구니를 달거나 라이트를 달아서 기능을 확장할 수 있다. 즉,..

FullStack BackEnd 2026.05.11

자바 메소드, Getter/Setter, 캡슐화 완전정리

자바 메소드, Getter/Setter, 캡슐화 완전정리생성자와 static을 배운 뒤, 오늘은 메소드의 기본 구조부터 Getter/Setter, 그리고 왜 필드를 굳이 감춰야 하는지(캡슐화)까지 배웠다. 지난 며칠간 "필드를 private으로 막아두고 메서드로만 접근하게 한다"는 이야기가 계속 나왔는데, 오늘 그 이유를 명확하게 정리할 수 있었다.메소드(Method)란?메소드는 특정 작업을 수행하는 코드 블록으로, 하나의 기능을 독립적으로 구성한 단위다.메소드를 쓰는 이유코드 재사용이 가능해진다유지 보수가 쉬워진다기능 단위로 소프트웨어를 구조화할 수 있다코드 가독성이 올라간다메소드의 기본 구조접근제어자 리턴타입 메소드이름(매개변수) { 실행문; return 반환값; // 리턴 타입이 voi..

FullStack BackEnd 2026.05.11

자바 static 완전정리 - 정적 필드, 정적 메서드, 언제 써야 할까?

자바 static 완전정리 - 정적 필드, 정적 메서드, 언제 써야 할까생성자와 접근 제어자를 배운 다음, 며칠에 걸쳐 static 키워드를 반복해서 다뤘다. 객체마다 따로 존재하는 일반 필드와 달리, static은 "모든 객체가 공유하는 하나의 저장 공간"이라는 개념이라 처음엔 왜 필요한지 감이 잘 안 왔는데, 실습 예제와 실무 활용 사례를 보고 나서야 언제 써야 하는지 이해가 됐다.static의 의미static은 객체가 아닌 클래스 자체에 속하는 멤버를 만드는 키워드다. 지금까지 배운 필드나 메서드는 객체(인스턴스)마다 개별적으로 존재했는데, static이 붙으면 객체가 몇 개 생성되든 상관없이 딱 하나만 존재하는 값이나 기능이 된다.static의 3대 특징객체 생성 없이 사용할 수 있다모든 객체가 ..

FullStack BackEnd 2026.05.11

SQL 트랜잭션(ACID), DELETE와 TRUNCATE 차이, 인덱스, 엘라스틱서치 완전정리

SQL 트랜잭션(ACID), DELETE와 TRUNCATE 차이, 인덱스, 엘라스틱서치 완전정리오늘은 데이터베이스의 신뢰성을 지키는 핵심 개념인 트랜잭션(ACID)부터, DELETE와 TRUNCATE의 차이, 검색 속도를 좌우하는 인덱스, 그리고 대용량 검색에 쓰이는 엘라스틱서치까지 폭넓게 배웠다. 특히 ACID는 왜 은행 계좌 이체를 예시로 설명하는지 이해하고 나니 훨씬 와닿았다.트랜잭션(Transaction)이란?데이터베이스에서 하나의 작업 단위를 의미하며, 여러 개의 SQL 작업을 하나로 묶어서 처리하는 것이다.대표 예시: 계좌 이체 — "A 계좌에서 출금"과 "B 계좌에 입금"이라는 두 개의 별개 작업을, 하나의 트랜잭션으로 묶어서 처리한다. 둘 중 하나만 성공하면 절대 안 되는 상황이기 때문이다..

FullStack DataBase 2026.05.11

SQL LEFT/RIGHT JOIN 실전, IFNULL과 IF(IS NOT NULL) 차이, UNION으로 결과 합치기

SQL LEFT/RIGHT JOIN 실전, IFNULL과 IF(IS NOT NULL) 차이, UNION으로 결과 합치기JOIN 이론을 배운 다음날, 실제로 LEFT JOIN과 RIGHT JOIN을 데이터에 적용해보고, NULL 값을 다루는 두 가지 방법(IFNULL, IF)의 쓰임새 차이를 배웠다. 그리고 서로 다른 조회 결과를 UNION으로 합쳐서 하나의 표로 만드는 실습까지 이어졌다.LEFT JOIN 실전 - 사원이 없는 부서도 보여주기SELECT D.name AS `부서명`, MAX(IFNULL(E.salary, 0)) AS `최고연봉`FROM dept AS DLEFT JOIN emp AS EON E.deptId = D.idGROUP BY D.id;dept(부서)를 왼쪽에 두고 LEFT ..

FullStack DataBase 2026.05.11