클라이언트 IP 가져오기 서버로의 요청이 프록시나 로드 밸런서를 거칠 때 클라이언트의 실제 IP 주소를 정확하게 가져오는 방법에 대해 알아보겠습니다. 기본적인 방법과 프록시 서버, 로드 밸런서 등의 환경에서 사용할 수 있는 방법을 설명하겠습니다. 기본 방법 : request.getRemoteAddr() 가장 기본적인 방법으로 HttpServletRequest 객체의 getRemoteAddr() 메서드를 사용하면 클라이언트의 IP 주소를 가져올 수 있습니다. import javax.servlet.http.HttpServletRequest;private String getClientIpAddress(HttpServletRequest request) { request.getRemoteAddr();} 이..
함수(Function)와 메서드(Method) 두 단어의 차이에 대해 정리한 글입니다.우선, 함수와 메서드는 프로그래밍에서 기능 단위의 코드 블록입니다. 그러나, 일반적으로 함수와 메서드는 객체지향 프로그래밍과 절차지향 프로그래밍에 따라 약간의 차이가 있습니다.함수(Function)란?함수는 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합입니다.함수는 절차지향 프로그래밍에서 사용되며, 데이터를 입력받아 처리하고 결과를 반환합니다. 함수는 프로그램의 구조화와 코드 재사용을 위해 사용되기 때문에 여러 곳에서 호출되어 사용이 가능합니다.하나의 기능이 하나의 함수로 구현되어 있기 때문에 디버깅 작업이 편리해집니다.메서드(Method)란?메서드는 객체지향 프로그래밍에서 사용되며, 메서드는..
가장 기본인 참조형 객체 String에 대해 알아보려고 합니다. String 객체를 생성하는 데 방법은 두 가지가 있습니다. 첫 번째로 리터럴 방식("")으로 생성하는 것과 두 번째로 new 키워드로 생성하는 방법이 있습니다. 우선, 간단하게 String 객체를 저장하는 메모리 영역을 그림으로 보여드리겠습니다. 위 그림은 Java의 힙 메모리 영역입니다. 여기서 new 키워드로 String 객체를 생성하게 되면 Heap 영역에 메모리가 생성되고, 리터럴 방식으로 사용하게 된다면 Heap 영역의 내부에 있는 String constant pool 영역에 생성됩니다. String은 불변성을 지니고 있어 한번 저장된 값은 변하지 않습니다. 그러면 자바는 내부적으로 String 객체를 업데이트할 때 기존에 있는 ..
Error Message error : illegal start of type 번역 : 잘못된 유형 시작 Cause class Solution { public String solution(String[] seoul) { int i = 0; for (String s : seoul) { if (s.equals("Kim")) { break; } i++; } } return "김서방은 " + i + "에 있다"; } Illegal start of type 오류는 일반적으로 Java에서 발생하는 컴파일 타임 에러입니다. 다음과 같은 상황에서 발생합니다. 잘못된 선언 : 변수 또는 메서드의 선언이 잘못되었을 때 발생합니다. 스코프 문제 : 클래스, 메서드, 블록 내의 선언이 올바르게 이루어지지 않았을 때 발생합니다..
Error Message error: incompatible types: String[] cannot be converted to char[] 번역 : 호환되지 않는 유형입니다: 문자열[]을 문자[]로 변환할 수 없습니다. Cause class Solution { boolean solution(String s) { int p = 0; int y = 0; char[] chars = s.toUpperCase().split(" "); ... } } 이 에러 메시지는 String[] 타입의 결과를 char[] 타입의 변수에 할당하려고 할 때 발생합니다. split(" ") 메서드는 문자열을 분할하여 String[] (문자열 배열) 형태로 반환합니다. 그러나 코드에서는 char[] (문자 배열)로 이 결과를 받으..
Error Message error: no suitable method found for split(no arguments) 번역 : split(인자 없음)에 적합한 메서드를 찾을 수 없습니다. Cause class Solution { boolean solution(String s) { ... s.toUpperCase().split(); ... } } split() 메서드에 필요한 인자가 제공되지 않았을 때 발생하는 에러입니다. split() 메서드는 문자열을 분할하는 데 사용되며, 이를 위해 하나 이상의 문자열을 인자로 받아야 합니다. 이 인자는 분할 기준이 되는 정규 표현식을 나타냅니다. 예를 들어, 문자열을 공백을 기준으로 분할하려면, split(" ")와 같이 사용해야 합니다. 하지만 여기서는 s..
ExceptionMessage Exception : java.lang.ArrayIndexOutOfBoundsException: Index x out of bounds for length x번역 : java.lang.ArrayIndexOutOfBoundsException: 길이 x에 대한 인덱스 x 범위를 벗어났습니다.Causeclass Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; answer[0] = x; for (int i = 1; i ArrayIndexOutOfBoundsException 오류는 배열의 인덱스가 배열의 길이를 벗어났을 때 발생하는 예..
Error Message error: unreachable statement 번역 : 도달할 수 없는 명령문 Cause class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i
Error Message error: incompatible types: possible lossy conversion from long to int번역 : 호환되지 않는 유형 : long에서 int로 손실 변환 가능Causeint는 정수형 변수로 실수형을 int로 변환하면 소수점에 있는 수가 손실돼요..long을 int로 저장하는 것은 손실되는 값이 존재하기 때문에 Java에서는 허용하지 않습니다..!Solution1. solution우선, long값을 int로 변환하기 전에 값이 int 범위 내에 있는지 검사하는 방법이 있습니다.이렇게 하면 값이 손실되지 않게할 수 있습니다.long longVal = 123456789L;if (longVal >= Integer.MIN_VALUE && longVal 2..
Error Messageerror : missing return statement번역 : 반환문 누락Casue이 에러는 반환값을 요구하는 메서드에서 반환문이 누락되었거나, 모든 분기에서 반환을 보장하지 않는 경우에 발생합니다. 주요 원인은 다음과 같습니다.메서드의 반환값이 있는데 반환문이 누락된 경우public int solution(int n) { // 반환문 누락}모든 분기에서 반환을 보장하지 않는 경우public int solution(int n) { if (조건문) { return 1; } // 조건문이 false일 때 반환문 누락}예외 처리가 필요한 상황에서 예외를 처리하지 않은 경우public int solution(int n) { if (조건문)..