본문 바로가기
spring/개인

다시다시 자바 & 스프링

by ddanss 2023. 5. 10.
728x90

자바공부

http://www.tcpschool.com/java/java_api_wrapper


Model 객체는 Controller 에서 생성된 데이터를 담아 View 로 전달할 때 사용하는 객체

model.Attribute("key", "value") 

addAttribute("key", "value") 메서드를 이용해 view에 전달할 데이터를 key, value형식으로 전달할 수 있다.


테스트코드는 위에 main에 있는 코드를 기반으로 한다

 

Assertions.assertThat을 이용하여 테스트. 값 일치 = isEqualTo


Long과 long의 차이

Long, Integer --------- long, int

Long

1. null 사용 가능

2. Long자체가 하나의 클래스이다. (Ctrl 누르고 누르면 보임)

 

 

long

1. null 사용 불가능

2. 기본 데이터 유형

3. long num = 15000L;

 

chatgpt가 말하는 Long과 long의 용도 차이

long과 Long은 모두 64비트 부호 있는 정수 값을 저장하는 데 사용됩니다. 하지만 long은 기본 자료형이므로 객체로 사용할 수 없으며, 산술 연산 등의 기본 연산을 수행할 수 있습니다. 반면에 Long은 객체이므로 기본 연산을 수행할 수 없지만, 객체 지향적인 기능을 제공합니다.

따라서, long은 숫자를 다룰 때 주로 사용되며, Long은 숫자를 객체로 다룰 때 유용하게 사용됩니다. 예를 들어, long은 계산을 위한 변수 또는 배열의 인덱스로 사용될 수 있습니다. Long은 long값을 객체로 캡슐화하여 사용할 수 있기 때문에, ArrayList와 같은 자료구조나 Map과 같은 컬렉션에서 사용할 수 있습니다.

또한 Long은 long값을 문자열로 변환하거나, 문자열을 Long 객체로 파싱하는 등의 유틸리티 메서드를 제공하기 때문에, 문자열을 다루는 작업에서 유용하게 사용될 수 있습니다.

 

감사합니다 chatgpt~


Optional

null을 포함하는 값을 감싸는 래퍼 클래스
이 클래스를 사용하면 값이 존재하지 않을 수 있는 상황에서 NullPointerException 예외를 방지할 수 있음

 

Optional의 장점

1. NullPointerException 방지: Optional은 null 값에 대한 안정적인 대체 방법을 제공.
2. 코드 가독성 향상: Optional을 사용하면 코드가 명확하고 간결해짐
3. API 호환성 향상: Optional을 사용하면 메소드의 반환 값으로 null을 반환할 필요가 없으므로 API의 호환성이 향상

 

Optional 객체 생성하기
1. Optional.of(value): null이 아닌 값으로 Optional 객체를 생성.
2. Optional.empty(): 빈 Optional 객체를 생성
3. Optional.ofNullable(value): 값이 null인 경우 빈 Optional 객체를 생성하고, null이 아닌 경우 값으로 Optional 객체를 생성합니다.

 

Optional 객체 사용

1. get(): Optional 객체의 값을 반환합니다. 값이 존재하지 않을 경우 NoSuchElementException 예외가 발생

 


List

List는 순서가 있는 데이터의 집합을 저장하는 인터페이스

중복된 값을 허용하며, 데이터에 인덱스를 사용하여 접근할 수 있음

 

List 메소드들

1. add(E e): List의 맨 끝에 지정한 요소를 추가합니다.
2. add(int index, E element): 지정한 인덱스에 지정한 요소를 삽입합니다.
3. remove(Object o): List에서 지정한 요소를 삭제합니다.
4. remove(int index): 지정한 인덱스에 있는 요소를 삭제합니다.
5. get(int index): 지정한 인덱스에 있는 요소를 반환합니다.
6. set(int index, E element): 지정한 인덱스에 있는 요소를 새로운 요소로 대체합니다.
7. size(): List에 있는 요소의 개수를 반환합니다.
8. isEmpty(): List가 비어있는지 여부를 반환합니다.
9. contains(Object o): 지정한 요소가 List에 있는지 여부를 반환합니다.
10. indexOf(Object o): 지정한 요소가 List에서 처음으로 나타나는 인덱스를 반환합니다.
11. lastIndexOf(Object o): 지정한 요소가 List에서 마지막으로 나타나는 인덱스를 반환합니다.

 

구현 클래스로는 ArrayList, LinkedList 등이 있음

 


동시성 

Map

key-value 쌍을 저장하는 자바의 인터페이스입니다. 일반적으로 Map은 멀티스레드 환경에서 안전하지 않기 때문에, 동시성 처리가 필요한 경우 ConcurrentHashMap을 사용하는 것이 좋음

 

ConcurrentHashMap

멀티스레드 환경에서 안전하게 사용할 수 있는 Map 구현체

내부적으로 분할된 해시 테이블을 사용하여 구현되어 있으며, 각 스레드가 동시에 다른 부분을 수정할 수 있도록 스레드 안전성을 보장

 

AtomicLong

원자적인 연산을 지원하는 자바의 클래스

다른 스레드와 공유되는 long 타입의 변수를 안전하게 처리할 수 있도록 도와줌

synchronized를 사용하여 동기화하는 것보다 성능이 우수

카운팅, ID 생성 등에 유용하게 사용

 

 

동시성 처리를 제대로 이해하지 못하면 데드락(deadlock)이나 경합 상태(race condition)와 같은 문제가 발생할 수 있으므로 주의

과도한 동시성 처리는 성능 저하를 초래할 수 있으므로 적절한 동시성 처리 방법을 선택해야 함

 

 

 

 

 

 

 

 

반응형

'spring > 개인' 카테고리의 다른 글

spring mysql 연동  (1) 2023.05.21
인텔리제이 스프링 깃허브 연동  (0) 2023.05.17

댓글