728x90

Coding 96

[JAVA] NoClassDefFoundError: class.$1 파일

최근에 회사에서 코드 수정 후에 배포하였는데 오류가 떴다로컬에서는 빌드가 잘 되어서 상당히 당황스러웠다현재 회사 시스템 상, 운영 오류 로그 보려면 원격 서버 들어가서 로그 창 뒤져야 했기 때문,,,근데 운영중인 시스템에 다른 로그까지 다 찍혀서 찾기도 힘들었는데 서비스 미 이용시간에 남아서 로그를 분석해본 결과 아래와 같은 로그가 떴다클래스명.$1 어쩌고 로그가 뜨길래 뭔가 했는데 검색해보니 저 파일이 누락되었다고 한다. 그래서 봤더니 생긴지도 몰랐는데 클래스명+ $1.class 파일이 있어서 찾아보았다 코드 수정할 때 Comparator를 사용했는데, 자바 컴파일러는 익명 내부 클래스(anonymous inner class) 가 등장하면클래스명$번호.class 형태로 별도의 파일을 자동 생성한다고..

Coding/JAVA 2025.11.30

HTTP 메서드 (GET, POST, PUT, PATCH, DELETE)

📌 API URI 설계=> 리소스 식별이 중요하다ex) 회원을 등록한다 => "회원"이 리소스 결론: 회원 리소스를 URI에 매핑해야함 ex)회원 목록 조회 /members      회원 조회 /members/{id}      회원 등록 /members/{id}      회원 수정 /members/{id}      회원 삭제 /members/{id} 이렇게 같게 생겼으면 어떻게 구분하는가?=> 리소스와 행위를 분리하자 리소스: 회원 / 행위: 조회, 등록, 수정, 삭제  이걸 구분하기 위해 HTTP 메서드를  ,,!  HTTP 주요 메서드GET: 리소스 조회POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체, 해당 리소스가 없으면 생성 PATCH: 리소스 부분 변경DELETE: 리소..

Coding/Spring(Boot) 2025.02.07

Swagger란?

Swagger란 무엇인가Swagger는 RESTful API 설계, 문서화, 테스트, 모니터링을 쉽게 만들기 위한 오픈 소스 툴셋. API의 설계를 시각적으로 표현하고, 클라이언트-서버 간의 상호작용을 명확하게 정의하는 데 사용된다 Swagger의 주요 동작 원리Swagger는 RESTful API를 명세서로 정의한다.명세서가 포함하는 정보API 경로 및 HTTP 메서드 (GET, POST, PUT, DELETE 등)요청 파라미터 및 응답 데이터 구조HTTP 상태 코드 (200, 404, 500 등)인증 방식 (Bearer Token, API Key 등)API의 설명 및 예제Swagger의 주요 구성 요소Swagger UIAPI 문서를 시각적으로 확인할 수 있는 웹 기반 UI.REST API의 엔드포인트..

Coding/Spring(Boot) 2025.01.09

Scanner와 BufferedReader 차이

📌 Scanner- 버퍼 사이즈: 1KB- 가공O => 문자열 구분 및 파싱- 예외처리 숨김- 단순입력 양이 많아지면 효율이 떨어진다 (이럴땐 BufferedReader 쓰는게 나음)  📌 BufferedReader- 버퍼 사이즈: 8KB- Buffer란? -> 임시 저장 공간 기억장치(두개의 장치 사이에서 더이터의 전송속도나 처리속도의 완화를 위한 기억장치)- 가공 X / 저장 O- 예외처리 던져야함 public static void main(String[] args) throws IOException {} - inputStreamReader에 버퍼링 기능 추가된 클래스 BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..

Coding/JAVA 2024.10.27

HTTP 요청 데이터 - json값 주고받기

HelloData.javapackage hello.servlet.basic;import lombok.Getter;import lombok.Setter;@Getterpublic class HelloData { @Setter private String username; private int age;}롬복 사용하여 게터세터를 편리하게 하였다.(롬복이 자동으로 게터세터 코드를 생성해줌) RequsetBodyJsonServlet.java RequestBodyJsonServlet.java 파일에서 @WebServlet(name = "~~", urlPatterns = "~~")등의 설정을 하고postman에서 코드로 urlPatterns = "/request-body-json" 매핑해뒀던 것을 POS..

Coding/Servlet 2024.10.02

[JAVA]StringBuilder

📋 String- String클래스는 불변이다.  - 불변인 String 클래스의 단점: 문자를 더하거나 변경할 때마다 계속해서 새로운 객체를 생성해야함- 문자를 자주 더하거나 변경해야 하는 상황에 더 많은 String객체를 만들고 GC해야함 ===> 컴퓨터의 CPU, 메모리 자원을 더 많이 사용하게 됨 => 문자열을 더 자주 변경할수록 시스템의 자원을 더 많이 소모한다. 📋 GC(Garbage Collection)- 자바 가상 머신의 힙 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스 📋 StringBuilder- 가변- StringBuilder 객체 안에서 문자열을 추가, 삭제, 수정할 수 있음 (이 때마다 새로운 객체를 생성하지 않음)===>..

Coding/JAVA 2024.09.18

[JAVA]상속과 메서드 오버라이딩(@override)

📋 Overloading이란?- 메서드 이름은 같고 파라미터가 다른 메서드를 여러개 정의하는 것(같은 이름의 메서드를 여러개 정의) 📋 Method Overriding이란?- 부모에게서 상속 받은 기능을 자식이 재정의 하는 것 Car.javapackage extends1.overriding;public class Car { public void move(){ System.out.println("차를 이동합니다."); } //추가 - 자식들은 모두 이 기능을 물려받게 된다.(상속) public void openDoor() { System.out.println("문을 엽니다."); }} Car는 부모 클래스이다.여기서 move()라는 메서드를 정의하고 ..

Coding/JAVA 2024.09.03