분류 전체보기 135 [Algorithm] 퀵정렬 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법입니다. 일반적인 상황에서 가장 많이 사용되는 정렬 알고리즘 중 하나입니다. 병합정렬과 더불어 대부분의 프로그래밍 언어의 정렬 라이브러리의 근간이 되는 알고리즘입니다. 가장 기본적인 퀵정렬은 첫번째 데이터를 기준 데이터로 설정합니다. 자바의 Arrays.sort()도 quickSort를 사용합니다. static void quickSort(int[] array, int start, int end) { //배열의 길이가 1인 경우는 종료 if(start >= end) return; //pivot는 배열의 첫번째 원소 int pivot = start; //left는 pivot을 제외한 첫번째 원소 int left = start +.. Algorithm 2021. 11. 26. [Algorithm] 삽입정렬 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입합니다. 앞쪽에 있는 원소들이 이미 정렬이 되어 있다고 판단하고 어떤 위치에 들어갈 지 판단하게 됩니다. 첫 번째 위치는 이미 정렬되어 있다고 판단하고, 두 번째 위치부터 왼쪽으로 이동하면서 자신이 들어갈 위치를 찾습니다. 오름차순인 경우는 왼쪽으로 이동하면서 자신보다 큰 값들과 위치를 바꾸고 작거나 같은 값이 나올 경우 탐색을 종료합니다. 내림차순인 경우는 왼쪽으로 이동하면서 자신보다 작은 값들과 위치를 바꾸고 크거나 같은 값이 나올 경우 탐색을 종료합니다. 선택정렬에 비해 구현 난이도가 높은 편이지만, 일반적으로 선택정렬보다 빠르게 동작합니다. 최악의 경우 모든 경우의 수를 파악해야 하기 때문에 O(N^2)이 걸리지만, 최적의 경우엔 O(N)의 시.. Algorithm 2021. 11. 26. [Algorithm] 선택정렬 정렬 중 가장 쉽게 구현이 가능합니다. N번 만큼 가장 작은 수를 찾아서 맨 앞으로 보내야 합니다. 처리되지 않은 모든 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복합니다. 시간복잡도는 N + (N - 1) ... + 2로 등차수열 공식에 따라서 (N^2 + N - 2)/2로 표현할 수 있습니다. 빅오 표기법에 따라 O(N^2)이 됩니다. static void selectSort(int[] array) { for (int i = 0; i array[j]) { minI.. Algorithm 2021. 11. 26. [Network] TCP/IP 4 Layer ( TCP/IP 4계층 ) OSI 7 Layer vs TCP/ICP 4 Layer 국제표준화기구 IOS(International Organization for Standardization)에서는 상호 이질적인 네트워크간의 연결에서 호환성의 결여를 막기위해 OSI(Open Systems Interconnection) 모형을 개발했습니다. TCP/IP는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화된 모형입니다. 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층입니다. 응용 계층 (Application Layer) OSI의 세션, 표현, 응용 계층이 여기에 해당합니다. 사용자와 가장 가까운 계층으로 사용자가 소프트웨어 응용 프로그램과 소.. Computer Science/Network 2021. 11. 22. [Network] OSI 7 Layer ( OSI 7계층 ) 계층을 분리하여 각 계층은 독립적인 역할을 할 수 있습니다. 역할이 분리되면서 문제가 발생하더라도 어떤 계층에 문제가 생겼는지도 파악이 가능합니다. 동작 원리 OSI 7계층은 응용, 표현, 세션, 전송, 네트워크, 데이터링크, 물리계층으로 나뉩니다. 송신 시 응용 계층에서 물리 계층으로 데이터가 향하게 되고, 각 레이어마다 수신 호스트의 해당 계층에서 데이터를 처리할 때 필요한 정보를 헤더에 작성하여 하위 계층으로 전달합니다. (캡슐화) 수신 시 물리 계층에서 응용 계층으로 데이터가 향하게 되고, 헤더 부분의 정보를 사용해서 해당 계층의 프로토콜을 처리한 후 헤더 부분을 제거한 데이터를 상위 계층으로 전달합니다. (역캡슐화) 데이터 링크 계층에서는 물리적인 통신 채널을 연결하기 위해 헤더 이외에 트레일러.. Computer Science/Network 2021. 11. 22. [MySQL] Datetime 기준으로 조회하기 1. 특정 날짜 데이터 조회하기 SELECT * FROM [TABLE] WHERE DATE([DATE_COLUMN]) = '2021-11-01'; SELECT * FROM [TABLE] WHERE [DATE_COLUMN] >= '2021-11-01' AND [DATE_COLUMN] = '2021-11-01' AND [DATE_COLUMN] Computer Science/DataBase 2021. 11. 19. [Spring] JPA 영속성 컨텍스트 영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 의미입니다. 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리합니다. em.persist(object); 이 코드를 단순히 엔티티를 저장한다고 표현했지만 정확히 이야기 하자면 persist()는 엔티티 매니저를 사용해서 데이터를 영속성 컨텍스트에 저장한다는 의미입니다. 영속성 컨텍스트트 엔티티 매니저를 생성할 때 하나 만들어집니다. 그리고 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있고 영속성 컨텍스트를 관리할 수 있습니다. Entity Manager JPA가 제공하는 기능은 크게 엔티티와 테이블을 매핑하는 설계 부분과 매핑한 엔티티를 실제 사용하는 부분으로 나눌 수 있습니다. 엔티티 매니저는 .. Domain/Spring 2021. 11. 18. [Spring] Context ( RootContext, ServletContext ) Application Context ( Root WebApplication Context ) ContextLoaderListener 클래스에 의해 생성됩니다. Spring에서 IOC Container라고 불리는 존재입니다. ApplicationContext는 root-context.xml, applicationContext.xml의 정보를 바탕으로 생성됩니다. Root라는 이름처럼 최상위 Context입니다. Root Context에 등록된 Bean들은 모든 Context에서 사용할 수 있습니다. 특정 Servlet 설정과 관계 없는 설정을 합니다. Servlet Context을 서브 클래스로 두고 있기 때문에 Servlet Context에 선언된 Bean들은 사용할 수 없습니다. 대표적으로 Servic.. Domain/Spring 2021. 11. 18. [Java] Collection - (2) List란? List는 대표적인 선형 자료구조로 각 요소가 삽입되는 위치를 정밀하게 제어할 수 있다는 특징이 있습니다. 사용자는 목록의 위치를 기준으로 요소에 접근하고 목록에서 요소를 검색할 수 있습니다. 배열과 비슷하지만 배열은 공간이 고정적이지만 List는 요소의 갯수에 따라 동적으로 크기를 변화시켜 사용할 수 있습니다. List는 일반적으로 중복 요소를 허용합니다. 좀 더 구체적으로, List는 일반적으로 a.equals(b)와 같은 a과 b 요소의 쌍을 허용하며, 일반적으로 null조차 중복으로 여러 null 요소를 저장할 수 있도록합니다. 또, List의 요소에 대한 추가, 제거, 동등 및 해시코드 메서드를 지원합니다. List를 상속한 대표적은 클래스는 ArrayList, LinkedList, Vector.. Language/Java 2021. 11. 12. [Java] Collection - (1) Collection Framework란? Java Collection Framework는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다. 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 핵심이 되는 주요 인터페이스를 정의하고 있고 그 인터페이스를 상속받은 클래스들로 이루어져 있습니다. 이 중에서 List, Set, Queue, Dequeue 인터페이스는 모두 Collection 인터페이스를 상속(java.util.Collection)받지만, 구조상의 차이로 인해 Map 인터페이스는 별도로 .. Language/Java 2021. 11. 12. 이전 1 2 3 4 5 6 7 ··· 14 다음