자기 개발

· Algorithm
- 알고리즘 분류 : String, Stack - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLi..
· Algorithm
- 알고리즘 분류 : String, Stack - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. package baekjoon_study; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static class Pos{ public int height; public int index; public Pos(int height, int index) { this.height = height; this.index = index+1; }..
· Algorithm
- 알고리즘 분류 : String, Stack - 사용 언어 : JAVA 해당 문제는 2가지 방법으로 풀이하였습니다. 소스 설명은 주석을 참고해주세요. 1) Stack을 이용한 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s= br.readLine(); S..
· Algorithm
- 알고리즘 분류 : 문자열, Stack - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); String bomb = br.readLine(); int bombSize = ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 90. 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라 Serializable을 구현하면, 언어의 정상 메커니즘인 생성자 이외의 방법으로 인스턴스를 생성할 수 있다. 버그와 보안 문제가 일어날 가능성이 커진다는 뜻이지만, 이 위험을 크게 줄여줄 기법이 있는데 이를 ‘직렬화 프록시 패턴’ 이라고 한다. 직렬화 프록시 패턴 바깥 클래스의 논리적 상태를 정밀하게 표현하는 중첩 클래스를 설계해 private static으로 선언한다. 이 중첩 클래스가 바로 바깥 클래스의 직렬화 프록시이다. 중첩 클래스의 생성자는 단 하나여야 하며, 바깥 클래스를 매개변수로 받아야 한다. 이 생성자는 단순히 인수로 넘어온 인..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 89. 인스턴스 수를 통제해야 한다면 readResolve 보다는 열거 타입을 사용하라 ex 1) 생성자 호출을 막은 싱글턴 패턴 예시 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() { ... } } 이 클래스는 바깥에서 생성자를 호출하지 못하게 막는 방식(private)으로 인스턴스가 오직 하나만 만들어짐을 보장했다. 아이템 3에서 이야기했듯 이 클래스는 선언에 implements Serializable을 추가하는 순간 싱글턴이..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 88. readObject 메서드는 방어적으로 작성하라 ex 1) 방어적 복사를 사용하는 불변 클래스 예시 public final class Period { private final Date start; private final Date end; /** * @param start 시작 시각 * @param end 종료 시각; 시작 시각보다 뒤여야 한다. * @throws IllegalArgumentException 시작 시각이 종료 시각보다 늦을 때 발생한다. * @throws NullPointerException start나 end가 null이면 발생한다. */ public Period(Date star..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 87. 커스텀 직렬화 형태를 고려해보라 클래스가 Serializable을 구현하고 기본 직렬화 형태를 사용한다면 다음 릴리스 때 버리려 한 현재의 구현에 발이 묶이게 된다. 먼저 고민해보고 괜찮다고 판단될 때만 기본 직렬화 형태를 사용하라. 기본 직렬화 형태는 유연성, 성능, 정확성 측면에서 신중히 고민한 후 합당할 때만 사용해야 한다. 객체의 물리적 표현과 논리적 내용이 같다면 기본 직렬화 형태라도 무방하다. 예로, 성명을 간략히 표현한 클래스(이름, 성, 중간이름), 3개의 멤버로 구성된 클래스의 경우 기본 직렬화 형태를 사용해도 무방하다. 기본 직렬화 형태가 적합하다고 결정했더라도 불변식 보장과 보안..
멍목
'자기 개발' 태그의 글 목록 (4 Page)