[Spring/Java] Reflection
서론 Reflection은 Java의 기본 입문서에 구성되어있지 않지만 강력한 기능이고, 객체의 암/복호화 기능을 구현할 때 사용했었는데 깊게 공부하고 정리해보고자 한다. Reflection이 무엇일까? 런타임 시점에 클래스를 분석해서 동적으로 값을 수정하고, 생성자와 필드 이름, 메소드 이름과 같은 메타 데이터 정보를 알고 조작할 수...
서론 Reflection은 Java의 기본 입문서에 구성되어있지 않지만 강력한 기능이고, 객체의 암/복호화 기능을 구현할 때 사용했었는데 깊게 공부하고 정리해보고자 한다. Reflection이 무엇일까? 런타임 시점에 클래스를 분석해서 동적으로 값을 수정하고, 생성자와 필드 이름, 메소드 이름과 같은 메타 데이터 정보를 알고 조작할 수...
서론 Java에서 문자열 중 특정 정규 표현식이나 문자열이 포함되어있는지 확인하는 메소드 String.contains() 를 포함해서 String 객체에서 자주 사용하는 메소드들의 내부 로직이 어떻게 구성되어있는지 알아보자. ⚠️ 대부분의 코드는 Java 11을 예시로 든다. 목차 데이터 관리 자료구조 compareTo() cont...
서론 알고리즘 문제를 풀면서 필요한 효율적인 문자열 검색 알고리즘에 대해서 공부해보고, 깊게 이해해보려고 한다. 일반적인 문자열 검색 일반적인 문자열 검색은 ‘Naïve String Search’라고 칭하는데, 아래 코드처럼 검색 대상과 대상 패턴을 두고 문자열의 인덱스 기반으로 (0부터 전체 길이 - 패턴의 길이까지) 패턴과 똑같은 ...
서론 지난 Stack vs Queue 포스팅에 이어서 java.util.* 패키지에 구현된 PriorityQueue와 내부 구현 자료구조인 Heap에 대해서 알아보고자 한다. 정의 PriorityQueue 우선순위 큐는 큐에 원소 별로 ‘우선순위’라는 개념을 도입한 자료구조를 의미한다. 구현 방식에 따른 시간 복잡도 ...
서론 평소에 Java로 알고리즘 문제를 풀면서 사용되는 Stack, Queue 자료구조와 java.util.* 패키지에 구현된 스택과 큐 클래스에 대해 더 알아보고자 한다. Stack과 Queue의 정의 간단하게 Stack과 Queue를 정의하면 Stack은 후입선출, LIFO(Last-In-First-Out) 형태의 자료구조이고, Queu...
서론 배치, Spring Batch란 무엇인가 포스트에서 배치와 Spring Batch가 필요한 이유와 내부 개념에 대해 간단히 알아보았다. 이번 포스트에서는 Spring Batch 프로젝트를 생성할 때 필요한 의존성과 필수 설정에 대해 알아보고자 한다. build.gradle 의존성 dependencies { implementation ...
서론 및 배경 IT 기술이 발전하면서 한 번에 처리해야하는 데이터 양이 늘었고 이를 효율적이고 안정적으로 처리하기 위한 기술이 필요해졌다. 이를 ‘배치 처리’라고 표현한다. 다시 요약하면 ‘대량의 데이터를 일정 시간에 모아서 한꺼번에 처리한다.’는 의미이다. 보통 사용자의 활동 로그 정리, 정산, 데이터 마이그레이션, 정해진 시각에 특정 사용자에게 ...
서론 Spring Security에서 Session과 JWT 방식을 통한 로그인을 구현했다. 이에 더 나아가서, Session 방식에 OAuth2 방식으로 카카오 플랫폼을 통한 로그인을 구현해 보고자 한다. OAuth란? OAuth는 Open Authorization의 줄임말로, 권한 인증을 외부 서비스 업체에 위임함으로써 안전하게 액세스 권한을...
서론 지난 포스트에서 Spring Security 프레임워크를 통해 Session 방식을 이용한 로그인 구현을 다뤄보았다. 이번 포스트에서는 JWT 방식으로 로그인을 구현해볼 것이며, Session 방식과 JWT 방식의 차이점을 알아본다. JWT란? JWT는 ‘JSON Web Token’의 줄임말로, 클라이언트와 서버 사이에 통신할 때 권한에 대...
서론 실제 프로젝트를 생성해서 Spring Security를 통해 로그인을 구현해본다. 그리고 Spring Security에서 인증(Authentication)과 인가(Authorization)이 어떻게 관리되어지는 지 공부해보고자한다. Spring Security란? Spring Security는 스프링 기반 어플리케이션에서 인증과 인가를 처리...