백엔드 CS 정리 썸네일형 리스트형 JVM 내부 동작 원리 1. Java 프로그램 실행 과정Java 소스 코드 작성 및 실행개발자가 Java 소스 코드를 작성하고, Run 명령을 실행하면 Javac 컴파일러가 소스 코드를 바이트 코드(.class 파일)로 변환한다.JVM의 역할JVM(Java Virtual Machine)은 바이트 코드를 읽고 실행하는 가상 머신이다.이때, Class Loader를 통해 .class 파일을 JVM 내부로 로드하고, Runtime Data Area에 배치한 후, Execution Engine이 이를 실행한다.2. JVM의 주요 구성 요소2.1 Class Loader (클래스 로더)역할: .class 파일(바이트 코드)을 JVM의 Runtime Data Area로 로드하고, 클래스 간의 참조를 연결하는 작업을 수행한다.로딩(Loadi.. 더보기 JAVA에서 Final을 사용하는 이유 스프링 부트에 익숙한 백엔드 개발자라면 익숙한 친구 바로 final이다.@RequiredArgsConstructor 를 이용하건 혹은 @Autowired를 통하여서 직접적으로 생성 시점에 주입을 해주던 PokemonFinder 라는 PokemonRepository를 사용하는 클래스에스는 PokemonRepository를 private final을 선언하여 이용한다. 대체 왜 이렇게 사용할까?흔하게 대답할 수 있는 final의 불변성 보장이라는 말 대신 스프링 부트에서의 관점에서 왜 사용하고 이것의 장점과 단점이 무엇인지에 대해서 생각해보자. 먼저 의존성 주입의 안정성 측면에서 생각을 해본다면 final을 사용하지 않는다면 mutable하기 떄문에의존성 주입이 항상 유지되고 신뢰할 수 있다고 말하기 어려워.. 더보기 쿠키 vs 세션 vs 캐시 1.쿠키쿠키에 대하여 알기 위해선 우선 우리가 흔하게 아는 HTTP 프로토콜의 특성에 대하여 알아야한다.HTTP프로토콜은 Stateless의 특성을 지니는데 이는 지속적으로 특정 유저와의 연결을 유지할 경우, 유저가 증가하면 증가할 수록 어마어마한 latency를 초래할 수 있기 떄문이다.따라서 HTTP프로토콜은 쉽게 생각하면 내가 A라는 사람을 만나서 무슨 이야기를 나눴는데 이걸 다음번에 A를 또 만났을떄 내가 무슨 이야기를 나눴는지를 기억하지 못한다는 거다.하지만 홈페이지에 로그인을 하는 경우 로그인 정보를 클라이언트의 컴퓨터에 저장해두는 것이 필요한 Stateful한 경우가 있다.이를 대비하기 위해서 쿠키와 세션을 사용한다. 쿠키란?쿠키는 클라이언트의 브라우저에 저장이 되며 서버와 통신할떄 HTTP.. 더보기 Bcrypt를 사용하는 이유 암호화 방식암호화 방식은 크게 2가지가 있다. 단방향과 양방향 암호화가 있는데 단방향은 암호화만 가능하고 복호화가 불가능하지만 양방향은 암호화뿐만 아니라 복호화 또한 가능하다.대칭키와 비대칭키대칭키: 암호화와 복호화에 같은 키가 사용되는 방식이다.비대칭키: 암호화와 복호화에 사용되는 키가 다른 방식이다.보안의 문제만약 양방향 암호화를 사용하고 있는데 중간에 키가 해커에 의해 갈취당한다고 생각해보자.이 해커는 복호화 키를 이용하여 데이터 센터나 데이터의 전달 과정을 들여다보고 원하는 데이터를 탈취할 수 있다.따라서 복호화 자체가 불가능한 단방향 암호화 방식을 비밀번호 같은 중요한 정보에 사용하는 것이다.단방향 암호화의 한계단방향 암호화는 해시 알고리즘을 이용해 사용되는데, 이 해시 알고리즘은 치명적인 약점.. 더보기 이전 1 다음