전체 글(79)
-
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 -
cpu스케줄링의 의미와 종류?
cpu스케줄링의 의미와 종류 cpu 스케줄링 : ready queue에 있는 프로세스 중 어느 프로세스에 cpu를 할당할 것인가를 결정하는 문제를 의미한다. cpu 스케줄링 종류 단기 스케줄러 어떤 프로세스를 running시킬 것인가 중기 스케줄러 어떤 프로세스를 메모리에 디스크로 쫓아낼 것인가 장기 스케줄러 어떤 프로세스를 ready queue로 보낼 것인가 중기 스케줄러와 장기 스케줄러 모두 degree of multiprogramming을 제어하는데 이때, degree of multiprogramming은 프로세스를 메모리에 얼만큼 올릴 것인가를 의미한다. 과거에는 프로세스가 생성이 되고 장기스케줄러에 admitted되어야 ready상태가 될 수 있었다. 이 장기 스케줄러로 degree of mul..
2024.01.23 -
기아상태? 이를 위한 해결방법은?
기아상태란? Starvation 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태 예를 들어서, 50개의 task가 있고 50개 중 49개는 1번 우선순위를 갖고, 나머지 1개는 2번 우선순위를 갖는다고 가정하자. 또한 해당 프로그램은 10번의 실행과정을 거치면 종료된다. 이때, 2번의 우선순위를 갖는 작업은 자원을 할당받을 수 없다. 자원을 할당받더라도 우선순위가 높은 자원에게 자원 할당을 뺏기기때문이다. Starvation과 자주 비교되는 DeadLock? 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기때문에 다음 단계로 진행하지 못하는 상태 예를 들어서, a, b라는 임계 자원이 있다고 가정하자. ThreadA에서는 a임계 자원을 요청하고 그 내부에서 b..
2024.01.23