오늘은 부트캠프 첫날이라 2시부터 6시까지 짧은 OT시간을 가졌다.담당 강사님, 멘토 분들 소개를 하고 출결관리, 훈련장려금등 여러가지 내용들을 들었다.9~4시까지는 이론수업을 하고 4~6시까지는 회고 진행하는데 개인적으로 꾸준히 무언가를 잘 하지 못하는 나지만, 이번

부트캠프 첫 수업을 시작했다.자바, C, Python 등은 여러 번 공부해본 경험이 있었지만 Git에 대해서는 거의 아는 게 없어서 수업을 잘 따라갈 수 있을지 걱정이 많았다.하지만 강사님들과 멘토님들, 그리고 함께 회고하며 공부하는 팀원들 덕분에 생각보다 어렵지 않게
단순한 호기심으로 SQL 실습을 해보고 싶어서 MySQL 설치부터 IntelliJ 연동까지 진행해보았다.생각보다 과정이 길었고, 설치 + 연동에만 이틀 정도의 시간이 걸렸다.아래 사이트에서 본인 OS에 맞는 MySQL Community Server를 다운로드하면 된다.

Java 기초 개념 정리 & 개발 환경 세팅 자바(Java)는 썬 마이크로시스템즈(Sun Microsystems)에서 개발한 객체지향 프로그래밍 언어이다. 자바가 만들어진 1990년대에는 가전제품에 간단한 코드를 적용해 사람의 수고를 덜어주는 것이 유행이었고, 이러

