본문 바로가기
728x90
반응형

Language/Java16

java scheduler 중복 호출 이슈 해결하기 1. 문제 발견 회사에서 로그를 확인하던 중 자바 스케줄러가 중복 호출되고 있는 것을 발견했다. 매일 새벽, 정해진 시간에 인사정보를 최신화시켜 주는 프로시저이다. 이 외에도 많은 프로시저들이 자바 스케줄러에 의해 중복 호출되고 있던 것이다. 중복 호출이 되고 있었지만 사용하는 데 전혀 문제가 없었기 때문에 지금까지 아무렇지 않게 넘어갔던 것 같다. 물론, B2B 서비스였기 때문에 새벽에는 사용량이 없어서 문제 되지 않겠지만, 이슈를 발견한 이상 모른 체 넘어갈 수 없었다. 2. 원인 톰캣 공식 문서에 아래와 같은 내용이 적혀 있다. 💡 내용을 요약해 보면 다음과 같다. 1. 자동 배포를 true로 설정했을 때, docBase를 정의할 경우 appBase 외부에 있어야 한다. 2. 명시적으로 정의할 경.. 2023. 4. 2.
[Java] 생성자란? 생성자란? 객체 생성 시 초기화해주는 역할을 담당한다. 간단한 예로, 스마트폰 전원(객체)을 켜면 제조사 로고(생성자)가 등장(호출)하는 것과 같다. 생성자 특징을 살펴보면 다음과 같다. 클래스명과 메서드명(생성자)이 동일해야 한다. 리턴 타입이 없다. 객체 생성 시 단 한 번만 호출된다. 생성자를 사용하는 방법은 크게 2가지가 있다. 메서드에 매개변수 없이 호출하는 방법 메서드에 매개변수를 받아 호출하는 방법 바로 예제를 살펴보도록 하자. public class ConstructorTest { public ConstructorTest() { System.out.println("Constructor 객체생성 !!"); } public static void main(String[] args) { Const.. 2021. 10. 31.
[Java] 자바 컬렉션(Collection)이란? 들어가면서.. 나는 Java를 배우고 학습하면서 데이터를 보관하고 사용하기 위해 Collection을 자주 사용하였다. 예를 들면 책 찾기, 수족관 키우기, 지하철, 자동차 차 탑승, 주식하기 프로그램 등등.. 그리고 팀 프로젝트를 하면서까지도. 하지만 정작 면접 시 Collection에 대해 설명해달라는 요구를 받았을 때 당황해서 제대로 답변하지 못한 것이 너무 아쉽다. 아쉬우면? 공부해서 다음에는 그 질문을 놓치지 않으면 된다. 그때의 아쉬웠던 기분을 그대로 살려서 Collection에 대해 깊이 파보는 시간을 갖도록 하겠다. 컬렉션 프레임워크(Collection Freamwork) 란? - 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. - 즉, .. 2021. 9. 9.
[Java] this 키워드의 개념과 사용 방법 세 가지 this 키워드란? 개념 - this는 인스턴스의 자기자신을 의미한다. - 인스턴스화 되었을 때 자기자신의 메모리 주소를 담고있는 키워드이다. this 키워드의 세 가지 역할 ① 자기 자신의 메모리를 가르킨다. ② 생성자에서 다른 생성자를 호출할 경우 사용한다. ③ 인스턴스 자신의 주소를 반환할 때 사용한다. this 키워드의 세 가지 역할 ① 자기 자신의 메모리를 가르킨다. main 함수에서 EX1_Fruit 객체를 하나 생성한 후 과일 고유번호, 과일 이름을 Setter를 통해 값을 입력했다고 가정한다. public class FruitTest { public static void main(String[] args) { EX1_Fruit getFruit = new EX1_Fruit(); getFrui.. 2021. 9. 8.
[Java] 함수 호출 'CallByValue' 와 'CallByReference' 의 차이 들어가면서.. Java를 사용하면서 클래스에 필요한 기능을 추가하기 위해 메서드를 만들어 애플리케이션을 구현한 경험은 누구나 있을 것으로 생각합니다. 하지만 저는 Java에 대해 공부하면서 메서드의 리턴 타입이 void인 매개변수가 없는 메서드 외에 매개변수가 존재하는 메서드의 경우 값을 복사하는지 or 직접 참조하는지에 따라 함수 호출 방법이 다르다는 것을 최근에야 알게 되었습니다. 바로 그 주인공인 CallByValue와 CallByReference가 오늘의 주제인데 차근차근 알아보도록 하겠습니다. 함수 호출 방법 함수 호출 방법에는 크게 2가지가 있습니다. CallByValue CallByReference 먼저 CallByValue는 말 그대로 '값에 의한 호출'을 말하고 CallByRefernce.. 2021. 9. 3.
[Java] JVM Architecture (ClassLoader, Runtime Data Areas, Execution Engine) 정리 앞서 JDK의 대해서 공부하면서 JRE를 통해 JVM이 구동되는 것을 배웠다. 오늘은 java의 핵심 프로그램 JVM(Java Virtual Machine)의 구조의 대해서 공부해보려고 한다. 모든 Java 개발자들은 바이트코드가 JRE(Java Runtime Environment)에 의해 실행된다는 것은 알고 있다. 하지만 많은 사람들은 JRE가 바이트 코드를 분석하고 코드를 해석하고 실행하는 JVM(Java Virtual Machine)을 구현하는 사실은 잘 모른다. 개발자로서 JVM의 구조의 대해 아는 것은 매우 중요한데, 그 이유는 JVM을 통해 코드를 보다 효율적으로 작성할 수 있기 때문이다. 그렇다면 어떤 구조로 작동하는지 JVM의 다양한 구성 요소를 알아보도록 하자. JVM이란? 가상 머신은.. 2021. 8. 31.
[Java] JDK란 무엇인가? 들어가기에 앞서.. java 구동원리에 대해 공부하면서 JDK에는 여러 프로그램이 존재한다고 하는데 무엇이 있을지 궁금해서 알아보기로 하였다. [Java] Java 구동 원리 들어가기에 앞서.. 나는 java를 사용하면서 "java는 어떻게 돌아가는 거지?" 문뜩 생각이 들었다. 6개월 동안 java를 사용했지만 그 생각에 스스로 확답을 주지 못했고, java 구동원리에 대해 정확히 choicode.tistory.com JDK란? 일단 JDK는 사진과 같이 JVM < JRE < JDK 순으로 범위안에 존재한다. 그래서 JDK를 설치했을 때 많은 프로그램중에서 JVM 프로그램이 깔려 java를 사용할 수 있는 것이다. 본론으로 들어가서, JDK(Java Development Kit)는 JVM(Java Vi.. 2021. 8. 27.
[Java] Java 구동 원리 들어가기에 앞서.. 나는 java를 사용하면서 "java는 어떻게 돌아가는 거지?" 문뜩 생각이 들었다. 6개월 동안 java를 사용했지만 그 생각에 스스로 확답을 주지 못했고, java 구동원리에 대해 정확히 이해하고 쓰자는 생각으로 정리를 하기로 하였다. java 구동원리 일단, 생활코딩의 java 구동원리의 대한 영상을 시청하면서 정리를 해보았다. 우리는 컴퓨터에 java를 사용하기 위해 jdk를 다운로드하게 되는데 jdk안에는 여러 가지 프로그램이 있지만 가장 핵심 프로그램인 Java Virtual Machine이 우리의 컴퓨터에 깔리게 된다. 우리는 java를 사용할 때 java확장자에 java 언어를 사용한 소스코드를 작성하게 된다. 소스코드를 작성하고 저장을 눌렀을 때 컴파일이 되어 소스코드.. 2021. 8. 24.
JAVA입문-8 (예외처리 Exception) [Exception] Exception이 발생하면 발생한 지점부터 프로그램이 강제 종료 (Java는 정수를 0으로 나눌 때 예외를 발생시킴) Java는 예외를 처리할 수 있는 문법을 제공한다 (예외처리) try {...} : 오류가 발생이 예상되는 부분을 try로 감싼다. catch {...} : 예외가 발생했을 때 실행할 수 있는 코드를 넣을 수 있다. finally {...} : 생략가능. 오류 발생 여부에 상관 없이 반드시 실행되는 블록 ex. 예외처리 문법 사용 (1) try-catch * 예외클래스변수명.toString() : 예외의 정보를 알려주는 메서드 예외처리를 통해 catch블록도 실행이 되고 그 이하 나머지 부분들도 실행이 되는 것을 알 수 있다. ex. 예외처리 문법 사용 (2) fi.. 2021. 3. 5.
JAVA입문-7 [인터페이스(interface)와 다른 형식의 클래스(class)] [인터페이스 만들기] 인터페이스를 왜 쓸까? 객체에 무슨 기능을 가지면 좋을까 고민하는데 구현하지 않고 그 기능들을 가지고 있는 것을 인터페이스라고 한다. 예) TV - 켜고 끄는 기능, 볼륨 조절 기능, 채널 변경 기능 등.. 여기서 중요한 점은 메서드를 구현하기는 애매할 때 추상메서드(abstract)를 활용했는데, 인터페이스 자체는 구현하지는 않고 어떤 기능이 있으면 좋을지까지만 선언하는 것이기 때문에 굳이 abstract를 붙이지 않아도 오류를 발생하지 않는다. ex. 인터페이스에 상수를 선언해 기능의 한도를 고정할 수 있는데 이 때 final를 사용하지 않아도 상수처럼 사용할 수 있다. 인터페이스는 자체적으로 타입의 역할은 할 수 있지만 구현을 하지 않기 때문에 인터페이스 자체가 객체를 생성할 .. 2021. 3. 5.
728x90
반응형