본문 바로가기

전체 글94

이펙티브 자바 4장 규칙14. public 클래스 안에는 public 필드를 두지 말고 접근자 메서드를 사용하라 Public 클래스의 경우 선언된 패키지 밖에서도 사용가능한 클래스에는 접근자 메서드를 제공하라. 그래야만 클래스 내부 표현을 자유로이 수정 가능하게 됌 하지만, immutable 필드의 경우 필드를 외부로 공개한다고 해도 심각성이 좀 덜할 순 있음 그래도 그럴 필요가 있는지는 의문 Package-Private 클래스나 private중첩 클래스의 경우 데이터 필드를 공개하더라도 잘못은 아님. 되려 더 깔끔한 코드가 될 수도 있음. 결론적으로, 되도록 필드를 외부로 공개하는 행위는 하지 않는 것이 좋다는 것. 2021. 3. 14.
이펙티브 자바 4장 규칙13. 클래스와 멤버의 접근권한은 최소화하라 13장. 클래스와 멤버의 접근권한은 최소화하라. 잘 설계된 모듈의 경우, 구현 세부사항을 다른 모듈에 잘 감추어야 함. 즉, 정보은닉 및 캡슐화가 잘 되어야 함 이를 위한 원칙 1. 각 클래스와 멤버는 가능한 한 접근 불가능하게 만들어야 한다 2. 최소한의 public API를 설계하고 다른 모든 클래스, 인터페이스, 멤버는 API에서 제외할 것 3. Public static final 필드를 제외한 어떤 필드도 public 선언하지 말라. 4. Public static final 필드가 참조하는 객체는 변경불가능 객체로 만들라. 2021. 3. 14.
[Spring] JSP 한글깨짐 수정 다시금 스프링을 처음 배웠을 때의 기억을 되살리려 Spring 프로젝트를 혼자 구축해보고, 평소 일 할 때는 직접 구현을 잘 하지 않는 이런저런 기능들을 구현해보기로 했음. 최근 업무를 하며 대용량 엑셀 다운로드 기능을 구현할 일이 있었는데, 속도가 나지 않아 직접 다운로드 로직을 구현함. 이 경험을 계기삼아서 오늘부터 책도 읽으면서 간단한 실습을 조금씩 해보고자 함. 기존에 깔아놓은 톰캣을 추가했는데, 뭔가 파일이 꼬였는지 제대로 config 파일을 불러오지 않아, 재설치를 하였음. 프로젝트를 하나 추가하고, 서버를 시작한 후 생각없이 http://localhost:8080/ 를 쳤는데 404 에러가 떠, tomcat 서버의 module 탭에 내가 추가해준 프로젝트의 경로를 '/' 로 수정. home... 2021. 3. 13.
[JAVASCRIPT] Date 의 getMonth() 2021.03.11 급하게 기록. 자바스크립트의 Date 객체를 사용할 일이 있었다. 지정한 날짜보다 4달 이전의 날짜를 구해야 했는데, getMonth() 로 날짜를 구하니, 예상했던 날짜와 다르게 보였다. 예를들면, 나는 03월로 날짜를 생성했는데, 생성한 객체를 출력해보면 April을 출력하였다. 구글링을 해보니, getMonth() 함수의 경우, 0(zero) 베이스라, 0이 결국은 1월을 의미한다는 것을 알게 되었다. 따라서, 내가 원하고자 하는 결과를 얻기 위해서는 3이 아닌 2로 월을 설정해야한다는 사실을 알게 되었다. + javascript 의 prototype 에 대한 공부를 해서 정리할 예정. 2021. 3. 11.
[SQL] ROWNUM 적용한 페이징 쿼리 SELECT A.* FROM (SELET ROWNUM AS RNUM , EMPL.PERS_NO , INFO.KOR_NM , EMPL.STAFF_FG FROM ( SELECT PERS_NO , STAFF_FG FROM EMPL WHERE ROWNUM = '1' 사실, 대용량이라고 하기도 애매한 건수이지만, 어쨌든 성능이 안나오는 쿼리에 페이징을 적용해야 할 일이 생겼다. 대충 위와 같은 방식으로 쿼리를 짜 페이징 적용을 했다. ROWNUM 을 사용한 것 외에도, 안쪽 테이블에 직접 INFO 테이블을 LEFT 조인을 걸고 있었는데 이를 바깥으로 빼 페이징이 적용된 데이터들만 가지고 조인을 하도록 했다. 페이징 쿼리를 짜는 방법에 따라 속도가 조금씩 차이가 나는 것 같다. 기존 쿼리에는 안쪽 EMPL 테이블 .. 2021. 2. 20.
쿼리(LEAD) SELECT PERS_NO , A.OFORD_FR_DT , CASE WHEN LEAD(A.OFORD_FG_CD) OVER (ORDER BY A.PERS_NO, A.OFORD_SEQ) LIKE 'D%' THEN LEAD(A.OFORD_FR_DT) OVER (ORDER BY A.PERS_NO, A.OFORD_SEQ) ELSE A.OFORD_TO_DT END AS OFORD_TO_DT FROM TABLE A ORDER BY A.PERS_NO, A.OFORD_SEQ 오늘은 LEAD 구문을 썼다. 특정 컬럼을 기준으로 정렬하여 자기보다 바로 다음 행의 값을 가져올 수 있음. 2021. 2. 18.