목록2025/03 (14)
공부방
쿠키, 세션, 토큰이 필요한 이유?웹사이트는 기본적으로 Stateless(기억을 못함)그래서 로그인 했다는 걸 기억하게 해주는 도구가 필요하다.쿠키(Cookie)브라우저(클라이언트)가 정보를 직접 저장하는 작은 메모저장 위치 : 브라우저(내 컴퓨터)용량 : 작음(4KB 정도)보안 : 조심해야 한다 -> 탈취 가능성유지 기간 : 직접 정할 수 있다 (만료일 있음)예 : 교복을 입고 교실에 들어가 이름표를 달고 다닌다.쿠키 : 이름표서버는 쿠키를 보고 누가 누군지 알 수 있음언제 쓰냐?로그인 후, "자동 로그인" 하고 싶을 때장바구니 정보를 브라우저에 저장해두고 싶을 때쿠키는 HTTP 헤더에 실려서 서버로 자동 전송된다.GET /profileCookie: sessionId=abc123; theme=dark;..
RESTful API란?웹에서 정보를 주고 받는 약속(규칙)서버와 클라이언트(웹 브라우저나 앱)가 정보를 예쁘게 정리된 방식으로 주고받는 것REST 특징특징설명Uniform- Uniform Interface- URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키텍처 스타일을 의미한다.Stateless- 무상태성 성격을 갖는다. 작업을 위한 상태 정보를 저장하고 관리하지 않는다.- 세션 정보나 쿠키 정보를 별도로 저장하고 관리하지 않기 때문에 API 서버는 들어오는 요청만을 단순히 처리하면 된다. 이러한 이유로 서비스의 자유도가 높아지고 서버에서 불필요한 정보를 관리하지 않음으로써 구현이 단순해진다.Cacheable- HTTP라는 기존 웹 표준을 그대로 사용하기 때문에, 웹에서..

인덱스(Index)란?책의 목차와 같다.책을 읽을 때, 어떤 내용이 몇 쪽에 있는지 빠르게 찾고 싶을 때 맨 앞에 있는 목차를 보듯이, DB에서 인덱스도 같은 역할을 한다.데이터를 빠르게 찾을 수 있도록 도와주는 목차 역할만약 인덱스를 쓰지 않는다면 전체 앨범 100장에서 내가 나온 사진을 찾으려면 처음부터 100장을 전부 뒤져야 한다.인덱스를 쓰게 되면 DB가 미리 정리된 이름 목록을 가지고 있다.이 목록을 보고 내가 있는 위치를 바로 알게 되어 바로 해당 페이지로 넘어갈 수 있다.왜 DB에서 Index를 사용해야 할까?위 예시서 SELECT 문을 활용해 USERS 테이블에 있는 AGE Column에 있는 25라는 값을 조회한다고 해보자그렇다면 SELECT 문은 모든 테이블에 있는 데이터를 모두 조회한..

JDBC(Java Database Connectivity) ?자바 프로그램과 데이터베이스(DB)를 연결해주는 다리 역할자바로 프로그램을 만들고 데이터는 DB에 저장하지만 자바와 DB는 서로 다른 언어를 사용한다.그래서 중간에서 말을 번역해주는 역할JDBC의 동작 흐름JDBC는 Java 애플리케이션 내에서 JDBC API를 사용하여 데이터베이스에 접근하는 단순한 구조이다.JDBC API를 사용하기 위해서는 JDBC 드라이버를 먼저 로딩한 후 데이터베이스와 연결하게 된다.JDBC의 기본 동작 순서 (단계별)1단계 : JDBC 드라이버 불러오기Class.forName("com.mysql.cj.jdbc.Driver");MySQL 드라이버라는 번역기를 가져오는 코드MySQL 드라이버 클래스를 메모리에 로딩자바는 ..
트랜잭션이란?데이터베이스에서 한 번에 처리돼야 할 작업 묶음쉬운 예 : 자판기에 돈을 넣고 -> 음료 고르고 -> 음료 나오는 이 전체 과정이 하나의 트랜잭션다 성공하거나 하나라도 실패하면 전부 취소해야한다.은행에서 송금할 때 내 계좌에서 만원 출금, 친구 계좌에 만원 입금한다고하면 이게 한 트랜잭션하나라도 실패하면 돈이 사라지거나, 중복되면 안 되기 때문에 반드시 둘 다 성공하거나, 모두 취소(rollback) 해야한다.Commit 연산하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성 있는 상태에 있을 때, 하나의 트랜잭션이 끝났다 라는 것을 알려주기 위해 사용하는 연산Commit을 하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는 것을 도..
예외(Exception)이란?사용자의 잘못된 조작 또는 개발자의 코딩으로 인해 발생하는 프로그램 오류예외 처리가 필요한 이유?int result = 10 / 0;System.out.println("계산 결과: " + result); // ❌ 절대 안 나옴0으로 나누는 순간 에러가 나고 프로그램이 멈춰버린다.그 뒤에 코드들은 아예 실행조차 안된다.따라서 에러가 나더라도 프로그램이 죽지 않도록 try-catch라는 도구를 써서 예외를 안전하게 처리해야한다.try-catch?try { // 문제가 생길 수 있는 코드 int result = 10 / 0; System.out.println("결과: " + result); // ❌ 여긴 실행 안 됨} catch (ArithmeticException..

