서론 what is Cluster DB를 통해 데이터를 조회할 경우 시간 효율을 높이기 위해 자주 사용되는 테이블 데이터를 디스크의 같은 위치에 저장시키는 방법 인덱스에서 데이터를 조회하는 방법으로 구분할 수 있는 기술로 Non-Cluster / Cluster 로 구분되며 두 방식은 서로 다른 장점을 보여주기 때문에 상황에 맞춰 적용하면 될것이다. 구분 Cluster A. 특징 단위 테이블당 한 개의 클러스터를 생성하며 행 데이터를 물리적으로 열에 맞추어 자동 정렬한다. 인덱스 자체의 리프 페이지가 곹 데이터 페이지 이므로 인덱스 자체에 데이터가 포함되어 있다 말할 수 있다. NonCluster 와 반대로 검색(Search) 속도가 매우 빠르다. 어느 테이블이던지 한개의 클러스터를 생성할 수 있지만 어느..
서론 클라이언트와 서버 간 데이터를 주고받기 위해 HTTP 통신을 사용하며 이 과정에서 사용되는 HTTP 통신 기술 js에서 비동기 HTTP 통신을 위해 사용되는 Ajax, Axios 에 대해 설명한다. AJAX(Asynchronous JavaScript And XML) JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 데이터를 주고받는 기술이다. 이전 포스팅에서 AJAX에 대한 포스팅을 한적이 있다. jQuery와의 연관성 Ajax를 JQuery를 통해 보다 더 쉽게 사용할 수 있기에 우리는 JQuery와 Ajax를 함께 묶어서 말할 때가 많은 것 뿐이이다. 순수 Ajax의 코드는 지저분했기에 이에 대한 보완으로 jQuery에서 Ajax를 편리하게 사용할 수 있도록 정립하면서 jQuery..
DB 암호화 기법 개요 데이터베이스 암호화는 데이터를 암호화하여 저장하고, 권한이 있는 사람 혹은 서버만이 해당 데이터를 복호화할 수 있도록 하여 데이터를 보호하는 기술이다. 데이터베이스 접근 제어 외에 데이터베이스 보안에 관한 국내외 법률과 규정은 2가지를 주요하게 강조한다. 암호화를 통한 데이터베이스 보안 엄격한 암호키 관리를 통해 데이터를 보호 데이터베이스 암호화의 목적은 비정상적 데이터 유출이 발생할 경우, 복호화를 어렵게 만드는 것이다. 암호키는 암호화 뿐만 아니라 복호화할 때도 사용하므로 매우 신중하게 관리하여야 한다. 랜덤 키에 의해 암호화된 데이터는 해커들이 복호화를 하기 어렵게 만든다. 따라서 복호화를 해야만 하는 사용자나 시스템 이외에 다른 사용자가 암호키에 접근하는 것을 통제해야 한다..
TDD(Test Driven Development) ? 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계방법이다. TDD와 일반적인 개발 방식의 가장 큰 차이점은 *한다는 점이다. 설계 단계에서 프로그래밍 목적을 반드시 미리 정의해야만 하고, 정의테스트 케이스 작성해야만 한다. 테스트 코드를 작성하는 도중에 발생하는 예외 사항(버그, 수정사항)들은 테스트 케이스에 추가하고 설계를 개선한다. 이후 테스트가 통과된 코드만을 코드 개발 단계에서 실제 코드로 작성한다. 🍀 TDD 개발 방식의 장점 보다 튼튼한 객체 지향적인 코드 생산 TDD는 코드의 재사용 보장을 명시하므로 TDD를 통한 소프트웨어 개발 시 기능 별 철저한 ..
AJAX(Asynchronous JavaScript and XML) Ajax는 빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법 중 하나 Ajax는 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있다. 즉 Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있다. AJAX 장점 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있다. 웹 페이지가 로드된 후에 서버로 데이터 요청을 보낼 수 있다. 웹 페이지가 로드된 후에 서버로부터 데이터를 받을 수 있다. 백그라운드 영역에서 서버로 데이터를 보낼 수 있다. Ajax의 한계 Ajax는 클라이언트가 서버에 데이터를 요청하는 클라이언트 풀링 방식을 ..
서론 홈페이지 제작과정에서 가장 중요한 것은 보안이라고 생각한다. 사용자의 정보를 크립토그래피 과정을 통해 해쉬처리하고 JWT를 통해 로그인 유지와 인증을 보장하는 과정은 쉬운 과정은 아니었다. 그중에서도 SecurityConfig 를 구성하는 과정은 보기만 해서는 이해할 수 없었다. 때문에 직접 로그인 화면을 제작하고 스프링 Security 에서 제공하는 HttpSecurity 메소드를 직접 사용해보며 스프링 보안에 한발 더 접근해 보도록 한다. 어떤 로그인 화면을 가져올 것인가? 스프링에서는 기본적으로 제공되는 보안 화면이 있다. 일방적으로 로그인만 가능하고 회원가입 구성이 없어 개발자 이외에는 로그인이 불가능하다. 반대로 개발자가 직접 제작하는 페이지를 사용하고자 한다면 SecurityConfig ..
Spanning Tree 그래프 내의 모든 정점을 포함하는 트리를 의미 n개의 정점을 가지는 그래프의 간선의 수 (n-1)로 이루어져 있다. DFS, BFS을 이용하여 그래프에서 신장 트리를 찾을 수 있으며 하나의 그래프에는 많은 신장 트리가 존재할 수 있다. Spanning Tree는 트리의 특수한 형태이므로 모든 정점들이 연결 되어 있어야 하고 사이클을 포함해서는 안된다. 따라서 Spanning Tree는 그래프에 있는 n개의 정점을 정확히 (n-1)개의 간선으로 연결 한다. 최소 신장트리 (MST) Spanning Tree 내에서 노드간의 간선의 합이 값이 최소인 트리를 의미한다. MST Algorithm 을 구현하는 방법은 4가지가 존재한다. 크루스칼 알고리즘 위상 정렬 알고리즘 다익스트라 알고리..
암호화(Encode) 웹 서비스 개발에 대해 유저의 정보를 안전하게 저장하기 위해서는 정보를 있는 그대로 저장하기보다 암호화를 통해 복잡한 문자열로 보관하는 방식이 더욱 안전할 것이다. Spring Security 5.3.3 버전에서는 비밀번호 암호화 인터페이스인 PasswordEncoder와 구현체를 지원함으로서 정보의 안전정을 강화 시켰다. Spring Security에는 4가지의 기본 암호화 클래스를 제공하고 있다. BcryptPasswordEncoder : BCrypt 해시 함수 Argon2PasswordEncoder : Argon2 해시 함수 Pbkdf2PasswordEncoder : PBKDF2 해시 함수 SCryptPasswordEncoder : SCrypt 해시 함수 저장된 암호는 복호화가..
Session vs Token Session Session 과 Cookie 인증 방식은 클라이언트의 세션 저장소를 요구하며 로그인시 사용자 정보를 저장하고 Key로 사용되는 세션 ID를 생성한다. 사용은 HTTP Header에 세션 ID가 포함된 Cookie와 함께 클라이언트에 전송하는 방식으로 클라이언트는 이를 세션 저장소에서 비교하여 인증이 완료되면 Request에 따라 응답을 수행한다. 유저가 로그인을 하고 세션이 서버 메모리 상에 저장된다. 이 때 세션을 식별하기 위한 Session Id 를 기준으로 정보를 저장한다. 브라우저에 쿠키로 Session Id 가 저장된다. 쿠키에 정보가 담겨있기 때문에 브라우저는 해당 사이트에 대한 모든 Request 에 Session Id 를 쿠키에 담아 전송한다...
편집거리 알고리즘 Leven Shtein Algorithm 두 개의 문자열 A, B가 주어졌을 때 두 문자열이 얼마나 유사한 지를 알아낼 수 있는 알고리즘입니다. 그러니까, 문자열 A가 문자열 B와 같아지기 위해서는 몇 번의 연산(DELETE / INSERT / REPLACE)을 진행해야 하는 지 계산할 수 있습니다. 예시 두 문자열 s1 , s2 가 주어진다면 s1을 s2로 만드는데 필요한 최소한의 연산을 구하라 s1 = "sunday" / s2 = "saturday" 분석) 두 문자가 같을 경우 어떠한 연산도 수행하지 않는다. 두 문자가 다를 경우 현재 위치 d[i][j]에서 d[i-1][j], d[i][j-1], d[i-1][j-1] 의 요소중에 가장 작은 값에서 +1 을 연산한 값을 배열에 추가한..
- Total
- Today
- Yesterday
- 백준
- Matlab
- 스프링
- interview
- JPA
- 자격증
- security
- 알고리즘
- Algorithm
- 자바
- 디자인패턴
- OOP
- springboot
- docker
- nginx
- 그래프
- Solid
- 프로그래머스
- C언어
- 수학
- ajax
- Spring
- 매트랩
- CS
- 스프링부트
- spring-cloud
- 면접
- 릿코드
- java
- kakao
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |