본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/JAVA71

[Tomcat] 서버 재시작 없이 catalina.out 초기화 톰캣을 만지다보면 로그파일인 catalina.out의 용량이 한없이 치솟을 때가 있는데, 그냥 건드리다가 로그가 날아가며, 더이상 쌓이지 않는 경우가 생긴다. 결국 tomcat을 정지 시키고 catalina.out의 용량을 정리한 뒤 재시작하면 문제가 해결되나, 다른 방법이 있다. 재시작 없이도 용량을 초기화하는 방법이 있어 정리해본다. catalina.out 파일이 위치한 곳으로 이동하여 #cat /dev/null > catalina.out 이렇게 할 경우 기존 내용이 모두 날아가고 새로 catalina.out 파일에 로그가 증가한다 즉 파일 초기화 가능! 2023. 7. 31.
[Java] 자바로 폴더(디렉토리) 생성하기 자바에서 해당 위치에 원하는 폴더가 없을 경우 자동으로 생성하는 방법이 있다. File클래스안의 mkdir이라는 메서드를 활용하여 간단히 구현 가능. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 import java.io.File; public class MkDir { public static void main(String[] args) { // 1. Path 객체 생성 Path path = Paths.get("d:\\example\\writeFile.txt"); //.. 2023. 7. 31.
[Java] 제네릭스(Generics) 개념 정리하기 제네릭스(Generics)란? 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입체크를 해주는 기능이다. 객테의 타입을 컴파일 시 체크하기에 객체의 타입 안정성을 높인다. 지정되지 않은 타입의 객체가 저장되는 것을 막는다. ArrayList같은 컬렉션 클래스는 다양한 종류의 객체를 담을 수 있다. 만약 한 종류의 객체만 담기를 원할 때 제네릭스를 사용하면 약속한 형식대로만 사용하도록 개발하다보니 이후에 꺼낼때 형변환이 필요 없어진다. - 제네릭스(Generics)를 사용하지 않을 때 public static void main(String[] args) { ArrayList list = new ArrayList(); list.add(10); list.add("10"); String wo.. 2023. 7. 21.
[JAVA] 자바에서 REST API 구현하기 자바로 Rest API를 구현할 수 있다. 일반적으로 Spring 프레임워크 기반에서 구현하는데, 어떤 방식으로 구현하는걸까? 1.HttpURLConnection 2.HttpClient 3.스프링 RestTemplate [sample Code] 1.HttpURLConnection 방식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 URL url = new URL("요청하고 싶은 url"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //인증방식에는 두가지가 있다. //1. 토큰 방식 //2. ID / PW 를 B.. 2023. 7. 20.
[Java] 객체지향에 대한 5원칙 정리 객체 지향 설계 5원칙 객체 지향 설계에는 다음과 같은 5가지 원칙이 있다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙 3. LSP (Liskov Substitution Principle) : 리스 코프 치환 원칙 4. ISP (Interface Segragation Principle) : 인터페이스 분리 원칙 5. DIP (Dependency Inversion Principle) : 의존 관계 역전 원칙 앞 글자들을 모아 SOLID라고 부르기도 한다. 1. SRP (Single Responsibility Principle) : 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야.. 2023. 7. 20.
[java] pojo란 무엇인가?(Plain Old Java Object) 작업을 하다가 뜬금없이 pojo 라는 단어를 듣게 되었다. 고유명사인가? 무슨 의미가 있나 싶어서 찾아봤는데, Plain Old Java Object 의 줄임말로써 마틴 파울러 라는 사람이 고안한 "오래된 순수한 자바 객체", "그저 자바 객체" 라는 의미로서 사용되는 것 같다. pojo라는 개념이 개발하는데 왜 쓰이는가? 굳이 쓸 필요가 있을까? 이런거 모르고서도 잘만 개발해왔는데, 판단하기 위해 pojo가 뭔지 정리해보려한다. pojo가 뭘까? pojo란, 이름 그대로 "순수한 객체, 보통 객체, 간단한 객체"를 의미한다. Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이다. 2000년 9월에 마틴 파울러, .. 2023. 7. 20.
[Java] Java EE에서 Jakarta EE로의 전환 https://www.samsungsds.com/kr/insights/java_jakarta.html Java EE에서 Jakarta EE로의 전환 | 인사이트리포트 | 삼성SDS 자바 기술자라면 Java EE(Java Platform, Enterprise Edition) 또는 J2EE(Java 2 Platform, Enterprise Edition)를 들어봤을 것입니다. 자바를 이용한 서버 개발 플랫폼으로 한 때 엔터프라이즈 자바 기술을 선도하며 막 www.samsungsds.com 오라클에서 자바의 상용화를 진행하며 상품화에 실패하며 새로이 등장한 jakarta이다. 언젠간 jakarta로 바꿔 개발하는 날이 오겠지/// 2023. 7. 13.
메모리 덤프(dump) 분석 [ jps, jmap ] JAVA 어플리케이션을 구동할때 메모리 사용량은 중요하다 static 메모리를 필요 이상으로 많이 사용하거나 힙메모리의 사용량이 이상하게 점점증가해서 메모리 초과가 발생하는 등 메모리 사용량의 이상 동작이 느껴질때는 메모리 덤프를 떠서 직접 확인해보는게 가장 좋다. 물론 더 유용한 도구들도 많겠지만 java-jdk가 깔려있다면 누구나 설치되어있는 가장 기본적인 툴을 사용 할 줄 알아야 추후 어떤 환경에서도 덤프 기능을 원활히 사용 할 수 있을것 같아 jps, jmap을 사용하려 한다. 실제로 내가 사용하는 openJDK 17 버전 기준으로 jmap과 jps가 존재한다. 1. jps 명령어 [pid 확인] 유닉스의 명령어중 'ps'는 현재 실행되고 있는 프로세스들을 표시하는 명령어인데 'jps'명령어는 현.. 2023. 7. 4.
REST API 이해하기 Rest 방식의 API를 RestAPI 라고 부른다. 말 그대로 Rest 방식으로 통신하는 것이다. Rest 방식으로 통신하기 위해, RestAPI를 제공하기위해, Rest에 대한 개념과 규칙을 정리해 두려 한다. 1. REST API의 탄생 REST는 Representational State Transfer라는 용어의 약자로서 2000년도에 로이 필딩 (Roy Fielding)의 박사학위 논문에서 최초로 소개되었다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했다고 한다. 2. REST 구성 쉽게 말해 REST API는 다음의 구성으로 이루어져.. 2023. 6. 30.
[Java] Enum 상수 집합 사용하기 개발 업무를 하면서 enum은 사용해 본 적이 없다. 즉, 있는걸 까먹고 있었는데, 어쩌다가 공부하며 접하게 되어 기록을 남겨본다. enum은 서로 연관된 상수들의 집합을 class 대신 나타낸 것 정식 명칭은 열거형, 열거체 라고 한다. 언어마다 enum이 지원되지만, 사용 방법은 제각각 이라고 한다. 자바에선 1.5 부터 지원하는 형식이며, enum도 class의 형식 중 하나로 본다. 그렇다보니 별도 enum 형식으로 생성 가능하다. (interface 처럼) 만들어보면 다음처럼 표시된다. 샘플 Enum 소스 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39.. 2023. 6. 28.
[java] jackson 에러 cannot deserialize from Object value 해결방법 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.rest.example.domain.Ticket` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) rest api를 테스트하는 중 다음과 같은 에러를 발견했다. rest 소스코드 1 2 3 4 5 6 7 8 9 @PostMapping(value= "/postticket") public Ticket inputTicket(@RequestBody Ticket tic.. 2023. 6. 23.
[Java] 파일생성 및 파일읽기 InputStream, OutputStream 사용방법 파일을 전송하거나 전송받아서 처리해야 하는 경우가 있다. 전송이야 sftp로 전송하면 되겠지만, 그 후에 db에 넣든 바로 출력하든 별도 전처리가 들어간다. 이걸 어떻게 할 것인가가 핵심인데, Java에선 InputStream 과 OutputStream같은 입출력Stream 기능을 활용하면 된다. 간단히 말해 byte 단위로 파일을 읽어들여 데이터를 읽어들이고 전송하는데 사용한다고 보면 된다. https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html InputStream (Java Platform SE 8 ) Reads some number of bytes from the input stream and stores them into the b.. 2023. 6. 21.