Longest Increasing Subsequence(LIS) 최장 증가 부분 수열(Longest Increasing Subsequence) 문제는, 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 문제이다. 여기서의 부분 수열은 연속적이거나 유일할 필요는 없다. 최장 증가 부분 수열 문제는 입력 수열의 길이가 n일 때 O(N^2)의 시간에 풀이가 가능하다. 구현 1. 개념 증가 부분 수열을 만들기 위해서는 2중 loop 문(i, j)으로 순회하면서 하나의 i 이전까지 순열중에서 가장 긴 배열을 선택하면 된다. 모든 index를 순회하면서 각 인덱스의 LIS는 다음과 같다. 최종적으로 위 배열에서 LIS 값은 4 이다. Index(i) arr Index(i) arr i=0 {1} i=4 {..
목표 @Controller 페이지를 개설 후 JWT 토큰이 발급된 사용자만이 접근할 수 있도록 기능을 구성하여 접근 권한 관리하도록 한다. 구현 1. 멤버등록(회원가입) 구현 웹페이지 접근 이전에 사용자가 가입된 상태인지 확인하도록 한다. 구현은 CRUD 구현괴 유사하지만 보한 특성을 강화하기 위해 Password는 PasswordEncoder.encode 메소드를 통해 함수화 한다. @RestController @RequiredArgsConstructor public class MemberController { final MemberRepository memberRepository; final PasswordEncoder encode; @PostMapping("/api/member") public St..
JSON Web Token? JSON 웹 토큰(JSON Web Token, JWT, "jot”[1])은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관하고 있다. 이를테면 서버는 "관리자로 로그인됨"이라는 클레임이 있는 토큰을 생성하여 이를 클라이언트에 제공할 수 있다. 그러면 클라이언트는 해당 토큰을 사용하여 관리자로 로그인됨을 증명한다. 구조 JWT는 크게 (Header , Payload , Sign) 3가지로 나뉘며 역할은 다음과 같다. 구조 표현 역할 Header { "alg" : "HS256", "typ" : "JWT" } Token의 타입(jwt, jws 등)과 해시 암호화 알고리..
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의 멀티 코어 수만큼 서브 요소들로 나누고, 각각의 서브 요소들을 분리된 스레드에서 병렬 처리 시킨..
객체지향 쿼리 JPQL SQL vs JPQL 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리 SQL을 추상화해서 특정 DB SQL에 의존하지 않는다. 구분 SQL JPQL 대상 DATA 객체 쿼리 형태 DATA 중심의 쿼리 객체 중심의 쿼리 JPQL(정적 쿼리) ? JPQL(Java Persistence Query Language)은 객체를 조회하는 객체지향 쿼리이다. 객체 중심의 문법인 만큼 특정 DB에 의존하지 않는다. 엔티티 조회, 묵시적 조인, 다형성 지원으로 SQL 보다 간결하다. 다형성(polymorphism) ? 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여..
Vector vs ArrayList vs LinkedList 특징 List 컬렉션의 하위 목록으로 객체를 일렬로 나열하는 구조이다. 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인텍스가 부여되고 인텍스로 객체를 검색, 삭제 기능까지 가능하다. 1. Vector ArrayList와 동일한 내부구조를 가지고 있느며 선언하는 방식 또한 유사하다. Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드를 실핼 할 수 없고, 하나의 스레드가 완료된 후에야 다음 스레드를 작동 할 수 있다. 즉, 스레드 안정성이 보장이 되는 것이다. 2. ArrayList List 인터페이스의 구현 클래스로 인덱스로 관리한다는 점에서는 배열과 유사하지만 배열 크기가 개변적이라는 점에서 차이를 ..
HTTP 상태 및 요청 상태(status) 모든 HTTP 응답 코드는 5개의 클래스(분류) 로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다. 1xx (정보): 요청을 받았으며 프로세스를 계속한다 Detail 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다 Detail 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다 Detail 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다 Detail 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다 Detail 1xx(정보) 요청을 받았으며 작업을 계속한다.[1] 이 상태의 상태 코드는 상태-라인과 선택적 ..
- Total
- Today
- Yesterday
- 그래프
- 자바
- OOP
- 수학
- 매트랩
- CS
- 면접
- spring-cloud
- ajax
- JPA
- docker
- 알고리즘
- nginx
- 디자인패턴
- Solid
- 릿코드
- java
- Spring
- 백준
- Algorithm
- 스프링부트
- interview
- 스프링
- 프로그래머스
- kakao
- Matlab
- C언어
- springboot
- 자격증
- security
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |