Java/Java 일골드 2022. 8. 16. 22:24
Scanner와 BufferedReader 중에서 어느 것이 더 빠를까? 정답은! BufferedReader 승! 평균적으로 7배이상 빠르다. 왜냐하면 buffer 사용여부 때문! Scanner는 1KB 크기의 버퍼를 갖기 때문에 입력이 바로 전달되지만, BufferedReader는 8KB 크기의 버퍼를 가져 buffer에 입력들을 저장하였다가 한번에 전송한다. Scanner는 입력을 읽는 과정에서 내부에서 정규표현식 적용, 입력값 분할, 파싱 과정 등을 거치기 때문에 속도가 느리다. 두 클래스에 공통적으로 생성할때 System.in을 매개별수로 받는다. System.in은 java.lang.System 클래스의 인스턴스 변수로 InputStream 타입의 정적(static) 변수이다. InputStre..
Java/Java 일골드 2022. 6. 23. 21:34
SOLID 원칙 1. 단일 책임 원칙 - SRP(Single Responsibility Principal) 객체는 단 하나의 책임만 가져야 한다. ex) Student 객체는 학생의 기능(책임)만 해야한다. 2. 개방 폐쇄 원칙 - OCP(Open-Closed Principal) 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다. 내 생각에는 디자인 패턴에서 가장 주요한 원칙인듯? ex) 단위테스트시 Git을 사용해야 한다면 직원들은 각자의 Git을 구현한(각자의 ID로 구현한) 객체를 주입하도록 설계하면 된다. 3. 리스코프 치환 원칙 - LSP(Liskov Substitution Principal) 부모 클래스와 자식 클래스 사이의 행위가 일관성이 있어야 한다는 의미. ex) ..
Java/Java 일골드 2022. 6. 20. 23:00
컴포지트 패턴 /** * 컴포지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용하다. * 그리고 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있다. */ public class CompositePattern { public static void main(String[] args) { File file01 = new File("기밀문서.txt", 100); File file02 = new File("임시파일.txt", 30); File file03 = new File("새파일.txt", 0); File file04 = new File("test.txt", 70); Folder folder01 = new Folder("직박구리"); Folder folder0..