일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Stream
- 이스티오
- Real MySQL
- Java
- 자바 ORM 표준 JPA 프로그래밍
- spring
- jvm
- MSA
- gradle
- 토비의 스프링 정리
- 스프링
- thread
- 보조스트림
- OS
- Stack
- 스트림
- 토비의 스프링
- GC
- 백준
- 쿠버네티스
- 자바
- list
- JPA
- mysql
- Kotlin
- IntellJ
- Collection
- redis
- K8s
- SpringBoot
- Today
- Total
목록전체 글 (152)
인생을 코딩하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEfnWG/btqTIoN22b6/h2EwBpk8qs8ZwL7uhIwVbK/img.png)
JVM 역할이 뭘까?? 자바 애플리케이션 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해줌 메모리관리, Garbage collection을 수행한다. 스택 기반으로 동작한다. 즉, 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. // 바이트코드) 자바 가상머신이 이해할 수 있는 언어로 변환된 자바 소스 코드 왜 JVM을 알아야 하는가? 메모리 효율성을 위해 메모리 구조를 알아야 하기 때문이다. 동일한 기능의 프로그램이더라고 메모리 관리에 따라 성능이 좌우된다. 우리는 한정된 메모리를 효율적으로 사용하여..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c2zqkZ/btqTqJrXSj1/DiKfK4uHoZR7J4jq5H6pfK/img.png)
Map이란 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스들을 구현하는데 사용되는 List형태의 조상 Map 인터페이스와 이 구현체들은 Collection에 속하지만 Map은 Collection이 아니다. 왜 그럴까? '엘리먼트들의 그룹' Collection 인터페이스의 기본 개념과 맞지 않는다. Map은 java.util 패키지의 Map이라는 이름의 인터페이스로 선언되어 있고, 구현해 놓은 클래스들도 많이 있다 Map 인터페이스에 선언되어 있는 메소드 리턴 타입 메소드 이름 및 매개 변수 설명 V put(L key, V value) 첫 번째 매개 변수인 키를 갖는, 두 번째 매개변수인 값을 갖는 데이터를 저장한다. void putAll(Map
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EooM4/btqTtqL8lIW/KWZy6kB9AC1F5D8EA4MVo0/img.png)
Set은 순서에 상관 없이, 어떤 데이터가 존재하는지를 확인하기 위한 용도로 많이 사용된다. 중복되는 것을 방지하고, 원하는 값이 포함되어 있는지를 확인하는 것이 주 용도다. Map 인터페이스의 Key만 사용하고 value는 항상 같은 Dummy 값을 넣어두고 사용하지 않는다. HashSet : 순서가 전혀 필요 없는 데이터를 해시 테이블에 저장한다. Set 중에 가장 성능이 좋다. 내부적으로 HashMap를 사용한다. TreeSet : 저장된 데이터의 값에 따라서 정렬되는 셋이다. red-black이라는 트리타입으로 값이 저장되며, HashSet 보다 약간 성능이 느리다. 내부적으로 TreeMap을 사용한다 LinkedHashSet : 연결된 목록 타입으로 구현된 해시 테이블에 데이터를 저장한다. 저장..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJZWNY/btqTlHtM6Tr/pVfdzPO1J3BakOlaGEzaaK/img.png)
List는 Collection 인터페이스를 확장하였다. 따라서, 몇몇 추가된 메소드를 제외하고는 Collection에 선언된 메소드와 큰 차이는 없다. Collection을 확장한 인터페이스와 다른 인터페이스와 List 인터페이스의 가장 큰 차이점은 배열처럼 '순서' 가 있다는 것이다. List 인터페이스를 구현한 클래스들중에서 java.util 패키지에서는 ArrayList, Vector, Stack, LinkedList를 많이 사용한다. ArrayList와 Vector 클래스의 사용법은 거의 동일하고 기능도 거의 비슷하다. 이 두 클래스는 "확장 가능한 배열" 이라고 생각하면 된다. 차이점은 Vector은 Thread safe하고, ArrayList는 Thread safe하지 않다. /* Vector..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vpEvu/btqTqJk8xDg/OSc7FI0HLKisv01kmk186k/img.png)
Collection 인터페이스는 java.util 패키지에 선언되어 있으며, 여러 개의 객체를 하나의 객체에 담아 처리할 때 공통적으로 사용되는 여러 메소드들을 선언해 놓았다. 이중에 유일하게 Map 만이 Collection과 관련 없는 별도의 인터페이스로 선언되어 있다. Collection의 인터페이스는 다음과 같이 선언되어 있다. public interface Collection extends Iterable { Iterable 이라는 인터페이스를 확장하고 있다. Iterable 인터페이스에 선언되어 있는 메서드는 iterator() 메소드 하나가 있다. 더보기 Iterator라는 인터페이스에는 추가 데이터가 있는지 확인하는 hasNext() 메소드, 현재 위치를 다음 요소로 넘기고 그 값을 리턴해주..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsIsy9/btqSX77ESyA/FXpiO2vDoOw26aIKNwtuFk/img.jpg)
public class ReferencePass { public static void main(String[] args) { ReferencePass reference = new ReferencePass(); reference.callPassByValue(); } public void callPassByValue() { int a = 10; String b = "hyungil"; System.out.println("before passByValue"); System.out.println("a=" + a); System.out.println("b=" + b); passByValue(a, b); System.out.println("after passByValue"); System.out.println("a=..
열거형(enum) - 관련된 상수들을 같이 묶어 놓은 것, Java는 타입에 안전한 열거형을 제공 class Card { // 카드 무늬 static final int CLOVER = 0; static final int HEART = 1; static final int DIAMOND = 2; static final int SPADE = 3; // 카드 숫자 static final int TWO = 0; static final int THREE = 1; static final int FOUR = 2; final int Kind; final int num; } 이렇게 일일이 하나씩 상수를 정의하다 보면 너무 많다. 그래서 간단히, class Card{ // 0, 1, 2, 3 enum kind { CLOVE..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BkKcw/btqSgLwQJ3m/je3uJ0XDw9YZtUoKTNuaMk/img.png)
Domain 레이어란? 1. Domain - 저장소와 밀접한 중심 도메인을 다루는 계층은 더 견고하고 특별하게 격리되고 관리되어야 하기 때문에 반드시 분리되어야 한다. 즉, JPA를 기준으로 한다면 테이블과 맵핑되는 Class들 - 이 계층은 오로지 도메인에만 집중하고, 어떠한 도메인이든 그 도메인이 가져야할 서비스와 무관한 도메인의 비즈니스가 있다. 2. Repository - 도메인의 CRUD 역할을 한다. 여기서 주의할 점은 모든 CRUD 역할을 이곳에서 하는 것이 아니다. 이 모듈은 시스템에서 가장 보호받아야 하며 가장 견고해야 할 모듈이므로, 이 모듈에서 CRUD에 관한 정의를 작성할때 많은 고민을 해야한다. - 예를 들어 시스템 도메인에 관한 통계를 기능으로 추가한다고 했을 때, 이는 시스템이..