본문 바로가기
728x90
반응형

java13

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] 함수 호출 'CallByValue' 와 'CallByReference' 의 차이 들어가면서.. Java를 사용하면서 클래스에 필요한 기능을 추가하기 위해 메서드를 만들어 애플리케이션을 구현한 경험은 누구나 있을 것으로 생각합니다. 하지만 저는 Java에 대해 공부하면서 메서드의 리턴 타입이 void인 매개변수가 없는 메서드 외에 매개변수가 존재하는 메서드의 경우 값을 복사하는지 or 직접 참조하는지에 따라 함수 호출 방법이 다르다는 것을 최근에야 알게 되었습니다. 바로 그 주인공인 CallByValue와 CallByReference가 오늘의 주제인데 차근차근 알아보도록 하겠습니다. 함수 호출 방법 함수 호출 방법에는 크게 2가지가 있습니다. CallByValue CallByReference 먼저 CallByValue는 말 그대로 '값에 의한 호출'을 말하고 CallByRefernce.. 2021. 9. 3.
[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.
JAVA입문-6 (상속) [상속] Java에서 상속이란 부모 클래스가 가진 것을 자식 클래스가 물려받는 것을 말한다. 즉, 부모 클래스가 가진 것을 자식 클래스가 사용할 수 있다. is a , kind of 관계 "버스는 차입니다" 여기서 버스는 자식 클래스, 차는 부모 클래스. 이클립스에서 새로운 클래스를 만들 때 Superclass를 통해 원하는 부모 클래스를 설정해 상속받도록 한다. 또는 public class 클래스명 extends 부모 클래스명을 통해 직접 설정해도 된다. ex. 상속받아 사용하는 방법(1) 1. Car를 부모 클래스로 상속받는 자식 클래스 Bus를 만든다. 2. Car클래스에 run 메서드를 만든다. 3. BusExam클래스에 Bus클래스를 하나 생성한 후 bus에 run메서드를 호출하면 Bus클래스는.. 2021. 2. 27.
JAVA입문-5 (클래스 다듬기) [생성자] 클래스를 만들고 해당 클래스를 이용해서 인스턴스를 만들려면 new 연산자를 사용했는데, new 연산자 다음에는 반드시 생성자가 나와야 한다. 특징 1. 클래스를 만들 때 메서드와는 다르게 리턴 타입을 갖지 않는다. 2. 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다. 매개변수가 없는 생성자를 '기본 생성자'라 한다. 생성자를 하나라도 프로그래머가 만들었다면 '기본 생성자'는 자동으로 만들어지지 않는다. ex. 현재 Car 클래스에 생성자를 만들지 않았으므로 이때 컴파일러는 '기본 생성자'를 만든다. 객체는 만들어질 때 어떤 값을 가지고 만들어지길 원할 수도 있는데, 생성자가 하는 일은 객체가 될 때 필드를 초기화하는 역할을 수행한다. ex. Car.. 2021. 2. 26.
JAVA입문-4 (클래스와 객체) [클래스 선언] Java는 객체지향 언어 : 프로그램을 구성하는 요소는 객체이며 이것이 상호작용 하도록 프로그래밍한다. 클래스 : 객체를 만들기 위한 틀 ex. 붕어빵을 만든다면 붕어빵은 객체, 붕어빵을 만드는 도구는 클래스 ex. 클래스 선언 public calss 클래스명{ ...... } new(연산자) 뒤에 나오는 Car(생성자)라 함. 이런 생성자를 이용해 메모리에 객체를 만들라는 명령이다. 메모리에 만들어진 객체를 인스턴스라고도 말한다. 만들어진 객체를 참조하는 변수가 c1, c2이다. 위에 코드를 통해 만들어진 것을 Car라는 객체가 2개 만들어지고 각각의 객체를 참조하는 c1과 c2 변수가 선언이 된다. [참조 타입] Java는 변수를 선언하려면 변수의 타입을 정해줘야 한다. 기본형 타입은.. 2021. 2. 21.
728x90
반응형