728x90 Gayoung162 item 10. equals는 일반 규약을 지켜 재정의하라 * 전 page에 대해 공부하였으나, 모든 책의 내용을 다 적기 보다는 꼭 필요한 내용을 추려 이해하기로 하였음 !!! (많아서) equals method란? -> call by value로 객체 값을 비교하는 메소드 (==는 call by reference로 주소값 비교) 어떤 경우에 equals를 재정의하고, 하지 말아야 할까? [equals를 재정의하지 않는 경우] - 각 인스턴스가 본질적으로 고유한 경우 (값 클래스가 아닌 경우에 해당한다. ex) thread) - 인스턴스의 논리적 동치성을 검사할 필요가 없는 경우 - 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는 경우 - 클래스가 private이거나 package-private이고, equals method를 호출할 일이.. 2022. 4. 19. [spring] MVC Spring@MVC란? [특징] - Front Controller Pattern에 기초한 웹 MVC 프레임워크 - MVC 역할별로 클래스가 잘 분할되어 있다. (유연성, 확장성 확보 & 다양한 뷰 기술을 쉽게 연동할 수 있다.) [구성 요소] - DispatcherServlet (제공) : 다른 객체들에게 위임하여 처리한다. - infrastructure Components (제공) handler(controller) mappings : DispatcherServlet이 client에게 받은 request를 어떤 adapter가 처리할 수 있는지 알려준다. handler adapters : 전달받은 request를 처리한다. view resolvers : view를 화면에 뿌려준다. - 프로그래머 영역 .. 2022. 4. 19. item 9. try-finally 보다는 try-with-resources를 사용하라 - 자바 라이브러리에는 InputStream, OutputStream 그리고 java.sql.Connection과 같이 close를 이용해 직접 닫아줘야 하는 리소스가 많은데, 그런 리소스를 사용하는 클라이언트 코드가 보통 리소스 정리를 잘 안하거나 잘못하는 경우가 있다. - 안전망으로 finalizer을 사용하는 경우가 많으나, item8과 같은 다양한 문제들이 있을 수 있다. => 전통적인 방법 : try-finally - 자원이 제대로 닫힘을 보장하는 수단이다. 예외가 발생하거나, 메서드에서 반환되는 경우도 포함한다. - 자원이 여러개가 되는 경우, try~finally의 사용은 코드를 지저분하게 만들 수 있다. - 또한, 예외는 try, finally모두에서 발생할 수 있는데, 이런 상황에서 두번.. 2022. 4. 16. item 8. finalizer과 cleaner 사용을 피하라. Finalizer - Object에 존재하는 finalize()를 의미한다. - 객체 소멸자이다. - 클래스 객체가 더 이상 사용되지 않으면 GC가 자동으로 호출된다. - 예측 불가하고 느리다. [ 사용 ] - 안전망 역할로 자원을 반납하고자 하는 경우에 사용된다. - 네이티브 피어와 연결된 객체에서 네이티브 리소스를 정리해야 하는 경우에 사용한다. Cleaner - 객체 소멸자이다. - Java9에서 finalizer가 deprecated 됐고, cleaner이 새로 생겼다. - 별도의 thread를 사용해 finalizer보다 덜 위험하지만, 예측 불가하고 느리다. finalizer과 cleaner는 객체 소멸자지만 c++의 파괴자와는 다르다. c++에서의 destructor 역할 1 : 특정 객체와.. 2022. 4. 16. item7. 다 쓴 객체 참조를 해제하라 Java의 특징 : GC! GC가 있어 다 쓴 객체를 알아서 회수해간다. - 따라서 메모리 관리를 개발자가 신경쓰지 않아도 될까? -> NO! -> 자칫하다간 메모리 누수 문제가 일어날 수 있다. 메모리를 직접 관리하는 클래스는 개발자가 메모리 누수에도 신경써야 한다. [메모리 문제가 일어날 수 있는 경우] 1. Stack 사용 시 스택은 자기 메모리를 직접 관리한다. 배열로 저장소 풀(pool^.^)을 만들어 원소들을 관리한다. 가용 영역은 사용되며, 유효 영역 밖의 원소는 사용하지 않는데, GC는 이러한 정보를 해석할 수 없다. // Can you spot the "memory leak"? public class Stack { private Object[] elements; private int si.. 2022. 4. 16. [spring] AOP AOP 관점 지향 프로그래밍 (Aspect Oriented Programming) - 메서드는 비즈니스 로직(core concern)과 부가 기능(cross cutting convern : 횡단 관심사)으로 구성된다. - AOP는 메서드를 비즈니스 로직이 아닌 필요 개별 기능 관점으로 바라본다. - 어디서나 '동일한' 코드를 갖는 횡단 관심사를 모듈화해 재사용한다. -> 개발자는 비즈니스 로직에만 전념할 수 있다. 횡단 관심사 로깅 권한 검사 트랜잭션 처리 캐싱, 모니터링 데이터 암호화 예외처리 etc.. [ AOP annotation ] @Aspect : 이것은 aspect라는 의미. 여러 개의 advice가 있다는 의미. @EnableAspectJAutoProxy : advice가 적용될 빈들에 대해.. 2022. 4. 15. 이전 1 ··· 10 11 12 13 14 15 16 ··· 27 다음 728x90