분류 전체보기 (326) 썸네일형 리스트형 이펙티브 자바 읽고 정리해보기 8. 아이템 8. finalizer와 cleaner(자바 8 이전 : finalizer, 8 이후 : cleaner 즉 동일) 사용을 피하라 finalizer는 오동작, 낮은 성능, 이식 문제를 야기할 수 있다. 그래서 자바 9부터는 deprecated 되었으며, cleaner가 그 대안으로 소개된다. 하지만, cleaner도 여전히 느리고, 예측할 수 없고, 일반적으로 불필요하다C++의 destructor와는 다른 개념으로, 자바는 가비지 컬렉터가 있어 자원 회수에 프로그래머의 역할이 필요없다. 비 메모리 자원 회수를 위해서는 자바에 try-with-resources와 try-finally가 있다finalizer와 cleaner는 즉시 수행된다는 보장이 없고, 가비지 컬렉터 구현에 따라 수행속도가 가지각색이.. 이펙티브 자바 읽고 정리해보기 7. 아이템 7 : 다 쓴 객체의 참조를 해제하라public class Stack { private Object[] elements; private int size = 0; private static final int DEFALUT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size == 0) throw new Empty.. 이펙티브 자바 읽고 정리해보기 6. 아이템 6 : 불필요한 객체 생성을 피하라같은 기능의 객체를 매번 생성하는 것보다 만들어진 하나의 객체를 재사용하는 것이 더 효율적인 경우가 많다. 특히 불변 객체(아이템 17)는 언제던지 재사용이 가능하다String s = new String("bikini");이 코드를 통해 매 번 쓰이지 않는 String 인스턴스가 (극단적으로) 수백만 개 만들어질 수 있다. "bikini" 자체가 만드려는 객체와 기능이 완전히 똑같아 객체를 생성할 필요가 없지만, 생성자로 객체를 생성하게 되면 호출 시마다 새로운 객체가 만들어지는 것이다String s = "bikini";이 방식을 사용하면 String s에 새로운 String을 생성하는 것이 아니라 기존 객체를 계속 할당하므로, 같은 가상머신 안에서 똑같은 문자열.. 08. 20 TIL : @Controller vs @RestController 해당 컨트롤러들의 역할에 대해 본격적으로 고민해본 적은 처음이다. Controller에 대해 전통적으로 Spring에서는 view 단을 관리하는 역할을 부여해왔고, 또한 json, xml 등을 반환하는 것이 아닌 경우에도 사용이 가능하다 restController는 응답에 대해 restful하게 반환하기 위해 보다 특별하게 만들어진 어노테이션으로, 오늘날 같이 프론트/백엔드로 구분된 어플리케이션 개발 환경에서는 서버에서 view를 따로 반환할 필요가 없으므로 주로 restController를 사용하게 된다. 08. 18 TIL : 사이드 프로젝트 서버사이드 설계 - api 명세서 작성(요청, 응답 데이터 제외)- erd 구현- wbs로 일정 작성(추후 애자일과 비교해보기) - 역할 분담 : 로그인 기능 구현하기1) 스프링 시큐리티2) 리프레시 토큰 사용 이펙티브 자바 읽고 정리해보기 4 & 5. 아이템 4 : 인스턴스화를 막기 위해 private 생성자 활용하라java.lang.Math 클래스나 java.util.Arrays는 기본 타입 값이나 배열 관련 메서드를 모아둔 클래스로, 실무에서 이와 같이 정적 메서드와 정적 필드만 있는 클래스를 구현할 수도 있다. 또한 java.util.Collections처럼 특정 인터페이스 구현체를 생성하는 정적 메서드(팩터리)를 모아놓을 수 있다(java 8부터는 해당 메서드를 인터페이스에 넣을 수 있다). final 클래스 관련 메서드를 모아놓을 때에도 사용할 수 있다. final 클래스를 상속한 하위클래스에 메서드를 넣을 수 없다정적 멤버만 있는 유틸리티 클래스는 인스턴스로 사용하기 위한 목적이 아니지만, 생성자를 명시하지 않으면 컴파일러가 public 생.. 08. 14 TIL : mySQL ~ ORDER BY NULL ORDER BY NULL은 MySQL에서 사용되는 특수한 구문으로,결과 집합의 정렬을 무효화하거나 비활성화하는 데 사용됩니다. 즉, 정렬을 하지 않겠다는 의미입니다 보통 MySQL 쿼리에서 ORDER BY 절을 사용하면 결과가 특정 열을 기준으로 정렬됩니다. 그러나 때로는 정렬을 원하지 않거나 정렬이 불필요할 수 있습니다. 이때 ORDER BY NULL을 사용하면 쿼리가 정렬 없이 수행됩니다.이 구문은 주로 다음과 같은 상황에서 유용합니다:GROUP BY와 함께 사용: GROUP BY 절을 사용할 때 MySQL은 기본적으로 결과를 그룹핑된 열을 기준으로 정렬합니다. 하지만 정렬이 필요 없는 경우 ORDER BY NULL을 사용해 불필요한 정렬을 방지하고 성능을 최적화할 수 있습니다.SELECT colum.. 08. 09 TIL : 테스트 코드 도입 시작 given when then을 바탕으로 CRUD 메서드에 대해 필요한 테스트 코드를 설계하고 구현해보기 시작. 직접 설계하는 것에 자신감이 좀 더 붙으면 보다 핵심적인 비즈니스 로직에도 도입해보려고 한다. 이를 통해 런타임 오류를 조금 더 줄일 수 있을 것이라 기대하고 있다 이전 1 2 3 4 5 ··· 41 다음