Backend/JAVA

카테캠 - JAVA 프로그래밍

pjhcsol 2024. 4. 15. 20:46

학습 내용

  • JAVA 프로그래밍
  • 인텔리제이 단축키 - 검색, 코딩, 디버깅
  • 클래스로 객체 모델링

꿀팁

  • 인텔리J 단축키 요약
    1. Optimize Imports 단축키 : ⌃⌥O 코드에 작성되어 있는 불필요한 import 문을 삭제/추가/정렬하여 최적화 해주는 기능입니다. 사용하지 않는 import문은 삭제를 하고, 특정 패키지의 여러 클래스나 인터페이스를 개별적으로 import 하고 있으면 이를 묶어 상위 패키지의 전체를 import, 그리고 package 명에 따라 정렬까지 해주는 기능입니다. 코드를 작성하고 Git에 코드를 push 하기 직전에 import 구문을 정리하기 위해 자주 사용합니다.
    2. Override Method 단축키 : ⌃O Override/Implements 할 함수의 코드를 작성해주는 기능입니다. 상속받은 클래스나 인터페이스의 함수를 작성할 때 자주 사용하고 있습니다.
    3. Generate 단축키 : ⌘N 생성자, Getter/Setter 및 method를 override 등의 코드를 생성해주는 기능입니다. 새로운 클래스를 생성하고, 생성자, Getter/Setter 를 작성할 때 많이 사용하고, Override Method 기능도 함께 사용할 수 있습니다.
    4. Move Statement Up / Down 단축키 : ⇧⌘(싀프트 커멘드)↑ / ↓ 특정 코드 블럭을 동일 파일 내에 위/아래로 이동할 수 있는 기능입니다. 이렇게 이동할 때 오려내고 붙여넣는 대신에 이 단축키를 쓰면 더 간편하게 코드 블럭을 위/아래로 옮길 수 있습니다.     Refactor
    5. Rename 단축키 : ⇧F6 코드 내에 변수나 함수의 이름을 일괄 변경 해주는 기능입니다. 개별적으로 직접 이름을 변경하게되면 실수로 변경하지 않는 곳이 자주 생기게 되어 항상 Rename 기능으로 변수나 함수의 이름을 변경하고 있습니다.
    6. Introduce Variable 단축키 : ⌥⌘V 선택된 코드의 리턴 값 타입에 맞는 변수를 자동으로 생성해주는 기능입니다. 코드를 작성하며 여러 함수를 사용하게 되는데, 해당 함수의 리턴 타입을 일일히 확인하지 않고 이 기능을 쓰면 해당 함수의 리턴 타입에 맞춰서 알아서 변수를 생성해주어 더 편하게 코드를 작성할 수 있습니다.

 

 

2. Code Snippets

1. JAVA프로그래밍

  • 요약
    import java.util.List;
    
    public class Calcul {
    /*
        long test(Long a,Long b){
            return add(a,b)+sub(a,b);
        }
        */
        long add(Long a,Long b){
    		    test2(a,b);
            return a+b;
        }
        static long test2(Long a,Long b){   
            return a+b;
        }
        static void printArgs(Long... arg){
            for(Long i:arg){
                System.out.println(i);
            }
        }
    }
    
  • /* 기존의 경우 javac를 통해 class을 생성 후 JVM(Java Virtual Machine)을 통해 실행 인텔리J는 .out 에 class 실행파일이 존재함. Java에서는 소스 코드를 컴파일하여 바이트 코드로 변환한 후 -> JVM(Java Virtual Machine)에서 실행. 따라서 javac는 Java 컴파일러이고, JVM은 이 컴파일된 코드를 실행하는 역할을 함. 코드 설명: **Main class에서 Calcul 호출** Java 프로그램에서 Main 클래스의 main 메서드 내에서 다른 클래스인 Calcul을 사용한다는 것을 의미한다. Main 클래스의 main 메서드에서는 Calcul 클래스의 인스턴스를 생성하고, 그 인스턴스를 사용하여 add 메서드와 printArgs 메서드를 호출한다. 이것이 "Main 클래스에서 Calcul 호출"하는 것. 이러한 호출은 Java 프로그램에서 클래스 간의 상호작용을 볼 수 있음. */ public class Main{ public static void main(String[] args){ System.out.println("Hello world"); Calcul math = new Calcul(); Long tmp1=math.add(1L,2L); System.out.println(tmp1); math.printArgs(1L,2L,3L,4L,5L); } }

