전체 글(224)
-
[실전자바] 멀티스레드와 동시성 (4)
# 참고용 코드예시코드에 등장하는 자체 유틸리티 클래스들 적어둠더보기# ExecutorUtils - 스레드플 출력용public abstract class ExecutorUtils { public static void printState(ExecutorService es) { if (!(es instanceof ThreadPoolExecutor)) { LogUtils.info(es); return; } ThreadPoolExecutor poolExecutor = (ThreadPoolExecutor) es; int poolSize = poolExecutor.getPoolSize(); int activeCount = poolExecutor.getActiveCo..
2025.03.25 -
[실전자바] 멀티스레드와 동시성 (3)
11. Executor 프레임워크# 현실적 한계 - 스레드는 직접 사용하기 매우 어려움실무에서 스레드를 직접 생성해서 사용할 일은 사실상 없음왜냐하면 직접 생성하고 관리하기엔 아래 이유들 때문에 너무 어렵고 까다롭기 때문성능문제 - 스레드는 매우 비싸다스레드는 각자의 스택을 가지며, 이에 따른 별도 메모리 할당이 필요함(통상 1mb 정도)게다가 스레드 생성은 운영체제 커널 수준에서 이루어져서 시스템 콜이 발생함(즉, CPU 자원 소모)관리문제 - 스레드의 유지/종료는 생각보다 어렵다선착순 할인같은 이벤트를 열면 스레드가 10,000개로도 모자란 상황이 발생함근데 10,000개면 메모리 10GB정도임. 사실상 서버가 못버팀게다가 애플리케이션 종료도 스레드가 할 일을 다 하게 만들고 해야돼서 맘대로 못함즉,..
2025.03.19 -
[실전자바] 멀티스레드와 동시성 (2)
7. 생산자-소비자문제# 생산자-소비자 문제란멀티스레드 환경에서 공유 자원(버퍼나 큐)을 두고 데이터 생산/소비 스레드가 동시 접근할 때 발생할 수 있는 동기화 문제를 말함쉽게말해 한정된 진열대를 두고 너무 많이 생산해도 문제, 너무 많이 소비해도 문제인 상황을 말하는 거임한정된 버퍼(Bounded buffer problem)라고도 함특히, 데이터의 과소비/공급 뿐만이 아니라 락(lock) 문제가 껴있어서 생각보다 어려움그림으로 이해하기더보기# 초과 공급 상태 # 과다 소비 상태 # 스레드 대기 시키기 - wait(), notify(), notifyAll()synchronized로 지정된 임계영역에서의 소비자-생산자 문제를 해결하기 위한 Object 클래스의 메서드핵심은 스레드가 락을 점유하지 못하..
2025.02.26 -
MySQL로 배우는 데이터베이스 개론과 실습 (5)
36. 트랜잭션# 트랜잭션(transaction) 이란데이티베이스에서 한 번에 처리되어야 하는 작업의 묶음(단위)말 그대로 작업의 묶음이라 통상 여러 개의 SQL 문으로 구성되는 편은행 이체가 트랜잭션의 전통적 예시A → B 송금과정에서 A 계좌출금(UPDATE), B 계좌입금(UPDATE) 두 작업은 한 번에 처리돼야만 함A는 출금됐는데, B는 입금이 안됐으면 그날로 그 은행 망함트랜잭션이 안전하게 처리되기 위해 지켜야되는 4가지 속성(원칙)이 있음각각 원자성, 일관성, 고립성, 지속성임영문 앞 글자를 따서 ACID라고 함# 트랜잭션 수행과정위 계좌이체를 예시로 트랜잭션 수행과정을 뜯어보자문법 자체는 간단한 편인데 의외로 DBMS 내에선 여러 작업과 절차가 일어남트랜잭션 기본문법과 과정START TRA..
2025.01.25 -
MySQL로 배우는 데이터베이스 개론과 실습 (4)
32. 이상현상# 이상현상(anomaly) 이란테이블의 일관성을 훼손해 데이터 무결성을 깨뜨리는 현상주요 이상현상삽입 시 : 튜플 삽입 시 의도치 않은 NULL 값이 입력됨, 중복 데이터 삽입 등삭제 시 : 튜플 삭제 시 필요 데이터까지 함께 삭제돼는 연쇄삭제 등수정 시 : 튜플 수정 시 테이블 속성 일관성 깨짐 등이상현상 예시더보기■ 삽입이상 : 튜플 삽입 시 특정 속성에 값이 없어 NULL을 입력해야 하는 현상 ■ 삭제이상 : 튜플 삭제 시 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 ■ 수정이상 : 튜플 수정 시 중복된 데이터중 일부만 수정돼 데이터 불일치가 일어나는 현상 33. 함수 종속성# 정규화이상현상이 있는 테이블을 수정해 문제를 해결하는 과정을 말함즉, DB 설계상 데이터의..
2025.01.19 -
MySQL로 배우는 데이터베이스 개론과 실습 (3)
22. 데이터 모델링# 데이터 모델링이란소프트웨어 개발의 지반 설계와 같은 역할현실의 개념을 단순화, 추상화하여 데이터베이스화 하는 과정을 말함 # 데이터베이스 생명주기데이터베이스의 생성과 운영 전반에 대한 일련의 주기를 나타낸 것. 크게 5단계로 구분됨1단계. 요구사항 수집 및 분석유저의 요구사항을 토대로 DB의 구축 범위를 정하는 단계.ex) 마당서점 : 고객, 운영자, 경영자 등의 유저 범위와 서비스 수준을 정하는 것2단계. 설계분석된 요구사항을 토대로 주요 개념과 업무 프로세스 등을 식별(개념적 설계)사용 DBMS 종류에 맞게 변환(논리적 설계)DB 스키마를 도출(물리적 설계)하는 일련의 과정3단계. 구현설계 단계에서 생성한 스키마를 실제 DBMS에 적용테이블 및 관련 객체(뷰, 인덱스) 등을 ..
2025.01.14