분류 전체보기
10진수 2진수 변환
1234567891011121314151617181920212223242526272829303132package java8; import java.util.Scanner; public class MainClass { public static void main(String args[]) { Scanner in = new Scanner(System.in); StringBuilder result = new StringBuilder(); int input; System.out.print("10진수를 입력하세요. : "); input = in.nextInt(); //10 -> 2진수 while (input != 1) { result.insert(0, String.valueOf(input % 2)); input =..
더블링크드 리스트 구현하기
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138package java8; public class Node { public Node next; public Node prev; private String value;..
백준 1924 - 요일 맞추기
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879import java.util.Scanner; @SuppressWarnings("resource")public class Main { enum YOIL { MON, TUE, WED, THU, FRI, SAT, SUN } public static void main(String args[]) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); if (..
백준 2839 - 설탕 배달
1234567891011121314151617181920212223242526import java.util.Scanner; public class Main { public static void main(String args[]) { int n = new Scanner(System.in).nextInt(); int three = 0, int five = n / 5; int n %= 5; while (five >= 0) { if (n % 3 == 0) { three = n / 3; n %= 3; break; } five--; n += 5; } if (n==0) { System.out.println(five + three); } else { System.out.println(-1); } }}Colored by..
스트래티지 패턴 (Strategy Pattern)
공통적인 특징을 가진 객체를 만들 경우 우리는 대게 다음과 같이 추상클래스나 인터페이스를 만들어 놓고, 그 것을 상속받아 객체를 구현한다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465// 추상 클래스package com.wedul.study.strategy; public abstract class Animals { public Animals() {} private String name; public Animals(String name) { this.name = name; } public void eat() { System.out.pri..
싱글톤 패턴 (Singleton Pattern)
대게 공용으로 사용하는 유틸성 클래스의 경우 하나의 공용 인스턴스 객체를 생성하고 필요로 할 때마다, 해당 이스턴스 객체에 접근 하여 사용한다. 이를 싱글톤 패턴이라고 한다. 싱글톤 패턴 - 하나의 인스턴스만을 생성하는 책임이 있으며, getInstance 메소드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환한다. 12345678910111213// 유틸성 클래스의 경우 인스턴스 객체를 만들거나 상속을 할 필요가 없으므로 final과 private 생성자를 만든다.public final class Util { private Utill () {} private Util util = null; public static Util getUtil() { if (util == null ) { util = new..
스테이트 패턴 (state pattern)
스테이트 패턴 객체의 상태를 효율적으로 관리 할 수 있도록 스테이트 패턴을 알아보자 많은 개체들은 상태값이 변경됨에 따라 다른 일을 수행하게 된다. 이를 객체에 어떤 동작이 수행될 때마다 상태를 확인하고 그에 맞는 동작이 수행되도록 하는 경우 코드가 지저분해지고, 많은 switch, if문을 가지게 될 것이다. 이것을 스테이트 패턴을 이용하여 공통의 상태 인터페이스를 만든 후 각 상태에 따른 객체를 생성한 후 상세한 동작을 상태 객체에서 수행하도록 설정하는 것이다. 문제의 상황의 예를 살펴보자 기존의 객체의 상태값이 있는 경우 다음의 자동차 객체처럼 하는 경우가 있다. 1234567891011121314151617181920212223public class Car { private int ON = 1; ..
커맨드 패턴 (command pattern)
커맨드 패턴은 이벤트가 발생되었을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스는 변경하지 않고 재사용하고자 할 때 유용하다. 다음 예를 살펴보자 자동차의 시동버튼이 눌러졌을 때 시동이 켜지도록 설계해보자. 12345678910111213141516171819202122232425262728// 버튼 클래스public class Button { private Engine engine; public Button(Engine engine) { this.engine = engine; } public void on() { engine.execute(); } } // execute 인터페이스public interface Execute { void execute();} // 엔진 p..
java 메모리 누수 주된 원인
자바 메모리 누수 측정 방법자바 프로그램의 실제 메로리 사용량은 시스템의 작업관리자에서 나오는 메모리 사용량으로는 측정 할 수없기에 디버그 출력으로 totalMemory() - freeMemory()를 출력하거나, 개발 도구를 사용하여 측정하는 것이좋다. GC 알고리즘메모리가 GC로 부터 해소가 되지 않는 루트 참조 객체(직간접적으로 참조가 되는 모드 객체)는 크게 3가지경우이다.Static 변수에 의한 객체 참조모든 현재 자바 스레드 스택내의 지역 변수, 매개 변수에 의한 객체 참조JNI 프로그램에 의해 동적으로 만들어지고 제거되는 JNI global 객체 참조이러한 경우에 사용할 수 있는 객체로 분류되어 GC에서 가져가지 않아 메모리가 누수될 수 있다. 자바 메모리영역은 3가지로 구성되어 있다.Hea..