반응형

개발/Java 62

[Java] Soft reference object

Soft reference 에 관련해서 그마나 이해가 가도록 설명이 돼 있는 것 같다. 해당 링크에서 이야기하는 Soft reference 는 가비지 컬럭터가 사용하지 않는 객체들을 청소할 때 Soft reference object 도 같이 청소할지 말지 결정한다. 만약 메모리가 부족하다면 청소를 할 것이고, 그렇지 않다면 청소하지 않는다고 한다. 그렇기 때문에 이미지 캐시 같은 곳에 사용할 때 좋은 방법이라고 한다. 메모리에 들고 있지만 메모리가 부족해질 경우 GC 에서 제거하기 때문이다. Soft reference 이야기가 나오면 Weak reference 이야기도 나오는데 Weak reference 는 GC 가 돌 때마다 청소가 된다고 한다. 우선 자세히 알아보지는 않고 이런게 있다~ 정도만 알아도..

개발/Java 2019.04.04

[Java] 특정 날짜 기간 출력하기

특정 날짜 기간에 대한 데이터를 조회하는 코드이다. 예를 들어보자~2018.04.10 ~ 2018.06.09 까지의 대한 날짜에 대한 데이터를 모두 출력하고 싶다. 데이터는 다음과 같이 출력이 되어야 한다. 2018.04.10 ㅎㅇ 2018.04.11 ㅂㅇ ~~~ 2018.04.30 ㅇㅈ ~~ 2018.05.01 ~~ 2018.05.31 ㅃㅇ ~~ 2018.06.09 ㄱㅁㄸ 우선 중간에 달에 대한 마지막 날짜를 알아야 하며, 연도가 다를 때도 생각해보야 한다. SimpleDateFormat currentDate = new SimpleDateFormat("yyyyMMdd"); Date date = new Date(); // 해당 월의 마지막 날짜를 구하기 위함 date = currentDate.parse(..

개발/Java 2018.05.31

[Java] Observer Pattern

ObserverObserver Pattern 은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메소드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는데 사용된다.위의 내용은 wikipedia 에 정의된 내용이다. 좀 더 쉽게 말하면, 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가서 자동으로 내용이 갱신되는 방식 이라고 생각하면 될 것 같다.보통 옵저버 패턴은 subject 혹은 publisher (이하 publisher 라 칭하겠음) 가 observer 의 리스트와 상태를 저장하고, observer 는 publisher 를 의존하고 있는 Observer..

개발/Java 2018.04.05

[Java] Java 9 의 모듈 시스템

Java 9 에서 모듈 시스템이 등장했다. Java 9 에서의 가장 큰 변화이다. 1. 왜 Java 9에서는 모듈 시스템을 도입했는지? 왜 Java 9에서는 모듈 시스템을 도입했는지? Java 8 과 그 이전의 환경에서 자바 기반의 어플리케이션을 개발이나 제공할 때 문제점들이 발생했다고 한다. JDK 가 너무 크다. 이것은 소형 장치로 확장하기 어렵다는 뜻이다. Java 8 에서는 3가지 compact profies(compact1, compact2, compact3) 를 도입했지만, 이러한 문제를 해결하지는 못했다. small device 과 어플리케이션에서 사용하기에 rc.jar 등과 같은 JAR 파일들이 너무 크다. JDK 카 너무 커서, 어플리케이션이나 기기들에서 더 나은 퍼포먼스를 제공할 수 없..

개발/Java 2017.11.26

[Java] String 객체 생성 차이

StringString 을 생성하는 방법으로 2가지가 존재한다. String str = "hojak"; String str2 = new String("hojak"); System.out.println(str); // hojak System.out.println(str2); // hojak 각각의 생성 방식의 차이는 무엇일까?먼저, 이 두 가지 차이점을 알기 위해서는 메모리 관점에서 보아야 할 것 같다.간단하게 설명하자면 String str = "hojak"; 는 Heap 내의 String constant pool 이란 곳에 저장한다. 또한, 이미 존재하는 문자열이 있을 경우 그 저장된 배열의 인덱스 번호를 가리키게 되어 있다. String str2 = new String("hojak); 은 일반적인 객체..

개발/Java 2017.11.07

[Java] 자바 Integer Class

5. INTERGER CLASS{ Integer 클래스의 메소드들 : Integer.bitCount(), Integer.decode() , Integer.parseInt() , Integer.toBinaryString() , Integer.reverse() } 1) bitCount(int i) - 주어진 정수에서 비트로 변환하여 그 비트의 총 개수를 구한다. -> 비트가 1일 개수만 전달(반환)한다. 2) decode (String nm) - 문자열을 정수로 디코딩합니다. 10진수, 8진수 또는 16진수 숫자로 표현된 문자열을 입력할 수 있다.doubleValue() - 정수(int)를 double로 변환한다. 3) parseInt(String s) - 숫자형태로 된 문자열을 실제 정수로 변환한다.par..

개발/Java 2017.11.03

[Java] 스트림 (Stream)

우선 스트림에 대해서 알아야 할 것 같다. 스트림 : 자바8 에 추가된 API 로 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다.여기서 선언형은 데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있는 것이다. Java In Action 에서는 이 스트림 API를 이용하면 멀티 스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다고 한다. 투명하게란 말은 부작용이 없다는 뜻인 것 같다. 코드로 살펴보자. public class Test { public static void main(String[] args) { List numberList = Arrays.asList(5, 3, 2, 1, 4, 8, 7, 6, 10, 9); List resultList = new Ar..

개발/Java 2017.10.18
반응형