https://stackoverflow.com/questions/7405046/can-i-auto-restart-tomcat-jvm-on-out-of-memory-exception

 

Can I auto restart tomcat jvm on out of memory exception

I know that this is not "best practice" but I would like to know if I can auto restart tomcat if my deployed app throws an outofmemory exception

stackoverflow.com

 

-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"

 

를 하면 된다고 함

 

Posted by 삽지리
,

org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate

xxxx.xxx.xxx(패키지 경로)

using constructor 

xxxx.xxx.xxx

(long ,long,java.lang.String,int,int) 

with arguments 

null ,1578374290,,0,1

 

와 같이 오류가 발생

원인은 첫번쨰 long이 새로 추가된 필드라 mongodb에 없는 값이기 때문에 생성자에서 null을 넣었는데 long이라서 

오류가 나온것

long을 Long로 수정하여 처리함

 

Posted by 삽지리
,

Thread Dump

카테고리 없음 2019. 12. 17. 10:36

https://brunch.co.kr/@springboot/126

 

Thread Dump 분석하기

- 쓰레드 덤프 분석하기 | 쓰레드 기본 개념을 간단하게 정리하고, 간단한 예시를 통해서 쓰레드 덤프를 분석하는 방법에 대해서 공유한다. 쓰레드 개념 정리 쓰레드 기본 개념을 정리한다. 쓰레드란? 생략한다. 알아서 찾아보길 바란다. 쓰레드 종류 쓰레드는 데몬 쓰레드(Daemon Thread)와 비데몬 쓰레드(Non-daemon Thread)로 나눌 수 있다. 데몬 쓰레드는 일반적인

brunch.co.kr

 

1. jstack 11111 > 파일명

처럼 jstack pid > 파일명으로 thread dump 를 뽑아낸다.

2. https://fastthread.io/

 

fastthread.io

Ultimate DevOps Tool fastThread liberates DevOps from engaging vendors to troubleshoot your production problems. This highly effective and efficient tool allows DevOps to instantly identify and resolve root cause issues in matter of seconds. Designed with

fastthread.io

에서 조회

Posted by 삽지리
,

flyway 관련

카테고리 없음 2019. 12. 12. 10:42

flyway적용을 위한 가이드

 

적용방법 

  1. build.gradle에 추가한다.

//flywaydb
    implementation('org.flywaydb:flyway-core:5.2.4')

    2. application.properties 에 추가한다.

spring.flyway.url=${접속주소}
spring.flyway.user=${DB유저}
spring.flyway.password=${DB패스워드}
spring.flyway.locations=${설정파일위치:classpath:/db/migration}
spring.flyway.baseline-on-migrate=true
spring.flyway.baseline-version=0

주요 설정내용 설명

  1. spring.flyway.baseline-on-migrate 

    1. 기본값 false

    2. false로 하려면 히스토리 테이블(flyway_schema_history)이 생성되어 있어야함

    3. true로 하면 히스토리 테이블이 없을 경우 생성함

  2. spring.flyway.baseline-version

    1. 기본값 1

    2. 히스토리테이블이 없을 경우 히스토리 테이블을 생성하면서 baseline정보를 입력하는데 그때 시작하는 버전정보

    3. 보통 버전파일이 V1__의 형태로 버전1부터 시작하기 때문에 0으로 하는 것을 추천 아니면 일부러 버전을 바꿔서 특정 버전 이상부터 적용가능함 (0으로 하는 이유는 주의할 점에서 설명)



주의할점

  1. 테이블이 없는 상태에서 아래와 같이 spring.flyway.baseline-version의 별도 설정없이 설정하고 미리 히스토리 테이블(flyway_schema_history)이 생성되어 있지않다면

spring.flyway.baseline-on-migrate=true
  1. 아래 사진과 같이 V1,V2,V3를 반영하려고 해도 baseline이 1부터라서 V2,V3만 적용될 수 있음



참조 

  1. https://flywaydb.org/documentation/configfiles

 

