본문 바로가기

전체 글266

DBMS 버전 확인 쿼리 OracleDB select * from v$version; MySQL/MariaDB select version(); PostgreSQL select version(); DBMS 버전을 확인하려면 위의 쿼리들을 실행하면 된다. 다른 방법들이 있지만 쿼리를 사용하는 것이 DBMS에 상관없이 공통적이고 깔끔하다. 쉘이나 명령 프롬프트에서 명령어를 입력하거나 DBMS가 시작될 때 나오는 버전을 확인하는 방법 등이 존재한다. 2022. 8. 21.
java.util.Date, java.util.Calendar 클래스를 사용하면 안 되는 이유 java.util.Date, java.util.Calendar 클래스는 자바에서 날짜, 시간 관련 작업이나 연산을 수행하기 위한 클래스이다. 자바가 발전해감에 따라 두 클래스의 문제점이 드러나기 시작했고 JDK 1.8에서 두 클래스를 대체할 java.time 라이브러리가 등장하였다. Date, Calendar 클래스를 사용하지 말아야 하는 이유를 나열하면 다음과 같다. 두 클래스 mutable 하기 때문에 객체의 메서드나 변수를 수정할 경우 참조하는 객체들의 값들이 변경된다. calendar의 상수를 남용할 가능성이 있다. 월 값이 0부터 시작하여 직관적이지 않다. timezone이 없다. 새로운 JDK가 계속 출시되면서 대부분의 메서드는 deprecated되었다. 이름은 date인데 실제로는 date와.. 2022. 8. 1.
[20220724] 개발자 일기 지난주에 개발자 일기랑 글을 따로 못 썼는데 회사 과업 중에 해결이 안 되는 문제가 있었기 때문이다. 공공기관의, 그것도 자사 CMS가 아닌 프로젝트여서 구조 파악에 애를 먹었다. 여기는 model 객체를 컨트롤러에서 서비스로 넘기고 서비스에서 attribute를 추가해준다. 그러다 보니 jsp에서 어디서 변수가 추가됐는지 찾기 위해 컨트롤러로 가보면 해당 변수가 보이지 않는 황당한 일이 발생한다. 이 사실도 전에 이 프로젝트를 맡았던 팀원한테서 들어서 알게 됐다. 규칙성 없는 변수와 복잡한 SQL문은 말할 필요도 없다. 거기다 접수 종료일이 지나도 시작일보다 전이면 신청이 가능하게 해 달라는 이상한 요구사항은 내 머리를 너무 아프게 했다. 그런 일이 있어서 지난주에는 글을 못썼다. 변명은 이 정도까지만.. 2022. 7. 24.
String, StringBuffer, StringBuilder 비교 mutable immutable 동기화 지원, thread-safe StringBuffer String 동기화 지원 안 함 StringBuilder String, StringBuffer, StringBuilder는 모두 문자열을 다루는 클래스이다. 하지만 각각 다른 특성을 갖고 있다. 먼저, String은 불변(immutable) 속성을 가진다. '불변'이란 메모리의 한 공간에 처음 값이 할당되고 나면 변하지 않음을 뜻한다. 그렇다고 한 번 할당한 변수에 다시 할당한다고 예외나 오류가 발생하지 않는다. 이때는 새로운 값을 가진 객체를 새로 생성하고 그 객체를 가리키게 된다. 처음에 생성된 객체는 힙 영역에 남아 있다가 가비지 컬렉션의 대상이 된다. 값을 할당할 때마다 새로운 객체가 생성되므로, Strin.. 2022. 7. 24.
728x90