본문 바로가기

개인 공부185

[Java] JVM 알아보기 🙋 들어가며 자바라는 언어를 처음 배울 때 무엇부터 배우셨나요? 저는 가장 먼저 자바만의 특이한 장치가 존재한다는 사실부터 배웠습니다. 😋 바로 JVM이라는 가상 머신인데, 이 가상 머신이 어떤 동작을 하고 어떤 구조로 되어있는지 알아보겠습니다. 🏭 JVM JVM이란, Java Virtual Machine의 약자로 바이트 코드를 실행시키는 가상 머신입니다. 자바와 다른 언어를 구분 짓는 큰 차이로, WORA(Write Once Run Anywhere)를 목표로 만들어졌습니다. JVM을 이해하기 위해서 어떻게 자바 코드가 실행되는지 먼저 알아보겠습니다. 💻 Java는 컴파일 언어 자바는 C언어와 함께 대표적인 컴파일 언어입니다. 컴파일(Compile)이란, 우리가 작성한 코드를 컴퓨터가 이해할 수 있는 과.. 2023. 8. 25.
[Security] 시큐리티 파헤치기 (4) : 인증이란? (feat. Authentication) 🙋 들어가며 이번 글부터 시큐리티의 인증 시리즈를 다뤄볼 생각입니다. 인증에 대해서 무엇인지 알아보면서 인증 시리즈를 시작해 보겠습니다. 또한, 어떤 객체에 인증 정보를 담을지까지 알아보겠습니다. 🙆‍♂️ 인증(Authentication)? 인증이란, 어떤 사용자가 접근하고 있는지 확인하는 절차입니다. 보안에 민감한 정보를 다룬다면 당연히 누가 사용하는지 확인하고 접근시켜야 합니다. 자세하게 어떻게 동작하는지는 몰라도, 인증하려면 정보를 담아줄 그릇이 필요할 것 같습니다. 바로 이 그릇이 Authentication 객체입니다. 🪙 Authentication 인터페이스 Authentication 인터페이스는 인증 정보를 담는 하나의 토큰입니다. 실제 코드는 다음과 같이 구현되어 있습니다. public in.. 2023. 8. 17.
[Security] 시큐리티 파헤치기 (3) : 시큐리티 초기화, 다중 필터 체인 🙋 들어가며 이번 글에서는 시큐리티가 어떻게 초기화되고 어떤 값들이 생성되는지 알아보겠습니다. 시큐리티는 여러 개의 필터 체인을 관리할 수 있는데 어떻게 설정하는지 알아보겠습니다. 그리고 요청이 어떻게 알맞은 필터 체인에 타고 흐르는지도 알아보겠습니다. 📁 설정 파일 작성 (feat. Security 6) 시큐리티를 사용하기 위해서는 우선 설정 파일을 작성해야 합니다. 다음과 같이 단 어노테이션 하나만 달아주면 기본적인 시큐리티 설정이 완료됩니다. @Configuration @EnableWebSecurity // 기본 시큐리티 설정 public class SecurityConfig { } 바로 @EnableWebSecurity 입니다. 전혀 복잡하지 않죠? 😋 단순히 달아주기만 하면 애플리케이션이 메모리.. 2023. 8. 11.
[Backend] DB 인덱스 이해하기 🙋 들어가며 처음 자료구조를 공부할 때 우리는 배열을 가장 먼저 접합니다. 배열에서 데이터가 어디에 있는지 나타낼 때 인덱스라는 용어를 사용하는데, 데이터베이스에서도 이 인덱스라는 용어를 사용합니다. 이번 글을 통해서 인덱스가 무엇이고 어떻게 사용하는지 알아보겠습니다. 📚 인덱스란? 저번에 읽었던 책에서 찾고 싶은 내용이 있을 때 어떻게 찾을까요? 맨 앞에 있는 목차혹은 끝에 있는 찾아보기를 참고할 것 같습니다. 이렇게 빠르게 찾기 위해서 도움을 주는 페이지를 인덱스라고 합니다. 페이지라고 표현한 이유는 DB에서 인덱스는 하나의 자료구조이기 때문입니다. 기본적으로 인덱스는 키를 정렬해서 보관합니다. 🤔 왜 빨라질까? 인덱스를 둔다는 것은 원하는 데이터가 어디에 있는지 마킹해두는 것입니다. 마킹을 기반으로.. 2023. 8. 4.
[Backend] 트랜잭션, 격리 수준 🙋 들어가며 데이터를 다룰 때 트랜잭션이라는 용어가 자주 등장합니다. 이번 글에서 우리는 자주 언급되는 트랜잭션이 무엇이고 특징이 어떤 것들이 있는지 알아보고, 주의할 점은 어떤 것들이 있는지 알아보겠습니다. 🤔 트랜잭션이란? 트랜잭션은 특별한 작업의 단위를 의미합니다. 어떤 특징이 있어서 단순한 작업과 다르게 표현을 하는 것일까요? 👀 특징 트랜잭션을 이야기할 때는 ACID라고 부르는 특징을 이해해야 합니다. ACID를 지키고 있는 단위를 우리는 트랜잭션이라고 부르는 것입니다. 🎭 루미큐브 루미큐브는 가장 유명한 보드게임 중 하나입니다. 이 게임은 트랜잭션의 특징과 아주 비슷합니다. 다음은 규칙입니다. 🎯 루미큐브 규칙 4가지 색을 가진 1부터 13까지 숫자가 존재한다. 필드에 제출된 숫자들은 같은 색.. 2023. 7. 27.
[Java] Hash란? (feat. Hash Collection) 🙋 들어가며 해시 브라운으로 더 유명한 해시(Hash)는 개발자라면 들어봤을 법한 이름입니다. 이번 글을 통해서 해시는 어떤 것이고 왜 사용하는지 또, 어떤 문제가 있는지 알아보겠습니다. 그리고 Java에서 제공하는 다양한 Hash Collection에 대해서도 간단히 알아보겠습니다. 🥔 Hash란? 해시란 고정된 크기로 값을 바꾸는 함수나 알고리즘 을 말합니다. 그 결과 만들어진 값을 해시 코드(hash code) 혹은 해시 값(hash value)이라고 부릅니다. 🤔 고정된 크기? 해시가 어떤 것인지 알았다면 이번에는 왜 사용하는지 에 초점을 맞춰보겠습니다. 힌트는 앞서 언급한 고정된 크기에 있습니다. 보통 책에는 어느 페이지에 어떤 내용이 있는지 담겨있는 목차가 존재합니다. 우리가 1,000 페이지.. 2023. 7. 21.