분류 전체보기

Language/Java

Heap과 Priority Queue

✏️ Heap 개요 heap은 최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전이진트리 형태로 만들어진 자료구조이다. 이진트리(binary tree)란 모든 노드의 최대 차수를 2로 제한한 것이다. 완전이진트리(complete binary tree)란 마지막 레벨을 제외한 모든 노드가 채워져있으면서 모든 노드가 왼쪽부터 채워져있어야 한다. 마지막 레벨을 제외한 모든 노드가 채워져있어야 한다. 모든 노드들은 왼쪽부터 채워져있어야 한다. 포화이진트리(perfect binary tree)란 마지막 레벨을 제외한 모든 노드는 두 개의 자식노드를 갖는다라는 조건을 가진다. 🔎 Heap 특징 Heap의 핵심 특징은 부모 노드가 항상 자식 노드보다 우선순위가 높다는 것이다. 즉, 모든 요소들을 고려하여 우선순위를 정할..

Language/Java

메모리 구조 및 특징

✏️ 개요 자바 프로그램이 실행되면, JVM은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리한다. JVM의 메모리 공간은 크게 정적 영역(Static or Method), 스택 영역, 힙 영역으로 구분되고, 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당되게 된다. 컴퓨터의 메모리는 사용할 수 있는 공간이 한정되어 있다. 따라서 메모리 설계가 잘되어있는 프로그램에 비해 그렇지 않은 프로그램은 속도 저하 현상이나 튕김 등의 현상이 일어날 확률이 크다. 그래서 자바 애플리케이션에서 메모리를 효율적으로 사용하기 위한 메모리 구조와 특징에 대한 이해가 필요한 것이다. 🔎 JVM 구동 방식 자바 컴파일러에 의해 자바 파일이 클래스 파일(바이트 코드)로 컴파일된다. 클래스 ..

컴퓨터 사이언스/Network

Ajax 정리

✏️ 개요 Ajax는 그 자체가 별도의 새로운 언어는 아니다. HTML, CSS, 자바스크립트, DOM, XML 등 기존에 사용되던 여러 기술을 함께 사용하는 새로운 개발 기법이다. Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있다. Ajax는 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있게 해준다. ✍️ 정의 Ajax란 Asynchronous JavaScript and XML의 약자이다. 백그라운드 영역에서 서버와 통신하는데 다음과 같은 다양한 형태의 데이터를 주고받을 수 있다. JSON XML HTML 텍스트 파일 한계 Ajax는 클라이언트가 서버에 데이터를 요청하는 클라이언트 풀링(client pooling) ..

Language/Java

Comparable과 Comparator

✏️ 개요 Comparator는 두 매개변수 객체를 비교하는 것이고, Comparable은 자기 자신과 매개변수 객체를 비교하는 것이다. Comparable: 기본 정렬기준을 구현하는데 사용 Comparator: 기본 정렬 기준외에 다른 기준으로 정렬하고자 할 때 사용 📌 정리 결론은 둘다 정렬의 기준을 위해 사용되지만 Comparable은 자기 자신과 파라미터로 들어오는 객체를 비교하는 것 Comparator는 자기 자신의 상태가 어떻던 상관없이 파라미터로 들어오는 두 객체를 비교하는 것 즉, 비교한다는 것은 같지만 비교 대상이 다르다. 인용 https://dding9code.tistory.com/68 Comparator 와 Comparable - JAVA 처음 이 개념을 접했을 때는 뭐지.. 인터페이..

Language/Java

함수형 인터페이스와 람다식, 메서드 참조

