StackTraceElement
·
Language/Java
Thread.currentThread().getStackTrace() 로 현재 스레드의 호출 스택 트레이스 정보를 얻을 수 있다. 이 메서드를 호출하면, 현재 실행중인 호출 스택에 있는 메서드들의 정보를 배열로 반환받음. StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); for (StackTraceElement element : stackTrace) { System.out.println("Class Name: " + element.getClassName()); System.out.println("Method Name: " + element.getMethodName()); System.out.println("File Name:..
Java Garbage Collection
·
Language/Java
Garbage Collection이란? 자바의 메모리 관리 기법으로, 어플리케이션이 동적으로 할당했던 메모리 영역 중, 더이상 사용하지 않는 영역을 정리하는 것을 의미합니다. GC는 Heap 메모리에서 활동하며, JVM에서 GC의 스케줄링을 담당하며 개발자가 직접 관여하지 않아도 더이상 사용하지 않는 점유된 메모리를 제거해주는 역할을 수행합니다. 여기서 수행하는 기법으로 Stop the World가 있는데, Stop The World란 GC가 작동하는동안 GC관련 Thread를 제외한 모든 Thread는 멈추는 것을 의미합니다. 일반적으로 GC-튜닝은 이 시간을 최소화하는 것이지요. GC의 위치 GC는 JVM메모리 구조에서 Exceution Enginge의 하위에 존재하고 있습니다. GC Heap 영역 ..
객체지향 5대 원칙 요약
·
Language/Java
Single Responsibility Principle(SRP) - 단일 책임 원칙 => 하나의 클래스에 하나의 기능만 있어야 함. Open-Closed Principle(OCP) - 개방 폐쇄 원칙 => 기능이 변하거나 확장하는 것은 ok. 기존 코드 수정 x Liskov Substitution Principle(LSP) - 리스코프 치환 원칙 => 상속되는 관계가 있을시, 자식 객체가 부모객체를 완전히 대체할 수 있어야 함. Interface Segregation Principle(ISP) – 인터페이스 분리 원칙 => 각각의 인터페이스는 각 구현 클래스에 필요한 기능만 담고 있어야 함 Dependency Inversion Principle(DIP) – 의존성 역전 원칙 => 구체화 계층에 의존하지..
프로그래밍 패러다임과 객체 지향 프로그래밍
·
Language/Java
프로그래밍 패러다임 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론 프로그래밍 패러다임은 크게 선언형, 명령형으로 나뉘고, 선언형은 함수형이라는 하위 집합을 가짐. 명령형은 객체지향, 절차지향으로 나뉨. 객체지향 프로그래밍 객체들의 집합으로 프로그램의 상호작용을 표현하며, 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 사용하는 방식을 의미함. 객체지향 프로그래밍의 특징 추상화 추상화란 복잡한 시스템으로부터 핵심적인 개념을 간추려내는것 캡슐화 캡슐화란 객체의 속성과 메서드를 하나로 묶고 일부를 외부에 감추는 것 상속성 상위 클래스의 특성을 하위 클래스가 이어 받아서 재사용하거나 추가, 확장하 것 다형성 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 대표적으로 오버로딩..
Custom Comparator
·
Language/Java
클래스 필드를 기준으로 정렬하는 코드를 만들기 위해서는, Custom Comparator를 만들어주어야함. 전제 조건: 1. 반환 타입이 int여야함 2. class를 type으로 한 1개의 인자를 갖고 있어야 함 방법 : class 뒤에 implements Comparable을 붙이고, public int compareTo(Student student) 오버라이드 메서드 구현 @Override public int compareTo(Sample sample) { if(this.val > sample.val) return 1; else if(this.val < sample.val) return -1; else return 0; } @Override public int compareTo(Sample samp..
compareTo
·
Language/Java
public int compareTo(String anotherString) { } => A.compareTo(B) => A와 B가 같으면 0 반환 => A가 B보다 크면 양수 반환 => B가 A보다 크면 음수 반환 => 사전 순으로 정렬하여 비교함.
2866
·
Language/Java
package baekjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.HashSet; import java.util.Set; public class BOJ2866 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] line = br.readLine().split(" "); int[] num = Arr..
네트워킹
·
Language/Java
네트워킹 - 네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 의미합니다. - 자바에서 제공하는 java.net패키지를 사용하면 이러한 네트워크 어플레케이션의 통신부분을 쉽게 작성할 수 있다 클라이언트. 서버 - 서버는 서비스를 제공하는 컴퓨터 - 클라이언트는 서비스를 사용하는 컴퓨터 - 네트워크를 구성할때 전용 서버를 두는 것을 서버기반 모델이라하고, 별도의 전용 서버 없이 각 클라이언트가 서버 역할을 동시에 수행하는 것을 p2p모델이라고 한다. IP주소 - IP주소는 컴퓨터를 구변하는데 사용되는 고유한 값 - 4byte(32bit)의 정수로 구성되어 있으며, 'a.b.c.d'와 같은 형식 - 여기서 a.b.c.d는 부호없는 1바이트 값, 0~255사이의 정수 - IP주소는..
입출력 I/O
·
Language/Java
I/O란 Input과 Output의 약자로, 입력과 출력 간단히 줄여서 입출력이라고 부른다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고받는 것을 의미 스트림 - 자바에서 입출력을 수행하려면, 두 대상을 연결하고, 데이터를 운반할 수 있는 운반통로가 필요함. - 스트림이란 데이터를 운반하는데 사용되는 연결통로이다. - 스트림은 단방향 통신만 가능하다. - 입력과 출력을 동시에 수행하려면, 입력을 위한 입력 스트림과 출력을 위한 출력 스트림이 필요하다. 바이트 기반 스트림 - 스트림은 바이트 단위로 데이터를 전송하며, 입출력 대상에 따라 다음과 같은 입출력 스트림이 있다. 입력스트림 출력스트림 입출력 대상의 종류 FileInputStream FileOutputStream 파일 By..
takoyummy
'Language/Java' 카테고리의 글 목록