객체는 필요할 때마다 만드는 것보다 재사용할 수 있다면 재사용하는 편이 프로그램을 더 빠르게 한다. 특히 변경 불가능한 객체는 언제나 재사용할 수 있다. 단순객체 중복생성String str = new String("reference"); // "reference" 자체가 객체 String str = "reference";첫 번째 코드는 실행될 때마다 불필요한 객체를 만드는 한 예다. "reference"은 그 자체로 String 객체이다. 그런데 이를 다시 String 객체를 생성하고 있다. 이런 코드가 반복문 안에 있다면, 수많은 객체를 쓸데없이 만들고 지우게 된다. 따라서 두 번째 코드처럼 하는 것이 바람직하다. 이렇게 하면 실행할 때마다 같은 가상머신에서 실행되는 모든 코드가 해당 객체를 재사용하게..
Java 기본적인 환경 세팅에 대해 알아보자. 윈도우 환경 어디에서든지 Java 명령어를 가능하게 하는 세팅이다. 어떤 개발 툴에서는 Java 환경 세팅이 안 되어 있으면 프로그램이 실행이 안 되는 경우도 있고 JAVA_HOME 이라는 시스템 변수는 개발 세팅에 있어서 광범위하게 사용된다. 특히 리눅스 환경 서버 세팅에서 JAVA_HOME을 등록하지 않고 다른 설정을 잡기란 쉬운 일이 아니다. 추후 리눅스에서 JAVA_HOME 등록 방법을 설명하도록 하겠다. Windows10 다른 윈도우 버전과는 UI만 다를 뿐 세팅 방법에는 차이가 없다. 1. Java 명령어 확인 위와 같은 명령어로 확인했을 때 컴퓨터가 인식을 못 하면 환경 변수 설정이 되어 있지 않은 것이다. 2. 환경변수 추가 시스템 -> 고급 ..
코딩을 할 때 객체 생성을 막고 싶을 때가 있다.유틸리티 클래스(Utiliy class)들은 객체를 만들 목적의 클래스가 아니다. 객체를 만들면 오히려 이상하다. 하지만 생성자를 생략하면 컴파일러는 자동으로 디폴트 생성자(default constructor)를 만들어 버린다. 귀가 닳도록 듣고 입이 아프도록 많이 했던 말이다.. 이렇기 때문에 생성자를 만들지 않으려고 생성자를 선언하지 않았어도 사용자는 해당 클래스의 객체를 만들 수 있게 된다. 이런 경우 디폴트 생성자를 private로 정의해 놓고 객체를 생성하지 못하도록 막아야한다. /* 객체를 만들 수 없는 유틸리티 클래스 */public class UtilityClass {/* 기본 생성자가 자동으로 생성도지 못하도록 하여 객체 생성 방지 */pr..
Singleton싱글턴은 객체를 하나만 만들 수 있는 클래스다.싱글턴을 구현하는 흔히 사용하는 방법 두가지는 다음과 같다. 생성자를 private로 선언하고 public static final로 선언한 필드 변수에 인스턴스 저장생성자를 private로 선언하고 public statc ClassType getInstance() { return INSTANCE;} public class Elvis { private static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public static Elvis getInstance() { return INSTANCE; } public void leaveTheBuilding() { ... } }위 코드..
객체지향 개발과 관련된 용어들클래스 "상태"와 "행위"를 갖는 자바의 기본 단위를 의미한다. 모듈화가 가능한 가장 작은 단위를 클래스라고 보면 된다.상태와 행위어떤 사물을 나타낼 때에는 상태와 행위로 구분하여 표시하는 것이 가능하다. 자바에서 "상태"는 클래스나 인스턴스 변수로, "행위"는 메소드로 표현할 수 있다.캡슐화연관된 "상탱"와 "행위"를 결정하는 기능을 묶어 주는 것을 의미한다. 이렇게 묶어주면 기능을 클래스 밖에서 접근 가능한 대상을 제한하는 정보 은닉이 가능하다. 그리고, 하나의 객체를 위한 코드가, 다른 객체를 위한 코드와 무관하게 수행할 수 있는 모듈화가 가능해진다.객체클래스는 사물의 단위를 의미하지만, 객체는 각 사물을 의미한다.상속부모에 선언된 변수와 메서드에 대한 사용권을 갖는 것..
점층적 생성자 패턴(Telescoping Constructor Pattern)생성자 인자에 대해 생각해 본 적이 있는가? 때로는 생성자 인자가 너무 많을 때도 있다. 예를 들어 항목이 20개 쯤 되는 필드를 상상해 보자. 보통의 프로그래머들은 이런 상황에 점층적 생성자 패턴(telescoping constructor pattern)을 적용한다. 필수 인자만 받는 생성자를 하나 정의하고, 선택적 인자를 하나 받는, 둘 받는 인자를 계속해서 추가하는 식으로 생성자를 쌓아 올리듯 추가하는 것이다. 이런 조합 가능성을 다 고려한다면 생성자는 끊임없이 많아지게 된다. 또한, 설정할 필요가 없는 필드에도 인자를 전달해야 하는 경우가 생긴다. NutritionFacts cocaCola = new NutritionFa..
static factory method클래스를 통해 객체를 만드는 일반적인 방법은 public으로 선언된 생성자(constructor)를 이용하는 것이다. 그러나 모든 프로그래머가 반드시 알고 있어야 하는 방법이 하나 더 있다. 클래스에 public으로 선언된 정적 팩터리 메서드(static factory method)를 추가하는 것이다.정적 팩터리 메서드(static factory method)는 디자인 패턴 중 팩터리 메서드 개념(Factory Method)과 다르다는 점에 유의하자. public static Boolean valueOf(boolean b) {return b ? Boolean.TRUE : Boolean.FALSE;}위 코드는 실제 Boolean class의 method이다. 장점이름이..
모든 개발자가 알면서도 지키지 않는 것이 있다. 바로 문자열 관련 부분이다. String 클래스는 잘 사용하면 상관이 없지만, 잘못 사용하면 메모리에 많은 영향을 준다.String이 GC에 영향을 주는 것은 확실하다. 하지만, 이것만 고친다고 메모리가 효율적으로 사용된다는 것은 아니다. 성능 개선에 있어 작은 부분이지만 기본적인 성능 개선부터 유념하자는 의미이다. StringBuffer 클래스와 StringBuilder 클래스문자열을 만드는 클래스는 String, StringBuffer, StringBuilder가 가장 많이 사용된다. StringBuffer 클래스는 JDK 5.0에서 새로 추가되었다. StringBuffer 클래스나 StringBuilder 클래스가 제공하는 메서드와 동일하다. 차이점은..
시스템의 성능이 느릴 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것이다. System 클래스자바를 처음 배울 때부터 아무 생각 없이 쓰는 클래스가 있다. 다름 아닌 System 클래스다. 모든 System 클래스의 메서드는 static으로 되어 있고, 그 안에서 생성된 in, out, err와 같은 객체들도 static으로 선언되어 있으며, 생성자(Constructor)도 없다.System 클래스에서 알아두면 매우 유용한 메서드에는 어떤 것들이 있는지 알아보자.자바의 JVM에서 사용할 수 있는 설정은 크게 두 가지로 나뉜다. 하나는 속성(Property) 값이고, 다른 하나는 환경(Environment) 값이다. 속성은 JVM에서 지정된 값 들이고, 환경은 장비(서버)에 지정되어 있는 값 들이..
J2EE 디자인 패턴에 대해 간단히 알아보자.위 그림은 사용자의 요청에 처리되는 순서로 생각하면서 위에서부터 아래로 보면 된다. 가장 윗부분은 프레젠테이션 티어이고, 중간 부분은 비즈니스 티어, 하단 부분은 인테그레이션 티어다. 위로 갈수록 화면에 가깝고, 아래로 갈수록 DB와 같은 저장소에 가깝다. Intercepting Filter 패턴요청 타입에 따라 다른 처리를 하기 위한 패턴이다.Front Controller 패턴요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴이다.View Helper 패턴프레젠테이션 로직과 상관 없는 비즈니스 로직을 헬퍼로 지정하는 패턴이다.Composite View 패턴최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴이다.Service to Worker 패턴Fro..
- 오라클
- 리액트
- 제주도 여행
- javascript
- Maven
- 리액트 16
- 소프트웨어공학
- 정렬 알고리즘
- Java
- 회고
- 프로그래머스
- sort algorithm
- 이직
- 성능분석
- 경력관리
- effective java
- 프로그래머
- spring
- Eclipse
- 제주도 3박4일 일정
- 자바
- Linux 명령어
- 자바스크립트
- 개발환경
- Collection
- 리눅스 명령어
- Tomcat
- SQL
- React
- 오라클 내장 함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |