mjeongriver
article thumbnail
Published 2022. 10. 26. 12:43
day22-java TIL/Java

1. 형상 관리(Software Configuration Management): 변경 사항을 관리

- 소스 코드 버전 관리(VCS-Version, Control, System)

- 문서에 작성

 

 

2. stack: list구조(Last In First out)

- 자료구조에 제너릭이 적용되어 있다.

데이터 삽입: push

push(10)

push(20)

 

데이터 가져오기 : pop - top의 위치의 데이터를 삭제하고 가져옴

pop(): 20

pop(): 10

pop()

 

underflow: 데이터가 없는데 pop

overflow: 더 이상 저장할 공간이 없는데 push

용도: 함수의 데이터 저장

 

- 삼단 네이밍으로 이름 지을 수 있도록 할 것

 

3. API collection Class

1. list

1) stack

- Last In Fisrt Out 구조(후입 선출)

- Top 이라고 하는 위치에서 데이터를 삽입하고 꺼내는 자료구죠
- 데이터를 삽입하는 동작을 push라고 하고 꺼내는 동작을 pop 이라고 함

 

* 실습을 위한 vo 클래스 생성

 

* 실행을 위한 main 클래스 생성하고 main 메서드를 작성한 후 실행

 

 

2 ) Queue

- FIFO(First In First Out - 선입 선출): 먼저 삽입한 데이터가 먼저 출력 됩니다.

- 삽입되는 위치와 삭제 되는 위치가 반대입니다.

- 이 위치를 rear와 front 라고 합니다.

- 스케줄링에 주로 이용합니다.

- java 에서는 인터페이스 형태로 제공합니다

- List가 존재하기 때문에 ArrayList나 LinkedList로 Queue의 역할 수행

- queue 인터페이스를 implement한 PriorityQueue 클래스를 제공

- 이 클래스는 데이터를 정렬해서 순서대로 찾아갈 수 있도록 해주는 클래스입니다.

- 정렬해서 저장하기 때문에 삽입되는 객체는 비교할 수 있는 메서드가 존재하거나 비교 방법을 제공을 해주어야 합니다.

 

* 실습

 

3) List 구조들의 정렬

- List 구조에 저장되는 데이터가 정렬을 수행하기 위해서는 비교할 수 있는 방법이 제공되어야 합니다.

 

4) Deque

- 양쪽에서 삽입과 삭제가 가능한 자료구조

- 스크롤이 가능한 뷰들이 이 deque를 이용해서 구현되어 있습니다.

- java에서는 인터페이스로 제공하고 ArrayDeque 라고 하는 클래스에 구현을 해두었습니다.

 

4. Anonymous

 

5. set

- 데이터를 중복 없이 저장하는 자료구조 인터페이스

- 해싱을 이용하기 때문에 데이터의 저장 순서도 기본적으로는 알 수 없습니다.

- 저장 순서를 알 수 없기 때문에 하나의 요소를 가져오는 메서드를 제공하지 않음

1) 구현된 메서드

- iterator 가 있어서 데이터를 하나씩 가져오지는 못하지만 순서대로 하나씩 접근하는 것은 가능

- 추가, 삭제 등을 위한 메서드도 제공

 

2) 구현된 클래스

- HashSet: 기본이 되는 set을 구현한 클래스, 보통의 경우 Set 이라고 하면 HashSet을 의미합니다.

- LinkedHashSet: 데이터가 저장된 순서를 기억하는 Set

- TreeSet: 오름차순 정렬한 순서를 기억하는 Set, 크기 비교하는 방법을 제공하는 클래스의 데이터만 저장 가능

- 자료구조 공부할 때 어디에 써먹을 수 있을까 생각해보기(상황에 맞게 쓰는게 중요함), 용도와 쓰임새를 기억할 것

 

3) set 클래스들을 비교하는 실습

 

4) 1~45까지의 랜덤한 숫자를 중복 없이 6개를 저장하고 순서대로 출력하기

- ArrayList 와 HashSet을 사용 했을 때의 차이

6. Map

- Key와 Value를 한꺼번에 저장하는 자료구조 인터페이스

- 인스턴스를 생성할 때 Key와 Value의 자료형 2개를 설정해야 합니다.

- 특별한 경우가 아니면 Key의 자료형은 String입니다.

- Value의 자료형은 모든 종류의 데이터를 저장하고자 하는 경우는 Object로 하고 그렇지 않은 경우는 저장하고자 하는

