본문 바로가기

전체 글

(9)
[네트워크] OSI 7계층 & TCP/IP 계층 🖥️ OSI (Open Systems Interconnection) 7계층 : OSI 7-Layer Model 통신의 접속에서 완료까지의 과정을 7단계로 구분 및 정의한 국제 통신 표준 규약각 작업을 계층화 및 모듈화 시킨 후 순서대로 진행함으로써 효율적으로 통신 가능서로 다른 통신 시스템을 사용하면서 발생하는 여러 문제를 예방 가능+) PDU (Protocol Data Unit)- 네트워크의 한 계층에서 다른 계층으로 데이터가 전달될 때의 단위- 제어 관련 정보를 담은 Header + Payload (데이터) 로 구성🔴 L7 : Application Layer (응용 계층)PDU: Data사용자가 볼 수 있는 부분으로, 이 layer에서 실행되는 application은 사용자와 직접적으로 소통함네트..
[Spring] Spring Bean이란? Spring을 공부하다보면 빈을 등록 및 사용한다는 표현을 자주 접하게 된다.그러나 정작 Bean이라는 개념에 대해 자세히 알고 있지 못한 것 같아 이번 기회에 조사해보게 되었다.🫘 Bean이란?공식문서에 따르면 Spring IoC Container가 관리하는 순수 자바 객체(POJO)를 의미한다. 즉, 스프링 컨테이너에 등록된 인스턴스화된 객체를 Bean이라 부르는 것이다. 생성된 빈은 빈이름 - 인스턴스화된 객체의 Map 형태로 SingletonBeanRegistry에 저장된다. 이후 컨테이너에서 관리되는 객체에 대해서는 빈이름을 통해 항상 동일한 인스턴스를 조회할 수 있게 된다.(구현체 - DefaultSingletonBeanRegistry) +) POJO (Plain Old Java Object..
[백준] 31938. 현대모비스 트럭 군집주행 - JAVA ✨ 문제 상세처음에는 각 도시를 거쳐서 갈 수 있는 다른 도시들의 수를 구한 후, 이를 기반으로 각 노드에 몇 대의 트럭이 필요한지를 결정함으로써 최종 비용을 계산하는 방법을 구상했다. 그러나 문제 의도에 비해 풀이 과정이 많이 복잡해지는 기분이 들어 새로운 방법을 시도하게 되었다. 🔍문제 풀이문제의 예시를 참고해보자.각 노드에 도착하는 트럭이 한 대씩 존재하므로, 여기서도 각 노드에 한 대씩 트럭을 보낸다고 가정하겠다. 먼저, 2번노드까지의 최단 경로를 생각해보자.자신이 첫번째이므로 따라갈 트럭이 없어 10이 된다.다음으로 3번 노드까지의 최단 경로를 보자.2번까지는 위의 트럭과 함께 이동하면 되므로 90% 가격에 이동이 가능하다.반면, 2번에서 3번으로 이동하는 도로는 처음으로 따라갈 트럭이 없으므..
[KDR] 통합 검색 기능 구현하기 (ver3. 미완성 글자 검색) 구현 환경- Springboot + MySQL 시리즈+) 통합 검색 1탄 : [KDR] 통합 검색 기능 구현하기 (ver1. 태그 검색)+) 통합 검색 2탄 : [KDR] 통합 검색 기능 구현하기 (ver2. 단일 통합 검색)  이전 포스트에서는 태그가 아닌 공백을 기준으로 키워드를 구분해 결과를 조회하고, 우선순위를 설정하였다.덕분에 검색 과정이 단순해지고 검색 결과의 질을 향상시킬 수 있었지만, 여전히 몇 가지 불편함이 남아 있었다.✨ 문제 및 수정 사항저번에 언급하였듯이, 본 프로젝트의 검색창은 따로 검색버튼 없으며, 자동완성 형태로 동작하는 특징이 있다.즉, 입력이 끝나지 않더라도 약간의 시간이 지나면 자동으로 검색 요청이 오는 것이다. 실제로 완성된 앱을 사용해보았을 때, 의외로 검색어를 입력하..
[Spring] AOP (Aspect Oriented Programming)란? (+ 구현 예제) 이번에 스터디 자율 발표 주제로 AOP를 맡으며 공부했던 내용들을 간단하게 글로 정리해보고자 한다.💡AOP (Aspect Oriented Programming, 관점 지향 프로그래밍)AOP의 개념을 간단하게 설명해보면 다음과 같다.관점을 기준으로 다양한 기능들을 분리하여 보는 프로그래밍횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임모듈화된 객체를 편하게 적용할 수 있게 함으로써 개발자가 비지니스 로직을 구현하는 데만 집중할 수 있게 도와줌활용 예시 : 로깅, 트랜잭션, 보안, 캐싱, 예외처리 등이렇게 글로만 적어서는 AOP가 무엇인지 감이 잘 오지 않을 것이다.아래에서 그림과 함께 간단한 예시를 확인해보겠다.먼저, 상품 등록 / 검색 / 구매 시 소요되는 시간을 측..
[KDR] 통합 검색 기능 구현하기 (ver2. 단일 통합 검색) +) 통합 검색 1탄 : [KDR] 통합 검색 기능 구현하기 (ver1. 태그 검색) 이전 포스트에서 발생한 문제들을 해결하기 위해 태그 기능을 제거하고, 단일 keyword를 통한 통합 검색 기능으로 수정하게 되었다. 코드를 전면적으로 수정하면서, 이전 버전에서 아쉬웠던 디테일들을 전체적으로 구체화하게 되었다.프로젝트 구조 자체의 변화는 다음과 같다.수정 1: 검색 결과창의 다양화먼저, 결과로 반환하는 값의 종류 및 각각을 선택했을 때의 연결 화면을 체계적으로 구분하였다.1. 건물 : 건물 상세 모달2. (건물+) 장소 : 장소 상세 모달3. 시설타입 : 외부 화면에서 시설 태그 클릭한 것과 동일한 효과4. 건물 + 시설타입 : 3에서 특정 건물을 클릭한 것과 동일한 효과 사용자 입장에서 최대한 자연스..
[KDR] 통합 검색 기능 구현하기 (ver1. 태그 검색) 프로젝트 내에서 검색창 구현을 담당하게 되었다.처음 구상했을 때에 비해 많은 변화가 있었기 때문에 순차적으로 정리해보고자 한다. 앱 내 검색창의 특징을 간단하게 설명해보자면 아래와 같다.1. 별명으로 장소 검색 가능2. 따로 검색 버튼을 누르지 않아도, 자동완성처럼 아래에 결과가 뜸 (미입력 시간이 기준을 넘어가면 자동 검색)3. 건물명 / (건물 +) 강의실명 / 편의시설명 / (건물 +) 편의시설명 등으로 검색 가능 (각각 다른 화면으로 연결됨)DB 구조 (구버전)building (건물) : 건물 (ex. 교양관, 문과대학 등)classroom (강의실) : 일반 강의실 (ex. 101호, 원형 강의실 등)facility (시설) : 특수 시설 (ex. 자판기, 정수기, 라운지 등) 먼저, 1번 특성..
[CI/CD] GitHub Action으로 CI/CD 구축하기 (±Docker) 이번 글에서는 Github Actions를 활용하여 프로젝트의 CI/CD를 구축하는 과정을 기록해보고자 한다. 아래에서는 (1)도커 없이 .jar 파일 자체를 자동 배포하는 방법과 (2)도커를 활용하여 배포하는 방법 총 2가지를 사용하였다. 먼저 CI/CD에 대해 간단하게 알아보자.0. CI / CD (+ Docker) 란?CI/CD는 개발 프로세스를 자동화함으로써 더 빠르고 안정적인 배포를 가능하게 해주는 역할을 한다.전반적인 흐름은 아래 그림과 같다. CI (Continuous Integration, 지속적 통합)어떤 프로젝트를 진행하면서 한 레포지토리에서 수십명의 사람들이 함께 코드를 수정하고 있다고 가정하자. 이때, 각 사람들이 자신이 개발/수정한 코드들을 한번에 메인 브랜치로 합치려한다면 수많은..