본문 바로가기
728x90

전체 글240

[Linux] 리눅스 1. 리눅스(Linux)란? 리눅스는 오픈소스 운영 체제입니다. 운영 체제(Operating System, OS)는 CPU, 메모리, 스토리지처럼 시스템의 하드웨어와 리소스를 직접 관리하는 소프트웨어입니다. *OS는 애플리케이션과 하드웨어 사이에서 모든 소프트웨어와 작업을 수행하는 물리적 리소스를 연결합니다. 1.1. 리눅스 활용 Linux는 UNIX와 유사하게 설계되었으나 발전을 거듭하며 전화기에서 슈퍼컴퓨터에 이르는 다양한 하드웨어에서 실행되고 있습니다. 모든 Linux 기반 OS에는 하드웨어 리소스를 관리하는 Linux 커널과 OS의 나머지를 구성하는 일련의 소프트웨어 패키지가 포함되어 있습니다. 1.2. 커맨드라인이란? 커맨드라인을 통해 컴퓨터에 직접 액세스할 수 있습니다. 사용자는 커맨드라인에서.. 2022. 3. 24.
[JAVA] 11 - 3 기본 API 클래스(Pattern, Arrays, Wrapper, Math, Date, Calendar, Format , LocalDate, Instant, DateTimeFormatter) Pattern 클래스와 정규표현식 이메일, 전화번호, 주민번호 등이 양식에 맞게 입력되었는지 확인할 때 용이하다. 정규표현식 기본 룰 [...]: ... 중 들어간 하나의 문자를 일치시킨다. [abc]: a, b, c 중 하나의 문자를 일치시킨다. [^abc]: a, b, c를 제외한 하나의 문자를 일치시킨다. [a-zA-Z]: a~z, A-Z 중 하나의 문자를 일치시킨다. \d: 한 개의 숫자, [0-9]와 동일하다. \s: 공백 \w: 한개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일하다. ?: 없거나 또는 한 개 *: 없거나 또는 한 개 이상 +: 한 개 이상 {n}: 정확히 n개 {n,}: 최소한 n개 {n, m}: n개부터 m개까지 (): 그룹핑 '하나의' 문자를 일치시킨다는 말.. 2022. 3. 23.
[JAVA] 11 - 2 기본 API 클래스(Objects, System, Class, Reflection, String, Tokenizer, Builder) Objects 클래스 내장 메소드 equals()와 deepEquals() 공통점 a와 b가 모두 null일 때 true를 리턴한다. 차이점 배열을 비교할 때, .equals()를 쓰면 배열의 주소 값이 똑같다면 true를 리턴한다. 배열을 비교할 때, .deepEquals()를 쓰면 배열 내 항목 값이 모두 같다면 true를 리턴한다. @Test public void equalsAndDeepEquals() { Integer[] a = new Integer[]{1, 2}; Integer[] b = new Integer[]{1, 2}; boolean equals = Objects.equals(a, b); System.out.println("equals = " + equals); // false boolea.. 2022. 3. 23.
[JAVA] 08 - 1 인터페이스(2, 이것이 자바다) 인터페이스의 역할 객체의 사용방법을 정의한 타입이다. 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면, 인터페이스는 객체의 메소드를 실행시킨다. 개발 코드는 객체 내부 구조를 몰라도 인터페이스의 메소드만 알면 된다. 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있게 해준다. 자바에서 다형성을 제공하는데 큰 역할을 한다. 인터페이스 선언법 클래스와 같은 네이밍 규칙을 사용하고, .java 파일로 생성하면 된다. [ public ] interface 인터페이스명 { ... } 인터페이스의 구성요소 인터페이스는 오직 상수(static final)와 메소드만 갖는다. 인터페이스 메소드의 종류 추상 메소드 디폴트 메소드 (자바 8부터) 정적 메소드 (자바.. 2022. 3. 23.
[JAVA] 06 - 7 애노테이션 애노테이션 애노테이션은 메타데이터이다. 애플리케이션이 처리하는 데이터가 아닌 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다. 애노테이션의 용도 컴파일러에게 코드 문법 에러를 체크하도록 정보 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보 제공 실행 시 특정 기능을 실행하도록 정보 제공 대표적 애노테이션으로 @Override가 있다. @Override는 메소드가 오버라이드 됐음을 알려주며, 컴파일러가 오버라이드 검사를 하고 정확히 오버라이드가 되지 않았다면 에러를 발생시킨다. 애노테이션은 빌드 시 자동으로 XML 설정 파일을 생성하거나, 배포를 위한 JAR 압축 파일을 생성하는데도 사용된다. 애노테이션은 클래스의 역할을 정의하기도 .. 2022. 3. 23.
[JAVA] 16 - 1 스트림 16.1. 스트림 소개 자바 8버전부터 추가된 컬렉션 요소를 하나씩 참조해서 람다식(함수적 인터페이스)으로 처리할 수 있도록 해주는 반복자이다. 자바 8 이전에는 컬렉션 처리에는 무조건 Iterator가 이용되었으나, 선택의 폭이 넓어졌다. 16.2. 함수적 인터페이스 복습 스트림에서는 함수적 인터페이스를 적극 활용하기 때문에 함수적 인터페이스를 제대로 알고 가면 도움이 된다. 16.2.1. Consumer 매개 값: O (타입: T) 리턴 값: X 값을 소비하고 리턴하지 않음 내부 메소드: .accept() 16.2.2. Supplier 매개 값: X 리턴 값: O (타입: T) Consumer와 반대로 값을 만들기만하고 소비하지 않음 내부 메소드: .get() 16.2.3. Function 매개 값:.. 2022. 3. 22.
[JAVA] 15 - 1 컬렉션 프레임워크 15.1. 컬렉션(Collection) 프레임워크란? 다수의 객체를 저장하고 효율적으로 추가, 삭제, 검색할 수 있도록 구현된 인터페이스와 클래스들을 말한다. 주요 인터페이스로 List, Set, Map이 있다. 배열도 다수의 객체를 저장할 수 있다. 하지만, 저장할 수 있는 크기가 고정적이며, 중간 인덱스의 자료를 삭제했을 때 빈 곳이 생기기도 한다. 이로 인해 고정적 크기의 연속된 객체를 저장하는 것은 좋지만, 유동적인 크기를 갖는 객체 저장에는 적합하지 않을 수 있다. 컬렉션이란? 사전적 의미로 요소를 수집해서 저장하는 것을 말한다. 15.1.1. List 특징 순서를 유지하고 저장한다. 중복 저장이 가능하다. 구현 클래스 ArrayList Vector (Thread safe) LinkedList .. 2022. 3. 22.
[JAVA] 레드블랙 트리 정리 레드-블랙 트리 이진 트리의 약점을 극복하기 위해 새로운 규칙을 추가하여 나온 이진 트리이다. 자바의 TreeSet과 TreeMap은 레드-블랙 트리를 베이스로 한 구현을 사용한다. 레드-블랙 트리의 조건 모든 트리의 노드에 검은색 혹은 빨간색을 색칠한다. 루트 노드는 항상 검은색이다. 모든 리프 노드 들은 검은색이다. 빨간색 노드의 자식은 양쪽 다 항상 검은색이다. 4.1. 즉, 빨간색 노드는 연달아 나타날 수 없다. 4.2. 이 규칙을 지키면, 검은색 노드만이 빨간색 노드의 부모가 될 수 있다. 루트 노드에서 어떠한 자식 노드를 타고 가던지 리프 노드에 도달했을 때 항상 같은 수의 검은색 노드를 만나게 된다. 리프 노드 (leaf node) 란? 자식 노드가 더 이상 존재하지 않는 노드를 말한다. 리.. 2022. 3. 22.
[JAVA] 14 - 1 람다식 14.1. 람다식이란? 원래 함수적 프로그래밍 언어에서 쓰이던 개념이다. 병렬 처리와 이벤트 지향 프로그래밍에 적합하다. 자바8부터 지원한다. 익명함수를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. 컬렉션 요소의 필터링, 매핑 등 작업을 쉽게 만들어준다. 매개변수를 지닌 코드 블록으로, 런타임 시에 익명 구현 객체를 생성한다. 수학자 Alonzo Church가 발표한 람다 계산법에서 사용된 식으로, John McCarthy가 프로그래밍 언어에 도입했다. 14.2. Runnable 을 람다식으로 표현하는 예제 14.2.1. 람다식 전 Runnable runnable = new Runnable() { @Override public void run() { ... } } 14.2.2. .. 2022. 3. 22.
728x90