분류 전체보기
-
-
Design Pattern개발 지식/기타 2020. 7. 23. 23:58
Design Pattern SOLID 원칙 싱글톤 패턴 (Singleton pattern) 전략 패턴 (Strategy pattern) 상태 패턴 (State pattern) 템플릿 메소드 패턴 (Template method pattern) 팩토리 메소드 패턴 (Factory method pattern) 커맨드 패턴 (Command pattern) 옵저버 패턴 (Observer pattern) 데커레이터 패턴 (Decorator pattern) 추상 팩토리 패턴 (Abstract factory pattern)
-
HTTP, HTTPS개발 지식/기타 2020. 7. 23. 23:55
HTTP 와 HTTPS - HTTP (HyperText Transfer Protocol)는 HTML 문서와 같은 텍스트들을 송수신 할 수 있게 하는 프로토콜 입니다. - 웹상에서 이루어지는 모든 데이터 교환의 기초, 클라이언트-서버 프로토콜 - 클라이언트의 요청 (request)와 서버의 응답 (response)로 구성 HTTP 프로토콜의 특징 1. 비연결지향 (Connectionless) HTTP는 먼저 클라이언트가 서버에 request를 보내면 서버는 response를 보내고 접속을 끊는다. 2. 상태정보 유지 안함 (stateless) 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나고 상태정보를 유지하지 않는다. HTTP 수행 과정 - 클라이언트와 서버가 HTTP를 이용하여 통신할 때의 수행 과정..
-
Cookie & Session개발 지식/기타 2020. 7. 23. 23:52
HTTP 프로토콜의 특징 비연결지향 (Connectionless) HTTP는 먼저 클라이언트가 서버에 request를 보내면 서버는 response를 보내고 접속을 끊는다. 상태정보 유지 안함 (stateless) 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나고 상태정보를 유지하지 않는다. 이 두가지 특성을 보완하기 위해 쿠키와 세션을 사용한다. 쿠키 (Cookie) 클라이언트 로컬 저장소에 저장되는 키와 값으로 구성된 파일이다. 이름, 값, 만료날짜, 경로 정보가 들어있다. 일정시간동안 데이터를 저장할 수 있다. 세션 (Session) 일정 시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술. 서버 측에서 관리한다. 클라이언트를 구분하기 위해 세션 ID를..
-
쉘 정렬개발 지식/알고리즘 2020. 7. 9. 04:58
JAVA로 작성되었습니다. 쉘 정렬 삽입 정렬을 개산한 알고리즘, 바탕은 삽입정렬을 기본으로 진행한다. 가까운 위치에 삽입되는 (어느정도 정렬이 되어있는) 삽입정렬이 빠른 것을 이용하여 삽입정렬을 하기 전 배열을 어느정도 정렬한 상태에서 삽입정렬을 진행하는정렬 방식이다. 이때 gap이라는 것이 존재하는데 gap만큼 배열을 띄엄띄엄 정렬하는데 사용한다. 갭을 설정한다. 갭의 값은 이전 갭의 절반으로 설정한다. (초기 값은 배열의 크기 / 2 로 설정한다) (홀수를 권장하므로 2로 나누었을 때 짝수가 나온다면 +1을 하여 홀수로 정한다.) 원본 배열에서 다음 요소와 인덱스의 차이가 gap만큼 있는 부분 배열들을 생성한다. (리스트의 길이가 11(0~10)이고 갭이 5라면 (0, 5, 10), (1, 6), ..
-
합병 정렬개발 지식/알고리즘 2020. 7. 9. 01:26
JAVA로 작성되었습니다. 합병 정렬 분할정복을 이용한 정렬방법 배열을 한개의 조각이 될 때까지 쪼개고 두개 (1, 1)를 서로 비교, 4개(2, 2)를 서로 비교, 8개(4, 4)를 서로 비교 하는 방법 비교한 결과를 저장하기 위해 임시의 배열이 추가로 필요하다. 인자로 들어온 left가 right보다 작은지 검증한다 (같다면 숫자가 하나이기에) 중간값을 결정한다. ((오른쪽 값 - 왼쪽 값) / 2 + left) 중간값과 왼쪽 배열, 중간값 오른쪽 배열을 다시 분할하는 재귀함수를 호출한다. left + 1 = right 가 될때까지 분할을 수행한다. (분할해야 하는 배열의 요소가 2개) (3개인 경우 2개와 1개로 쪼개지고 왼쪽의 2개만 쪼개져 서로 비교를 진행하고 다시 돌아와 2개와 1개의 비교를 ..
-
탐색 (선형 탐색, 트리 탐색, AVL, 회전 연산)개발 지식/알고리즘 2020. 7. 1. 14:00
탐색: 임의의 키 값을 대상 파일에서 찾는 것 선형탐색 O(n) - 정렬되어 있지 않은 파일 O(n) - none-sorted - 정렬되어 있는 파일 O(n) - sorted none-sorted에 비해서 없는 키값을 찾을 때 유리하다. 트리탐색 tree -> binary tree 정의: 임의의 키 값은 왼쪽보다 크고 오른쪽보다 작다 구성: 맨 처음 들어오는 키 값은 루트, 나머지는 정의대로 삽입한다. - ex) 5 4 3 6 8 2 1 7 - ex) 5 3 6 8 4 7 1 2 - ex) 1 2 3 4 5 6 AVL Tree : Hight Balanced -k tree 일 때 k는 1이하 k : 왼쪽 자식과 오른쪽 자식의 Depth 차이 L : 왼쪽 자식 Depth R : 오른쪽 자식 Depth Eve..
-
트리 (완전 이진, 포화 이진, Max-heap, Min-heap)개발 지식/알고리즘 2020. 6. 30. 15:03
완전 이진 트리 (Complete binary tree) root에서 레벨 순으로 (좌에서 우로 M) leaf 노드를 제외한 모든 노드의 자식 수가 2개 포화 이진 트리 (Perfect binary tree) 레벨 I의 노드 수 : 2^(i - 1) 레벨 3의 노드 수 : 2^(3-1) = 4개 트리의 노드 수 : 2^3 - 1 = 7개 leaf 노드를 제외한 모든 노드의 자식 수가 2개 완전 이진 트리를 만족함 이진트리의 부모를 구하는 방법 ⌊자식 노드/2⌋ ex) 5번째 노드의 부모는 몇 번째 노드인가? ⌊5/2⌋ ( 5/2 = 2.5 의 바닥함수는 2 ) : 2 번째 노드가 부모 노드 이진트리의 자식를 구하는 방법 부모 * 2, 부모 * 2 + 1 ex) 3번째 노드의 자식은 몇 번째 노드인가? 3..