전체 글(81)
-
프로세스 동기화(1)
동시성 : cpu core가 한개일때, 시분할 시스템으로 프로세스를 짧은 시간 동안 번갈아 가면서 실행하는 것 병렬성 : cpu core가 여러개일때, 각각의 core가 각각의 프로세스를 실행하는 것 동기화를 이해하기 위해 필요한 용어 race condition(경쟁 조건) 여러 프로세스 혹은 여러 스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 이를 해결하기 위해 mutal exclusion을 이용하자! synchronization(동기화) 여러 프로세스 혹은 여러 스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 critical section(임계 영역) 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스 혹은 하나의 스레드만 진입(=mu..
2024.01.29 -
Refresh Token을 redis에 저장한 이유?
petree의 jwt흐름도 Refresh Token을 Redis에 저장한 이유? Redis는 key-value쌍으로 데이터를 관리할 수 있는 data storage이다. DB가 아닌 data storage라고 표현하지 않은 이유는 기본적으로 Redis는 in-memory로 데이터를 관리하므로, 저장된 데이터가 영속적이지 않기 때문이다. 이때 in-memory란? - DISK DBMS의 경우 - 디스크에 저장된 내용을 메인 메모리로 로딩을 해야하며 실행을 위해서는 cpu로 해당 데이터를 재전송해야한다. 하지만 메모리가격보다 저렴하다. - in-memory DBMS의 경우 - 메인 메모리에서 바로 cpu로 데이터를 전송만 하면 되므로 구조상 간단하다. 하지만 비용이 비싸다. 이러한 Redis에 Refresh..
2024.01.26 -
QueryDSL을 도입한 이유
QueryDSL을 도입한 이유 JPQL(Java Persistence Query Language) JPA에서 제공하는 메소드 호출만으로 섬세한 쿼리작성이 어렵다는 문제로 탄생된 것으로 테이블을 대상으로 쿼리하는 것이 아닌 엔터티 객체를 대성으로 쿼리한다. QueryDSL JPQL을 java코드로 작성하게 해주는 JPQL Builder이다. (=쉽게 말해, JPQL을 java코드로 작성가능하다.) 장점 코딩 과정에서 문법에러를 미리 알 수 있으며, 검색을 위한 유동적인 쿼리를 작성할 수 있는 장점을 가지고 있다. 단점 JPA 1차 캐시사용이 불가능하다. JPA를 통해 select하게되면, 영속성 컨텍스트 1차 캐시에 데이터가 저장되는데, QueryDSL은 이를 무시하고 DB에서 직접적으로 조회해온다. 여기..
2024.01.25 -
XSS?
XSS(Cross Site Scripting) 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법으로 XSS를 통해 사용자의 쿠키나 세션등의 민감한 정보를 탈취할 수 있다. Stored XSS 악의적인 사용자가 어떤 사이트에서 게시글을 작성할 때, 해당 게시글을 조회한 회원의 쿠키 정보를 탈취하는 악성 스크립트를 작성해서 저장했다고 가정하자. 이후, 사용자가, 악성 스크립트가 저장되어있는 게시글을 클릭하면, 게시글이 열리면서 스크립트 코드가 실행이 될 것이다. 이렇게 되면, 스크립트 코드를 통해서 사용자의 쿠키정보를 악의적인 사용자한테 전달할 것이다. 악의적인 사용자는 해당 쿠키를 통해서 서버의 사용자인척하여 악의적인 행동을 할 것이다. 만약 탈취한 쿠키가 관리자 회원의 쿠키였다면, 더욱 심각한 ..
2024.01.24 -
MockMvc, @Transactional(readOnly = true)와 @Transactional을 분리하라고?
출처 : 인프런 Practical Testing을 수강하며 정리하였습니다. MockMvc Mock(가짜) 객체를 사용해 스프링 MVC동작을 재현할 수 있는 test framework @Transactional(readOnly = true)와 @Transactional을 분리해야한다! 위처럼 하게되면, JPA에서 이점이 발생하게 된다. JPA에서는 스냅샷을 저장해서 트랜잭션이 commit하는 시점에 변경감지를 한다. readOnly = true를 하게 되면, create, update, delete작업이 동작을 하지 않아서 스냅샷 저장 및 변경감지를 하지 않아도 되는 이점이 발생한다. 즉, 성능향상의 효과가 발생한다! CQRS - Command(create, update, delete)와 Query(Rea..
2024.01.23 -
preemptive / non-preemptive
preemptive 스케줄링은 어떤 프로세스가 cpu를 할당받아 실행중인 상태에서, 다른 프로세스가 실행중인 프로세스를 중지하고 cpu를 강제로 점유하는 방식 non-preemptive 스케줄링은 어떤 프로세스가 cpu를 할당받으면 그 프로세스가 종료되거나 입출력 요구에 의해 프로세스가 자발적으로 중지될때까지 계속 실행하는 것 non-preemptive 선입선출 스케줄링(FCFS, First Come First Service) Ready queue에 도착한 순서대로 차례로 cpu를 할당하는 기법 아무리 앞의 프로세스 실행시간이 길다고 하더라도, 모든 프로세스에게 순서는 돌아가기때문에 starvation이 없다. 문제 ) convey effect 발생, 실행시간이 긴 프로세스들에 의해 발생한다. cpu이용..
2024.01.23