2025/06 3

MyBatis 의 cache

MyBatis 의 cacheMyBatis 에는 두 종류의 캐시가 존재한다.1차 캐시 (Local / Session Cache)2차 캐시 (Global / Mapper Namespace Cache)1차 캐시SqlSession 레벨의 캐시이다.즉 SqlSession 내에서만 유효하기 때문에 서로 다른 SqlSession 간에는 공유되지 않는다.Default로 활성화되어 있다.동작 방식SQL 문장 수행 시 결과를 캐싱하여, 이전과 완전히 동일한 문장이 오면 캐싱된 데이터를 반환한다.즉 완전히 동일한 문장과 파라미터여야 한다는 것SqlSession 이 닫히거나 CUD작업이 발생하면 1차 캐시는 비워진다.2차 캐시SqlSessionFactory 레벨의 캐시이다.즉 동일한 Mapper Namespace 내의 모든 ..

포워드 프록시와 리버스 프록시에 관하여

포워드 프록시와 리버스 프록시에 관하여포워드 프록시클라이언트와 서버 사이에 위치하며, 클라이언트를 대신해 서버에 요청을 전달동작 방식클라이언트 측에서 특정 도메인에 접근 시도해당 요청은 포워드 프록시로 이동포워드 프록시가 도메인에 접근하여 데이터 받아옴해당 데이터를 클라이언트로 전달요런 식으로 실제 클라이언트의 요청을 서버로 전달하고 데이터를 받아오는 과정을 전담하는 것이다.장점클라이언트 보호서버 측에서는 이게 포워드 프록시에서 온 요청이기 때문에 클라이언트를 특정할 수 없다.이 덕분에 악성코드가 포함된 사이트로 접근을 막을 수 있고, 혹은 특정 사이트의 접근을 차단할 수 있다.캐싱을 통한 속도 향상여러 클라이언트가 동일한 콘텐츠를 요청하는 경우 데이터를 캐싱해서 성능을 높인다.리버스 프록시얘는 서버 측..

동시성 처리에 관한 짧은 고민

동시성 처리에 관한 짧은 고민병렬성과 동시성먼저 병렬성과 동시성 두 키워드에 대해서 알아두는 것이 좋다.병렬성여러 작업이 실제로 동시에 여러 CPU 코어에서 실행즉, 작업을 분할하여 동시에 처리하여 시간 단축과 처리량 상승참고로 이거는 여러 CPU 코어가 필요하고 각 코어가 독립적으로 작업을 수행한다.동시성여러 작업이 번갈아 가며 처리되는 것처럼 보이는 것. 실제로 동시에 처리되는건 아니고 여러 작업을 번갈아 수행해서 동시 처리되는 것처럼 보이게 함즉, 작업을 나누어 관리하고 한 작업이 I/O 대기 등으로 멈춰있을 떄 다른 작업을 수행해서 응답성을 높인다.이거는 단일 코어 CPU에서 가능하며 각 작업 시간을 짧게 나누어 수행한다.그러면 여기서 동시성 문제가 무엇일까?동시성 문제동시성 문제란, "공유 자원..