스프링 시큐리티는 여러 기능을 제공하는데 그 중 필터를 사용하여 2차 인증을 거친 후 로그인을 진행할 수 있다. 구현 인증코드 생성기 public class GenerateCode { public static String generate() { Random random = new Random(); String...
스프링 시큐리티를 이용한 이메일인증 추가하기
너비 우선 탐색(BFS) - JAVA
너비 우선 탐색 너비 우선 탐색은 영어로 BFS (Breadth First Search) 라 표현하며, 그래프를 탐색하는데 너비를 우선으로 하여 탐색한다는 뜻이다. BFS 탐색을 위해선 스택을 사용한 DFS와 달리 큐 라는 자료구조가 필요하다. 큐를 사용한 BFS 탐색 방법은 아래와 같다. BFS 순서 시작노드를 큐에 담는다. 큐에 넣은...
깊이 우선 탐색(DFS) - JAVA
깊이 우선 탐색 깊이 우선 탐색은 영어로 DFS (Depth First Search) 라 표현하며, 그래프를 탐색하는데 깊이를 우선으로 하여 탐색한다는 뜻이다. DFS 탐색을 위해선 스택이라는 자료구조가 필요하다. 스택을 사용한 DFS 탐색 방법은 아래와 같다. DFS 순서 시작노드를 스택에 담는다. 스택의 최상단(top)에 있는 노드를...
카카오톡이 트래픽에 대처하는 방법
유튜브에서 kakao tech 채널의 폭증하는 카카오톡 트래픽에 대처하는 방법 (신성열 Tomo) 라는 영상을 시청하고 카카오톡의 트래픽에 대한 생각을 정리해보았다. 카카오톡의 경우 백그라운드 로그인 카카오톡은 사용자 편의성을 위해 백그라운드 로그인이라는 기능을 사용한다고 한다. 백그라운드 로그인 기능이란 한 사용자가 다른 사용자에게 메시지를...
보안과 권한 관리
보안과 권한 관리 보안 데이터베이스의 보안은 3가지로 구분할 수 있다. 물리적 환경에 대한 보안 자연 재해처럼 물리적인 위험으로부터 보호한다. 권한 관리를 통한 보안 접근이 허용된 사용자만 부여된 권한 내에서 사용하도록 제한해야 한다. 운영 관리를 통한 보안 ...
회복과 병행 제어
회복과 병행 제어 트랜잭션 테이터베이스는 항상 정확하고 일관된 상태를 가져야 하므로 이를 위해 트랜잭션이라는 기능을 제공한다. 트랜잭션은 한 작업을 수행하기 위해 모아놓은 여러 작업의 집합으로 볼 수 있으며, 데이터베이스의 논리적인 작업 단위이다. 예시로 내 계좌에서 다른 사람의 계좌로 입금을 진행할 때 내 계좌에서 돈이 빠져나감과 동시에 다른 ...
데이터베이스 정규화
데이터베이스 정규화 정규화는 데이터베이스를 설계하는데 사용하기도 하지만 설계된 데이터베이스를 검증하기 위해 사용하기도 한다. 데이터베이스를 잘못 설계하면 불필요한 데이터중복 같은 각종 문제가 발생할 수 있는데 이를 이상 현상 이라고 한다. 이 이상현상을 제거하면서 데이터베이스를 설계하는 과정이 정규화이다. 이상 현상의 종류 삽입 이상 새 데이...
데이터베이스 설계
데이터베이스 설계 관계 데이터 모델을 기반으로 데이터베이스를 설계할 때는 E-R 모델과 릴레이션 변환 규칙을 사용한 설계와 정규화를 이용한 설계 이 두가지 방법을 주로 사용한다. E-R 모델과 릴레이션 변환 규칙을 이용한 설계는 아래와 같은 단계로 나누어 설계한다. 요구 사항 분석 사용자의 요구 사항을 수집하고 분석하여 개...
데이터베이스 언어 SQL
데이터베이스 언어 SQL SQL (Structured Query Language) 은 관계 데이터베이스를 위한 표준 질의어로 사용되는 언어로 사용자가 원하는 데이터가 무엇인지만 알려주면 되기 때문에 비절차적 데이터 언어의 특성을 가진다. SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 로 나뉜다. ...
관계 데이터 연산
관계 데이터 연산 관계 데이터 연산의 개념 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로 데이터베이스 시스템의 구성 요소 중 데이터 언어의 역할을 한다. 대표적으로 관계 대수와 관계 해석이 있다. 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어 관계 해석 : 원하는 결과...