CS 42

소프트딜리트 Soft Delete, 하드딜리트 Hard Delete

데이터베이스에서 데이터를 삭제하는 방식에는 소프트 딜리트(Soft Delete)와 하드 딜리트(Hard Delete)라는 두 가지 주요 방식이 있음. 이 두 가지 방식은 데이터 삭제의 목적과 보존 여부에 따라 선택하여 사용됨. 1. 하드 딜리트(Hard Delete) 정의데이터베이스에서 데이터를 완전히 삭제하는 방식.DELETE SQL 명령어를 실행하면 해당 데이터는 물리적으로 데이터베이스에서 사라짐. 예시DELETE FROM users WHERE id = 1;위 쿼리를 실행하면 id = 1인 데이터가 완전히 삭제되어 복구가 불가능함. 장점저장 공간 확보:데이터를 완전히 삭제하므로 디스크 공간을 절약할 수 있음.데이터베이스 성능 향상:불필요한 데이터가 사라지기 때문에 쿼리 성능에 긍정적인 영향을 줄 수 ..

CS 2025.02.08

동기, 비동기

동기(Synchronous)와 비동기(Asynchronous)는 프로그램 실행 방식에서 작업의 처리 순서와 제어 흐름이 어떻게 이루어지는지를 정의하는 개념입니다. 이 개념은 주로 프로세스, 쓰레드, 함수 호출, 네트워크 요청 등에서 사용됩니다. 1. 동기(Synchronous)정의: 작업을 순차적으로 실행하며, 하나의 작업이 완료될 때까지 대기한 후 다음 작업을 실행하는 방식.특징:작업의 결과를 기다렸다가 다음 작업을 실행함.실행 순서가 직관적이며, 디버깅과 구현이 상대적으로 쉬움.작업 완료 전까지 다음 작업으로 진행하지 않으므로 성능이 느려질 수 있음.동작 방식요청 → 대기 → 결과 반환 → 다음 작업.작업 A가 끝날 때까지 작업 B는 시작되지 않음.비유“음식점에서 주문한 음식을 모두 조리한 뒤에야 고..

CS 2025.02.06

JMeter 성능테스트

JMeter는 성능 및 부하 테스트를 위해 널리 사용되는 오픈소스 도구로, 주로 웹 애플리케이션과 다양한 프로토콜의 성능을 테스트하는 데 사용됩니다. 아래에서 JMeter의 개념, 주요 기능, 사용 방법, 그리고 테스트 시 고려할 점에 대해 설명하겠습니다. 1. JMeter란 무엇인가?정의: JMeter는 Apache Software Foundation에서 제공하는 Java 기반의 성능 및 부하 테스트 도구로, 애플리케이션의 성능, 안정성, 그리고 확장성을 테스트하는 데 사용됨.주요 특징:다양한 프로토콜 지원: HTTP, HTTPS, FTP, JDBC, SOAP, REST API 등.스크립트 기반 테스트: GUI 또는 코드로 테스트 시나리오 작성 가능.오픈소스 및 확장성: 무료로 사용 가능하며 플러그인을..

CS 2025.02.04

DBMS, RDBMS, RDB

1. DBMS정의 : 데이터베이스를 관리하는 소프트웨어. 데이터를 저장, 검색, 수정, 삭제 등 데이터 관련 작업을 처리함.역할 : 데이터를 체계적으로 저장.데이터를 효율적으로 검색하도록 지원.다중 사용자가 데이터에 동시에 접근할 수 있도록 관리.데이터의 무결성(Integrity)과 보안을 보장.예시 : Oracle DB, MySQL, MongoDB, Microsoft SQL Server 등.비유 : "도서관에서 책을 관리하는 사서" 사서(DBMS)는 책(데이터)을 분류하고, 독자(사용자)가 원하는 책을 쉽게 찾을 수 있도록 돕는다.2. RDBMS정의 : 관계형 모델을 기반으로 데이터를 관리하는 DBMS.데이터를 표(Table) 형태로 저장하며, 각 표는 열(Column)과 행(Row)으로 구성됨.데이터..

CS 2025.02.03

Redis 레디스

Redis는 Remote Dictionary Server의 약자로, 오픈 소스 기반의 인메모리 데이터베이스임. 데이터를 메모리에 저장하며, 빠른 속도를 제공하여 캐싱, 세션 관리, 실시간 분석 등에 많이 사용됨. 주로 NoSQL 데이터베이스로 분류되며, 키-값(key-value) 형태로 데이터를 관리함. Redis의 주요 특징 1. 인메모리 데이터 저장 • 데이터를 메모리에 저장하므로 읽기/쓰기 속도가 매우 빠름. • 필요 시 데이터를 디스크에 영구적으로 저장하거나 백업 가능.  2. 키-값 기반 데이터 모델 • 데이터를 “키”와 “값”의 쌍으로 저장. • 값으로는 문자열(String), 리스트(List), 해시(Hash), 집합(Set), 정렬된 집합(Sorted Set) 등 다양한 데이터 구조를 지원..

