Home
Youngho's Devlog
Cancel

[Java] WeakHashMap

Java에서는 세 가지 주요 유형의 참조(Reference) 방식 강한 참조 (Strong Reference) Integer prime = 1; 와 같은 가장 일반적인 참조 유형이다. prime 변수 는 값이 1 인 Integer 객체에 대한 강한 참조를 가진다. 이 객체를 가리키는 강한 참조가 있는 객체는 GC대상이 되지않는다. 부...

[학습할래][JPA-Episode1] JPA의 세계로

JPA 왜 써야하는가? 애플리케이션은 객체 지향 개발을 하면서 코드를 까보면 SQL만 가득차 있는 모습을 볼 수 가 있는데요. 이러한 SQL 중심적인 개발은 많은 문제점들을 야기합니다. 1. 무한 반복, 지루한 코드 CRUD 쿼리 무한 반복해야됩니다. 테이블이 10개면 10개를 다해줘야해서 생산성이 저하되고 힘들게 됩니다.(객체에 필드가 추가되면 쿼...

[이펙티브자바] 아이템6-불필요한 객체 생성을 피하라

똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을때가 많다.(String 객체 생성 방식과 리터럴 방식의 차이점) 재사용은 빠르고 세련되며 특히 불변 객체는 언제든 재사용할 수 있다. 다음 코드는 하지 말아야할 극단적 예이니 유심히 살펴보자. String s = new String("bikini"); 위 ...

[이펙티브자바] 아이템5-자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

사용하는 자원에 따라 동작이 달라지는 클래스에는 정적 유틸리티 클래스가 싱글턴 방식이 적합하지 않다. 클래스가 여러 자원 인스턴스를 지원해야 하며 자원에 따라 동작이 달라지는 경우엔 의존 객체 주입을 사용할 수 있다. 이는 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 방식이다. 의존 객체 주입의 장점 불변(...

[이펙티브자바] 아이템4-인스턴스화를 막으려거든 private 생성자를 사용하라

단순히 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있을 것이다. 예를 들면, java.lang.Math, java.util.Arrays 처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓을 수 있다. 또한 java.util.Collections 처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아 놓을 수...

[이펙티브자바] 아이템3-private 생성자나 열거 타입으로 싱글턴임을 보증하라

싱글턴 객체를 만드는 방법 1) 생성자를 private으로 만들고 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버 하나를 마련해둔다. // 코드 3-1 public static final 필드 방식의 싱글턴 (23쪽) public class Elvis { public static final Elvis INSTANCE...

[이펙티브자바] 아이템2-생성자에 매개변수가 많다면 빌더를 고려하라

정적 팩터리와 생성자에는 똑같은 제약이 하나있다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 첫번째 대안) 점층적 생성자 패턴 필수 매개변수와 선택 매개변수의 적절한 조합으로 생성자를 늘려가는 방식 ex) 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개...

[이펙티브자바] 아이템1-생성자 대신 정적 팩터리 메서드를 고려하라

정적 팩터리 메서드란? 단순하게 클래스의 인스턴스를 반환하는 단순한 정적 메서드를 뜻한다. 예를 들면, 다음과 같은 코드와 같이 단순하게 인자를 받아 해당 클래스의 인스턴스를 반환하는 메서드를 뜻한다. public static Product from(String name) { return new Product(name); } ...

[학습할래] Dynamic Import

일반적으로 브라우저에 접속하면 해당 브라우저에서 필요한 html 파일을 네트워크를 통해 가져오고, 해당 html 파일에 명시된 자바스크립트 파일, 스타일 시트 파일들을 함께 가져오게 됩니다. 여기서!!! 하나의 애플리케이션의 번들(javascript 파일) 사이즈가 엄청 커지게 되면 초기에 웹 페이지 로딩 속도가 엄청 느려지게 될 것입니다. 당연...

[React] dynamic import

하나의 애플리케이션의 번들 사이즈가 엄청 커지게 되면 초기에 웹 페이지 로딩 속도가 엄청 느려질 것이다. 당연히 실무에서는 애플리케이션의 사이즈가 점점 커져갈 수 밖에 없고 당연히 부딪히게 될 수 밖에 없는 문제가 될 것이다. 운 좋게도 팀원을 통해 코드 분할(code spliting)에 대해 먼저 접하게 되었는데, 맨 처음 들었을땐 이해가 부족하여...