자바 6

[JAVA] 비트연산자

비트연산자 비트(bit) 단위로 논리 연산을 할때 사용하는 연산자 기본적으로 컴퓨터는 8bit의 공간 기준으로 사용함 8bit == 1byte 실수형을 제외한 모든 기본형에서 사용이 가능함 비트 연산자 설명 & 대응되는 비트가 모두 1이면 1을 반환함 (AND연산) | 대응되는 비트중에서 하나라도 1이면 1을 반환 (OR연산) ^ 대응되는 비트가 서로 다르면 1을 반환 (XOR연산) ~ 비트를 1이면 0으로, 0이면 1로 반전 (NOT연산) 부호를 유지하면서 지정한수 만큼 전부 오른쪽으로 이동시킴 (RIGHT SHIFT연산) Bit연산 관련 메소드 Integer.toBinaryString 10진수나 16진수의 정수를 비트 단위의 문자열로 간단하게 바꿀수 있게 해주는 메소드 Integer.toBinaryS..

JAVA 2022.02.06

[JAVA] PriorityQueue

PriorityQueue 우선순위를 먼저 결정하고 우선순위가 높은 데이터가 먼저 나가는 자료구조 PriorityQueue 특징 우선순위가 높은 요소를 먼저 꺼내서 처리하는 구조 내부요소는 Heap으로 구성되어있는 이진트리 구조 내부구조가 Heap으로 구성되어있어 추가 / 삭제시 시간복잡도는 O(NLogN) 값을 비교하기 때문에 NULL 허용이 안됨 PriorityQueue 우선순위 설정 //오름차순 PriorityQueue priorityQueue = new PriorityQueue(); //내림차순 PriorityQueue priorityQueue = new PriorityQueue(Collections.reverseOrder()); 우선수위를 정하는 기준은 Java 정렬기준과 동일 (낮은숫자부터 큰숫..

JAVA 2022.02.06

[JAVA] 데코레이터 패턴

데코레이터 패턴 정의 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴 추가 기능을 Decorator 클래스로 정의한 후 조합함으로써 추가기능 조합을 설계하는 패턴 용도에 따라 객체의 기능을 계속 추가(데코레이트) 할 수 있게 해줌 데코레이터 패턴 특징 객체에 동적으로 기능을 추가할 수 있게 해줌 기능이 많아질수록 데코레이터 클래스들이 계속 추가 되어야 하기 때문에 클래스가 많아져서 복잡성이 높아짐 겹겹으로 애워싸기 때문에 객체의 정체를 알기가 힘듬 데코레이터 패턴 용도 요소들을 계속 수정하면서 사용하는 구조 인 경우 오소들을 조합해서 사용하는 경우 데코레이터 예시 public interface Box { void wrap(); } public class GiftBox implements Box { ..

JAVA 2021.12.10

[JAVA] 전략패턴

정의 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀수 있게 해주는 패턴 객체들이 할 수 있는 행위를 각각 전략으로 만들어, 동적으로 전략을 바꿔 행위를 수정하는 패턴 기존코드의 변경없이 실제 로직 변경을 할 수있는 패턴 GoF 디자인 패턴의 분류 중 행위패턴에 해당함 사용하는 용도 클래스들의 동작이 다른 경우 로직 변경이 필요할 때 사용 예시 public interface Skill { void use(); } public class Sett { private Skill skill; public void useSkill() { skill.use(); } public void setSkill(Skill skill) { this.skill = skill; } } public class Haymak..

JAVA 2021.11.29

[JAVA] GC의 종류

GC종류를 명확하게 설명을 못해서 정리 GC종류 Serial GC Parallel GC CMS GC G1 GC Serial GC -XX:+UseSerialGC 32비트 JVM에서 돌아가는 싱글쓰레드 어플리케이션에서 사용 MinorGC, MajorGC 모두 순차적으로 수행 (싱글쓰레드 방식) Deletion and Compacting 수행 Parallel GC (Throughput Collector) -XX:+UseParallelGC 64비트 JVM에서 돌아가는 멀티 CPU, 유닉스 머신에서 사용 Default로 young generation에서만 멀티스레드를 활용, 옵션을 통해 old generation에서도 멀티스레딩 활용 가능 많은 CPU를 사용하기 때문에 GC의 부하를 줄이고, 애플리케이션 처리량을..

JAVA 2021.05.23

[JAVA] 상태패턴

정의 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴 상태 클래스들을 인터페이스로 캡슐화 하여, 인터페이스를 호출하는 방식 사용하는 경우 객체 동작이 상태에 의존하는 경우 오브젝트 상태에 따라 여러 부분의 조건문이 있는 경우 예시 /* 캡슐화 인터페이스 정의 */ public interface MonitorState { public void checkState(); } /* 상태클래스 정의 */ public class Normal implements MonitorState { @Override public void checkState() { System.out.println("정상상태 확인"); } } /* 상태클래스 정의 */ public class Warning implements Mon..

JAVA 2021.05.21