[아이템 27] 비검사 경고를 제거하라

제네릭을 사용하면 컴파일러 경고를 많이 마주치게 되는데 할 수 있는 한 모든 비검사 경고를 제거해야한다. 모두 제거하면 해당 코드는 타입 안전성을 보장할 수 있다. ClassCastException이 발생할 일이 없다. @SuppressWarnings("unchecked")은 경고는 제거할 수 없으나 타입 안전성을 확보했을 때 해당 애너테이션을 달아 경고를 숨길 수 있다. @ SuppressWarnings 애너테이션은 항상 가능한 한 좁은 범위에 적용 @SuppressWarnings("unchecked") 애너테이션을 사용할 때면 그 경고를 무시해도 안전한 이유를 항상 주석으로 남겨야 한다.

[아이템 15] 클래스와 멤버의 접근 권한을 최소화하라

잘 설계된 컴퓨넌트는 내부 구현 정보를 캡슐화하여 숨기고 외부 컴포넌트는 API를 통해 외부와 정보를 주고 받을 수 있도록 분리되어 설계된다. 정보 은닉이 잘된 시스템은 아래와 같은 장점이 있다. 컴포넌트별 캡슐화가 잘 되어 있어 병렬 개발할 수 있으며 이는 시스템 개발 속도를 높인다. 시스템 관리 비용을 낮춘다. 캡슐화로 인해 오류 발생 시 컴포넌트별로 빠르게 파악할 수 있고 디버깅 시 연관도가 낮아 수정 개발이 편리하다. 성능 최적화를 할 수 있다. 완성된 시스템을 프로파일링해 최적화할 컴포넌트를 정해 해당 컴포넌트만 수정 & 변경을 통해 최적화할 수 있다. 소프트웨어 재사용성을 높일 수 있다. 큰 시스템을 제작하는 난이도를 낮춰준다. 접근 제한자(private, protected, public)와 ..

[데이터베이스] log4jdbc 로그 출력하기 - resultsettable이 정상적으로 로그에 나오지 않을 때

log4jdbc 로그 출력 배경 : case 1. 동일한 환경인데 특정 서버에서 resultsettable = "INFO"로 설정했음에도 로그 파일에 쿼리 실행 결과인 조회된 데이터가 table 형태로 로그에 남지 않음. 원인 : datasource의 driver class name이 문제 jdbc-url이 jdbc:log4jdbc:mysql://localhost:3306/~ 였는데 driver class name은 org.mariadb.jdbc.Driver 였기에 log4jdbc를 활요하지 못 한 log4jdbc를 사용하려면 jdbc-url에도 log4jdbc가 포함되어야하고 driver class는 net.sf.log4jdbc.sql.jdbcapi.DriverSpy로 설정되어야 한다.

리눅스 자바 설치 및 오류 정리(Linux Java installation and error correction), java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

AWS 리눅스에 자바를 깔면서 이번에 삽질을 좀 하게 되었고, 그것을 정리하여 남겨보려고 합니다. 시간이 지난 뒤에 작성하여 다소 두서없는 내용일 수 있으니 참고하시기 바랍니다. 1. 에러 메시지: java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory 2. 상황: openJDK가 깔려 있는 리눅스에 Oracle JDK를 설치하고 java 관련 명령어를 사용했을 때. 3. 해결방법여러가지 방법을 시도했는데 어떤 것이 해결한 방법인지 확실하지 않습니다. 3.1. vi /etc/ld.so.conf.d/java.conf 를 통해 아래와 같이 내용 추가 (이 경로는 ..