CS 58

[CS] 쿠키와 세션의 차이

쿠키(Cookie) 클라이언트에 작은 데이터 조각을 저장하는 방식이다. 클라이언트에 저장되므로 클라이언트가 직접 수정할 수 있으며 보안에 비교적 취약하다. 주로 비밀번호, 로그인 상태 유지 등의 기능을 구현하는데 사용한다. 서버에서 일정 시간이 지나면 삭제되도록 설정한 암호화된 토큰으로 개인정보를 저장하여 사용한다. 각 도메인당 쿠키의 개수와 총 저장 용량에 제한이 있다. 세션(Session) 서버에 사용자 상태 정보를 저장하는 방식이다. 서버는 클라이언트 요청 시 고유한 세션 ID를 생성하고, 이를 쿠키를 통해 클라이언트에게 전송한다 로그인 정보, 장바구니 내역, 사용자 정보 등 사용자 상태를 유지하는데 사용한다. 쿠키와 달리 세션 데이터는 서버에 저장되므로 클라이언트가 직접 수정할 수 없고, 보안상 ..

CS 2023.08.01

[CS] TDD(Test-Driven Development)란?

TDD(Test-Driven Development) TDD는 테스트 주도 개발이라고도 불린다. 테스트 코드를 작성하고 이를 통과하는 최소한의 코드를 작성한 후에 리팩토링하는 과정을 반복하여개발하는 방식이다. 1. 기능 코드를 작성하기 전에 테스트 코드를 먼저 작성하여 테스트 하는 것이 핵심 원칙이다. 2. 보통 단위 테스트로 진행한다. 3. 테스트를 통과할 수 있는 최소한의 코드만 작성하여 기능이 작동하는지 검증한다. 4. 기능이 작동하는 것을 확인 후 코드 구조 개선 및 중복 제거 등 작업을 수행하는 리팩토링을 진행한다. 장점 1. 코드 품질 향상: 각 기능에 대한 테스트를 보장하므로 코드 품질이 높아지며 버그를 발견하기 쉬워진다. 2. 신뢰성 확보: 테스트를 통과한 기능은 정상적으로 동작한다는 확신을..

CS 2023.07.31

[CS] 스케줄링

스케줄링: 프로세스 실행 시 필요한 여러 자원을 해당 프로세스에게 할당하는 것 스케줄링의 종류 장기 스케줄링 : 어떤 프로세스가 시스템 자원을 할당받을지 결정 후 준비상태 큐로 보냄 작업 스케줄링, 상위 스케줄링이라고도 하며 작업 스케줄러에 의해 수행 중기 스케줄링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업 CPU를 할당받으려는 프로세스들이 많을 시 일시보류 시킨 후 활성화해서 부하 조절 단기 스케줄링 : CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업 프로세서 스케줄링, 하위 스케줄링 이라고도 한다 프로세서 스케줄링 및 문맥교환은 프로세서 스케줄러에 의해 수행됨 문맥교환(Context Switching) : OS에 의해 CPU가 할당되는 프로세스 변경 시 실행 프로세스에 CPU..

CS 2023.07.15

[CS] 병행(Concurrency)과 병렬(Parallel)

공부를 하던 도중, 병행과 병렬의 개념이 헷갈려서 정리해봤다. 병행(Concurrency) 병렬(Parallel) 동시에 실행되는 것 같이 보이는 것 실제로 동시에 여러 작업이 처리되는 것 싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식 한번에 많은 것을 처리 한번에 많은 일을 처리 논리적인 개념 물리적인 개념 병행(Concurrency) 단일 프로세서 또는 단일 코어에서 여러 작업이 시분할 방식으로 조금씩 번갈아가며 실행되는 방식이다. 여러 작업을 번갈아 가며 실행되면서 자원을 최대한 활용하여 작업을 빠르게 완료하는 것이 목표이다. 작업들이 서로에게 영향을 주지 않거나 의존성이 적을 경우 성능 향상을 노릴 수 ..

