본문 바로가기
반응형

전체 글99

[JAVA] Optional 개념 및 사용법, 예제 1. Optional이란? 개발을 하다 보면 NullPointException(NPE)을 만나게 된다. 가장 많이 발생하는 에러 중 하나라고 하는데, 이를 피하기 위해선 null을 체크하는 로직이 추가되어야 한다. DeviceVo deviceVo = deviceDao.findById(deviceId); //id에 해당하는 데이터가 없다면 deviceVo는 null이다. deviceVo.getName(); //deviceVo는 null이기 때문에 NullPointException이 발생한다. deviceVo.getModel().getModelId(); //deviceVo가 null이 아니더라도 Model이 null이면 NullPointException이 발생한다. if(deviceVo != null){ d.. 2022. 1. 21.
[Intellij] finished with non-zero exit value 1 에러 Execution failed for task ':TestApplication.main()'. > Process 'command 'C:/Program Files/Java/jdk-9.0.4/bin/java.exe'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 1. File > Settings ( 단축키 : Ctrl + Alt + S ) 2. Build, Execution, Deployment > Build To.. 2022. 1. 20.
[Web] XFF - Load balancers 혹은 Proxy 환경에서 Client IP 가져오기 기존에는 request.getRemoteAddr(); 를 통해 Client의 IP를 가져왔는데 웹서버나 WAS 앞에 L4와 같은 Load balancers나 Proxy server, caching server등이 있는 경우는 원하는 결과를 얻지 못하는 것을 발견하였다. 이런 제품은 웹서버 혹은 WAS에 HTTP나 AJP 요청을 보낸 후 받은 결과를 가공하여 클라이언트에 재전송하기 때문에 위와 같은 현상이 발생한 것이다. ( 클라이언트 IP -> 로드밸런서, 프록시 장비 -> 웹서버 ) 그래서 등장한 것이 XFF(X-Forwarded-For)이다! XFF 에는 Client와 Proxy IP 가 콤마를 구분자로 들어가게 되어있는데 순서는 아래와 같기 때문에 첫번째 IP를 가져오면 Client의 IP를 획득할.. 2022. 1. 20.
[Linux] OOM Killer란? Kill 대상에서 제외시키기 회사에서 다른 팀들과 공용으로 사용하는 서버가 있는데 자꾸 이유없이 무작위로 프로세스가 죽는 현상이 발생했다. 각 프로젝트의 로그를 봐도 특별하게 남아있는게 없었고.. 원인은 메모리가 부족하여 리눅스 커널이 OOM Killer 작업을 실행한 것! OOM Killer란 ? OOM : Out of Memory 메모리 부족시 메모리를 확보하기 위한 것으로 프로세스의 메모리 할당시 메모리가 부족한 상황을 해결하기 위해 linux kernel이 OOM Killer를 실행한다. (점수를 매겨 높은 점수를 받은 프로세스를 죽여 메모리를 확보함) 프로세스를 종료시키는 순위 oom_badnesss() 메소드에서 프로세스별 점수를 계산하여 선택 OOM Killer는 점수를 매겨 가장 높은 점수를 받은 프로세스부터 kill.. 2022. 1. 18.
[DB] UUID를 PK(Primary Key)로 사용하는 이유? UUID란? Universally unique identifier 네트워크 상에서 고유성이 고장되는 ID를 만들기 위한 표준 규약으로 랜덤하게 생성되는 값이며, 중복될 확률이 0%는 아니지만 매우 희박하다. DB 관련 서적을 보거나 서치를 하면 PK를 auto_increment로 사용하는 경우가 많고, 이렇게 사용하는게 좋다고들 얘기한다. PK를 auto_increment로 사용하는 것은 좋지만 이 PK값이 URL 혹은 공개된 곳에 노출된다면? 이 값은 단순하게 증가하는 값이라 유추하기 쉽고, 이로 인해 다른 데이터에 쉽게 접근할 수 있다. 즉, 예측 가능한 모델이 되므로 크롤링이나 인젝션 공격에 더 취약하다. 따라서 쉽게 유추할 수 없도록 UUID를 PK로 사용하게 되는 것! 2022. 1. 17.
[Spring] @Transactional이 적용되지 않을 경우(롤백이 안되는 이유) 1. Checked Exception일 경우 사실 이 항목에 대한 설명을 위해 어제 java의 error와 exception에 대해 포스팅을 했다. Checked Exception이 뭔지 모른다면 먼저 아래 포스팅을 보고 오는 것을 추천! [Java] Error, Checked Exception, Unchecked Exception 비교 자바에서는 예외를 크게 Error와 Exception으로 구분하고, Exception은 RuntimeException 상속 여부에 따라 Checked Exception, Unchecked Exception으로 구분된다. Error 시스템에 비정상적인 상황이 발생한 경.. ynzu-dev.tistory.com Checked Exception는 예외상황 발생시 롤백처리를 하.. 2022. 1. 13.
728x90
반응형