전체 글 63

[자료구조] 원형 큐(CircularQueue)

Queue를 구현하는 방법1. 이전 포스트의 선형 큐 LinkedList를 이용한 구현2. 배열을 이용한 원형 큐 구현  ● 배열을 이용한 선형 큐 구현은 너무 비효율적 원형 큐 (CircularQueue)1. 우선 Queue 구현에 사용할 IQueue 인터페이스를 생성package queue;public interface IQueue { void offer(T data); T poll(); T peek(); int size(); void clear(); boolean isEmpty();} 2. IQueue를 구현할 MyCircularQueue클래스를 생성 후 메서드를 생성package queue;public class MyCircularQueue implements IQ..

[자료구조] 선형 큐(LinearQueue)

Queue란?● 선입선출(First-In-Fast-Out - FIFO)● 순서가 보장된 처리 (사용자가 몰린 서버)Queue의 주요 동작 ●  push(), offer(), add()● pop(), poll()● peek()선형 큐 (LinearQueue)1. 우선 Queue 구현에 사용할 IQueue 인터페이스를 생성 package queue;public interface IQueue { void offer(T data); T poll(); T peek(); int size(); void clear(); boolean isEmpty();} 2. IQueue를 구현할 MyLinkedQueue클래스를 생성 후 메서드를 생성package queue;public class My..

[github] 다른 사람의 커밋 내용 가져오기

현재 인터넷 강의를 시청하면서 공부중에 처음 작업하는 github 내용이 있어서 작성하였다.강의를 시청하면서 따라해야 하는 예제 코드를 github에서 가져와야 하는데 전체 코드를 가져오자니 이미 전부 작성된 코드를 가져와야 했다.그래서 맨 처음에 커밋한 내용을 가져와 강의를 들으면서 직접 따라 할 수 있도록 하고 싶었고 방법을  찾아서 글을 작성하게 되었다. git clone 후 원하는 커밋만 가져오는 방식1. 전체 프로젝트를 클론한다.  - 먼저 전체 프로젝트를 클론한 후 불필요한 부분을 제거하는 방법이다.bashgit clone https://github.com/사용자명/저장소명.gitcd 저장소명 전체 프로젝트를 클론한 후 cd 명령어를 이용해 해당 저장소로 이동한다. 2. 원하는 커밋으로 체크아..

github 2025.02.27

[자료구조] 스택