기타

  1. gradle에 flyway플러그인을 설정하는 것은 gradle을 통해서 flyway명령어를 실행하기 위한 설정으로 flyway명령을 gradle를 통해서 쓸게 아니라면 딱히 설정할 필요 없음

  2. flyway는 url을 파싱하여 드라이버를 자동선택하고 있음

    1. 참조 : https://flywaydb.org/documentation/configfiles > Reference





Posted by 삽지리
,

https://k9e4h.tistory.com/138

 

[javascript] null / undefined / empty

javascript null,undefined,empty 확인 방법 1. 배열이 비어있는지 확인 할때 1 if( !array.length ) cs 2. 배열에 뭔가가 들어있는지 확인 할때 1 if( array.length ) cs 3. 문자열이 비어있는지 확인할때 1 if(!..

k9e4h.tistory.com

 

결론은

if ( foo === null || foo === undefined )

 

이걸 쓰지말고 

 if ( foo == null )

 

이걸쓰면 ==에 의해 강제형변환이 되서 체크 가능하다는 이야기

 

 

참고

 

 

문자열은

!string 으로 체크

 

아래 참고이미지를 보면

a와 같은 케이스 때문에 

a == true 같은 형변환을 쓰면 안됨

a의 문자열 0이 숫자0처럼 false가 되버림

 

참고

 

Posted by 삽지리
,

위도는 -90(남반구) ~ +90(북반구) 

경도는 -180~+180까지임

위도는 문제가 없는데 경도가 문제

왼쪽으로 갈수록 경도가 작아지는데

-179에서 왼쪽으로 가면 -180 더 왼쪽으로 가면 +180이 된다.

그러므로 범위를 잡을때 sw(south west) ne(north east)를 기준으로 범위를 잡을때

한좌표가 범위안에 속하는지 여부에 대한 계산이 복잡해짐

 

 보통은

 

-30, -30 ~ +40, 40

이런식으로 범위가 잡힐텐데

-30, +178 ~ 40 , -178

처럼 위도의 경우 w값이 양수고 east값이 음수인 경우도 발생함

 

 

그래서 아래와 같이 체크해야됨

function test(point,west,east){
	
	if(west <= east){
		if(point >= west && point<=east){
			return true;
		}else{
			return false;
		}
	}else{
		if(point >= west || point <= east){
			return true;
		}else{
			return false;
		}
	}

}


console.log(test(1,2,3) == false);
console.log(test(1,-10,3) == true);
console.log(test(1,178,-178) == false);
console.log(test(179,178,-178) == true);
console.log(test(-179,178,-178) == true);

 

Posted by 삽지리
,

오라클 11g에서 connect by 문이 정상작동하지 않음

아예 결과가 안나봐버림


10g에서는 정상작동함


찾다보니

optimizer_features_enable

와 관련된 글이 있었음

동작방식을 정하는건데

이걸이용해서

http://www.dba-oracle.com/t_optimizer_features_enable.htm

이글을 참조해서

select /*+ optimizer_features_enable('10.1.0') */


와 같이 하였더니 정상작동함


그래서.

SQL> ALTER SYSTEM SET optimizer_features_enable='10.2.0.4';

SQL> ALTER SESSION SET optimizer_features_enable='10.2.0.4';


로 수정해버림





Posted by 삽지리
,

https://github.com/harawata/mybatipse

Posted by 삽지리
,

ibatis는 insert시 object를 반환하고

mybatis는 insert시 int를 반환한다.

아마

selectkey에 대한 처리가 바뀐듯..

ibatis에서는 selectkey를 사용시 반환받는값이 selectkey의 리턴값이었는데


mybatis는 update처럼 처리된 건수를 반환한다.


Posted by 삽지리
,

네이버 개발컨퍼런스 관련 글을 읽다가 나온것이라 좀 찾아보았는데

성능과 관련된 이슈.

모바일 브라우저는 한개의 도메인에 대해서 동시 커넥션 수를 제한하는데 

이로 인한 화면이 늦게 로딩되는 이슈를 막기위해

여러개의 도메인으로 자원을 나누는 기법.

예를 들어 메인페이지에 이미지가 100개면

test1.aaa.com과

test2.aaa.com의 ip를 같게 하여 도메인은 다르되 같은 자원을 보게 한다는 느낌?

Posted by 삽지리
,