전체 글 192

Spirng AOP

객체 지향 프로그래밍은 r-s-c 같은 수직적인 로직은 잘 분리하지만, 수평적인. 즉, 같은 단계의 로직 분리나, rsc에서 각 계층이나 여러 클래스에 걸쳐 중복되는 코드가 발생할 수 있음 이러한 oop의 해결책으로 aop가 등장함. 비즈니스 로직에서 공통 기능을 모듈화하여 코드 중복을 제거하여 핵심 비즈니스 로직에 집중할 수 있게 해줌. 예를 들어 rsc가 3단계에서 모두 동일한 로직을 수행하는 상황에서는 굳이 3단계 모두에서 중복되는 코드를 작성할 필요 없이 한 단계에만 해당 로직을 작성하면 되고, rsc가 여러 계층이나 클래스에 걸쳐 중복되는 코드 같은 경우에는 공통 기능을 모듈화하여 코드 중복을 제거해 핵심 비즈니스 로직에 집중할 수 있음. 이러한 aop는 * 메서드 실행시간이나 파라미터, 반환 ..

Spring 2024.09.03

Spring MVC 설정 파일 이해하기 : web.xml & dispatcher-servlet.xml

web.xml는 서블릿 컨테이너에 대한 전반적인 설정을 담당한다.1. DispatcherServlet 정의2. URL 패턴과 DispatcherServlet 매핑3. Spring 설정 파일 위치 지정4. ContextLoaderListener 등록 (필요한 경우) dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/dispatcher-servlet.xml 1 dispatcher /  dispatcher-servlet.xml은 Spring MVC의 구체적인 설정을 담당한다. 1. 컴포넌트 스캔 범위 지정2. MVC 관련 어노테이션..

Spring 2024.09.03

ModelAndView vs @ResponseBody

ModelAndView:ModelAndView는 스프링 MVC에서 주로 사용되는 객체로, 컨트롤러에서 처리한 데이터(Model)와 그 데이터를 표시할 뷰(View)를 함께 반환예를 들어, 컨트롤러에서 데이터를 처리한 후, 그 데이터를 JSP 파일과 같은 뷰 템플릿에 넣어서 완성된 HTML 페이지를 클라이언트에게 반환클라이언트는 이 HTML 페이지를 받아서 브라우저에 표시@ResponseBody:@ResponseBody는 데이터를 뷰 템플릿을 거치지 않고 직접 클라이언트에 반환하는 역할을 함이 어노테이션을 사용하면 컨트롤러 메서드는 데이터를 JSON, XML 등의 형식으로 변환하여 HTTP 응답의 본문(body)에 직접 작성클라이언트는 이 JSON 데이터를 받아서 브라우저에서 표시하거나, JavaScrip..

Spring 2024.09.02

운영체제

1. 프로세스와 쓰레드의 차이 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이다. 실행 중인 프로그램의 인스턴스로, 독립된 메모리 공간을 가지고, 다른 프로세스의 메모리에 직접 접근할 수 없다. (프로세스 간 통신 위해서는 IPC 필요) 반면 쓰레드는 프로세스 내에서 실행되는 작업의 단위로, 같은 프로세스의 다른 쓰레드와 메모리를 공유한다. (프로세스 간 통신보다 더 쉽고 빠르다.) 한 쓰레드에 문제가 생기면 같은 프로세스 내의 다른 쓰레드에도 영향을 줄 수 있다. 프로세스는 각각의 독립된 회사라고 생각할 수 있다. 각 회사는 자체 사무실, 직원, 자원을 가지고 있으며, 다른 회사의 내부에 직접 접근할 수 없다. 회사 간 협력을 위해서는 공식적인 의사소통 채널(이메일, 회의)이 필요하다.쓰레드는 ..

CS 2024.08.25

[docker] 네트워킹 심화: DNS부터 볼륨 관리까지

