Programming

    [Java] Model : DTO / VO / DAO / Utility

    모델 (Model) 이란? - 객체지향 프로그래밍에서 클래스를 역할에 따라 부르는 이름 - [현실적]객체_Object = [프로그래밍적] 클래스_Class = [소프트웨어공학적] 모델_Model - 모델의 종류 1. 시작 클래스 2. DTO, VO Model : 데이터를 담는 (이동) 모델 3. DAO Model : 데이터 처리(DB)를 하는 모델 4. Utility Model : 도움(Utility)을 주는 모델 DTO / VO Model Data Transfer Object, Value Object - 데이터를 하나로 묶어야 하는 경우, 데이터를 하나로 수집하는 바구니 역할을 하는 모델 ex. 자동차 관련 14개의 변수를 14개의 매개변수로 메서드에 전달 → CarDTO 클래스 생성하여 매개변수 1개..

    [Java] Reflection API 알아보기

    런타임 단계에서 클래스 정보를 알아야 할 때 사용하기 좋은 도구인 Reflection API에 대해 알아보자! 0. 왜 필요할까? public static void main(String[] args) { Object obj = new Hello(); obj.main(); // Error } - 자바는 컴파일 시점에 타입을 결정 - Object 타입인 obj는 Hello 객체를 받아도 main 메서드를 실행할 수 없다 - 이런 경우에 Reflection API를 이용해, 런타임에 클래스의 이름만으로 클래스를 로딩하여 멤버를 사용할 수 있다! 1. Reflection API란? -구체적인 클래스 타입을 알지 못해도 클래스의 정보(메서드, 타입, 변수 등)에 접근할 수 있게 해주는 Java API • java..

    [Java] JVM 구조와 메모리 영역

    1. JVM 구조 1.1. 클래스 로더 (Class Loader) - JVM 내로 클래스파일 (.class) 을 동적으로 로드 - 링크를 통해 메모리에 바이트코드를 배치 • 메모리에 로딩할 때, 모든 코드를 한번에 올리는 것이 아니라 어플리케이션에서 필요한 경우 동적으로 로딩 1.2. 실행 엔진 (Execution Engine) - 메모리에 로딩된 바이트 코드를 기계어(Binary Code)로 변경하여 명령어 단위로 실행 - 인터프리터(Interpreter)와 JIT(Just-In-Time) 컴파일러 두 가지 방식을 혼합하여 사용 • Interpreter : 명령어를 하나씩 실행 • JIT : 바이트 코드 전체를 컴파일하여 Native Code로 변경하여 캐싱해 두었다가 실행 - GC (Garbage C..

    [Java] 자바 실행 환경 JDK / JRE / JVM

    0. Java 코드 실행 과정 컴파일러, 명령어, 프로세서 필요 → JDK (JRE / JVM 포함) 설치 필요 1. JDK Java Development Kit - Java 프로그램을 개발하는 데 필요한 툴을 모아놓은 소프트웨어 패키지 - JRE, 컴파일러(javac 등), 디버거 등을 포함하는 프로그램 - JDK를 설치하면 PC에 설치되는 것 : JVM, API, TOOL(명령어) - OpenJDK, (유료) OracleJDK 2. JRE Java Runtime Environment - 자바 실행 환경 - JVM을 사용하기 위한 각종 자바 라이브러리를 담고 있다 3. JVM Java Virtual Machine - 자바 프로그램을 구동해주는 프로세서 - 자바 프로그램이 컴파일된 형태인 바이트 코드를 ..

    [Java] 자바 플랫폼 종류 (Java SE / EE / ME)

    1. 자바 플랫폼 이란? : 자바 프로그램을 개발 및 관리하기 위한 환경 - 구성 : Java 언어, Java 패키지, JVM(Java Virtual Machine) 2. 자바 플랫폼의 종류 1. Java SE (Standard Edition) - 가장 대중적인 자바 플랫폼. 자바 프로그래밍 언어 핵심 기능들을 제공 - 흔히 자바 언어라고 하는 대부분 패키지 포함 ( java.lang.* , java.io.* , java.util.* 등) - 데스크톱 응용 소프트웨어 개발에 사용된다 2. Java EE (Enterprise Edition) - 자바 SE 기반으로 그 위에 탑재 - 대규모, 다계층, 신뢰성, 보안 네트워킹 애플리케이션 개발 및 실행을 위한 API 및 환경 제공 - 웹 기반 응용 소프트웨어 ..

    [Git] Rebase로 브랜치 병합하기 / Rebase vs Merge 차이

    1. Rebase란? re-base, 베이스를 재배치하는 명령어 한 브랜치에서 다른 브랜치로 합치는 Merge가 아닌 다른 방법 🔎 Merge vs Rebase master에서 merge 실행하면, 다음 그림처럼 n3라는 브랜치를 병합하는 새로운 커밋이력이 생성됩니다 master에서 rebase를 실행하면, 다음 그림처럼 rebase_branch를 base로 커밋을 재정렬합니다 Rebase를 하면 commit 이력이 깔끔해집니다 하지만 rebase를 실행하면 커밋도 새로 생성되고 이력도 재정렬되기 때문에 커밋트리가 달라지므로 master에서 rebase를 실행하는 것은 피하도록 하자❗ 2. Rebase의 사용 2.1 새 브랜치에 소스 반영 rebase_branch 를 새로 따서 2개의 commit을 진행..

    [Git] Squash Commit / Merge : 여러 개의 Commit 합치기

    이미 Commit 했는 데 추가적인 수정사항이 있거나 요건이 추가되어 여러 개의 Commit으로 이력이 너무 지저분해진 경우, Squash하여 하나의 Commit으로 이력을 깔끔하게 관리할 수 있습니다 😋 0. Squash 여러 개의 Commit을 하나의 Commit 이력으로 만드는데 사용하는 방법 가능하다면 원격 저장소에 push하지 않은 작업만 squash하기를 추천합니다 (push / pull 과정이 번거로워요) 여러 Commit을 Squash 할 수 있는 두 가지 방법을 소개하겠습니다 1. Rebase를 통한 Squash 2. Squash 옵션을 사용한 Merge 1. Rebase를 통한 Squash 다음처럼 3개의 commit을 확인해두었습니다 ( First ~ Third Commit : 합칠거..

    [Oracle] 조건함수 DECODE 사용법

    1. Oracle DECODE 개념 오라클에서 조건을 걸고 싶을 때, 조건이 =(일치)의 경우 간단하게 사용할 수 있는 함수 CASE문도 있지만, 더욱 간단하게 사용할 수 있습니다 오라클에만 존재하는 함수이므로 MySQL 등 과의 호환 예정이라면 사용을 피해야합니다 2. DECODE 사용법 DECODE(컬럼명, 조건1, '결과값1', 조건2, '결과값2', ... , 'ELSE 결과값') (ex) 사용 예시 DECODE(FRUIT, NULL, 'NOTHING', 1, 'APPLE', 2, 'BANANA', 3, 'GRAPE', 'OTHER') References 📌 https://devmoony.tistory.com/117

    [Git] 원격 저장소까지 반영된 commit 되돌리기(Git Reset)

    remote 저장소까지 반영된 commit을 되돌릴 때에는 기록이 남도록 Revert하는 것이 맞지만? 흔적도 없이,,,,commit을 없애버리고 싶을 때,,,쓰는 방법을 기록해둡니다 원격 저장소에 반영된 Commit 되돌리는 방법 0. 되돌릴 commit 확인 아래 명령어로 몇 개의 commit을 되돌릴 건지 확인합니다 git log "I wanna remove this Commit" commit이 아래 사진에서처럼 원격 저장소까지 반영되었음을 확인할 수 있습니다 🤣 1. git reset 되돌릴 commit 수만큼 다음 명령어를 실행합니다 git reset HEAD~{되돌릴 commit 수} 명령어 실행 후, log를 확인해보면 해당 commit이 삭제된 것을 확인할 수 있습니다 🔎 Reset 할 때..

    [Github] Issue 및 Issue Branch 생성하여 프로젝트 관리하기

    여러 사람과 함께 프로젝트를 할 때 브랜치명 만으로는 어떤 기능을 개발 중인지 알기 어렵죠 issue를 생성하여 개발할 기능에 대한 요건 등을 정리하고 해당 issue에 대한 branch를 생성하여 관리하면 내가 개발 중인 issue에 대한 관리도 쉽고, 다른 사람이 내 issue를 관리할 때에도 편하더라구요 😆 1. Issue Github에서는 issue를 통해 프로젝트에서 발생하는 문제(개발, 버그 등)를 관리할 수 있습니다 ▶ 공식 문서에서의 정의 : Use GitHub Issues to track ideas, feedback, tasks, or bugs for work on GitHub. Issues let you track your work on GitHub, where development h..