암호화(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 를 쿠키에 담아 전송한다...
WebSocket? WebSocket은 웹 상에서 쉽게 소켓 통신을 하게 해주는 라이브러리로 실시간 채팅 서비스, 알림 기능 서비스의 기반이 된다. spring 에서는 SockJS 라이브러리와 메시지 전송을 효율적으로 해주기 위한 STOMP 프로토콜이 존재한다. payload? 페이로드란 전송되는 데이터이며 Header와 MeTA 데이터, 에러 체크 비트 등과 같은 다양한 요소들을 함께 보내 데이터 전송 효율과 안전성을 높인다. 아래와 같은 데이터에서 페이로드는 "data"이며 나머지는 부가적인 정보이다. { "status":"", "from": "localhost", "to": "http://localhost:8080/chatroom/1", "methid": "GET", "data": { "messag..
컴퓨터에서의 음수 표현 Compliment(보수) 두 수의 합이 진법의 밑수(N)가 되게 하는 수를 말하며보수는 컴퓨터에서 음의 정수를 표현하기 위한 방법으로 컴퓨터 내부에서는 사칙연산을 할 때 덧셈을 담당하는 가산기(Adder)만 이용하기 때문에 뺄셈은 덧셈으로 형식을 변환하여 계산이다. 컴퓨터 내부에서는 A - B를 계산할 때 B의 보수(-B)를 구한 다음 A + (-B)로 계산한다. 1의 보수 / 2의 보수 계산 1의 보수 : 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 빼면 1의 보수를 얻을 수 있다. 1010 -> 1의 보수 0101 5 - 4 == 5 + (-4) 101 ---> 5 +) 011 ---> (-4) ---------------- 1 000 ---> 1의 캐리 발생 +) 0..
OOP (Object-Oriented Programming) OOP? OOP는 객체의 관점에서 프로그래밍 하는 것을 의미한다. C언어는 절차 지향 프로그래밍인데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말한다. OOP는 절차지향에 비해서 사람의 사고방식과 더 가깝다. OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다. 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하여 프로그래밍 하는 것을 말한다. OOP 특징 1. 캡술화 객체의 필드, 매소드를 하나로 묶고 , 실제 구현 내용을 감추는 것, 외무객체는 내부 구조를 알지 못하며 객체가 재공하는 필드와 메소드만 이용할 수있다. 필드와 메소드를 보호하는 이유는 외부의 잘못된 사용으로 인해 객..
Parallel Operation 병렬처리? 멀티 코어 환경에서 하나의 작업을 분할해서 각각의 코어가 병렬적으로 처리하는 것을 말하는데, 병령 처리의 목적은 작업 시간을 줄이기 위함. 동시성 VS 병렬성 병렬처리 작업의 방법에는 2가지가 존재하며 멀티스레드 동작 방식 이라는 점에서는 동일하지만 서로 다른 목적을 가지고 있다. 구분 동시성 병렬성 동작 방식 멀티 스레드 방식 목적 멀티 스레드가 작업을 번갈아가며 실행 멀티 코어를 이용한 동시 작업 병렬성의 구사지 옵션(데이터 병렬, 작업 병렬) 데이터 병렬성 : 전체 데이터를 쪼개어 서브 데이터들로 만들고 이 버스 데이터들을 변렬 처리해서 작업하는 것. CPU의 멀티 코어 수만큼 서브 요소들로 나누고, 각각의 서브 요소들을 분리된 스레드에서 병렬 처리 시킨..
HTTP 상태 및 요청 상태(status) 모든 HTTP 응답 코드는 5개의 클래스(분류) 로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다. 1xx (정보): 요청을 받았으며 프로세스를 계속한다 Detail 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다 Detail 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다 Detail 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다 Detail 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다 Detail 1xx(정보) 요청을 받았으며 작업을 계속한다.[1] 이 상태의 상태 코드는 상태-라인과 선택적 ..
Mutex VS Semaphore Back - Ground Thread-safe의 오류를 보완하기 위해 임예영역(Critical Section)을 동기화 기법으로 제어해주어야한다. 여기서 동기화 기법으로는 Mutex 와 Semaphore 기법이 있다. Thread-safe : 공유자원에 접근할때 의도한 대로 동작하는 것 동기화 객제의 종류 Thread 동기화 방법 실행 순서 동기화 메모리 접근에 대한 동기화 Memory 접근에 있어 동시 접근을 방지 실행 순서에 상관 없이, 한순간에 한가지의 스레드만 접근하도록 구성 동기화 기법의 종류 유저모드 커널모드 성능 향상 저하 기능 저하 향상 Common Mutex 와 Semaphore 는 공유 자원에 접근하는 것을 제어하기 위한 병렬 처리를 위한 프로세스 동기..

1. 동적계획법 - 여러 문제를 간단한 여러 개의 문제로 나누어 푸는 방법 - 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있다. 2. 동적 계획법 VS 그리디 알고리즘 - 모든 가능성을 고려해야하는 동적 계획법과 달리 최적해 (경로)를 구하여 문제를 푸는 방법으로 비교적 효율적인 알고리즘으로 본다. 예) 최단거리 로보트 이동 로보트가 위치한 방향에서 Goal을 향하는 경로룰 구하는 방법을 출력하는 문제로 상하좌우 모든 방향의 경로 이동을 시도해야하는 동적계획법 알고리즘 문제이다. 위 그림을 다음과 같이 행렬로 구현한다. boolean[][] grid = { {false,..
최장 공통 부분 수열(LCS)은 LIS 최장 증가 부분 수열과 비슷하게 생각하면 된다. LCS 또한 LIS와 같이 DP(동적 계획법)을 기반으로 한다. LCS 알고리즘을 통해 두개의 문자열을 비교하여 공통 부분 수열의 길이를 구할 수 있다. 주의할 점은 LCS는 Longest Common Substring과 Longest Common Subsequence이 존재한다. 공통 부분 문자열(Longest Common Substring), 공통 부분 수열(Longest Common Subsequence)이라고 말할 수 있다. 2개는 다른 의미를 가지고 있기 때문에 구분해야한다. 차이점은 연속 여부이다.
- Total
- Today
- Yesterday
- docker
- 자바
- nginx
- CS
- JPA
- C언어
- spring-cloud
- kakao
- interview
- 매트랩
- 스프링
- Algorithm
- 자격증
- 면접
- Solid
- 그래프
- Spring
- 스프링부트
- 릿코드
- security
- springboot
- 알고리즘
- ajax
- 프로그래머스
- 수학
- OOP
- 백준
- java
- 디자인패턴
- Matlab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |