목록프로그래밍👩🏻💻 (110)
suyeonme
B-트리(B-tree) 란? B-트리(B-tree)는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. -- 위키피디아 방대한 양의 저장된 자료를 검색해야 하는 경우 검색어와 자료를 일일이 비교하는 방식은 비효율적이다. B-트리는 자료를 정렬된 상태로 보관한다. 트리에 노드 삽입 및 삭제시, B트리의 규칙에 맞도록 재정렬하여, 왼쪽과 오른쪽 자식의 밸런스를 항상 유지한다. 따라서 O(logN)의 시간복잡도(탐색, 삽입, 삭제)를 가진다. 최대 M개의 자식을 가질 수 있는 B-Tree를 M차 B-Tree라고 부른다. Balanced Tree란? 일반적으로 트리 구조를 탐색하는 경우, O..
문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다. String 클래스는 불변성(immutable)을 가지고, StringBuffer, StringBuilder는 가변성(mmutable)을 가진다. String 불변성(immutable)을 가지므로 변하지 않는 문자열을 저장하는데 적합하다. thread-safe하므로 멀티 스레드 환경에서 사용하기 적합하다. String str = "I am a"; str = str + "developer"; // I am a developer 위 예시의 경우, str 변수의 "I am a" 값을 할당받은 메모리는 GC(Garbage Collection)되고, "I am a developer" 값을 할당받은 새로운 메..
Error는 시스템에 비정상적인 상황이 발생하여 프로그램에 심각한 영향을 끼치는 경우에 발생한다. 개발자는 이러한 종류의 에러를 예측하기 쉽지 않다. OutofMemoryError, StackOverflowError등 Exception은 개발자의 실수로인해 야기되는 경우에 발생한다. NullPointerException, IndexOutofBoundsException, FileNotFoundException등 Exception은 아래와같이 총 2가지로 나뉜다. CheckedException UnCheckedException CheckedException UnCheckedException 발생 시점 Compile Runtime 처리 여부 반드시 try/catch로 예외를 처리해야함 반드시 예외를 처리하지않..
Optional 클래스란? 자바 8에서 제공하는 java.util.Optional클래스로, Optional은 선택형값을 캡슐화하는 클래스이다. 값이 있으면 Optional 클래스는 값을 감싸고 값이 없으면 Optional.empty 메서드로 Optional 값을 반환한다. null을 참조하려 하면 NullPointerException이 발생하지만 Optional.empty는 Optional 객체이므로 이를 다양한 방식으로 핸들링 할 수 있다. NullPointerException을 방지하기 위한 null 확인 코드 null을 참조하려하면 런타임에 NullPointerException이 발생한다. NullPointerException을 방지하기 위해서 아래와 같이 null 확인 코드를 작성한다. 아래와 같..
메서드 참조(Method Reference)란? 메서드 참조는 특정 메서드만을 호출하는 람다의 축약형이다. 메서드명 앞에 ::를 붙여서 메서드 참조를 활용한다. 메소드 참조를 이용하여 하나의 메서드를 참조하는 람다를 간결하고 편리하게 표현할 수 있으며 명시적으로 메서드명을 참조함으로써 가독성을 높일수 있다. // 기존 코드 inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWegith())); // 메서드 참조를 이용(위와 동일) inventory.sort(comparing(Apple::getWeight)) 메서드 참조는 아래와 같이 다양하게 사용할 수 있다. 1) 정적 메서드 참조 (Integer n) -> n.parseInt(..
모던 자바 인 액션(Modern Java in Action)을 읽고 정리한 내용입니다. 람다 표현식(Lamda Expression)이란? 람다식은 자바에서 제공하는 함수형 프로그래밍 방식이다. 람다는 익명 함수(anonymous function)로, 함수를 일급값으로 넘기는 프로그램을 구현하는 것이다. 함수형 인터페이스를 구현하여 람다식을 사용한다. 람다식은 아래와 같은 특징이 있다. 변수에 할당할 수 있다. 함수형 인터페이스를 인수로 받는 메서드로 전달할 수 있다. 함수형 인터페이스의 추상 메서드와 같은 시그니처를 갖는다. 람다식 문법 () -> expression // expression style () -> { statements; } // block style () -> "Suyeon" () ->..
boxing, Unboxing이란? boxing이란, 기본형 타입(primitive type)을 wrapper type으로 변환하는 것을 말한다. int -> Integer long -> Long boolean -> Boolean unboxing이란, wrapper type을 기본형 타입(primitive type)으로 변환하는 것을 말한다. Integer -> int Long -> long Boolean -> boolean Wrapper Class 자바의 자료형은 기본형(primitive type)과 참조형(reference type)으로 나뉜다. 기본형의 데이터를 객체로 표현해야 하는 경우, wrapper class를 사용하여 기본형을 객체로 다룰 수 있다. 즉 Wrapper class는 boxing..
셸 스크립트 기본 규칙 셸스크립트를 작성하기에 앞서 기본으로 지켜야할 규칙은 다음과 같다. #!/bin/bash echo "Root Directory" cd / ls -l # 한행으로 입력하는 경우(위와 동일) echo "Root Directory";cd /;ls -l 셸스크립트는 명령어가 하나씩 실행되며 여러 명령어를 ;로 연결하면 한 행으로 입력할 수 있다. 빈행은 무시된다. #로 주석을 남긴다. 커맨드라인이 길어질 경우, 행 끝에 \를 입력하면 여러 행에 걸쳐 입력할 수 있다. #!/bin/bash echo \ "Root Directory" 변수(Variable) 변수명=값으로 변수를 저장하며 그 사이에는 공백이 없어야한다. 변수명에 사용할 수 있는 문자는 알파벳, 숫자, 언더스코어(_)이다. 숫자..