목록전체 글 (141)
종식당

스레드, 프로세스, 코어의 수가 많을수록 시스템 성능이 향상된다고 생각할 수 있지만, 실제로는 그렇지 않을 확률이 더 크다.🎡 스레드가 많으면?스레드가 지나치게 많아지면 운영체제가 스레드 간 콘텍스트 스위칭을 자주 수행해야 하여 CPU자원이 스레드 관리에 소모된다. 이로 인해 실제 작업 수행 효율이 떨어질 수 있으며, 많은 스레드가 동시에 실행될 경우 메모리나 캐시, 럭 등의 자원을 경쟁하게 되어 성능 저하나 데드 락이 발생할 가능성이 높아진다. 또한, 스레드가 많아지면 동기화와 상태 관리가 복잡해져 버그 발생 가능성도 커진다.🎪 프로세스가 많으면?각 프로세스는 독립된 메모리 공간을 가진다. 그래서 많은 프로세스가 동시에 실행되면 메모리 사용량이 급격히 증가할 수 있다. 또한, 프로세스를 생성하고 관..

🥛 단위 테스트단위 테스트는 소프트웨어의 가장 작은 단위, 즉 개별 메서드나 함수의 기능을 검증하는 테스트이다. 특정 기능이 올바르게 동작하는지 확인하는 위함이며 독립적이고 빠르게 실행된다.🍭 통합 테스트통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트이다. 모듈 간의 상호작용이 올바르게 동작하는지 위함이며 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트한다.🍡 슬라이스 테스트슬라이스 테스트는 특정 레이어(controller, service, repository)에 대한 테스트이다. 애플리케이션의 특정 슬라이스가 올바르게 동작하는지 확인하기 위해 작성된다. 스프링의 특정 컴포넌트만을 로드하여 테스트하므로 상대적으로 빠르게 실행된다.관련된 어노테이..

https://www.acmicpc.net/problem/1644📝 문제 설명자연수 N을 입력받으면 이를 연속된 소수의 합으로 나타내는 수들의 경우의 수를 출력하면 된다.✨ 제출 코드import java.io.*;import java.util.*;public class Main { static List prime = new ArrayList(); public static void isPrime(int num){ int [] temp = new int[num+1]; for(int i = 2; i = N){ sum -= prime.get(lt); lt++; if(sum == N){ ..

DBMS에서 트랜잭션을 특별한 제어 없이 병행 수행을 허용한다면 데이터의 일관성과 무결성을 보장하기 어렵다.이때, 병행 수행되는 트랜잭션들을 제어하기 위해서 락을 사용할 수 있으며 DBMS에서 락은 크게 공유 락과 배타 락으로 분류할 수 있다.🧊 공유 락공유 락(shared lock)은 읽기 락(read lock)이라고 부르며, 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없다. 즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터가 변경되지 않는 것을 보장한다.SELECT * FROM table_name WHERE id = 1 FOR SHARE;🌹 배타 락배타 락(exclusive lock)은 쓰기 락(write lock)이라고 부르며, ..

🥞 동기 vs 비동기동기와 비동기는 호출하는 함수의 작업 완료를 기다리는지 여부의 차이가 있습니다. 함수 A가 동기로 함수 B를 호출하면 A는 B의 작업이 완료될 때까지 기다려야 한다. 따라서 작업이 순차적으로 진행된다.하지만, 함수 A가 비동기로 함수 B를 호출하면 A는 B의 작업 완료를 신경 쓰지 않고 따로 동작한다. 따라서 작업이 순차적으로 진행되지 않는다.블로킹과 동기는 어떤 차이가 있나요? 🤔두 개념은 유사하면서도 다르다. 동기 호출에서는 호출된 함수가 작업을 완료할 때까지 호호출한 함수가 기다린다. 즉, 작업이 순차적으로 진행되는 것을 의미한다. 반면, 블로킹은 함수가 호출된 후, 호출한 함수의 결과를 기다리기 위해 실행을 멈추는 상태를 의미한다. 즉, 제어권이 반환되지 않고 대기하는 상황..