본문 바로가기

분류 전체보기957

GC overhead limit exceeded, String 대신 StringBuilder 사용 등 해결 방법 오류 중에 'Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded' 는메모리 한계를 초과 했기 때문에 발생한다. 두 가지 해결 방법은 다음과 같다. -Xmx 옵션으로 메모리를 더 할당. 메모리가 부족하여 가비지 컬렉션이 이루어 졌으나, 새로 확보된 메모리가 전체 메모리의 2% 미만이어서 생기는 오류.더 이상 가비지 컬렉션을 할 수 없을 정도로 메모리를 사용한다는 것. 기존) java -Xms1g -Xmx1g -jar Project.jar해결) java -Xms4g -Xmx4g -jar Project.jar String 대신 StringBuilder를 사용 : 문자열에 여러 가지 조작을 가할 경우 변하지 않는 문자열의 경우, String을 사.. 2018. 11. 9.
자바, 클라이언트 정보 조회 (IP, 에이전트, 브라우저, OS 정보) 자바단에서 간단하게 클라이언트 아이피, 브라우저, 운영체제 정보를 구하는 방법 공유드립니다. 클라이언트 IP String ip = request.getHeader("X-FORWARDED-FOR"); if(ip == null || ip.length() == 0) { System.out.println(request.getHeader("Proxy-Client-IP")); System.out.println(request.getHeader("WL-Proxy-Client-IP")); // 웹로직 System.out.println(request.getRemoteAddr()); } 에이전트 String agent = request.getHeader("User-Agent"); 브라우져 String brower = nul.. 2018. 11. 9.
자바 Exception:Broken pipe 오류 해결 방법 오류 발생 원인 java.net.SocketException: Broken pipe : 보통 잦은 입출력 호출로 발생된다. 처리 중인 요청(또는 응답)을 사용자가 기다리지 않고, '새로고침(또는 종료, 연속 클릭 등)'을 자주 실행하게 되면 소켓이 끊어져서 발생된다. java.io.IOException: Broken pipe : receiver에서 송신 받은 데이터를 제때 처리하지 못하는 상황(네트워크가 느리거나 서버의 CPU가 max인 경우 등)에서 sender가 계속 보내는 경우. 두 소켓상의 통신에서 소켓을 담당하던 프로세서가 갑작스런 이상으로 종료가 된 상황에서 상대 소켓은 이를 알지 못하고 데이터를 전송하려 할때 발생하게 된다. (ex, 클라이언트에서 요청을 하였는데 서버에서 작업을 완료하여 클.. 2018. 11. 9.
자바 쿠키 다루기 (쿠기 생성, 조회, 삭제) 자바 쿠키 다루는 방법 쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체이다. 서버는 응답에 Set-Cookie 헤더를 포함시키는 방식으로 쿠키를 설정한다. 쿠키는 key, 값 쌍과 선택적인 어트리뷰트들로 구성된다. 자바 쿠키 구조 쿠키의 기본 구조는 다음과 같다. Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [secure] 자바 쿠키 특징 유효기간 쿠키가 생성되면 기본적으로 브라우저가 종료될 때까지는 쿠키의 데이터를 사용할 수 있다. 하지만 유효 기간을 지정하면 브라우저가 종료되어도 지정한 기간 동안은 쿠키 데이터를 읽고 쓸 수 있게 된다. 유효 기간이 지나면 쿠키 데이터는 소멸된다. 실제로 파일이 지워지지는 않더라도 데.. 2018. 11. 8.
자바 HashMap vs Hashtable 차이점, 예제 HashMap VS HashTable 둘의 차이점을 최대한 요약해서 정리해보자면 1. HashMap은 단일 스레드 적합하며 null을 허용하지만 동기화가 안된다.2. HashTable은 멀티 스레드에 적합하고 동기화되지만 null을 입력할 수 없고 동기화에 따른 성능의 저하가 발생한다. 아래는 상세한 차이점. HashMap vs Hashtable HashMap 1) 비동기식이다. 멀티 스레드에는 적합하지 않다. 2) key, value에서 하나의 null key와 다수의 널 value를 허용한다. 3) HashMap is a new class introduced in JDK 1.2. 4) 속도가 비교적 빠르다. 5) 아래 코드를 사용하면 동기화가 가능하다. Map m = Collections.synchr.. 2018. 11. 8.
자바, 몇몇 특수문자로 split이 안될 때 해결 방법 자바 내장함수 split()을 사용하다보면 몇몇 특수 문자로는 split이 안되는 경우가 있다. 예로, 아래 문자열을 각각 ' | '와 ' ^ '으로 split 하려 시도하면 원하는 결과가 안나온다. abc가나다 | 라마 ^ 바사 tmp = "abc가나다 | 라마 ^ 바사".split("|"); // 결과: "abc가나다 | 라마 ^ 바사" 이럴 땐 \\을 붙이면 해결된다. tmp = "abc가나다 | 라마 ^ 바사".split("\\|"); // 결과: "abc가나다", "라마 ^ 바사" tmp = "abc가나다 | 라마 ^ 바사".split("\\^"); // 결과: "abc가나다 | 라마", "바사" 즉 특수 문자를 '특수 문자'가 아닌 일반 문자로 인식시키기 위해서는 \를 붙여야 하는데, \를 하.. 2018. 11. 8.