Banner

My Tech Blog (Java)

· Java
🔥 문제자바 소켓 통신에서 Gson 라이브러리 + BufferedWriter 사용 중 host 관련 에러 발생함자바에서 데몬을 만들고, 자바스크립트로 데이터를 보내려 했는데 통신이 되지 않는 문제 🔍 원인결국 TCP/IP 문제였고, 서버는 IPv4, 클라이언트(나)는 IPv6로 설정되어 있어서 호환이 안 된 것이었다.네트워크 담당자가 서버의 TCP/IP 버전을 IPv4로 설정했는데 나는 그냥 Runnable JAR을 실행해서 IPv6로 동작한 것이 원인이다. ⭐ 해결법WSL에 nohup 명령어로 JVM 옵션 추가하면 해결 가능nohup java -Djava.net.preferIPv4Stack=true -Dpath="경로" -jar 이름.jar >> server.log 2>&1 &nohup → 터미..
· Java
1. 자동 임포트 & 정리 관련 단축키Ctrl + Shift + O : 자동 임포트 (Organize Imports) → 필요한 import 추가 및 불필요한 import 정리Ctrl + Shift + F : 코드 자동 정렬 (Format Code) → 코드 스타일에 맞춰 정리Ctrl + Shift + S : 모든 파일 저장Ctrl + / : 한 줄 주석 추가 및 제거Ctrl + Shift + / : 여러 줄을 선택한 후 전체를 블록 주석(/* */)으로 감싸기Ctrl + Shift + \ : 블록 주석 해제 (/* */ 삭제)2. 코드 이동 관련 단축키Ctrl + Click : 변수, 메서드, 클래스 정의로 이동F3 : 선언된 곳으로 이동 (Open Declaration)Ctrl + O : 현재 클래..
· Java
✅ 1. Runtime.addShutdownHook()Runtime.addShutdownHook()는 자바 애플리케이션이 종료될 때 실행할 코드를 등록하는 메서드이다. 이를 활용하면 프로그램이 종료되기 직전에 특정 작업(파일 저장, 리소스 정리 등)을 수행할 수 있다. ✅ 2. JVM 종료 이벤트란?여기서 정상 또는 비정상 종료의 정의는 명세서에 나와 있다. 자바의 가상 머신은 두 가지 종류의 이벤트를 받아 종료한다.정상 종료프로그램이 정상적으로 종료될 때System.exit()가 호출될 때비정상 종료Ctrl + C(사용자 인터럽트)사용자 로그오프 또는 시스템 종료 등 시스템 이벤트⚠️ 하지만 아래와 같은 경우에는 실행되지 않을 수 있다.kill -9 (강제 종료)OutOfMemoryError 발생📌 ..
· Java
👾 문제점코테 문제 풀다가 발견한 다른 사람 코드와 내 코드의 차이점 내가 쓴 코드 (하수의 코드)Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1]); 남이 쓴 코드 (고수의 코드)Arrays.sort(targets, (a, b) -> Integer.compare(a[1], b[1])); 왜 이 분은 Integer.compare() 메서드를 썼을까?🧐 원인`Arrays.sort(targets, (o1, o2) -> o1[1] - o2[1])` 방식은 두 정수의 뺄셈 결과를 정렬 기준으로 사용한다. 하지만 이 방식은 약간의 문제점을 가지고 있다. 위 코드를 사용하면 int형의 뺄셈 연산 과정에서 오버플로우(overflow)가 발생할 가능성이 있다. 예를 들어, o1[..
· Java
1. Spring MVC 패턴이란?Spring MVC는 웹 애플리케이션에서 클라이언트의 요청을 처리하는 모듈이다. Spring MVC는 서블릿(Servlet) API를 기반으로 하여 요청을 처리하는데, 이 구조를 통해 웹 애플리케이션을 모듈화하고 유지보수를 용이하게 만들어준다.우선 Spring MVC 에 들어가기 앞어 기본적인 MVC패턴에 대해 알아보자. 이 MVC패턴에서 발전한 것이 Spring MVC 이다. MVC 패턴은 크게 3가지 주요 부분으로 나누어져 있다. 🍩 MVC 패턴을 사용하는 이유?사용자가 보는 페이지, 데이터 처리, 그리고 이 둘을 중간에서 제어하는 컨트롤러로 각 컴포넌트가 서로 분리되어 시스템 결합도를 낮출 수 있다. 또한, 유지보수가 쉬우며, 중복코드를 제거할 수 있고, 애플리케..
· Java
1. 데이터 전송 규칙 3가지1-1. 어디로 (form 태그의 action 속성)- 데이터를 전송할 목적지(servlet)를 지정한다. - action 속성에 서블릿 URL 패턴을 작성한다.여기서 /MyServlet은 서블릿의 URL 매핑 값이다. 서블릿의 URL은 @WebServlet이나 web.xml에서 설정된다. web.xml 경로WebContent/WEB-INF/web.xml 또는 src/main/webapp/WEB-INF/web.xml (프로젝트 구조에 따라 다를 수 있음)1-2. 어떤 값을 (input 태그의 name)- input 태그에 name 속성을 추가하여 서버로 전송할 데이터를 지정한다. - 서버에서 해당 데이터를 읽어오기 위해 name 속성이 필요한 것. - Servlet 에서 값을..
· Java
1. 쿼리스트링이란? URL의 뒤에 입력 데이터를 함께 제공하는 가장 단순한 데이터 전달 방법이다. 웹개발에서 웹페이지나 애플리케이션에서  GET방식으로 데이터를 요청할 때 쓰인다. POST방식은 보안수준이 상대적으로 높아서 URL 에 넘어가는 데이터가 표시되지 않기 때문이다.  URL의 끝에 ?로 시작하고, 그 뒤에 키-값 쌍이 이어지는 구조이다. 이를 통해 서버에 추가적인 정보를 전달한다. 검색쿼리나 필터링에 사용된다.  네이버 검색창에 '덱스'를 검색하고 엔터 치면 일어나는 일 ▼ URL 에 ?가 생기면서 내가 입력한 검색어 '덱스'가 끝에 추가된다 마찬가지로 구글 검색창에 '손흥민'을 입력하고 엔터를 치면?아래처럼 주소창에서 url 뒤에 ? 와 각종 데이터가 붙는다.2. 구조https://www...
· Java
1. Cookie란?클라이언트(브라우저)에 저장되는 키와 값이 들어있는 작은 데이터파일!중복되지 않는 name과 value 한 쌍으로 이루어짐순서가 없다만료 기한(나이)를 지정해 줄 수 있다, 단 지정해 주지 않으면 Session 값으로 저장된다.웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키를 헤더에 담아 전송한다.2. Session이란?Session은 클라이언트와 서버 간 연결된 상태를 유지하기 위해 서버에 저장되는 데이터이다.클라이언트가 서버에 접속하면, 서버는 고유한 Session ID를 생성해 클라이언트에게 전달한다.클라이언트는 Session ID를 쿠키에 저장하거나 URL에 포함해 서버와 통신하며, 서버는 이 ID로 클라이언트를 식별한다.세션 데이터는 서버의 메모리 또는..
인절미였던것
'Java' 카테고리의 글 목록 (3 Page)
상단으로