본문 바로가기
반응형

전체 글135

Comparable 인터페이스 Java의 Comparable 인터페이스는 객체들의 정렬(sorting)을 위해 사용됩니다. - Comparable 인터페이스는 compareTo() 메서드 하나만 정의되어 있습니다. - 이 인터페이스를 구현한 클래스는 서로 그 객체들을 비교할 수 있습니다. - compareTo() 메서드는 인자로 전달된 객체와 자신을 비교해서 정수 값을 리턴합니다. - 반환값이 0이면 두 객체가 같다는 것이고, 음수이면 자신이 앞에 오고, 양수이면 인자로 받은 객체가 앞에 오는 것입니다. - 이를 통해 객체들을 정렬할 수 있습니다. - 주로 Wrapper 클래스(Integer, Double 등), String, Date와 같은 클래스가 Comparable을 구현하고 있습니다. - Collections.sort()를 사.. 2023. 11. 16.
PriorityQueue (우선순위 큐) PriorityQueue는 우선순위 큐(priority queue)를 구현한 자료구조입니다. 이는 우선순위(priority)를 가진 항목들을 저장하는 큐로, 항목의 우선순위에 따라 항목들이 저장/제거됩니다. PriorityQueue는 내부적으로 배열이나 힙(heap)등의 자료구조를 사용하여 구현될 수 있습니다. 대표적으로는 최소 힙(min heap)을 기반으로 구현되어, 저장된 항목 중 우선순위가 가장 높은(값이 가장 낮은) 항목이 가장 먼저 제거됩니다. PriorityQueue의 주요 메서드는 다음과 같습니다: - add(E e): 큐에 항목 e를 삽입합니다. - peek(): 큐의 제일 앞, 즉 우선순위가 가장 높은 항목을 반환합니다. - poll(): 큐의 제일 앞 항목을 제거하고 반환합니다. - .. 2023. 11. 14.
웹 애플리케이션의 이해 1. 웹 서버, 웹 애플리케이션 서버 1) 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가 기능 정적(파일) HTML, CSS, JS, 이미지, 영상 NGNIX, APACHE 등 2) 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 톰캣, Jetty, Underetow 3) 웹 서버, 웹 애플리케이션 서버 차이 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 자바는 서블릿 컨테이너 기능을 제공하면 WAS WAS는 애플리케이션 코드를 실행하는데 더 특화 4) 웹 시스템 .. 2023. 11. 7.
캐시와 조건부 요청 1. 캐시 기본 동작 1) 캐시가 없을 때 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다 브라우저 로딩 속도가 느리다 느린 사용자 경험 2) 캐시 적용 캐시 덕분에 캐시 가능 시간 동안 네트워크를 사용하지 않아도 된다. cache-control: max-age=60 (캐시가 유효한 시간) 비싼 네트워크 사용량을 줄일 수 있다. 브라우저 로딩 속도가 매우 빠르다. 빠른 사용자 경험 3) 캐시 시간 초과 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다. 이때 다시 네트워크 다운로드가 발생한다. 2. 검증 헤더와 조건부 요청 캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다. .. 2023. 11. 3.
Doubly Linked List 이중 연결 리스트 * 이중 연결 리스트는 순차적으로 연결된 노드 집합으로 구성된 데이터 구조 * 각 노드가 이전 노드와 다음 노드를 가리킨다. * 노드는 이전 노드와 다음 노드를 가리키는 두 개의 포인터로 '이중 링크'되어 있다. public class DoublyLinkedList { Node head; // 첫번째 노드 Node tail; // 마지막 노드 int size; // 이중 연결 리스트 요소 수 //constructor public DoublyLinkedList(){ head = null; tail = null; size = 0; } //node class private static class Node { int data; Node prev; Node next; //constructor public Node.. 2023. 10. 24.
ArrayList 1. 생성 ArrayList arrayList = new ArrayList(); 2. 요소 추가 arrayList.add("apple"); arrayList.add(2,"banana"); 3. 요소 검색 arrayList.get(1); 4. 요소 업데이트 arrayList.set(1, 'grape'); 5. 요소 제거 arrayList.remove(2); 6. 크기 출력 System.out.print(arrayList.size()); 7. 요소 포함 여부 if(fruits.contains("banana")) { System.out.print("true"); }else { System.out.print("false"); } 8. 정렬 오름차순 정렬 : Collections.sort() ArrayList l.. 2023. 10. 23.
배열 인덱스 범위 초과 예외 처리 int[] numbers = {1,2,3,4,5}; try { int value = numbers[5]; }catch(ArrayIndexOutOfBoundsException e) { System.out.println("invalid index specified"); } 2023. 10. 18.
JAVA stream /* 스트림은 배열이나 컬렉션(List, Set, Map)으로 원하는 값을 얻을 때 for문 도배를 방지하기 위해 나온 개념인데 10줄짜리 코드를 Stream을 사용하면 한 줄로 줄여버릴 수 있다 선언 - 배열, 컬렉션(list, set, map) 등을 스트림 형태로 만들기 Stream stream명 = Arrays.stream(배열명); Stream stream명 = 리스트명.stream(); Stream stream명 = Stream.of('값', '값'....); */ import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collectors; import java.util.stream.Stream; public c.. 2023. 10. 18.
HTTP 헤더 - 일반 헤더 1. HTTP 헤더 개요 Content-Type : text/html;charset=UTF-8 Content-Length: 3423 header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) filed-name은 대소문자 구분 없음 용도 HTTP 전송에 필요한 모든 부가정보 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등 표준 헤더가 너무 많음 필요시 임의의 헤더 추가 가능 helloworld : hihi 분류 - RFC2616(과거 - 1999년 폐기됨. 2014년 RFC7230 ~ 7235등장) 헤더 분류 General 헤더 : 메시지 전체에 적용되는 정보 | Connection: c.. 2023. 10. 15.
데이터 모델링의 이해 모델링은 단지 시스템 구현만을 위해 수행하는 타스크가 아니며, 시스템 구현을 포함한 업무분석 및 업무형상화를 하는 목적도 있다. 데이터 모델링을 하는 주요한 이유는 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것이 첫 번째 목적이다. 두 번째는 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것이 두 번째 목적이다. 데이터모델링을 할 때 유의사항 : 중복성, 비유연성, 비일관성 개념적 데이터 모델링 - 추상화 수준이 높고 업무 중심적이며 포괄적인 수준의 모델링 물리적 데이터 모델링 - 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등의 물리적인 성격을 고려한 데이터 모델링 개념스키마 - 통합관점의 스키마구조를 표.. 2023. 8. 22.
반응형