2. 인텔리제이 단축키

  • 요약
  • IJ 단축키.. * static import ⌥ + ↵ * return 값 자동 ⌥ + ⌘ + V * 테스트 코드 생성 ⌘ + ⇧ + T * 해당 객체가 선언된 파일로 이동 ⌘ + B * 이전에 실행했던 파일 재실행 ^ + R * 생성자, 게터와 세터 자동 생성 ⌘ + N * 한 단어 선택 ⌥ + ↑ 1. 컨트롤 T (리펙토링 및 메서드 뽑기 가능) =>인터페이스 추출가능 2. 생성자, 게터와 세터 자동 생성 ⌘ + N 3. 테스트 코드 생성 ⌘ + ⇧ + T 4. Override Method 단축키 : ⌃O Override/Implements 할 함수의 코드를 작성해주는 기능입니다. 상속받은 클래스나 인터페이스의 함수를 작성할 때 자주 사용하고 있습니다. 5. 단축키 : ⌥⌘V 커멘드 옵션 v 선택된 코드의 리턴 값 타입에 맞는 변수를 자동으로 생성해주는 기능입니다. *****Rename : fn + 싀프트 + f ******* F붙은 옵션을 사용할려면 fn키를 누르고 해야된다 Rename : fn + 싀프트 + f 단축키 : ⌥⌘V 커멘드 옵션 v 선택된 코드의 리턴 값 타입에 맞는 변수를 자동으로 생성해주는 기능입니다. 컨트롤 T (리펙토링 및 메서드 뽑기 가능) =>인터페이스 추출가능 커멘드 싀프트 T (test 예제 생성) 스프링 단축키 파라메터 정보 넣기 : 커멘드+p 줄끝 자동완성 : 커멘드+쉬프트+엔터 Psvm 퍼블릭선언 단축키 컨트롤 R : 이전에 실행한것을 재실행시켜줌

3.클래스 객체 모델링

  • 요약객체 = 모델(Model) = 덩어리(Value Object) = 바구니 = 데이터의 이동(Data Transfer Object)책을 정의하기 위해 → 제목 가격 출판사 …. 등 이 필요하다. → 모델링 도구 class 필요!!!!새로운 자료형을 만드는 도구
    public class Person {
    		/*상태 정보*/
    		
        public String name;
        public int age;
        public String phone;
        
        /*행위 정보*/
        
        public void play() {
            System.out.println("운동을 한다.");
        }
        public void eat() {
            System.out.println("음식을 먹다.");
        }
        public void walk() {
            System.out.println("걷다.");
        }
    }
    
  • /* new Person() 을 통해 객체 생성 및 할당 Person p에 메모리 주소값 저장 */ /*Person 객체 생성*/ public class PersonTest { public static void main(String[] args) { Person p = new Person(); } }
  • 클래스
  • EX) 책(BookDto)이라는 데이터를 변수에 저장하기 위해서는 책이라는 자료형이 필요!!!!
  • 사용자 정의 자료형

4. Jenkins, git WebHook, CI/CD

  • 요약
    1. Jenkins: Jenkins는 지속적 통합(Continuous Integration, CI) 및 지속적 배포(Continuous Deployment, CD)를 지원하는 오픈 소스 자동화 도구.
    2. Git 웹훅: Git 웹훅은 Git 저장소에서 발생하는 이벤트를 트리거로 하여 특정 URL로 HTTP POST 요청을 보내는 기능. 예를 들어, 코드가 푸시되거나 브랜치가 업데이트되는 등의 이벤트가 발생하면 Git 웹훅이 설정된 URL로 이벤트 정보를 전송.
    3. CI/CD (Continuous Integration/Continuous Deployment): CI/CD는 소프트웨어 개발 프로세스의 일환으로, 지속적으로 소스 코드를 통합하고 테스트하며, 성공적으로 테스트된 코드를 자동으로 배포하는 방법론이다. CI는 개발자들이 소스 코드를 공유 레포지토리에 푸시할 때마다 자동으로 코드를 빌드하고 테스트하는 것을 의미하며, CD는 빌드 및 테스트를 성공적으로 통과한 코드를 실제 환경으로 배포하는 것을 의미함.
    Jenkins를 사용하여 CI/CD 파이프라인을 구축할 때, Git 웹훅을 설정하여 Git 저장소의 이벤트를 트리거로 하여 Jenkins에서 빌드 및 배포 작업을 자동으로 수행하게끔 구성 완료
  • 추가로 스케줄을 사용하여 10분마다 자동 빌드 명령어 → H/10 * * * *