✏️ 함수형 인터페이스 함수형 인터페이스란 하나의 추상 메서드를 갖는 인터페이스를 말한다. 자바 8 이후부터는 함수형 인터페이스를 나타내는 @FuncionalInterface 내장 애노테이션을 사용할 수 있다. 이 애노테이션은 컴파일 타임에 해당 인터페이스가 함수형 인터페이스가 맞는지 검사할 때, 유용하게 사용할 수 있다. 함수형 인터페이스에는 하나의 추상 메서드 외에도 여러 개의 디폴트 메서드나 정적 메서드가 있을 수 있다. 예외적으로 java.lang.Object 클래스에 선언된 public 메서드를 오버라이딩하는 메서드는 인터페이스의 추상 메서드에 포함시키지 않는다. @FunctionalInterface interface MyFunctionalInterface { void foo(); default..

Language/Java

Generic

타입 매개변수명 작성 규칙 E - Element K - Key N - Number T - Type V - Value S, U, V 등 - 2번째, 3번째, 4번째 타입 Generic Method 제네릭 메서드는 제네릭 클래스가 아닌 일반 클래스에서도 정의할 수 있다. 타입 매개변수는 반환형 앞에 적어야 하며, 이를 반환형으로 사용할 수도 있다. Class Java { public static void printAll(T[] arr) { for (T t : arr) { System.out.println(t); } } public static void main(String[] args) { Integer[] numbers = {1,2,3}; String[] strings = {"일","이","삼"}; pri..

Language/kotlin

다양한 함수 다루기

확장함수 기존 자바 코드위에 자연스럽게 코틀린 코드를 추가한다는 개념에서 출발 자바로 만들어진 라이브러리를 유지보수 및 확장할 때, 코틀린 코드를 덧붙인다. 따라서 어떤 클래스안에 있는 메서드처럼 호출할 수 있지만, 함수는 밖에 만들 수 있게 한다. 확장함수는 클래스에 있는 private 또는 protected 멤버를 가지고 올 수 없다. 멤버함수와 확장함수의 시그니처가 같으면, 멤버함수가 우선적으로 호출된다. 즉, 확장함수를 만들었지만, 다른 기능을 하는 똑같은 시그니처의 멤버함수가 생기면 오류가 발생할 수 있다. fun String.lastChar(): Char { return this[this.length - 1] } fun: 이건 함수라는 의미 String. : String 클래스를 확장한다는 의..

Language/kotlin

배열과 컬렉션 다루기

배열 array.indices는 0부터 마지막 index까지의 range이다. withIndex()를 사용하면, 인덱스와 값을 한번에 가져올 수 있다. array.plus()를 이용하면, 값을 쉽게 넣을 수도 있다. val arr = arrayOf(100, 200) arr.plus(300) // 배열에 새로운 element 추가 // 방법 1 for (i in arr.indices) { println("$i ${arr[i]}") } // 방법 2 for ((idx, value) in arr.withIndex()) { println("$idx $value") } Collection - List, Set, Map 컬렉션을 만들어줄 때, 불변인지 혹은 가변인지를 설정해야 한다. 가변(Mutable) 컬렉션: ..

Language/kotlin

Enum, Sealed Class - 공통점, 차이점 정리

Enum 열거형. 클래스 내에 상태를 구분하기 위한 객체들을 이름을 붙여 여러개 생성하고 그 중 하나의 상태를 선택해 나타내는 방식이다. 특징 enum class 안에는 상수를 나타내는 대문자로 나타낸다. enum 객체들은 고유한 속성을 가질 수 있다. 일반 클래스처럼 함수 선언도 가능하다. enum class Color (val red: Int, val green: Int, val blue: Int) { RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);

Language/kotlin

다양한 클래스 다루기

Data Class DTO 클래스 데이터(필드) 생성자와 getter equals, hashCode toString data 키워드를 붙여주면 아래 메서드 해결 equals, hashCode toString 여기에 named argument 까지 활용하면 builder pattern을 쓰는 것 같은 효과도 있다. 자바에서도 JDK16부터 record class를 도입하긴 했다. data class Person( private val name: String, private val age: Int ) Enum Class 특징 추가적인 클래스를 상속받을 수 없다. 인터페이스는 구현할 수 있으며, 각 코드가 싱글톤이다. enum class Country( val code: String ) { KOREA("KR"..

kimjingyu
'분류 전체보기' 카테고리의 글 목록 (18 Page)