본문 바로가기

hello 자바!

(5)
아주 간단한 Spring Boot 배포 사이드 프로젝트 백엔드를 Spring Boot로 만들고 있는 데, 어느 정도 로컬에서 개발하고 난 뒤 테스트 서버(EC2)에 배포해두었다. 소스를 실행가능한 jar 파일로 만들어서 구동시키는 진짜 간단한 방법이라 정리할 게 별로 없지만, 테스트 서버 패치 겸, 같이 하는 다른 친구에게도 공유할 겸 써보았다. 1. 대상 소스를 jar 파일로 빌드 사이드 프로젝트에서 기능 단위로 개발 및 테스트를 마치면 back-develop에 머지해두기 때문에, 내 경우엔 back-develop 브랜치에 머지가 되는 시점의 소스! 이 소스를 jar 파일로 빌드한다. gradle bootJar 빌드된 파일은 build/libs/--.jar 에 위치한다. jar vs bootJar gradle jar 로 만들면 -plain...
링크드 리스트로 브라우저 히스토리 구현하기 덱 자료구조를 활용한 경우를 찾아보면 브라우저 히스토리나 멀티 스레드 스케줄링 등이 나옵니다. 익숙하고 자주 사용해 본 브라우저 히스토리 API 의 메서드를 링크드 리스트로 구현해보았습니다. 브라우저 히스토리 브라우저 히스토리 API는 브라우저의 세션 히스토리에 접근할 있도록 합니다. 주요 메서드는 다음과 같습니다. back() : 이전 기록으로 이동 forward() : 앞선 기록으로 이동 go(int i) : i 만큼 이동, 음수이면 back, 양수이면 forward와 같음 제약 조건 브라우저 히스토리를 구현할 때 다음을 조건으로 두었습니다. 히스토리의 총 길이는 5이며, 이를 넘어갈 경우 가장 오래된 기록을 삭제합니다. back, forward, go를 모두 구현합니다. 히스토리의 정해진 길이보다 ..
링크드 리스트 링크드 리스트는 리스트 List와 덱 Deque 등을 구현한 클래스입니다. 링크드 리스트에 대해 알아보기 전에 리스트와 덱에 대해 먼저 알아보았습니다. 리스트 인터페이스 리스트 인터페이스는 순서가 있는 컬렉션으로 시퀀스 sequence 라고도 불립니다. 요소가 삽입될 위치를 조정할 수 있고, 인덱스로 요소에 접근할 수 있고, 리스트 내의 요소들을 검색할 수 있습니다. 아래 표는 각 기능을 구현한 메서드에 대한 설명입니다. 인덱스로 요소에 접근하는 메서드 구현한 클래스에 따라 요소를 인덱스로 접근하는데 인덱스의 값에 따라 실행 시간이 소요될 수 있습니다. (예: 링크드 리스트) get 메서드가 여기에 해당합니다. 리스트 내의 요소들을 검색하는 메서드 성능적인 면에서 주의해서 사용해야 하는데, 대부분의 구현..
어레이 리스트 어레이 리스트 특징 어레이 리스트 ArrayList 클래스는 컬렉션 인터페이스 포스트에서 말한 Collection 인터페이스를 구현한 객체 중 하나입니다. 다음과 같은 특징을 가지고 있습니다. List 인터페이스를 구현한 클래스이며, 요소로는 null을 포함한 모든 타입을 가질 수 있습니다. 변경할 수 있는 메서드를 지원하고, 가변 객체이고, 가변 크기 리스트이며, 임의 접근 리스트입니다. size, isEmtpy, get, set, iterator 등은 O(1), add와 나머지 대부분의 메서드들은 O(n)의 시간 복잡도를 가집니다. 배열 용량 capacity 어레이 리스트 객체는 리스트 내부에 요소들을 저장하는데 사용하는 배열의 크기를 지칭하는 배열 용량 capacity 를 가지고 있습니다. 어레이 ..
컬렉션 인터페이스 컬렉션 프레임워크 컬렉션 collection 은 어레이 리스트 클래스, 해시 셋 클래스, 벡터 클래스와 같은 객체들을 나타내는 객체이고, 컬렉션 프레임워크 collection framework는 컬렉션들을 나타내고 조작하는 아키텍처입니다. 컬렉션 프레임워크를 적절히 활용하면 프로그래밍 비용을 줄이고, 성능을 높일 수 있습니다. 컬렉션 프레임워크는 컬렉션의 각기 다른 타입을 나타내는 컬렉션 인터페이스, 컬렉션 소팅과 같은 정적 메서드 등으로 이루어져 있으며, 그중 컬렉션 인터페이스는 컬렉션 프레임워크의 가장 기반을 이룹니다. 컬렉션 인터페이스 컬렉션 인터페이스는 java.util.Collection 과 java.util.Map 두 그룹으로 나뉩니다. 인터페이스 구현 클래스 Collection ArrayLi..