All104 [IDE] Intellij 와일드카드 import 방지 소스 코드를 짤 때, 하나 둘 import를 하게되면 어느순간 자동으로 wildcard(*)로 변환된다. 나는 이제껏 그게 당연하거라고 생각했는데 사실 이렇게 사용했을 시 야기되는 문제들이 있다. 와일드카드(*) 임포트의 문제점import java.util.*;와 같은 와일드카드 임포트는 java.util 패키지에 있는 모든 클래스를 임포트하겠다는 의미이다. 이 방식은 코드의 간결함 때문에 많이 사용되지만, 몇 가지 문제가 있다.가독성 저하어떤 클래스가 실제로 사용되고 있는지 명확하지 않다. 예를 들어, java.util에는 List, Map, Set 등 많은 클래스가 있는데, 코드에서 어떤 클래스를 사용하는지 한눈에 알기 어려워진다. 이로 인해 협업이나 유지보수 시 불편함이 생길 수 있다. 개발 컨벤.. 2024. 10. 20. [JUnit] 테스트 관련 어노테이션 정리 #1 이번에 천천히 TDD 공부를 해보면서 사용해봤던 테스트 관련 어노테이션을 정리해보려고 한다. 이렇게라도 한번 적지 않으면 그냥 계속 사용방법만 아는채로 사용하기 때문이다. 1. @TestJUnit5의 기본 테스트 메서드 어노테이션해당 메서드가 테스트 메서드임을 명시한다.메서드의 반환 타입이 void여야 하고, 파라미터를 받지 않는다.@Testvoid testAddition() { int result = Calculator.add(1, 2); assertEquals(3, result);} 2. @DisplayName테스트 메서드의 이름을 설명하는 어노테이션테스트를 더 직관적으로 이해할 수 있도록 이름을 지정할 수 있다.IDE에서 표시되는 이름으로, 한글이나 특수문자 사용도 가능하다.@Tes.. 2024. 10. 13. [Java] FilenameUtils 사용하기 Utils는 아는만큼 더 빠르고 간편하게 코드를 작성할 수 있는 것 같다. 하나하나 일일이 찾아보지는 못하니까 우연히 알게되면 나중에 사용할 수 있도록 정리를 해보려고 한다. 오늘의 주인공은 FilenameUtils이다. 개념우선 FilenameUtils가 들어있는 Apache Commons IO는, 자바 언어를 위한 오픈소스 라이브러리로 다양한 기능을 제공한다. 이 라이브러리를 사용하면 파일 및 디렉토리 관리 작업을 더욱 쉽게 처리할 수 있으며, 그 때문에 다양한 자바 프로젝트에서 많이 사용되고 있다. FilenameUtils 클래스는 파일 경로, 파일명, 확장자 등을 다루기 위한 여러 유틸리티 메서드를 제공한다. 특히 Windows에서는 \를, Unix 계열 시스템에서는 /를 경로 구분자로 사용하는.. 2024. 10. 13. [WebSocket] Error - The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method 소켓통신을 구현하여 broadcasting으로 클라이언트에게 데이터를 보내는 중 json 형식이 깨지는 것을 발견하였고, 그것을 수정하는 과정에서 에러가 발생하였다. 막상 타입문제는 아니었지만 함께 적어본다.상황웹소켓에서 스케줄링을 하면서 브로드캐스팅으로 계속 데이터를 보내고 있는 상황이다. 그렇지만 여러 스케줄러가 하나의 'broadcast' 메소드를 호출하면서 충돌이 난 것을 확인하게 되었다.에러 내용The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state for called method문제 원인스레드 동기화해당 에러는 원격서비스가 현재 텍스트 작성중인 상태로 '호출하려는 메서드에는 유효하지 않은 상태'인 경우에 .. 2023. 5. 20. [Java] Utility Class 의문자바에서 말하는 Utility Class가 무엇일까? 뭔가 디렉토리상에도 자주 보이고, 가끔 내가 사용하기도 하지만 구체적으로 어떤 역할을 하는지, 어떤 형식을 가지는지 잘 몰랐기 때문에 정리해보려고 한다.답(1) 유틸리티 클래스란?인스턴스 메서드와 인스턴스 변수를 제공하지 않고, 매개 변수에 대해 작업을 수행하는 정적 메서드와 변수만을 제공하는 클래스Static 클래스, Stateless로 사용, 멀티스레드 환경에서 thread-safe대부분 final로 선언되어 상속될 수 없고, 생성자는 private으로 선언되어 초기화 가능성을 막는다(2) 유틸리티 클래스 사용 시 문제점강한 결합유틸클래스를 사용하는 클래스는 유틸클래스에 강한 의존성을 갖게 된다. 추상화 진행이 없으므로 유틸클래스 변화는 해당 .. 2023. 4. 23. [Tomcat] 톰캣 다중 구동환경 시 로그인 끊김 현상 / jsessionid 충돌 상황하나의 서버에 2개의 서비스 각각 설치 후 둘 다 한번에 접속하면 접속이 되지 않는 에러가 발생하였다고 문의가 들어왔다.테스트 환경tomcat : 각각 다른 톰캣 사용port : 각각 다른 포트context path : 두개 모두 동일 (같은 서비스이기 때문)DB : 각각 다른 DB 환경해결 과정우선 접속은 되는 것까지 확인하였는데 하나의 서비스에서 로그인 되었을 시, 다른 쪽 서비스에서 로그인이 풀리게 되어버렸다. 개발자 도구의 쿠키 세션값을 확인해보니 동일한 값을 가지고 있는 것을 발견하였다! 구글링을 해보니 모두 jsessionid의 충돌문제이고 대부분 로그인이 풀리는 동일한 문제를 겪고 있었다. 그래서 나도 처음에는 구글에서 제일 많이 나와있는 tomcat 설정 변경을 시도해보았다.(1) to.. 2023. 4. 6. [Java] Error - Invalid property 'maxWait' of bean class 상황예전 브랜치에서 작업했던 내용들을 깃 cherry-pick을 사용해서 가장 최신 브랜치를 기준으로 커밋하는 작업을 하고 있었다.에러 내용org.springframework.beans.NotWritablePropertyException: Invalid property 'maxWait' of bean class [org.apache.tomcat.dbcp.dbcp2.BasicDataSource]: Bean property 'maxWait' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?문제 원인이 에러는 BasicDataSource 클.. 2023. 3. 29. [Java] Error - Illegal hexadecimal character q at index 0 상황javascript로 작성된 aesUtil 파일을 rust 파일로 변환 후 encrypt 된 값을 받아와 자바에서 decrypt 하는 과정 중에 에러가 발생하였다. 에러 내용org.apache.commons.codec.DecoderException : Illegal hexadecimal character q at index 0문제 원인에러내용 자체를 파악해보자면, 인덱스 0자리에서 16진수 문자열에 맞지 않는 'q'가 들어갔다는 에러이다. 당연하다. 왜냐하면 16진법 문자열은 0부터 9까지의 숫자와 A부터 F까지의 알파벳 대문자로 구성되기 때문에 'q'는 포함되지 않는다. 따라서 코드를 검토하고 유효하지 않은 16진수 문자를 찾아 수정해야지 에러를 수정할 수 있다.결론은 javascript로 작성된 .. 2023. 3. 23. [Tomcat] Warning - To Prevent a Memory Leak, the JDBC Driver Has Been Forcibly Unregistered 상황톰캣에서 에러는 아니지만 메모리릭 관련 워닝이 발견되어 찾아보았다.에러 내용 The web application registered the JDBC driver [org.postgresql.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.메시지 의미Tomcat은 웹 애플리케이션을 배포할 때 postgresql Driver JDBC 클래스가 등록되었지만, 동일한 애플리케이션을 제거할 때 등록 해제되지 않았다는 것을 알려주고 있다.문제 원인문제의 원인은 JDBC 드라이버의 부적절한 구현이라고 .. 2023. 3. 22. 이전 1 ··· 7 8 9 10 11 12 다음