Programming
-
[Java] Immutable ObjectProgramming/Java 2024. 4. 1. 22:09
Immutable Object : An object whose state cannot be modified after it is created - Once an immutable object is instantiated, its internal state(the values of its fields) cannot be altered through any means. 1. Thread Safety - In a multi-threaded envrionment, multiple threads can access an immutable object simultaneously without worrying about synchronization issues 2. Simplified Concurrency - Sin..
-
[Java] Request DTO 불변 객체로 만들기 - JSON 역직렬화Programming/Java 2023. 5. 29. 01:10
들어가기 전에 DTO 혹은 VO 객체가 한 번 생성하고 나서 값이 변경될 가능성이 없다면 Immutable 하게 생성하는 것이 좋다고 한다. Gotcha 프로젝트를 리팩토링하며 불변 객체화할 수 있는 클래스들을 불변 객체화 하는 것을 진행해보려고 한다. 제일 간단한 기능을 기준으로 테스트해보고자한다. 수정전 Controller, Service, Request DTO는 아래와 같다. Repository는 Spring Data JPA를 이용한 기본 메소드를 사용했다. [DuplicateNicknameRequest] *참고) - @NoArgsConstructor는 Jackson에서 리플렉션을 통해 json 데이터로 객체를 생성할 수 있도록 함 - @Builder 는 test code 작성시 객체를 생성하기 ..
-
[Java] 불변 객체(Immutable Object)와 final을 사용해야 하는 이유Programming/Java 2023. 5. 28. 21:20
프로젝트를 진행하며 의존성 주입을 위해 private final을 써왔었다. 그런데 이 final이라는 것에 대해 제대로 고민하고 다른 객체에 사용해본 적이 없는 것 같아 Gotcha 프로젝트를 리팩토링하며 배운 내용들을 포스팅해보고자 한다. 불변 객체(Immutable Object)란? : 객체 생성 이후 내부의 상태가 변하지 않는 객체 ➡️ 한 번 생성이 된 불변 객체는 신뢰할 수 있다. - read-only 메소드만 제공하며 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사를 통해 제공 - Java의 String은 대표적인 불변 클래스로 String Pool이라는 공간에 String 객체를 보관하고 있음 - 변수에 새로운 값을 할당할 경우 객체의 value가 변하는 것이 아닌 새로운..
-
[Git] Stash 개념과 사용 방법 - Commit 할 수는 없는데 브랜치 전환이 필요할 때!Programming/Git 2023. 4. 23. 21:38
[들어가기 전에] 프로젝트를 하다보면 종종 아직 작업한 부분이 Commit을 할 수는 없는 상태인데 브랜치 변경을 해서 다른 브랜치에서 작업이 급하게 필요할 때 현재 작업한 부분을 어떻게 해야할지..?애매한 상황이 종종 발생하곤 했었다! 그럴 때 파일의 변경 사항들을 임시적으로 저장할 수 있는 것이 Git Stash! 이번에 강의를 들으면서 새롭게 알게 되었다. 역시 안되는건 없다,, [Git Stash 개념] : 아직 완성되지 않은 작업을 스택에 임시 저장할 수 있도록 하는 깃 명령어 - stash는 워킹 디렉토리에서 수정한 파일들만 저장(아래 2가지 종류의 파일) 1) Modified & Tracked 상태의 파일 2) Staging Area에 있는 파일(Staged 상태의 파일) [사용 방법] 1...
-
[Mac M1] zsh: command not found: code (VS code에서 설치했는데도 안될 때!)Programming/Git 2023. 4. 23. 16:03
[문제 상황] - iTerm2에서 code 명령어를 이용해 vs code 편집기를 자동으로 실행하고 싶었으나 zsh: command not found: code 에러 발생 [해본 것] 1. VS Code에서 cmd+shift+p를 눌러 Shell Command: Install 'Code' command in PATH 설치 > 안됨 - 설치 후에 껐다 켜고, VS Code가 응용프로그램에 안들어가 있어서 그것도 넣어주고 해도 안 됨 - 잘 몰랐던 시절에 ~/.zshrc에 PATH를 이것저것 등록하고 난잡하게 사용해서 패스가 꼬였나?해서 oh my zsh도 삭제하고 homebrew 등 기본 프로그램도 다 삭제하고 재설치 후 다시 이 방법을 도전했으나 안됨 2. 터미널에서 ~/.zshrc 파일실행하여 code..
-
[Java Collection Framework] 3. Queue, PriorityQueue, Deque, ArrayDequeProgramming/Java 2023. 3. 13. 20:30
2. Queue 인터페이스 : 데이터 처리를 하기 전 요소를 보관하도록 설계된 컬렉션 ✅ 특징 1. 삽입, 추출, 검사 메소드 추가 - 기본 Collection 작업 외에도 추가 적인 메소드 제공 - 각 메서드는 두 가지 형식으로 존재(예외가 발생하는 것과 값을 반환하는 것으로 구분) - 대기열은 일반적으로 FIFO(선입선출) 방식으로 요소를 정렬 - add, remove, element 메소드의 경우 값이 없으면 예외가 발생하나, offer, poll, peek은 false나 null 값을 반환 값이 없을 경우 예외 발생 값 반환(false or null) 삽입 add(e) offer(e) 추출 remove() poll() 검사 element() peek() 2. null 값 추가 비허용 - Queue..
-
[Java Collection Framework] 2. 컬렉션(Collection), 리스트(List), ArrayList, LinkedList, VectorProgramming/Java 2023. 3. 7. 15:41
Collection 인터페이스 collection 계층 구조의 root interface로 object의 집합을 의미 List, Queue, Set이 이를 구현 ✅ 주요 메소드 1. List 인터페이스 ✅ 주요 메소드 🔽 메소드 공부하면서 생긴 궁금증 더보기 Q. 각각 new 생성자를 통해 생성한 ArrayList 객체가 같은 값, 같은 순서의 요소를 갖고 있을 때, hashCode값이 같은 이유가 뭘까? - hashCode는 각 객체에 고유한 속성값을 주기 위해 존재하며 보통은 메모리 주소를 기반으로 함 - 하지만 'ArrayList'는 hashCode 메소드를 override하여 리스트의 컨텐츠를 기반으로 값을 반환(메모리 주소가 아닌!) - ArrayList에서는 이터레이터를 통해 리스트의 요소들을..
-
[Java Collection Framework] 1. 컬렉션 프레임워크란?Programming/Java 2023. 2. 11. 22:34
컬렉션 프레임워크란? : 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스 집합 - 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것 - 컬렉션 프레임워크는 자바의 인터페이스를 사용해 구현 📍Collection이란? : 오브젝트의 집합. A collection is an object that represents a group of objects (such as the classic Vector class). Collection Framework 종류 List : 인덱스의 순서로 요소를 저장하며 중복된 데이터 저장 가능 Queue : 데이터가 저장된 순서대로 출력되는 선입선출 구조를 갖는 선형 자료구조 Set : 순서가 없으며 데이터 중복..