목록전체 글 (269)
Coding Planet
| What is Maven? Maven is a Project Management tool Most popular use of Maven is for build management and dependencies | What Problems Does Maven Solve? When building your Java project, you may need additional Jar files For example: Spring, Hibernate, Commons Logging, JSON etc., One approach is to download the JAR files each project web site. Manually add the JAR files to your build path / class..
웹 프로그래밍을 공부하면서 질리게 듣게 되는 파일 형식이다. JAR 파일과 WAR 파일은 둘 다 Java 기반의 애플리케이션을 패키징하기 위한 파일 포맷이다. 1. Jar(Java ARchive)파일 정의: JAR 파일은 여러 개의 Java 클래스 파일, 메타 데이터, 리소스 파일 등을 하나의 파일로 묶은 아카이브 파일 목적: Java 클래스와 관련 리소스를 패키징하여 재사용 가능한 라이브러리나 실행 가능한 애플리케이션을 생성 사용처: Java 라이브러리, 스탠드얼론 Java 애플리케이션, 의존성 패키지 등 확장자: .jar 2. WAR (Web Application aRchive) 파일 정의: WAR 파일은 웹 애플리케이션을 패키징하기 위한 파일 포맷이다. Java 클래스, JSP, 서블릿, XML, ..
아이템6 : 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 재사용은 빠르고 세련되다. 1. String Instance의 예시 (1) 'new' 키워드를 사용하여 문자열 객체를 명시적으로 생성할 경우 문자열은 heap 영여겡 저장되며 아래 문장이 실행될 때 마다 String 인스턴스를 새로 만든다. String s = new String("Effective Java"); (2) String Constant Pool String Constant Pool은 Java의 메모리 영역 중 하나로, 문자열 리터럴을 저장하는 특별한 영역이다. Java에서 문자열은 불변(immutable)하기 때문에, 두 개 이상의 동일한 문자열 리터럴은 메모리에 ..
지연 초기화 (Lazy Initialization)는 객체, 데이터 또는 계산 비용이 큰 리소스의 초기화를 그것이 실제로 필요할 때까지 지연시키는 프로그래밍 기법입니다. 즉, 객체나 데이터를 생성하는 작업이 발생하는 순간이 아니라, 그것이 실제로 접근되거나 사용될 때까지 초기화를 연기하는 것을 의미합니다. 지연 초기화의 주요 목적 성능 최적화: 초기 로딩 시간을 단축하거나, 불필요한 리소스 생성을 방지하여 시스템의 전반적인 성능을 향상시킨다. 리소스 절약: 실제로 사용되지 않는 객체나 데이터를 생성하지 않아 메모리나 기타 리소스를 절약할 수 있다. 지연 초기화에는 주의사항 스레드 안전성: 여러 스레드에서 동시에 지연 초기화 로직에 접근할 경우 동기화 문제가 발생할 수 있다. 이를 방지하기 위해서는 적절한..
8개월 정도 운동을 거의 안해서 살이 많이 찌고 자세도 나빠지고 있다. 엄격한 식단은 무리이지만 당류 줄이면서 운동 시작 한. 8월 14일부터 시작하고 16일 부터 기록한다. - 목표는 7kg 감량과 안쉬고 5km 뛸 수 있는 심폐지구력 기르기 - 일단 웨이트 시작해서 날씨 선선해지면 런데이 하겠음 1. 힙어브덕션 ㅡ 드랍세트 [v] 스트레칭 20 30개 [v] 1세트 65 × 20개 [v] 2세트 50 × 20개 [v] 3세트 35 x 20개 [v] 4세트 27.5 x 20개 [v] 5세트 50 x 20개 2. 레그익스텐션 [v] 1세트 12.5kg x25개 [v] 2세트 20kg x15개 [v] 3세트 20kg x15개 [v] 4세트 20kg x15개 [v] 5세트 20kg x15개 3.리버스 V스쾃..
아이템5: 자원을 명시하지 말고 의존 객체 주입을 사용하라 이전에 살펴본 정적 유틸리티 클래스나 싱글턴 방식은 사용하는 자원에 따라 동작이 달라지는 클래스에는 적합하지 않다. 정적 유틸리티 클래스는 상태를 가질 수 없다. 즉 자원에 따라 동작을 변경하는 것이 어렵다. 싱글턴은 전역 상태를 가지게 되므로 여러 자원을 관리하거나 동작을 동적으로 변경하기 어렵게 만든다. 또한 정적 유틸리티 클래스나 싱글턴은 상속을 통한 확장이 어렵고 테스트도 어렵다는 단점이 있다. 따라서 ①클래스가 여러 자원 인스턴스를 지원해야하고, ② 클라이언트가 원하는 자원을 사용해야하는 조건을 만족하려면 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식인 의존 객체 주입이 적합하다. 1. 의존 객체 주입(Dependency I..
아이템4: 인스턴스화를 막으려거든 private 생성자를 사용하라 인스턴스화(instance instantiation)는 클래스의 정의를 기반으로 실제 객체를 메모리에 생성하는 과정이다. 클래스의 인스턴스화를 막기위해 private 생성자를 사용하는 것은 클래스를 외부에서 인스턴스화하는 것을 방지하기 위한 테크닉이다. 클래스에 정의된 생성자가 모두 'private'으로 선언되면, 그 클래스는 외부에서 객체를 생성할 수 없게 된다. 이러한 접근 제한자를 사용하는 것은 주로 유틸리티 클래스나 상수만을 포함하는 클래스와 같이 인스턴스화될 필요가 없는 클래스들에 적용된다. 1. 정적 메서드와 정적 필드만을 담은 유틸성 클래스는 만드는 경우 기본 타입 값이나 배열 관련 메서드들을 모아놓을 때 : java.lang..
아이템3: private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴(sigleton)이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글턴의 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야하는 시스템 컴포넌트를 들 수 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 싱글턴 인스턴스를 가짜(mock)구현으로 대체할 수 없기 때문이다. 즉, 클래스를 싱글턴으로 만들 경우 해당 클래스의 인스턴스가 시스템 전체에 하나이기 때문에 테스트와 실제 환경에서의 동작이 강하게 결합될 수 있다. 싱글턴을 만드는 방법은 보통 두가지이다. 두 방식 모두 생성자는 ..
1. 직렬화란 (Serialization)? 직렬화 (Serialization)는 객체의 상태를 바이트 스트림으로 변환하는 과정을 의미한다. 이 바이트 스트림은 파일로 저장하거나 네트워크를 통해 다른 시스템에 전송할 수 있다. 반대로, 역직렬화 (Deserialization)는 바이트 스트림을 다시 원래의 객체로 변환하는 과정을 의미한다. 2. 직렬화의 목적 영속성 (Persistence): 객체의 상태를 영구 저장 매체 (예: 파일)에 저장하고 나중에 다시 사용하기 위해 객체를 복원할 수 있다. 원격 프로시저 호출 (Remote Procedure Call): 객체를 네트워크를 통해 다른 JVM 또는 시스템으로 전송하려면 그 객체를 바이트 스트림으로 변환해야 한다. 객체의 깊은 복사 (Deep Copy)..