Stack  - 후입선출 (Last-In-First-Out - LIFO)  - ex) 인터넷 브라우저 뒤로 가기, Ctrl + zStack 예제1. 우선 List와 같이 Stack 구현에 사용할 IStack 인터페이스를 생성package stack;public interface IStack { void push(T data); T pop(); T peek(); int size();} 2. IStack을 구현할 MyStack 클래스를 생성 후 메서드를 생성package stack;public class MyStack implements IStack { @Override public void push(T data) { } @Override pub..

[자료구조] 리스트 - DoubleLinkedList

LinkedList는 아래 사진과 같이 Next Node만을 사용하여 Node를 관리 했었더라면DoubleLinkedList는 아래 사진과 같이 Next Node와 Prev Node를 함께 사용하여 Node를 관리한다.LinkedList는 맨 앞에 있는 head node 부터 마지막 node 까지 순차적으로 조회를 해야 했다면DoubleLinkedList는 List의 절반인 중간 시점 부터 head와 가까우면 head 부터 tail과 가까우면 tail 부터 조회가 가능하다. DoubleLinkedList예제1. 우선 DoubleLinkedList도 Node를 기반으로 하기 때문에 Node를 먼저 생성이전 LinkedList는 next Node만 관리를 해줬더라면 DoubleLinkedList는 해당 No..

[자료구조] 리스트 - LinkedList

Linked List 장점  - 배열의 복사나 재할당없이 데이터 추가 가능  - 유연한 공간Linked List 단점  - 데이터 접근에 대한 시간이 늘어남 LinkedListArray추가O(N)O(1), O(N)삽입O(N)O(N)삭제O(1)O(N)검색(조회)O(N)O(1) LinkedList 예제1. 우선 LinkedList는 Node를 기반으로 하기 때문에 Node를 먼저 생성private class Node { T data; Node next; Node(T data) { this.data = data; } Node(T data, Node next) { this.data = data; ..

[자료구조] 리스트 - ArrayList

1. List의 특징  - 선형적인 자료구조  - 데이터를 일렬로 늘여 놓은 형태  - 순서  - 데이터 삽입하기  - 데이터 삭제하기  - 리스트 탐색하기 2. List의 종류  - ArrayList  - LinkedList : Single Linked List, Double Linked List 3. ArrayList  - 배열 기반의 리스트  - 메모리 공간을 연속적으로 사용import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args) { // 문자열 리스트 생성 List list = new ArrayList(); // 리스트에..

[자료구조] 자료구조 기초

자료(Data)와 자료 구조(Data Structure)  - 자료(데이터)를 어디에 어떻게 저장하여 관리할지 (검색, 순회, 저장, 삭제, 변경 등)  - 자료를 담는 추상적인 툴  - 컴퓨터의 자원은 한정적이며 제한된 제약조건 내에 정확한 결과를 내야함  - 데이터의 형태와 쓰임에 가장 적합한 자료구조를 쓰는 것은 매우 중요 공간 복잡도  - 데이터 관리에 필요한 공간  - 데이터 양의 변화에 따른 공간의 변화  - 예상 소요 공간 측정 시간 복잡도  - 데이터 처리에 소요되는 시간  - 데이터 양의 변화에 따른 소요 시간의 변화  - 예상 처리 시간을 측정  - 지연 장애가 발생했을 때 왜 발생했는지를 찾을 수 있는 근거 시간 복잡도  - O(1) : 입력 데이터의 크기와 상관없이 항상 일정한 시간..

[회고]B2B-물류관리 및 배송 시스템

이번 프로젝트로는 물류관리 및 배송 시스템 프로젝트를 진행하였고 회고를 진행하기 위해 글을 작성했습니다.프로젝트 목표 및 자세한 내용은 github를 참고해 주시면 감사하겠습니다.GitHub링크1. 프로젝트를 진행하면서 좋았던 점 / 잘한 점1. 프로젝트를 모놀리식 구조가 아닌 MSA구조로 진행한 점  - 각 기능별로 서로 연관되는 서비스끼리 분리하여 관리할 수 있도록 프로젝트를 진행한 점이 좋았습니다.  - 아래 사진과 같이 서비스를 분리했으며 저는 Order부분을 구현하였습니다.2. 구현을 맡은 Order 서비스 요구사항을 끝까지 구현한 점  - 프로젝트의 요구사항을 세밀한 부분까지 완벽하게 구현하지는 못했지만 요구사항을 끝까지 구현하였습니다.2. 프로젝트를 진행하면서 아쉬웠던 점 / 부족했던 점1...

TIL, WIL/TIL 2024.09.23

대규모 AI 시스템 설계 프로젝트

프로젝트 목적이번 프로젝트는 물류 관리 및 배송 시스템을 개발하는 것이 목표이다.MSA기반의 시스템을 설계하고 구현하면서 다양한 기술과 방법론을 적용해 볼 예정이다.이번 프로젝트를 통해 MSA의 복잡성을 이해하고 실무에서 발생할 수 있는 문제를 간접적으로 경험하고 해결하는 것이 목표이다.프로젝트 개요이번 프로젝트는 B2B 물류 관리 및 배송 시스템 이다. B2B는 Business to Business의 약자로, 기업 간 거래를 의미한다.물류는 각 지역에 허브센터를 가지고 있으며 각 허브 센터는 여러 업체의 물건을 보관한다.업체의 상품은 허브에서 필요한 경우 바로 허브로 전달된다.해당 상품의 배송 요청이 들어오면 목적지 허브로 물품을 이동시켜 목적지에 배송한다.API 명세서테이블 명세서ERD 명세서인프라 ..