[MySQL] datetime 의 default value 설정하기

ALTER TABLE "테이블명" MODIFY COLUMN create_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;

[Tomcat] java.lang.NoClassDefFoundError: org/springframework/security/taglibs/authz/AuthorizeTag

 서비스가 정상적으로 올라오지 않아 톰캣로그를 확인하던중 아래와 같은 에러를 확인했다. java.lang.NoClassDefFoundError: org/springframework/security/taglibs/authz/AuthorizeTag  톰캣이 오래된 security.tld (태그 라이브러리) 를 캐시하고 있어서 발생하는 문제이다. 해결방법은 톰캣 홈경로에 위치해 있는 work 디렉토리를 지워주고 재시작을 하면 된다.  나의 경우 /usr/local/apache-tomcat/work 에 위치해 있었으며 해당 폴더를 삭제하여 정상작동 하였다. refs : http://stackoverflow.com/questions/7678421/spring-security-3-1-java-lang-classnotfoundexception-org-springframework-securi

[JAVA] String.lengh() VS String.getBytes().length

http://www.pixelstech.net/article/1427944920-String-length()-vs-String-getBytes()-length-in-Java UI 에 response 타입에 content-length 를 String.lengh()로 보냄 길이가 다름. (원래 길이보다 모자르게 감) String.getBytes().length로 해야 일치.

[MySQL] Error Dropping Database (Can't rmdir '.test\', errno: 17)

InnoDB가 깨져서 복구가 불가능해 졌다. 덤프 데이터가 있어서 Database 를 drop 후 다시 생성하려 했지만 아래와 같은 에러가 발생하면서 drop이 되지 않았다.  Error Dropping Database (Can't rmdir '.데이터베이스명\', errno: 17) 위의 에러는 MySQL에서 data 디렉토리에 위치한 Database 관련 디렉토리를 삭제하지 못해서 발생한다. 이러한 경우에는 MySQL에서 Database를 저장하는 디렉토리에 가서 직접삭제를 해주어야 한다. 예를 들어 DB가 설치된 경로가 /usr/local/mysql 이고, drop 하고자 하는 Database가 test 라면 아래와 같이 진행한다. cd /usr/loacl/mysql/data   (Database 가 저장 된 폴더) rm -rf test (test Database 폴더 삭제) mysql 에 접속 create database test; (Database 다시 생성) refs : http://stackoverflow.com/questions/4584458/error-dropping-database-cant-rmdir-test-errno-17

[MySQL] 외부에서 IP로 MySQL로 연결 시 Connection 이 느려지는 현상 해결

 운영하고 있던 서버중 하나에서 DB 연결을 하는데 6초 가량 걸리는 일이 발행하였다. 이전에는 문제가 없었기에 살펴보던 중 MySQL에서 IP로 접속 시 DNS lookup 즉, IP 와 hostname 이 일치하는가를 확인하는 과정에서 연결이 지연될 수 있음을 확인하였다. /etc/my.cnf 파일에 [mysqld] 항목 아래에 --skip-name-resolve 옵션을 추가하여 해결. 주의 : --skip-name-resolve 옵션을 사용한다면, 호스트명 대신 IP로만 접속을 할 수 있다. refs : http://dev.mysql.com/doc/refman/5.7/en/host-cache.html http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_skip-name-resolve

[JAVA8] 중복제거 하기

import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; public class Distinct { public static void main(String[] args) { System.out.println("defaultDistinctWithOnlyString"); List names = Arrays.asList("aaa", "bbb", "ccc", "ddd", "aaa", "ccc", "aaa", "aaa"); List distinctList = names.stream().distinct().collect(Collectors.toList()); distinctList.forEach(System.out::println); // result : aaa , bbb, ccc , ddd // 다음의 경우에는 기대와는 다른 결과가 나올 수 있다. Person p1 = new Person(); Person p2 = new Person(); Person p3 = new Person(); Person p4 = new Person(); Person p5 = new Person(); p1.setName("aaa"); p1.setAge(20); p1.setHeight(175); p2.setName("bbb"); p2....

[JAVA8] 람다식을 이용하여 Sorting 하기

public class SortVO { // 숫자 비교를 하기위해 int 가 아닌 Integer로 선언 Integer no; String name; public Integer getNo(){ return no; } public void setNo( Integer no ){ this.no = no; } public String getName(){ return name; } public void setName( String name ){ this.name = name; } } public class LambdaSortingTest { public static void main( String[] args ){ SortVO st1 = new SortVO(); SortVO st2 = new SortVO(); SortVO st3 = new SortVO(); SortVO st4 = new SortVO(); SortVO st5 = new SortVO(); SortVO st6 = new SortVO(); st1.setNo(111); st2.setNo(212); st3.setNo(3232); st4.setNo(443); st5.setNo(5); st6.setNo(622); List list = new ArrayList (); list.add(st1); list.add(st2); list.add(st3); list.add(st4); list.add(st5); list.add(st6); System.out.println(" >"); list = list.stream().sorted(( e1, e2 ) -> e1.getNo().compareTo(e2.getNo())).collect(Collectors.toList()); list.forEach(e -> System.o...