데이터의 자료형을 설정하면 됩니다.

 

Map<Key 의 자료형, Value 의 자료형> 변수명 = 

 

1) 메서드

- Value put(key, value): Map에 데이터를 저장하는 메서드인데 만약에 이미 존재하는 key를 사용하면 추가되는 것이 아니고 수정됩니다. 

- Value get(key)에 해당하는 value를 리턴, java에서는 없는 key를 사용하면 null을 리턴

- Value remove(key): key에 해당하는 데이터를 삭제

- Set<ket> keySet(): key 들을 Set으로 리턴, Map에 저장된 모든 데이터를 순회하고자 하는 경우 이용

 

2) Map을 구현한 클래스

- HashMap: key를 HashSet 형태로 보관

- LinkedHashMap: key를 LinkedHashSet 형태로 보관

- TreeMap: key를 TreeSet 형태로 보관

 

3) 용도

- 여러 데이터를 하나로 묶어서 표현하기 위한 용도로 사용

- 최근에는 되도록이면 Map 대신에 VO(DTO나 Entity) 클래스를 만들어서 사용하는 것을 권장

 

4) Map을 이용한 데이터 저장과 읽어오기

 

5) Map 학습 방법

- 응용 프로그램 개발자가 될 거라면 Map을 만들어서 데이터를 저장하고 가져오는 것만 할 수 있으면 된다

- 가져올 때는 없는 키를 사용했을 때 어떤 데이터가 리턴되는지 또는 어떤 에러가 발생하는지 확인할 수 있어야함

- 프로임 워크나 솔루션을 만드는 개발자가 되려면 Map의 많은 메서드를 사용해보고 이를 활용할 수 있어야 합니다.

 

7. Properties

- Map과 유사한데 key의 자료형과 value의 자료형이 String만 가능합니다.

- 환경 설정을 할 때 사용을 합니다.

- 예전에는 환경 설정을 할 때 대부분 텍스트 파일에 key와 valude 형태로 작성을 해두고 이를 읽어서 사용하는 경우가 많았습니다.

- 그 시절 사용하던 클래스입니다.

- 최근에 XML이나 YAML 많이 사용하기 때문에 사용빈도는 많이 줄어들었지만 아직도 이 형태로 설정하는 경우가 있습니다.

- String의 지역화나 Spring Boot Project의 기본 환경 설정(최근에는 YAML로도 가능)이 대표적입니다.

- 메서드

- String getProperty(string key)

- String getProperty(String key, String value)

- void store(OutputStream out , String comment): 파일이나 외부 서버에 저장

- void storeToXML(OutputStream out, String comment): 파일이나 외부 서버에 저장

- 빨간색 원을 배포하는 것

- 개발 환경과 운영 환경의 차이

- 개발 환경 == 운영 환경: Cloud(공공기관 데이터 이전) 가상화(Docker + 쿠버네티스),  Linux

- Properties, xml, json, yml 설정파일로 쓰이는 데이터의 확장자 기억하기

- spring boot에 react 붙여서 해보기

- XML: 태그 형식

 

8. Branch를 만들어서 저장

- 프로젝트에서 마우스 오른쪽을 누르고 [Team] - [Switch To] - [New Branch]를 눌러서 Branch를 생성
- 새로운 Branch에 Commit And Push를 하게되면 새로운 Branch에 저장됩니다.

 

** Project를 3개 정도 하는 경우

- Spring Legacy Projext ?

- Spring Boot + JPA를 이용해서 REST API Server를 구축하고 react 나 vue를 이용해서 client Application을 구축

- Google의 Firebase나 AWS의 람다를 이용한 ServerLess 나 AWS의 S3를 이용한 별도의 파일 업로드 서버를 구축


** 사용법을 알아두면 좋은 것들
- Git Hub : 필수
- Linux
- Doker & Kubernetes
- Jenkins
- JIRA

- 프로젝트: 쇼핑몰 X-결제 모듈, 상품 추천, 주제 선정 미리 생각해두기

- 동네 근처에 노래방 합쳐서 예약, 빈자리 알려주기와 같이 핵심적인 모듈이 필요한 것을 만들 것

 

 

'TIL > Java' 카테고리의 다른 글

day24-java  (0) 2022.10.28
day23-java  (0) 2022.10.27
day21-java  (2) 2022.10.25
day20-java  (0) 2022.10.24
day19-java  (0) 2022.10.18
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그