전체 글 281

스프링 부트 특징과 Spring Bean, Spring MVC

스프링 부트의 특징stand-alone독립 실행형 스프링 애플리케이션 개발 가능이전에는 WAS를 설치 및 설정하고 개발한 애플리케이션을 WAR 형식으로 패키징하여 WAS에 배포서버에 별도로 WAS를 설치하지 않고도 개발 시작 가능, WAS 관리 등의 작업 부담이 줄어듦내장 서버 지원내장 톰캣과 같은 내장 서버를 라이브러리 형태로 함께 패키징앱 시작 시점에 내장 서버를 초기화 및 실행원하는 환경 어디에서든 독립적으로 실행 가능opinionated스프링 프레임워크는 자유로운 선택지(라이브러리 등) 제공 -> 빠른 애플리케이션 개발을 방해할 수 있음starter: best-practice라고 알려진 라이브러리 조합을 미리 모아둔 것프로젝트 초기 생성 시 의사결정 과정을 생략하고 빠르게 개발을 시작spring-..

Spring & JPA 2025.04.13

[테코톡] SOLID + 추가 정리

출처: https://www.youtube.com/watch?v=7c0tqHLfxlE&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=101 SOLID: 객체지향 설계에서 유지보수성과 확장성을 높이기 위한 설계 원칙SRP 단일 책임 원칙객체는 한 가지 역할(책임)만 가져야 한다.객체가 변경되는 이유는 단 한 가지여야 한다.필요성: 책임이 변경의 축이기 때문에 분할되는 것이 중요책임이 여러 개면 클래스가 커지고 책임 간의 결합도가 높아져 연쇄적인 변화가 발생어떻게?추상화를 통해 객체를 설계할 때 한 개의 역할만 갖도록 구성책임을 묶어서 생각하기 때문에 쉽지 않음... -> 책임의 분배는 설계 상황에 따라 바뀔 수 있으므로 경험이 중요 OCP 개방 폐쇄 원칙객체의 확장에 열..

Spring & JPA 2025.04.10

4. Threads & Concurrency

OverviewThread: a light-weight processCPU 사용의 기본 단위이며 thread ID, a program counter(PC), a register set, stack으로 구성같은 프로세스에 속한 스레드는 code section, data section, other OS resources를 공유하나의 애플리케이션은 여러 스레드를 제어하여 독립된 프로세스로 구현될 수 있음웹 서버는 이미지를 표시하는 스레드와 네트워크에서 데이터를 받는 스레드를 가질 수 있음하나의 애플리케이션은 여러 개의 비슷한 태스크를 수행서버가 요청을 수신할 때마다 단일 프로세스를 생성 -> 많은 시간과 자원을 소모웹 서버 프로세스가 멀티스레드 방식이라면 서버는 클라이언트 요청을 듣기 위한 별도의 스레드를 생..

3. Processes

Process Concept운영체제가 실행하는 프로그램 종류Batch system - jobsTime-shared systems - user programs or tasksProcess: 실행 중인 프로그램상태 정보는 program counter의 값과 레지스터의 내용으로 표현됨Text Section: 실행가능한 코드Data Section: 전역 변수Heap Section: 프로그램 실행 동안 동적으로 할당된 메모리Stack Section: 함수 호출 시 임시 데이터 저장소(매개변수, 지역변수, 반환 주소)Program: 디스크에 저장된 passive entity (실행가능한 파일)Process: 실행가능한 파일이 메모리에 로드된 active entity  Process State프로세스 실행 동안 상태..

2. OS structures

Operating System ServicesUser interface: GUI, CLI, Touch-screen interfaceProgram execution: 프로그램을 실행하기 위해서는 메모리에 로드해야 함I/O operations: 실행 프로그램이 I/O를 요구할 수 있음File-system manipulation: 프로그램은 파일이나 폴더를 읽고, 쓰고, 만들고, 삭제하고, 조회하고, 허가 관리를 함Communnicatins: 실행 중인 프로세스간 발생 - shared memory, message passing을 통해 이루어짐Resource allocation: 동시에 여러 사용자나 작업이 실행될 때 자원이 할당되어야 함Logging: 프로그램의 컴퓨터 자원 사용을 추적Protection an..

[테코톡] Record

출처: https://www.youtube.com/watch?v=MiHxFpTgAog&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=123  Record란?불변 객체데이터베이스 결과 등을 단순히 담기 위한 객체에 주로 사용내부 필드값의 불변성을 보장하여 유지보수에 용이단점: 과정이 복잡함private final 로 변수 선언객체를 위한 생성자 추가동등성 비교를 위한 equals(), hashCode() 정의Getter() 정의디버깅을 위한 toString() 정의=> Boilerplate Code(자주 반복되는 코드)가 많다=> 필드 변경 시 위의 코드들을 수정해야 함=> Record를 사용하여 코드 단순화  어떻게 사용할까?선언과 동시에 변수를 함께 선언static ..

[테코톡] 가비지 컬렉션

출처: https://www.youtube.com/watch?v=UJDXXmuMldM&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=117  가비지 컬렉션(GC)이란?참조되지 않는 객체들이 차지하고 있는 메모리를 해제하는 것C, C++에서는 직접 해제해야 했음free();를 작성하는데 리소스 사용Java에서는 JVM에서 자동으로 작업 JVM(Java Virtual Machine)JVM: 자바 파일이 어느 환경에서든지 잘 구동될 수 있도록 함Java 파일 실행 시 필요한 클래스를 로딩해서 Class Loader에 올림Execution Engine이 메모리에 로딩된 코드를 해석Garbage Collector가 이 과정에서 자동으로 실행JVM 메모리 - Runtime Dat..

[테코톡] Lock & JPA Lock

출처: https://www.youtube.com/watch?v=LDi5muN2kgI&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=186  Lock은 무엇일까?데이터 수정을 위한 커넥션이 여러 개 존재할 때 데이터 일관성의 문제가 발생 -> 이를 해결하기 위한 메커니즘  Lock과 Transaction?Lock: 일관성 보장, 동시성 제어 메커니즘트랜잭션: 원자성 보장 (All or Nothing)트랜잭션 격리 수준: 여러 트랜잭션에 대하여 각 트랜잭션 처리 전략구현 방법 중 하나가 락 Lock 전략낙관적 Lock(=애플리케이션 Lock): 트랜잭션 충돌이 발생한 후 조치비관적 Lock(=데이터베이스 트랜잭션 Lock): 트랜잭션 충돌을 가정하고 사용하는 전략 JPA..

Spring & JPA 2025.04.05

7. Concurrency Control

Uncontrolled Sharing Problems1. Lost Update Problem-> T1에 의해 쓰여진 값을 잃게 된다. 2. Uncommitted Dependency Problem-> T2에서 커밋하지 않은 값을 T1이 읽어 올바르지 않은 값을 사용하게 된다. 3. Inconsistent Analysis Problem-> T1이 A를 먼저 읽고 B를 T2보다 나중에 읽게 되면 올바르지 않은 값을 계산한다. SchedulesSerializable Schedule: 결과가 순차적으로 트랜잭션을 실행한 것과 동일한 스케줄Conflict Serializable Schedule: 연산 순서를 재배치해서 직렬 가능하게 만들 수 있는 스케줄이를 보장하는 방법2PLP(2-Phase Locking Prot..