운영체제 (Operating System) User가 사용하는 응용 프로그램(Application)과 하드웨어 사이에서 동작하는 프로그램을 말한다. Windows, MacOS, UNIX(Linux) 등이 운영체제에 해당된다. OS는 더 상세히 커널(kernel)을 의미하고, 이 커널에 여러 가지가 추가된 것을 운영체제라고 말한다. 💡운영체제는 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원한다. 즉, 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어이다. 커널(kernel) 커널은 운영체제에서 가장 중요한 소프트웨어로, 컴퓨터의 자원들을 관리하는 역할을 한다. 하드웨어의 자원을 프로세스에 할당하고, 프로세스 제어, 메모리 관리, 시스템콜 수행 등을 ..
이 글은 DataBase 관련 내용을 다루고 있습니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! 💡프로세스의 구조에 대해 설명해 주세요. ⬇️Answer 더보기 프로세스는 스택(stack), 힙(heap), 데이터(data), 코드(text) 영역으로 구성되어 있습니다. 스택 영역은 함수 실행을 위한 임시 데이터가 저장되고, 힙 영역은 동적으로 할당된 데이터가 저장되고, 데이터 영역은 전역변수나 초기화된 데이터 등이 저장되고, 코드 영역에는 프로그램 코드가 저장됩니다. 💡컨텍스트 스위칭에 대해 설명해 주세요. ⬇️Answer 더보기 컨텍스트 스위칭은 여러..
트랜잭션? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 트랜잭션에 대해 모르신다면 아래 글을 읽어보시길 바랍니다. 📁[Database] 트랜잭션의 동작 원리와 ACID 속성 트랜잭션 격리성 ( Transaction Isolation ) 트랜잭션의 격리성은 트랜잭션의 여러 특징들 중 하나이다. 격리성은 실행 중인 트랜잭션의 중간에 다른 트랜잭션이 접근할 수 없도록 하는 것을 뜻한다. 이런 격리성의 수준을 조절할 수..
스프링 부트에서는 @Transactional 어노테이션을 이용하여 복잡한 트랜잭션 처리를 단순화한다. 클래스, 메서드 단위로 어노테이션을 추가할 수 있고, 스프링이 AOP를 통해 프락시를 도입하여 트랜잭션 처리를 모두 해결해 준다. @Transactional 세부 설정 트랜잭션의 세부 설정을 통해 상황별로 적절한 설정을 하여 성능을 최적화할 수 있다. @Transactional 세부 설정 종류 Isolation (격리 수준 설정) Propagation(전파 수준 설정) readOnly 속성 트랜잭션 롤백 예외 설정 time-out 설정 1. Isolation(격리 수준) 일관성이 깨지는 것을 어느 정도까지 허용하느냐에 대한 설정이다. 기본 설정은 DEFAULT이다. @Transactional(isolat..
[JDBC] 트랜잭션 적용 - Connection 직접 이용 JDBC 코드를 직접 짤 때 트랜잭션을 이용하는 방법이다. 비즈니스 로직을 실행할 때, 하나의 커넥션 내에서 동작해야 하므로 메서드 사용 시 connection을 파라미터로 넘겨야 한다. 따라서 서비스 계층, 데이터접근 계층에 모두 Connection을 파라미터로 받아서 이용해야 한다. public void loadLotsOfData(DataList dataList) { String sql = "insert into table values ( /* ... */)"; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.pr..
DB Lock (락) DB Lock(락)은 하나의 데이터를 다른 세션에서 수정하는 것을 방지하는 것이다. 만약 세션 A에서 데이터를 수정하기 위해 트랜잭션을 진행 중이고 아직 커밋 또는 롤백을 수행하지 않았는데, 다른 세션 B에서 동시에 같은 데이터를 수정하게 된다면 여러 가지 문제가 발생할 것이다. 트랜잭션의 원자성이 깨지는 것이다. DB Lock은 이런 문제를 방지하기 위해 트랜잭션을 시작하고 해당 트랜잭션(세션)이 종료되기 전까지 다른 세션에서 해당 데이터를 수정할 수 없도록 막아주는 역할을 한다. 락을 고려한 트랜잭션 과정 락(Lock)은 해당 데이터 수정에 대한 권한 같은 것으로 생각하면 된다. 트랜잭션을 시작하고 쿼리를 실행함과 동시에 락을 획득한다. 획득한 락은 트랜잭션 종료(커밋/롤백) 시..
트랜잭션(Transaction)이란? 트랜잭션은 하나의 데이터 교환 또는 변경을 안전하게 처리하도록 보장해 주는 것을 의미한다. 한 번의 애플리케이션 로직으로 인해 두 개 이상의 데이터가 영향을 받는 경우, 각각의 데이터에 대한 변경이 완전하게 끝난 후 데이터베이스에 정상적으로 반영하는 것이다. 만약 데이터 처리 중 문제가 발생 시 로직 실행 전으로 되돌리는 기능을 지원한다. 데이터베이스에 정상적으로 반영하는 것을 커밋(Commit) , 되돌리는 것을 롤백(Rollback)이라고 한다. 트랜잭션 ACID 속성 ACID는 트랜잭션을 정의하는 4가지 중대한 속성을 가리키는 약어입니다. 즉 원자성, 일관성, 신뢰성, 격리 그리고 영속성을 의미합니다. 원자성(Atomicity) 트랜잭션 내에서 실행한 작업들은 ..
이번 게시글은 면접 예상 질문과 저라면 어떻게 대답할지에 대해 적어봤습니다. 각자 아래 질문에 어떻게 대답할지 생각해 보시면 좋을 것 같습니다. "접은 글"로 제 기준 대답 키워드를 적어놨는데, 피드백이나 의견 댓글로 남겨주시면 감사하겠습니다, [기술 관련] 💡 Java/Spring Boot/JPA를 활용한 REST API 서버 개발 경험 ⬇️키워드 더보기 REST 방식으로 URL로 자원 명시, HTTP Method로 처리 방법을 지정 SpringBoot의 Spring MVC 구조, 레이어드 아키텍처 이용 Controller 단에서 클라이언트 요청 처리 Service 단에서 비즈니스 로직 처리 데이터 접근 계층은 Spring data JPA를 이용하여 JpaRespository 인터페이스를 사용 💡 RD..