JVM이란?JVM은 Java 프로그램을 실행해주는 가상의 컴퓨터컴퓨터처럼 생긴 소프트웨어라고 생각하면 된다.실제 컴퓨터(CPU, OS) 위에 자바 전용 미니 컴퓨터가 하나 더 올라간다고 보면 된다.JVM이 필요한 이유?컴퓨터를 쓸 때 각각 다른 운영체제(Windows, Mac, Linux, 모바일 등)를 사용한다.그런데 운영체제마다 작동 방식이 달라서, 원래는 그에 맞게 코드를 따로 만들어야 한다.Java는 한 번만 만들면, 어디서든 실행되는 게 목표이고, 이걸 가능하게 해주는 게 바로 JVM이다.예시 및 요약 흐름도.java (원시 자바 코드) ↓ 컴파일 (javac).class (Bytecode) ↓ 실행 (java 명령어)JVM ↓운영체제(OS) ↓CPU 실행MyProgram.java..
https://hyunleo.tistory.com/303 프로세스(Process) vs 스레드(Thread)를 쉽게 알아보기프로세스?사전적 의미 : 실행 중인 프로그램독립적인 작업 단위(실행 중인 프로그램)운영체제가 관리자신 만의 메모리 공간이 따로 있다.다른 프로세스와 메모리를 공유하지 않는다.(독립적)예hyunleo.tistory.com오랫동안 궁금했던 프로세스와 스레드의 차이점을 정리해봤다. 그렇다면 자바 스레드란 무엇일까? 자바에서 스레드란?스레드(Thread)는 프로세스 내에서 실행되는 작업 흐름자바에서는 스레드를 동시에 여러 개 실행할 수 있다.(멀티스레딩)하나의 프로그램(프로세스) 안에서 동시에 여러 작업을 수행할 수 있도록 해주는 기능자바에서 스레드는 독립적인 실행 흐름을 가진다.여러 개의..
프로세스?사전적 의미 : 실행 중인 프로그램독립적인 작업 단위(실행 중인 프로그램)운영체제가 관리자신 만의 메모리 공간이 따로 있다.다른 프로세스와 메모리를 공유하지 않는다.(독립적)예시 컴퓨터에서 Chrome 브라우저를 켰다. 그러면 'Chrome.exe' 라는 프로그램이 실행=> 이 실행 중인 프로그램이 바로 프로세스.카카오톡을 실행했다고 했을 때, 카카오톡이라는 프로세스가 하나 만들어지는 것프로세스의 쉬운 비유회사에서 여러 개의 사무실을 생각했을 때회사 안에는 각 부서(팀)이 따로 있다.(영업팀, 개발팀, 마케팅팀..등)이 각 부서가 '프로세스'각 부서는 자기만의 사무실(메모리 공간)을 가지고 있다.다른 부서(프로세스)와 공간을 공유하지 않는다.결론프로세스는 운영체제가 관리하는 독립적인 작업 단위각..

Clustering?Clustering이란 영문 그대로의 번역 "군집화"와 같이 '유사한 성격을 가진 개체를 묶어 그룹으로 구성하는 것'으로 AI 머신러닝에서 많이 사용되는 용어이와 달리 DB Clustering은 단일 데이터베이스를 연결하는 둘 이상의 서버 또는 인스턴스를 결합하는 프로세스이다.DB Clustering 왜 필요?DB와 DB 서버가 각각 단일일 경우, 만약 DB 서버가 예기치 않게 다운 된다면, 해당 DB와 연결된 서비스 자체가 제역할을 할 수 없게 된다. 이러한 일련의 사태에 대한 대비책으로 사용되는게 DB Clustering이다.DB 서버를 만약 2대를 사용하고 있다면, 한 대가 다운되더라도 나머지 한 대가 유지되어 정상적으로 동작할 수 있고, 한 대로 동작하는 동안 문제점을 찾아 해..