본문 바로가기
반응형

분류 전체보기126

[Effective Java] Item 6. 불필요한 객체 생성을 피하라 똑같은 기능의 객체를 매번 생성하기보다는 객체하나를 재사용하는 편이 나을 때가 많다. 재사용은 빠르고 세련되다. 특히 불변 객체는 언제든 재사용할 수 있다. 불변 객체 객체 내부의 변수값을 변경할 수 없는 객체 아래 코드를 보자. String s = new String("jordy"); 이 문장을 실행될 때마다 String 인스턴스를 새로 만든다. 이를 대신하여 직접 문자열을 할당할 경우에 기존 메모리에 저장되어있던 데이터를 재사용이 할 수 있다. hashcode(객체가 저장된 메모리 주소) 메서드를 사용하여 아래와 같이 비교해보면 확인 가능하다. String jordy = "niniz"; String scappy = "niniz"; System.out.println(jordy.hashCode() == .. 2021. 10. 6.
[Effective Java] Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴(singleton)이란 인ㅅ흐턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 전형적인 예로 함수(아이템 24)와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수가 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트 하기 어려울 수 있다. 싱글턴을 만드는 방식은 보통 둘 중 하나다. 두 방식 모두 생성자는 private으로 감춰두고 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. 아래 코드를 보자. public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {...}; public void le.. 2021. 10. 6.
[Effective Java] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리 메서드와 생성자에 똑같은 제약이 하나 있다. 그것은 바로 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 만약에, 식품 포장의 영양정보를 표현하는 클래스를 생각해보자. 영양정보는 1회 내용량, 총 n회 제공량, 1회 제공량당 칼로리 같은 필수 항목 몇 개와 총지방, 탄수화물, 나트륨 등 수많은 선택 항목으로 이뤄진다. 이때 대다수 값이 0 이다. 그래서, 값이 있는 항목에 한해 객체 생성시 넣을 수 있도록 생성자를 생성하려하면 파라미터가 끝도 없이 길어질 수 있고, 또한 파라미터에 넣는 값의 순서가 바뀌어도 오류가 나지 않아 어플리케이션이 비정상 적으로 작동될 수 있다. 더 큰 문제는 비정상 작동은 큰 문제가 된 이후에 발견 될 것이다. 결론적으로 생성자의 매개 변수 조합이 다양하고 매.. 2021. 10. 6.
[Effective Java] Item 1. 생성자 대신 정적 팩토리 메서드를 고려하라 Outline 클라이언트(API 사용자)가 클래스의 인스턴스를 얻는 정통적인 수단은 Public 생성자다. 그 밖에도 클래스는 생성자와 별도로 정적 팩터리 메서드(static factory method)를 제공할 수 있다. - Pros and Cons, 장점 & 단점 Pros 1. 이름을 가질수 있다. 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. ex 1. 생성자 & 정적 팩토리 메서드 비교 // 생성자 BigInteger(int, int, Random); // 정적 팩토리 메서드 // 참고: prime number: n.소수 BigInteger.probablePrime();전자 보다는 후자.. 2021. 10. 6.
Fastly Down 보호되어 있는 글 입니다. 2021. 10. 5.
Understanding How Facebook Disappeared from the Internet 보호되어 있는 글 입니다. 2021. 10. 5.
시나리오를 통해 Flyway 사용법 학습하기 여는 글 우아한 테코톡의 코기님의 영상 뿐만 아니라 이미 Flyway에 대한 자료는 인터넷 상에 많이 공개 되어 있습니다. 다만, 제가 글 뿐으로는 사용 방법에 대해서 백 퍼센트 이해하기가 힘들었습니다. 그래서 해당 라이브러리가 해결해주는 문제의 범위, 그리고 한계점에 명확히 이해하기 위해 직접 간단한 테스트 프로젝트를 만들어 직접 만들어 보며 학습해보았습니다. 우선 Flyway 자체에 대해서는 아래 링크를 통해 이해하시고, 실제 실습은 제 Github Repository를 내려 받아서 직접 따라하시면서 공부해봅시다. 기본 학습 자료 Flyway에 대해 설명하는 Toast의 글 https://meetup.toast.com/posts/173 코기 님의 Flyway 소개와 이미 구축된 DB가 있는 경우에 대.. 2021. 10. 5.
[H2] 원하는 이름으로 된 Non-In-Memory H2 서버 만들기 H2로 테스트 환경을 만들 때 디스크에 인 메모리가 아닌 H2 서버를 만들고 싶을 수 있습니다. 저 또한 Flyway의 구동 원리를 테스트 하기 위한 환경을 구축하던 중 필요하게 되어 찾아봤습니다. 방법은 간단합니다. 1) H2 홈페이지에 접속하셔서 All Platforms 버전의 H2를 다운로드해주세요. 2) 압축을 푸신 후 bin 폴더에 있는 실행 파일(윈도우: h2.bat, Linux/Unix h2.sh)를 실행해주세요. 3) 8082 포트로 된 H2 프로세스가 실행 중인지 확인해주세요. Window: nestat -ano | findstr 8082 Linux & Unix: netstat -antp | grep 8082 4) 중요한 데이터베이스 서버용 데이터 파일 생성 단계 입니다. 웹 콘솔에 접속.. 2021. 10. 4.
[우아한 테크 캠프 Pro 2기] 1주차. 로또-TDD 코드 경로 https://github.com/next-step/java-lotto/pulls?q=is%3Apr+is%3Aclosed+author%3Ajordy-torvalds GitHub - next-step/java-lotto: 로또 게임 구현을 관리하는 저장소 로또 게임 구현을 관리하는 저장소. Contribute to next-step/java-lotto development by creating an account on GitHub. github.com 주요 내용 자동/수동 로또 구매 및 당첨 및 당첨금액 확인을 하는 간단한 프로그램을 짜보는 미션이었습니다. 구현 도메인 자체는 쉬웠으나 요구되는 요구사항들을 준수하며 개발하는 것이 어려웠습니다. 요구된 요구사항은 대략 아래와 같습니다. TDD로 모.. 2021. 10. 1.
반응형