목록분류 전체보기 (57)
빰_s

1. 힙이란?완전 이진 트리의 일종으로써, 여러 값들 중 최대값(Max)와 최솟값(Min)을 빠르게 찾아낼 수 있도록 만들어진 이진트리 여기서 완전 이진 트리란, 모든 레벨이 꽉 찬 이진트리를 의미하며, 이 완전 이진 트리가 가지는 모든 노드의 수는 층 수에 따라 2의 (층수) 제곱 -1로 정의된다.(ex. 2층의 경우 총 노드의 수는 3개(2^2 -1), 3층의 경우 총 노드의 수는 7개(2^3-1)로써, 각 층별로 2의 제곱수가 된다.)2. 특징일반적으로 힙을 만들 때, 우선순위 큐를 사용하기 위해 만들어지며 이는 최대 힙, 최소힙으로 보통 정의된다. 최대 힙과 최소 힙이 뭔지 설명하기 전에 우선순위 큐에 대해 먼저 알고 넘어가보자.- 우선순위 큐 : 우선순위의 개념을 큐에 도입한 자료구조로써, 데이..

프로젝트 진행 중, AWS에서 지원하는 S3라는 걸 활용하여 파일을 관리하자는 이야기를 하여, 이에 대한 개념을 이해하고 보존하기 위해 다음과 같은 문서를 남긴다. (요컨데 기억용이다...) 1. 개념Simple Storage Service, Aws에서 제공하는 파일 저장소 목적으로 사용 가능한 객체 저장 서비스다.객체로 이뤄진 파일의 저장, 수정(업데이트), 삭제가 가능한 파일 저장소의 역할을 수행할 수 있다.(※ 파일의 설치 등은 불가능하다.) 2. 특징ec2와 같은 클라우드 컴퓨팅 서비스를 통해 주어지는 가상 환경에서도 파일을 저장할 수 있지만, s3는 파일 저장소인 만큼 차별화된 특징이 존재한다. - 파일의 저장이 무한정으로 가능하다. 객체 저장 시 각 객체 하나당 최대 5TB까지 저장이 가능하다..
스프링을 사용할 때 컨트롤러에서 요청에 대한 파라미터 정보를 추가하고자 할 시, 위 세가지 어노테이션 (@ : Annotation) 이 추가된 파라미터를 사용하여 요청을 진행하게 된다.예를 들자면,@GetMapping("/api/foos")@ResponseBodypublic String getFoos(@RequestParam String id) { return "ID: " + id;} 컨트롤러에 위 메소드를 작성한 뒤 어플리케이션을 실행했을 때, id 파라미터에 입력된 값을 이용해서 API를 꾸밀 수 있다.해당 글에선 이와 같이 파라미터로 API를 꾸밀 수 있는 이 세가지 어노테이션에 대해 알아보자. 1. RequestBodyJson 데이터를 원하는 타입의 객체로 받고자 할 때 사용한다.Json 형..
자바 사용 중 배열 정렬을 위해 Arrays.sort()를 사용해본 경험이 있을 것이다.이 메소드는 기본적으로 배열을 크기 기준 오름차순으로 정렬해주는 기능을 가지는데, 때로는 그 역으로 정렬하고 싶거나 자기가 직접 정한 기준으로 정렬을 하고 싶어질 때도 있을 수도 있다. 이러한 정렬 로직을 구축할 수 있는 자바의 기능이 제목에 언급된 Comparator와 Comparable라는 인터페이스가 있다.오늘은 이 두가지 인터페이스를 비교해보도록 하자. 1. Comparable정렬 수행 시 기본적으로 적용되는 정렬 기준이 되는 메소드를 정의하는 인터페이스다.// Integer classpublic final class Integer extends Number implements Comparable { ... }..

우리가 웹 개발을 할 때를 넘어 인터넷을 사용할 때 우리도 모르게 항상 접하게 되는Application Programming Interface : 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법(코드)2가지 예시를 들어보며 API를 알아보자.우리(Client)가 식당을 갔을 때,그 식당의 메뉴판(API List)을 보고 주문(Method)을 하면,주방(Server)에서 주문을 받아 음식을 제공해준다.이게 우리가 웹 개발을 할때 많이 사용하는 API의 원리라고 할 수 있다. 이번엔 웹 사이트를 기반으로 예시를 한번 더 들어보겠다.우리(Client)가 네이버 웹툰 사이트에서이 사이트의 웹툰 목록(API List)를 보고 특정 웹툰을 보여달라 요청(Method)하면,웹툰 사이트(Server)에선..

Java에서 배열(Array)은 여러 데이터를 한 객에 안에 넣어서 다룰 때 사용할 수 있다.그러나 배열은 정해진 크기만큼의 데이터만 넣을 수 있기 때문에 사용에 제약이 따른다.그럴 때 사용할 수 있는게 ArrayList와 LinkedList인데 이 세가지의 차이를 이번에 알아보자. 1. Arrayint[] ar = new int[3]; // 1차원 배열(size : 3)int[][] ar = new int[3][3]; // 3*3 2차원 배열가장 기본적인 다중 데이터 삽입 객체로써, 특정 자료형들이 메모리 공간 상에서 연속적으로 이뤄진 참조형 자료 구조다.이 '배열'의 저장 순서는 논리적 저장 순서 = 물리적 저장 순서임을 명시하며, 인덱스(Index)로 해당 원소(Element)에 접근할 수 있다...