CS 2025.02.01

화이트보드 설계

화이트보드 설계(Whiteboard Design)는 개발자, 엔지니어, 디자이너 등이 문제 해결 방법 또는 시스템 구조를 구상하고 시각적으로 표현하는 과정으로, 종종 인터뷰나 협업 상황에서 사용됨. 이 과정은 주로 간단한 도구(화이트보드, 종이, 디지털 도구 등)를 활용하여 아이디어를 시각적으로 표현하며, 코딩보다는 논리적 사고와 설계 능력을 평가하거나 강조하는 데 초점이 맞춰져 있음.화이트보드 설계의 목적  1. 문제 해결 능력 평가 • 시스템이나 알고리즘을 설계할 때 문제를 정의하고 해결책을 구상하는 과정을 보여줌. • 설계 능력뿐만 아니라 커뮤니케이션 능력과 사고 과정을 파악할 수 있음.  2. 시스템 설계 시 협업 도구 • 팀 내에서 시스템 아키텍처, 데이터 흐름, 기능 설계를 시각적으로 공유하고..

CS 2025.01.30

CORS (Cross-Origin Resource Sharing)

서버간 요청의 보안을 강화하기 위해 도입된 정책. 브라우저는 보안상의 이유로 다른 출처에서 리소스를 요청할 때 제한을 둔다. 이런 제한을 우회하거나 적절히 설정하는 방식이 바로 CORS.CORS의 기본 개념  1. Origin (출처)웹 애플리케이션의 출처는 프로토콜, 도메인, 포트 번호로 구성됨.예: • http://example.com:8080 • https://api.example.com같은 출처는 이 3가지가 모두 동일할 때를 의미함. 2. Cross-Origin Request (교차 출처 요청)클라이언트(보통 브라우저)에서 다른 출처의 리소스를 요청할 때 발생하는 요청.예: • 프론트엔드: http://localhost:3000 • 백엔드 API: http://localhost:8080이 경우 ..

CS 2025.01.29

세션 쿠키 캐시 토큰 페킷

1. 세션(Session) 세션은 서버에서 사용자 상태를 유지하기 위해 사용되는 저장소임.사용자가 웹사이트에 접속하면 서버는 세션 ID를 생성하여 클라이언트에게 전달하고, 이후 요청에서 세션 ID를 통해 사용자를 식별함. 특징 • 세션 데이터는 서버에 저장됨. • 클라이언트는 세션 ID만 보유하며, 일반적으로 쿠키에 저장됨. • 보안이 중요할 때 사용됨. 장점 • 서버에서 데이터를 관리하므로 보안성이 높음. • 클라이언트가 세션 데이터를 직접 보지 않음. 단점 • 서버 메모리를 사용하므로 많은 사용자가 접속하면 성능 저하 가능.2. 쿠키(Cookie) 쿠키는 클라이언트(브라우저)에 데이터를 저장하기 위한 기술임.작은 텍스트 파일 형태로 브라우저에 저장되며, 클라이언트와 서버 간에 정보를 교환하는 데 사용..

CS 2025.01.27

JAR와 WAR

JAR와 WAR1. JAR (Java Archive)JAR은 Java 애플리케이션에서 사용하는 압축 파일 포맷임.주로 Java 클래스 파일과 관련 리소스(이미지, 설정 파일 등)를 하나의 파일로 묶어 배포하거나 실행 가능하도록 만들어줌. • JAR의 구조 • META-INF/: JAR 파일의 메타데이터가 포함됨. • MANIFEST.MF: 애플리케이션 정보(메인 클래스, 클래스패스 등)가 기록됨. • 애플리케이션 코드와 리소스 파일들이 포함됨. • JAR의 특징 • 일반 Java 애플리케이션에서 주로 사용됨. • JAR 파일은 독립 실행 가능할 수 있음. (예: java -jar MyApp.jar) • 라이브러리 배포에도 사용됨. 다른 프로젝트에서 재사용하기 위해 공통 코드를 묶어 제공. • JAR의 사..

CS 2025.01.26

상태성(Stateful)과 무상태성(Stateless)

상태성(Stateful)과 무상태성(Stateless) 상태성(stateful)과 무상태성(stateless)은 시스템, 애플리케이션, 프로토콜 등이 데이터를 처리하거나 사용자와 상호작용하는 방식에서 중요한 개념임.이 두 개념은 서버와 클라이언트 간의 통신 방식과 데이터 관리 방법에서 핵심적으로 작용함.1. 상태성 (Stateful) 특징 • 상태 정보를 유지한다.클라이언트와의 상호작용 상태를 서버가 기억함. • 클라이언트와 서버 간 연결 지속이 필요함.특정 사용자의 요청을 처리하기 위해 이전 요청의 정보를 사용해야 하므로 연결 상태를 유지함. • 서버가 사용자별 정보를 저장하므로, 서버의 메모리 사용량이 증가함. 장점 • 이전 요청의 상태를 기반으로 더 개인화된 서비스 제공 가능. • 요청마다 상태를 ..

CS 2025.01.25