변수는 값을 저장하는 메모리 공간에 붙이는 이름, 즉 식별자이다.리터럴은 변수에 저장되는 값 그 자체를 의미한다.자바에서 변수 선언 형태는 다음과 같다.예시 코드:변수는 크게 클래스 변수와 지역 변수로 나뉜다.클래스 변수초기화를 하지 않아도 기본값 0으로 자동 초기화됨
래퍼 클래스(Wrapper Class)는 기본 타입을 객체로 다루기 위해 사용하는 클래스이다.기본 타입의 값을 객체로 감싸는 과정을 박싱(Boxing),포장된 객체에서 다시 기본 타입의 값을 꺼내는 과정을 언박싱(Unboxing)이라고 한다.아래 블로그를 참고하여 개념
어제는 자바의 반복문과 배열을 공부했고,오늘은 배열의 연장선인 다차원 배열과 객체지향 프로그래밍(OOP) 기초 개념을 배웠다.2차원 배열은 이중 for문을 사용해 순회할 수 있다.가변 길이 배열을 사용하면 각 행마다 다른 길이를 가질 수 있다.객체지향 프로그래밍(Obj
오늘은 어제 배운 내용을 다시 복습하면서 객체지향 프로그래밍의 여러 핵심 개념들을 학습했다.이론 위주이긴 했지만, 개념들이 점점 서로 연결되는 느낌이 들어서 의미 있는 시간이었다.메서드 오버로딩이란 같은 이름의 메서드를 여러 개 정의하는 것이다.단, 다음 조건을 만족해
오늘은 상속(Inheritance)과 다형성(Polymorphism)을 중심으로 객체지향 개념을 정리했다.개념 자체가 많아서 처음엔 헷갈렸지만, 예제 코드를 다시 정리하면서 흐름이 조금씩 보이기 시작했다.상속이란 부모 클래스의 필드와 메서드를 자식 클래스가 물려받는 것
오늘은 추상 클래스(Abstract Class)와 인터페이스(Interface)를 중심으로 객체지향 개념을 정리했다.개념 위주의 수업이었지만, 나중에 정말 많이 쓰일 것 같은 내용들이라 중요하다고 느꼈다.추상 클래스란 인스턴스를 생성할 수 없는 클래스이다.추상 클래스를

오늘은 Object 클래스, enum, final, String / Math 클래스,그리고 내부 클래스와 StringBuilder까지 한 번에 정리했다.전반적으로 이미 배웠던 개념들을 다시 묶어서 복습하는 느낌이었다.Object 클래스는 모든 클래스의 최상위 부모 클래

오늘은 System 클래스, Wrapper 클래스, 그리고 컬렉션 프레임워크(List / Set / Map) 를 중심으로 실습 위주 학습을 진행했다.개념 자체는 많았지만, 직접 코드를 작성해보면서 흐름을 이해할 수 있었다.System 클래스는 자바 프로그램의 핵심 유틸
오늘은 금요일부터 만든 미니 프로젝트에 관해 코드를 정리하고 리뷰하는 시간을 가져본다.내가 만든 프로그램은 도서 관리 시스템으로, 콘솔에서 숫자를 입력받아 원하는 작업으로 이동해 처리하는 CLI 프로그램이다.콘솔에서 숫자를 입력받아 원하는 기능으로 이동입력값에 따라 도
지난번에 다뤘던 컬렉션 프레임워크에서 오늘 새로 배운 부분과, 다시 상기시키면 좋을 것 같은 내용을 정리해보겠다.제네릭(Generic) 은 클래스/메서드 내부에서 사용할 데이터 타입을 외부에서 지정할 수 있게 해주는 기법이다.<>(꺾쇠괄호) 안에 타입을 적는다.예
예외(Exception) 란 프로그램 실행 중 발생하는 이벤트로, 프로그램 명령의 정상적인 흐름을 방해하는 상황을 말한다.다만 예외는 예외 처리를 통해 수습(대응)할 수 있다.에러(Error) 는 예외와 달리, 보통 시스템 레벨의 치명적인 문제로 애플리케이션 코드에서
te
SQL(Structured Query Language) 은 관계형 데이터베이스를 조작하기 위한 표준 언어다.대부분의 SQL 명령은 세미콜론(;)으로 끝난다.키워드는 대소문자를 구분하지 않는다.데이터(문자열)의 대소문자 구분 여부는 DB의 Collation/Charset
Non-Equi Join은 = 같은 동등 조건이 아니라, BETWEEN, >, < 같은 범위 조건으로 조인하는 방식이다.참고: 위 문법은 구식(쉼표 조인) 방식이다. 실무/가독성 측면에서는 ANSI JOIN 문법을 더 권장한다.왼쪽 테이블의 모든 행이 결과에 포함

JDBC는 자바 데이터베이스 연결(Java Database Connectivity) 의 약자로, 자바 프로그램이 다양한 종류의 데이터베이스에 연결하고 SQL 문을 실행하여 데이터를 조회(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 하는

어제부터 시작해서 기존에 만든 미니 프로젝트에 JDBC를 연결해보았다.기존 프로젝트는 값을 입력하거나 삭제해도 프로그램이 종료되면 데이터가 초기값으로 돌아갔지만,DB를 연결한 뒤에는 프로그램이 종료되어도 데이터가 DB에 저장되어 기존에 입력해둔 값을 그대로 사용할 수
HTML은 웹사이트의 구조를 정의하는 마크업 언어이다.HTML은 콘텐츠를 태그(Tag) 로 감싸서 문서의 구조와 의미를 정의한다.기본 형식은 위 코드와 같다.head 영역은 웹 브라우저에 보이지 않는 데이터와 문서 정보를 정의하는 부분이다.title 태그는 웹페이지의
JavaScript란 웹 브라우저에서 사용하기 위해 만들어진 프로그래밍 언어이다.HTML로 웹페이지의 뼈대를 잡고, CSS로 꾸미고, JavaScript로 웹을 움직이게 만든다.1990년대에는 웹 브라우저 UI를 동적으로 표현하기 위한 용도로만 사용되었지만, 현재는 N

자바의 forEach와 비슷하지만, 자바스크립트에서는 배열 메서드로 제공되며 반환값이 없다.각 요소를 변환해서 새로운 배열을 반환한다.조건이 true인 요소만 모아서 새로운 배열을 반환한다.배열을 순회하면서 하나의 결과값으로 축약한다.find: 배열에서 첫 번째로 조건
DOM(Document Object Model)은 HTML 문서를 JavaScript로 제어하기 위한 인터페이스이다.브라우저가 HTML 문서를 읽어 트리 구조(객체 형태)로 만들어두고, JavaScript로 이 객체들을 선택/변경할 수 있다.자바스크립트 이벤트는 웹페이

Thread 동기화는 여러 스레드가 공유 자원에 동시에 접근할 때 데이터 불일치 문제가 발생하지 않도록 관리하는 기술이다.주요 동기화 방법으로는 synchronized가 있다.Thread 간 통신은 여러 스레드가 협력하거나 데이터를 주고받기 위해 정보를 교환하는 기술을

스트림(Stream)은 데이터의 추상화된 연속된 흐름을 의미한다.데이터 컬렉션을 더 간결하고 직관적인 방식으로 처리할 수 있게 해주는 도구이다.데이터 소스를 변경하지 않고, 스트림을 통해 한 번만 처리하는 일회용 객체이며 재사용할 수 없다.반복문을 내부적으로 숨기고,

IP 주소는 컴퓨터, 스마트폰, 서버 등을 식별하기 위해 부여되는 고유한 번호이다.IP는 IPv4, IPv6로 나뉘며, IPv4 주소 부족 문제로 인해 IPv6와 함께 사용한다.TCP는 인터넷 핵심 프로토콜 중 하나로 신뢰성 있는 연결 지향형 통신을 제공한다.UDP는
UDP는 연결이 없는 프로토콜로, 데이터 전송 시 연결 설정 과정이 없다.데이터는 데이터그램(datagram) 이라는 작은 패킷 단위로 전송된다.자바에서는 java.net 패키지의 DatagramSocket, DatagramPacket 클래스를 사용하여 UDP 통신을
Spring Boot는 Spring 프레임워크를 기반으로, Spring을 더 쉽고 빠르게 사용하기 위해 만들어진 도구이다.https://start.spring.io/위 사이트에서 원하는 옵션을 설정해 프로젝트를 만들 수 있다.Project: Gradle - G
Spring을 사용하는 이유는 생산성과 유지보수성을 높이기 위해서이다.프레임워크는 소프트웨어 개발을 위한 기본적인 틀을 제공하는 것이다.재사용 가능한 코드와 구조를 제공해 개발자가 공통 작업을 덜고, 핵심 기능 개발에 집중할 수 있게 해준다.개발자가 프레임워크의 흐름/

Bean의 생명주기는 정의 읽기 → 생성 → 의존성 주입 → 초기화 → 사용 → 소멸 순으로 진행되며, Spring이 관리한다.스프링 컨테이너가 @Component, @Bean 등을 스캔하여 Bean 정의를 수집한다.스캔한 정보를 기반으로 Bean 객체를 생성한다.Be

어제 살펴본 처리 흐름을 따라 코드를 작성해보겠다.파란색 부분은 스프링에서 자동으로 처리해주는 곳이고, 보라색 부분은 개발자가 직접 구현해야 하는 부분이다.View 부분은 어느 정도 개발자가 구현해줘야 하는 부분이다.1) 클라이언트로부터 요청이 들어온다.2) 들어온 요

AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 객체지향(OOP)을 보완하는 프로그래밍 패러다임이다.핵심 비즈니스 로직(핵심 관심사)과 여러 곳에 반복되는 공통 기능(횡단 관심사)을 분리해 모듈화한다.관심의 분리(Separation

ThreadLocal은 각 스레드(Thread)마다 독립적인 변수 저장소를 제공하는 Java 클래스이다.즉, 같은 ThreadLocal 객체를 공유하더라도 스레드별로 서로 다른 값을 가진다.각 스레드는 ThreadLocal에 대해 자기만의 값을 가진다.스레드가 Thre
CORS(Cross-Origin Resource Sharing)는 브라우저의 동일 출처 정책(Same-Origin Policy) 때문에 기본적으로 차단되는다른 출처(Origin)로의 리소스 요청을 “허용할지 말지” 서버가 결정하게 해주는 HTTP 기반 보안 메커니즘이다
개발 방법론(Methodology)은프로젝트를 어떤 철학과 원칙으로 운영하고 관리할지에 대한 전체 프레임워크다.요구사항을 어떻게 수집할지일정/리스크를 어떻게 관리할지커뮤니케이션/회의를 어떻게 할지산출물(문서, 테스트, 배포)을 어떤 기준으로 만들지즉, “프로젝트 운영

Vercel 사이트 접속GitHub 계정으로 가입/로그인(가장 편함)Vercel에서 GitHub 권한 승인(필요 시) 특정 레포만 접근 허용 설정Vercel Dashboard → New Project연동된 GitHub Repo 목록에서 배포할 레포 선택배포할 Repo

JWT(JSON Web Token)는 서명된 JSON 기반 토큰으로, 서버가 클라이언트를 식별/인가하기 위해 HTTP 헤더(주로 Authorization)에 실어 보내는 인증 방식이다.서버는 세션을 서버 메모리에 들고 있지 않아도 됨(무상태, Stateless)토큰 자
목표: main 브랜치 push/merge → GitHub Actions 빌드 → Docker 이미지 생성 → 레지스트리 푸시 → EC2에서 컨테이너 재기동구성: Spring Boot(Gradle) + Docker + Docker Hub(또는 ECR) + EC2 + d
2025-08월부터 2026-02 까지 진행된 백엔드 부트캠프가 끝이 났다. 오늘은 이에대한 간단한 회고를 진행해보려 한다.