JAVA

시작하기 전 ... 싱글턴을 생성하는 방법 중 Eager Initialization의 단점은 인스턴스를 미리 생성하기 때문에, 사용하지 않을 경우 메모리 점유로 인한 자원낭비가 된다였다. 여기서 나의 의문의 시작되는데,,,, 더보기 .. https://dev-rosiepoise.tistory.com/75 [Singleton Pattern] 싱글톤 패턴 생성하기 Goal Singleton이 무엇인지 이해한다 Singleton을 생성하는 방법에 대해 알아보고 이해한다 Singleton Pattern 싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 프로그램 시작부터 종료 dev-rosiepoise.tistory.com 멘토님은 클래스 로딩 동작과정을 이해할 필요가 있다고 말씀해주셨고, 좀 더..
Goal 어댑터 패턴이란 무엇인지 알아보고 이해한다 어댑터 패턴을 사용한 코드를 이해한다 객체 어댑터와 클래스 어댑터를 이해한다 어댑터 패턴 (Adapter Pattern) 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환한다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있다. => 어댑터는 한 객체의 인터페이스를 구현하고 다른 객체를 매핑한다. 언제 어댑터 패턴을 사용해야 할까? 새로운 클래스의 인터페이스가 기존 코드를 만들 때 사용했던 인터페이스와 다를 때 사용한다. 적용 예시 기존의 코드 Duck 인터페이스와 그를 확장한 MaralldDuck가 있다고 하자 public interface Duck { public void quack(); public voi..
Goal 디자인 패턴이란 무엇인지 알아보고 이해한다 디자인 패턴에 필요한 도구들과 그 종류들을 알아본다 디자인 패턴 프로그램을 작성하다 보면 비슷 비슷한 상황이 직면하게 되는 경우가 많은데, 그러한 상황에서 개발자들이 고민을 정제한 사실 상의 표준 설계패턴이다. 디자인 패턴은 객체 지향의 특성 중 상속(extends), 인터페이스(interface/implements), 합성(객체를 속성으로 사용)을 이용한다. 왜 디자인 패턴을 사용해야 할까? 개발자 사이에서 서로 이해할 수 있는 용어를 제공하고, 빠르고 정확한 파악이 가능하여 의사소통이 쉽다 객체 수준에서의 생각이 아닌 패턴 수준에서 생각할 수 있기에 아키텍쳐를 생각하는 수준이 올라간다 디자인 도구상자 안에 들어가야 할 도구들 1. 객체지향의 기초 캡..
Goal 객체지향 설계의 5원칙이 무엇인지 이해한다. 객체지향 설계 5 원칙 - SOLID 객체 지향 설계의 정수라고 할 수 있는 5원칙이 있는데, 바로 SOLID다. 응집도는 높이고, 결합도는 낮추라는 고전 원칙을 객체 지향의 관점에서 재정립한 것이라고 할 수 있다. SRP - Single Responsibility Principle 단일 책임 원칙 OCP - Open Closed Principle 개방 폐쇄 원칙 LSP - Liscov Subsititution Principle 리스코프 치환 원칙 ISP - Interface Segregation Principle 인터페이스 분리 법칙 DIP - Dependency Inversion Principle 의존 역전 원칙 왜 객체지향 설계 5원칙을 사용해야..
Goal Singleton이 무엇인지 이해한다 Singleton을 생성하는 방법에 대해 알아보고 이해한다 Singleton Pattern 싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 프로그램 시작부터 종료 시까지 어떤 클래스의 인스턴스가 메모리 상에 단 하나만 존재할 수 있게 하고 이 인스턴스에 대해 어디에서나 접근할 수 있도록 하는 패턴이다. 왜 싱글턴 패턴을 사용할까? 예로, 로깅을 찍는 객체, 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 인스턴스를 여러개 만들게 되면 불필요한 자원을 사용하게 되며 또 프로그램이 예상치 못한 결과를 낳을 수 있다. 결과에 일관성이 없어질 가능성이 있다 한정된 리소스에서 메모리를 사용할 때 사용한다 => 메모리를 많이 사용하면 안될 때 ..
abstract 키워드 - 추상 메서드와 추상 클래스 추상 메서드란 선언부는 있지만 구현부가 없는 메서드를 말한다. 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스여야 한다. public class Driver2 { public static void main(String[] args){ Animal[] animals = new Animal[5]; animals[0] = new Dog(); animals[1] = new Cat(); animals[2] = new Cow(); animals[3] = new Bird(); animals[4] = new Dolphin(); for(int i=0; i new 사용 불가 추상 클래스는 하위 클래스에게 메서드의 구현을 강제한다. 오버라이딩 강제 추상 메..
객체지향의 4대 특성 - 캡!상추다 캡슐화 (Encapsultation): 정보 은닉(information hiding) 상속 (Inheriance) 재사용 추상화 (Abstaction) : 모델링 다형성 (Polymorphism) : 사용 편의 클래스 vs. 객체 = 붕어빵틀 vs.붕어빵? 금형기계 붕어빵틀 = new 금형기계(); 붕어빵틀은 붕어빵을 만드는 팩터리 클래스와 객체를 구분하는 간단한 방법 - 나이 물어보기 사람의 나이는 몇살인가 -> 클래스 김연아의 나이는 몇살인가 -> 객체 뽀로로의 나이는 몇살인가 -> 객체 펭귄의 나이는 몇살인가 -> 클래스 클래스는 분류에 대한 개념이지 실체가 아니다! 클래스 : 객체 = 펭귄 : 뽀로로 = 사람: 김연아 추상화 : 모델링 여러가지 사물이나 개념에서..
자바 프로그램의 개발과 구동 현실 세계 가상 세계(자바 월드) 소프트웨어 개발 도구 JDK - 자바 개발 도구 JVM용 소프르웨어 개발 도구 운영체제 JRE - 자바 실행 환경 JVM용 OS 하드웨어 - 물리적 컴퓨터 JVM - 자바 가상 기계 가상의 컴퓨터 JDK < JRE < JVM Write Once Run Everywhere JVM이 중재자로서 각 플랫폼(윈도우, 유닉스, 리눅스 등)에서 프로그램을 구동하게끔 해줌 기계어를 포함한 모든 프로그래밍 언어의 메모리 사용 방식 코드 실행 영역 데이터 저장 영역 객체지향 프로그래밍 언어의 메모리 사용 방식 코드 실행 영역 스태틱 (static) 영역 스택 (stack) 영역 힙(Heap) 영역 자바에 존재하는 절차적 / 구조적 프로그래밍의 유산 함수 -..
스프링을 이해하기 위한 이전의 기술 SOA (Service Oriented Architecture) - 서비스 지향구조 CBD (Component Based Development) - 컴포넌트 기반 개발 OOP (Object Oriented Programming) 절자적 / 구조적 프로그래밍 기계어 / 어셈블리어 기계어 -> 객체지향 프로그래밍 언어로 0과 1의 행진 (에드삭, 유니박) 애드삭 전욕, 유니박 전용 기계어가 필요하며 호환이 불가능 어셈블리어 인간지향적 니모닉 (add, plus)과 기계어의 일대일 코드 매칭표 cpu별 어셈블리어 필요 C언어 - 강력한 이식성 one source multi object use anywhere 컴파일러로 cpu별 소스 번역 그러나 컴파일전 기종에 맞게 소스 변..
자원 반납 자바 라이브러리에는 close메소드를 호출하여 직접 닫아줘야 하는 자원이 있다 ex) 대표적으로 InputStream, OutputStream, java.sql.Connection 자원반납을 해야하는 이유 접근할 때, File Descriptor를 생성해서 소모하는데 자원을 반납하지 않는경우 File Descriptor가 재활용이 되지않아 File Descriptor leak이 발생될 수 있으며 이는 어플리케이션의 문제로 이어질 수 있음 참고 멘토님 & https://docs.oracle.com/cd/E23095_01/Platform.93/ATGInstallGuide/html/s0607detectingfiledescriptorleaks01.html try-finally 방식의 코드 static..
dev_rosieposie
'JAVA' 카테고리의 글 목록 (3 Page)