서론 싱글톤 패턴의 생성 방법 중 여러가지가 있어 이에 대해 추가적으로 공부하고자 한다!. 이전 글 : https://beudicri.tistory.com/128 [Java] 3. 싱글톤 패턴 (Singleton Pattern) 서론 스프링을 공부하며, 자바 빈을 만들어 컨테이너에서 싱글톤으로 관리한다.라는 개념을 공부하며 많이 보았고, 정보처리기사를 준비하며, 디자인 패턴의 싱글톤 패턴에 대해서도 보았지만, beudicri.tistory.com 본론 1. Eager Initialization public class Singleton1 { private static final Singleton1 instance = new Singleton1(); private Singleton1(){} public st..
서론 이번에는 자바에서 입출력에 대해 알아보자. 코딩테스트를 준비하며, 왜 BufferedReader와 BufferedWriter가 더 빠른지 궁금했었는데, 이번 포스팅을 통해 제대로 알아보도록 하자. Stream stream(스트림)의 특징 : 단방향이다. 데이터의 흐름을 의미한다. 프로그램의 관점에서 들어오는 것 : InputStream 프로그램의 관점에서 나가는 것 : OutputStream 종류 바이트(byte) 기반 스트림 : 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용 (모든 종류의 데이터를 보내고 받는 것이 가능) 문자(character) 기반 스트림 : 문자 데이터를 일고 출력할때 사용 구분 바이트 기반 스트림 문자 기반 스트림 입력 스트림 출력 스트림 입력 스트림 출력 ..
서론 이번에는 자바의 최상위 객체인 Object클래스의 hashCode와 equals를 알아보고, 이를 어떻게 오버라이딩해서 사용해야하는지에 대해서 깊게 알아보자. 또한, 해시기반 컬렉션에서의 해당 메서드들을 어떻게 사용하는지도 함께 알아보자. ※ 객체 해시코드 : 객체를 식별하는 하나의 정수값 1. Object Class 1-1) hashCode() 먼저 hashCode()를 알아보자. 위의 이미지는 Object 클래스의 hashCode()를 확인해볼 결과이다. native 키워드는 C/C++로 구현된 코드를 자바에서 사용하는 경우에 붙히는 키워드이다. 여기서 hashCode의 구현이 어떻게 되었는지는 확인해볼 수 없지만, 객체의 메모리 번지를 이용해 해시코드를 만들어서 리턴한다고 한다. 1-2) eq..
서론 스프링을 공부하며, 자바 빈을 만들어 컨테이너에서 싱글톤으로 관리한다.라는 개념을 공부하며 많이 보았고, 정보처리기사를 준비하며, 디자인 패턴의 싱글톤 패턴에 대해서도 보았지만, 이를 실제로 자바 코드로 작성해볼 생각은 하지 못했다. 따라서 이번에는 자바에서 싱글톤 패턴을 어떻게 구현할 수 있을지에 대해서 알아보고자 한다. 본론 1. 싱글톤이란? (Singleton Pattern) 싱글톤 패턴은 디자인 패턴 중 생성 패턴으로, 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 또한, 생성된 객체를 어디서든지 참조할 수 있으며, 한 클래스에 한 객체만 존재하도록 제한하는 것이다. 2. 자바에서 싱글톤 구현 public class Singleton { private static final Sin..
서론 바로 앞 Comparator, Comparable에 대해 알아보며, 람다식, 함수형 인터페이스에 대해서 알게 되었다. 이번에는 이에 대해서 알아보자 람다식 (Lambda Expression) 함수를 하나의 식으로 표현한 것이며, 함수를 람다식으로 표현하면 메서드 이름이 필요없기 때문에, 익명 함수의 한 종류라고 볼 수 있다. 장점 코드의 간결성 : 불필요한 반복문의 삭제가 가능, 복잡한 식을 단순하게 표현 가능 필요한 정보만을 사용하는 방식을 통한 퍼포먼스 향상 : 지연 연산을 지원하는 방식을 통하여 효율적인 퍼포먼스 기대 가능 단점 어떤 방법으로 작성해도 모든 원소를 전부 순회하는 경우 람다식이 조금 느릴 수 밖에 없다. 익명함수의 특성상 함수 외부의 캡처를 위해 캡처를 하는 시간제약, 논리제약적..
서론 백준 문제를 풀며, Arrays.sort(), Collections.sort()를 사용하며 그냥 오름차순, 내림차순등으로 정렬해주는 것이라고만 알고 있었는데, 정렬 단계 문제를 풀며, 조건을 줄 수 있으며 이는 Comparable, Comparator와 연관이 있음을 알게되었다. 따라서 이번에 Comparable과 Comparator에 대해서 알아보고자 한다. 사용 이유 두 객체를 비교하기 위해서 사용한다. 기본 자료형의 경우 비교에 문제가 없지만, 사용자가 직접 정의한 클래스에서 비교 기준을 어떻게 잡을 것인지? 이러한 기준을 잡아 주기 위해서 사용한다고 한다. 인터페이스 코드 비교 java.lang.Comparable public interface Comparable { public int co..