CS 2023.07.12

[Spring] Spring AOP(Aspect-Oriented Programming)

Spring AOP는 관점 지향 프로그래밍이라고도 불리며, 애플리케이션의 핵심 비즈니스 로직과는 별개로 동작해야 하는 동작을 모듈화하고 분리할 수 있도록 도와준다. @Aspect을 SpringAOP로 설정하려는 class에 작성한다. 사용목적 1. 로깅(logging): 메서드 실행 시간, 매개변수 값, 리턴 값 등을 기록할 수 있다 2. 보안(security): 인증, 권한 부여 등의 보안 관련 작업을 수행할 수 있다 3. 트랜잭션(transaction): 데이터베이스 트랜잭션 관련 작업을 처리할 수 있다 4. 캐싱(caching): 메서드의 결과를 캐시 하여 성능을 향상할 수 있다. 5. 예외 처리(exception handling): 예외 발생 시 특정 작업을 수행 및 예외를 변환할 수 있다. 구성..

CS 2023.07.11

[CS] DBMS

DBMS는 DB를 효율적이고 직관적이며 안전하게 사용할 수 있게 해주는 DB ManagerSystem이다 효율성: 중복 제어 및 무결성 제약조건을 정의/검사하는 기능을 가짐 직관성: 서로 다른 데이터 간의 관계를 표현해주는 관계 표현 및 편리한 인터페이스를 제공 안전성: 접근하는 사용자마다 다른 권한을 주어 접근통제 및 데이터 수정/삭제 시 백업 기능 제공 트랜잭션: DB의 상태를 변화시키는 작업 단위나 병행제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다. 트랜잭션의 특성: ACID - Atomicity(원자성) : 모두 반영(Commit)되거나 전혀 반영되지 않아야 함(Rollback) - Consistency(일관성) : 시스템의 고정요소는 트랜잭션 수행 전, 후의 상태가 같아야 함 -..

CS 2023.07.08

[Network] HTTP/HTTPS의 차이, SSL/TLS이란?

HTTP/HTTPS HTTP와 HTTPS는 클라이언트와 서버 간 통신에 사용되는 프로토콜이다. 프로토콜이란 컴퓨터나 디지털 장치 등 다양한 기기간에 통신하기 위한 규칙과 규약이다. 사용자의 요청(주소창에 URL을 입력하거나 웹 페이지의 링크를 클릭 등) 시, 브라우저는 해당 URL로 서버에 요청(Request)을 보낸다. 이 요청을 HTTP 또는 HTTPS 프로토콜을 사용하여 이루어진다. HTTP HTTP (HyperText Transfer Protocol): 텍스트 기반으로 데이터를 전송하며 보안 기능이 없는 평문 통신 방식이다. 중간에 제3자가 데이터를 가로채거나 조작할 가능성이 있다. 80번 포트를 사용하여 데이터를 전송한다. HTTPS HTTP에 SSL/TLS을 사용하여 데이터를 암호화하여 안전하..

CS 2023.07.05

[Spring] IoC, SpringContainer, DI

IoC (Inversion of Control) 제어의 역전, 의존성 역전 이라고도 한다. 객체의 제어권한을 개발자가 아닌 외부로 넘겨 개발자는 애플리케이션의 핵심 비즈니스 로직에 집중할 수 있게 한다. IoC를 사용함으로써 결합도 감소 및 응집도를 증가시킴으로써 더욱 유연한 코드작성을 가능하게 해준다. SpringContainer(Bean, DI)를 통하여 구현한다. SpringContainer Bean의 생성, 관리, 의존성 주입(DI)등을 담당하여 IoC를 실현하기 위한 도구 Bean: 스프링 컨테이너에서 생성하고 관리되는 객체 Bean은 스프링 컨테이너에 의해 관리되므로 필요한 곳에서 주입(DI; Dependency Injection)하여 사용한다. 스프링 컨테이너는 Beanfactory와 App..

CS 2023.06.28