반응형

@Positive : 양의 정수의 값만 입력

@NotBlank : null, "", " " 허용하지 않음

@NotEmpty : null, "" 허용하지 않음

@NotNull : 모든 데이터 타입에 null을 허용하지 않음

@Pattern(regexp="Y|N", message="Y 혹은 N의 값을 입력 받음") : 정규식을 통해서 원하는 값만 받을 수 있도록 함
message 옵션을 통해서 에러메시지 정의가 가능함

 

728x90
반응형

mysqldump를 통해서 특정 기간에 해당하는 데이터를 --w옵션을 사용해서 백업을 하였다. 

그런데 어느 시점 부터 원하는 날짜가 아닌 다른 시간 데로 백업이 된것 이다. 

알고 보니... mysqldump가 timstamp 유형의 필드 데이터를 백업할경우 내부적으로 UTC 시간으로 백업을 하는 것이 었다. 

mysqldump 공식 문서를 찾아보니 ... 이를 해제할 수 있는 옵션이 있어서 해결하게 되었다.

 mysqldump --single-transaction --skip-tz-utc -u$1 -p$2 --no-create-info $3 $4 -w"log_time>$5 AND log_time<$6"

그것은 --skip-tz-utc 라는 옵션이었다. 

--tz-utc=false, --tz-utc=true 혹은 다음과 같은 옵션을 줘도 괸찮다고 한다.

이 옵션을 주었을 경우 DB에 들어간 데이터 시간을 기준으로 dump를 하게 되었다.

https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

 

MySQL :: MySQL 8.0 Reference Manual :: 4.5.4 mysqldump — A Database Backup Program

4.5.4 mysqldump — A Database Backup Program The mysqldump client utility performs logical backups, producing a set of SQL statements that can be executed to reproduce the original database object definitions and table data. It dumps one or more MySQL da

dev.mysql.com

https://mariadb.com/docs/reference/mdb/cli/mariadb-dump/tz-utc/

 

Open Source Database (RDBMS) for the Enterprise | MariaDB

MariaDB is the leading enterprise open source database with features previously only available in costly proprietary databases. Enterprise grade, wallet friendly.

mariadb.com

위 사이트에 가게 되면 mysqldump의 많은 옵션들이 잘 설명 되어있다.

물론, 영어로 되어있어서 파악하기는 힘들지만 말이다.

728x90
반응형

개발 중 코드 중에서 Runnable lambda 문법을 이용해서 Thread 코드를 구현을 하였다. 

그런데 Thread 코드 내부에서 서블릿의 remote ip 코드가 일부 위치로 옮기면 ip정보가 유실하는 현상이 있었다. 

좀더 인터넷을 찾아보니, Servlet은 클래스 안에 멤버 변수를 사용하게 되면 모든 request에서 해당 변수를 공유 하기 때

문에 메서드 안에 지역 변수로 사용하라고 경고 되어 있다.

즉, Servlets은 클래쓰에 전역 변수를 사용하게 되면 session당 해당 변수를 공유하기 때문에 사용하면 안되고, Servelt 변

수를 사용하고 싶으면 메서드 지역변수에 저장해서 쓰라는 말이다.

public class ExampleServlet extends HttpServlet {

    private Object thisIsNOTThreadSafe;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object thisIsThreadSafe;

        thisIsNOTThreadSafe = request.getParameter("foo"); // BAD!! Shared among all requests!
        thisIsThreadSafe = request.getParameter("foo"); // OK, this is thread safe.
    } 
}

출처 : https://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-sessions-shared-variables-and-multithreadi/3106909#3106909

 

How do servlets work? Instantiation, sessions, shared variables and multithreading

Suppose, I have a webserver which holds numerous servlets. For information passing among those servlets I am setting session and instance variables. Now, if 2 or more users send request to this se...

stackoverflow.com

그래서 다음과 같이 Servlet에서 받은 원격지 주소를 메서드 안에 지역 변수로 초기화해서 사용하였다.

String remoteIp = req.getRemoteAddr();//중요!!!
if (returnCode == -22) {

  Runnable runnable = () -> {
    try {
      TCPSocketUtil tcpSocketUtil = new TCPSocketUtil(installDBProperty.getSocketAddress(),installDBProperty.getSocketPort());
      jObj.addProperty("event", SocketEventNames.LOGIN_LOCK.getEventName());
      jObj.addProperty("remote_ip", remoteIp);
      jObj.addProperty("userid", loginAccountVO.getUserId());
      jObj.addProperty("auth", "manager");
      jObj.add("uids", uidsArr);
      tcpSocketUtil.sendMsg(gson.toJson(jObj));
    } catch (Exception e) {
      e.printStackTrace();
    }
  };

  Thread thread = new Thread(runnable);
  thread.start();

}
728x90

+ Recent posts