CS지식

· CS지식
자바에서 volatile을 사용하면 데이터의 일관성과 가시성을 보장하는 역할을 한다. 우선 volatile 개념을 알기 전에 CPU에서 메모리에 어떤 식으로 접근하고 사용하는지 알아야 한다. CPU에서의 캐시 메모리와 메인 메모리  CPU는 여러 개의 코어로 구성이 되어 있고, 각 코어마다 L1, L2 캐시 메모리를 가지고 있다.CPU는 하나의 L3 캐시 메모리를 가지고 있다. CPU가 어떤 특정 값을 조회한다고 가정하면 L1, L2 캐시 메모리를 먼저 확인한다. 이후 L3 캐시 메모리를 확인하고 여기에도 없으면 메인 메모리에 접근해서 데이터를 가져오게 된다. 데이터를 가져오면 역방향으로 L3, L2, L1 캐시 메모리에 저장하면서 데이터를 가져온다. 만약에 L2 캐시 메모리에서 캐시 히트가 발생했다면 ..
· CS지식
요즘에는 대부분 시큐리티 + JWT 조합을 사용하지만 아직도 많이들 세션을 이용하고 있다. JWT보다 세션이 나은 점은 뭘까??서버에서 세션 데이터를 관리하기에 JWT보다 안전하다.데이터 만료가 JWT보다 수월하다.  크게 보면 위 2가지라고 생각한다. 우선 JWT는 서버에서 생성만 하고 관리는 클라이언트에게 넘겨버린다. 이 때문에 AccessToken, RefreshToken이 탈취당하는 경우가 발생하게 되고, 서버에서는 탈취 자체를 막을 방법이 존재하지 않게 된다.  또 JWT는 생성 시간을 초기에 설정하고 토큰을 생성하기에 만료가 될 때까지 서버에서 토큰 삭제가 불가능하다.   아래 사진을 보면 하나의 클라이언트에게 3번의 로그인 요청이 들어왔고 3개의 JWT가 생성되었다.이 3개의 토큰들은 만료시..
· CS지식
심심해서 자바 내용을 하나씩 찾아보다가 흥미로운 깃허브 내용을 하나 발견했다. https://gist.github.com/benelog/b81b4434fb8f2220cd0e900be1634753 String 최적화 JDK 1.5String 최적화 JDK 1.5. GitHub Gist: instantly share code, notes, and snippets.gist.github.com  위 내용을 간단하게 요약하면 JDK 1.5 ~ 1.8 까지는 String 연산을 진행할 때 컴파일 시 StringBuilder를 생성해서 진행하고 JDK 9부터는 InvokeDynamic을 사용한다고 한다. InvokeDynamic이 무슨 소리인지 우선 모르겠으니 JDK 1.8은 String 연산을 어떻게 처리하는지 확..
· CS지식
매번 스프링 시큐리티 + JWT를 사용했어서 항상 아래의 코드는 default로 깔고 들어갔었다..csrf(AbstractHttpConfigurer::disable) 즉 csrf는 기본적으로 disable을 하고 들어갔기에 자세한 내용을 다루지도 않았었다.  그런데 이번에 회사에서 SESSION을 사용하는데 스프링 시큐리티를 도입하면서 CSRF 토큰을 사용하기 시작했다.(세션 vs JWT는 현재 정리 중에 있습니다.) 그래서 CSRF가 무엇인지, CSRF 토큰은 무엇인지, 스프링 시큐리티에서는 어떤 기능을 제공해 주는지 짚고 넘어가려고 한다. CSRF(Cross Site Request Forgery) 공격 Cross Site Request Forgery, 즉 사이트 간 요청 위조 공격이라고 한다. 의미를..
· CS지식
해당 지식은 혼자 디버깅과 gpt, 블로그를 교차 검증 하면서 얻은 정보입니다. 틀린 내용이 있을 수 있습니다. 소셜 로그인을 사용하면서 oauth2를 사용하게 되었는데 코드를 한번 다시 살펴보고 새로운 소셜 로그인을 추가하기 쉽도록 코드 리팩토링을 진행해보려고 한다. 그전에 다시 한번 oauth2의 흐름을 정리하고 넘어가자. 위 사진처럼 oauth2에는 대표적으로 4가지의 역할이 존재한다.Resource Owner : 사용자Resource Server : 소셜 서버(네이버, 구글, 카카오)Authorization Server : 토큰 발급 서버(네이버, 구글, 카카오)Client : 우리 애플리케이션 여기서 가장 혼동하기 쉬운 부분이 Client다. 여기서 말하는 Client는 사용자를 의미하는 것이 ..
· CS지식
트랜잭션 하나 이상의 항목에 대한 작업의 집합을 의미한다. 아이템을 구매하는 예시를 하나 들어보자. 유저가 상대방에게 아이템을 구매하는 시나리오는 아래와 같다. 1. 유저의 골드 차감2. 상대방의 아이템 제거3. 유저에게 아이템 제공4. 상대방에게 골드 제공 즉 1, 2, 3, 4의 경우에서 하나라도 빠지면 아이템 구매를 하는 데 버그가 발생할 수 있다. 즉 각각의 작업으로 존재하지만 묶음으로 처리가 되어야 하는 작업을 의미한다. 1번 API 전송 -> 2번 API 전송 -> 3번 API 전송 -> 4번 API 전송 이렇게 해도 동작만 한다면 문제가 발생하지 않는다. 그러나 묶음으로 처리가 되어야 하는 성격을 가진다면 하나의 API에서 1, 2, 3, 4번의 작업을 수행해서 리소스를 절약할 수 있다는 특..
· CS지식
SOP 정책 (동일 출처 정책) Same-origin policy라고 부르며 말 그대로 동일한 출처의 리소스만 상호작용을 진행하겠다는 의미.서로 소통하려는 두 URL의 프로토콜, 호스트, 포트가 모두 같아야 동일한 출처로 인정하게 된다. 즉 아래 두 개의 주소는 프로토콜, 포트가 동일하지만 호스트의 이름이 달라서 상호작용이 불가능하다. 이때 데이터를 요청하면 CORS가 발생하게 되는 것.https://service.example.com:8080https://api.example.com:8080 CORS (교차 출처 리소스 공유) Cross-Origin Resource Sharing이라고 부르며 이름 그대로 서로 다른 출처끼리 리소스 공유를 가능하게 해주는 방법. 프로젝트를 진행하면 실제로 "CORS가 발..
· CS지식
https://qkrqkrrlrl.tistory.com/139 즉 서로 간의 연결을 지향한다는 의미. 신뢰성을 보장하기 위한 방법 2. 연결을 위해 추가 작업이 필" data-og-host="qkrqkrrlrl.tistory.com" data-og-source-url="https://qkrqkrrlrl.tistory.com/139" data-og-url="https://qkrqkrrlrl.tistory.com/139" data-og-image="https://scrap.kakaocdn.net/dn/k46On/hyV6ePiUvf/XBDPSElkkgv7I3F7vymKV1/img.png?width=478&height=399&face=0_0_478_399,https://scrap.kakaocdn.net/dn/g..
indeep
'CS지식' 카테고리의 글 목록