Banner

My Tech Blog (Java)

📑 1. 문제설명💡 2. 풀이 과정일단 문제가 길어도 너무 길어서 나름대로 요약을 해 봤다. record 배열은 입장 또는 퇴장 정보를 담고 있는 2차원 배열이다.  입장은 ["Enter id 닉네임"] → "닉네임님이 들어왔습니다."퇴장은 ["Leave id"] → "닉네임님이 나갔습니다."닉변은 ["Change id 닉네임"]record0번 인덱스 = 행동(입장/퇴장/닉변)1번 인덱스 = id2번 인덱스 = 닉네임 여기서 중요한 것은 채팅방에 보여지는 메세지에는 최종적으로 변경된 닉네임이 보여져야 한다는 것이다. 그렇다면 한 아이디가 가장 마지막으로 사용한 닉네임이 무엇인지 조회하고 메세지를 보여줄 때 아이디값을 그 닉네임으로 바꾸는 방법으로 문제를 해결해야 한다. 닉네임 정보를 저장하기 위해서 ..
· 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 → 터미..
📑 1. 문자열 섞기 💡 1-1. 접근방식■ 단순히 주어진 변수명 그대로 a + b > b + a 이렇게 비교하면 두 숫자는 정수 덧셈이기 때문에 항상 a + b == b + a가 된다. 문제에서 의도한 것은 숫자를 문자열로 변환하여 연결한 후, 크기를 비교하는 것이다. 올바르게 비교하려면 String.valueOf(a) + b와 String.valueOf(b) + a 를 비교해야 한다.  ■  또 나는 처음에 sb.toString()을 써서 int로 반환하는 실수를 했는데,  sb.toString()은 문자열이기 때문에, int 타입을 반환하는 solution 메서드와 타입이 맞지 않는다. 그래서 Integer.parseInt(sb.toString())을 사용하여 변환해야 한다.  틀린 코드clas..
📑 1. 문제설명 💡 2. 정답코드🙅🏻‍♀️ 첫 번째 시도 - 틀림 ❌프로그래머스 콘솔이 자동완성이 안 되기 때문에 생각나는데로 써서 많이 틀렸다.class Solution {    public String solution(String str1, String str2) {        StringBuilder sb = new StringBuilder();        for(int i = 0; i   오답 정리⭐ str1.length → str1.length() length는 배열에서 사용되고, 문자열에서는 length() 메서드를 사용한다. ⭐  sb.add(...) → sb.append(...)StringBuilder는 add() 메서드가 없고, 대신 append()를 사용해야 한다.⭐  st..
· 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' 태그의 글 목록 (9 Page)
상단으로