| Docker의 DNS 및 서비스 디스커버리| DNS란? DNS(Domain Name System)는 인터넷의 전화번호부와 비슷함. 우리가 웹사이트 주소를 입력하면, DNS가 주소를 컴퓨터가 이해할 수 있는 IP 주소로 변환해줌  | Docker의 내장 DNS 시스템docker는 자체 DNS 서버를 가지고 있음. 이 DNS 서버는 컨테이너들이 서로 이름으로 찾을 수 있게 해줌 | 작동 방식1. 컨테이너를 생성할 때 docker가 자동으로 이름을 DNS에 등록함2. 같은 네트워크에 있는 다른 컨테이너들은 이 이름을 사용해 통신할 수 있음  예# 네트워크 생성docker network create sample_network# 두 개의 컨테이너 생성docker run -d --name webserver --..

docker 2024.08.12

[docker] 네트워킹 기본 _bridge, host, overlay

주요 네트워크 유형docker network lsNETWORK ID NAME DRIVER SCOPE*************** bridge bridge local*************** host host local  | Bridge 네트워크- Bridge 네트워크는 Docker의 기본 네트워크 드라이버같은 Docker 호스트 내의 컨테이너들이 서로 통신할 수 있게 해주는 소프트웨어 브릿지 - Bridge 네트워크는 마치 가상의 스위치처럼 작동함.네트워크에 연결된 컨테이너들은 각자 고유한 내부 IP 주소를 받게 되며, 이를 통해 서로 통신 가능  주요 특징- 동일한 호스트..

docker 2024.08.12

[docker] 컨테이너간 통신 이해

|  단일 컨테이너간 통신1. 'study'라는 이름의 커스텀 네트워크를 생성docker network create study  2. 두 개의 컨테이너를 생성하고 'study' 네트워크에 연결. docker run -d --name container1 --network study nginxdocker run -d --name container2 --network study nginx  3. 하나의 컨테이너는 기본 네트워크에 연결docker run -d --name container3 nginx  4. 같은 네트워크에 있는 컨테이너 간 통신을 테스트docker exec -it container1 curl container2Welcome to nginx!If you see this page, the ngi..

docker 2024.08.12

NCP Search Engine Service to Local ELK

|  배경woosan 프로젝트에서 네이버 클라우드 플랫폼의 Search Engine Service를 사용해 elasticsearch를 사용했다. https://github.com/LuckyVickys/woosan-back/blob/main/Readme.assets/config/ELK.md woosan-back/Readme.assets/config/ELK.md at main · LuckyVickys/woosan-backContribute to LuckyVickys/woosan-back development by creating an account on GitHub.github.com교육과정을 수료하고 바우처 기간이 지나버렸기 때문에 프로젝트를 실행시키려면 다시 elasticsearch 클러스터를 만들어야 ..

elk 스택을 활용한 연관 검색, 연관 게시글 제안

|  데이터 동기화|  Logstash 기존 엔티티에 @Document 어노테이션 등을 추가해주었고,es 인덱스에서는 사용하지만 MySQL 테이블에서는 사용하지 않는 필드에 @Transient 어노테이션을 사용해 정의했다.  [네이버 클라우드 캠프] - elk 스택을 활용한 데이터베이스 연동 elk 스택을 활용한 데이터베이스 연동https://github.com/LuckyVickys/woosan-back|  도입 우산 프로젝트는 ElasticSearch를 사용해서 검색 기능을 구현했다.구현이 용이하도록 간단하고 쉽게 설계한 뒤, 네이버 클라우드 플랫폼 바우처가 있을 때99duuk.tistory.com |  인덱스 매핑기존 logstash 매핑만으로 연관된 데이터를 확인할 수 없기 때문에 Kibana에서 ..

elk 스택을 활용한 데이터베이스 연동

https://github.com/LuckyVickys/woosan-back|  도입 우산 프로젝트는 ElasticSearch를 사용해서 검색 기능을 구현했다.구현이 용이하도록 간단하고 쉽게 설계한 뒤, 네이버 클라우드 플랫폼 바우처가 있을 때 사용해볼 수 있는 것들을 최대한 사용하기를 목표했다. 기본적인 게시판의 기능을 구현한 이후, 검색 기능 구현을 시작했다.  NCP 에는 "다양한 형태의 데이터를 검색, 분석, 시각화할 수 있는 관리형 OpenSearch 및 Elasticsearch 서비스"인 Search Engine Service가 있고 이를 사용했다.     |  MySQL & Elasticsearch 연동 Pipeline |  Board Entity기존 엔티티에 @Document 어노테이션 등..