전체 글 32

[Java] 서블릿(Servlet) 이란?

이번에는 Java 웹 개발에서 빠질 수 없는 Servlet(서블릿)에 대해 정리해보려고 한다.현재 실무에서는 Spring또는 Boot를 많이 쓰고 있지만, 그 근본에는 Servlet이 자리를 잡고 있다. 1.  서블릿이란?Servlet은 클라이언트(브라우저)에서 보낸 요청을 받아서 처리하고, 적절한 응답을 만들어 반환하는 Java 기반의 서버 프로그램이다. 웹 애플리케이션에서 사용자가 어떤 버튼을 클릭하거나 또는 특정 URL로 요청을 보내면 요청을 받아서 처리해주는 것이 Servlet에 역할이다.  2. 서블릿 컨테이너란?Servlet 컨테이너는 서블릿의 생명주기를 관리하고, HTTP 요청을 처리해주는 역할을 한다. 3. 서블릿의 동작 원리 그렇다면 Servlet이 요청을 받아서 처리하는 과정은 어떻게 ..

카테고리 없음 2025.02.26

[Spring] 스프링에서 DIP(의존성 역전 원칙) 위반과 해결 방법

DIP(Dependency Inversion Principle, 의존성 역전 원칙)란?스프링을 사용하다 보면 DIP(Dependency Inversion Principle, 의존성 역전 원칙)라는 개념을 자주 접하게 된다. DIP는 SOLID 원칙 중 하나로, "상위(고수준) 모듈이 하위(저수준) 모듈에 의존하지 않고, 추상화(인터페이스)에 의존해야 한다"는 개념이다.DIP를 적용하면?확장성이 좋아진다 → 새로운 기능을 추가할 때 기존 코드를 수정할 필요가 없음.테스트가 쉬워진다 → Mock 객체를 활용할 수 있음.유지보수성이 향상된다 → 코드 수정 범위를 최소화할 수 있음.반대로 DIP를 위반하면 코드 변경이 어렵고 유지보수성이 떨어지는 문제가 발생할 수 있다. 그럼 DIP를 위반한 코드와 이를 해결하..

카테고리 없음 2025.02.23

[Linux] DNS서버 설정 파일

1. /etc/resolv.conf 파일이란?/etc/resolv.conf 파일은 리눅스 및 유닉스 계열 운영체제에서 DNS(Domain Name System) 클라이언트의 설정을 담당하는 중요한 파일입니다. 이 파일은 어떤 DNS 서버를 사용하여 도메인 이름을 IP 주소로 변환할지를 지정하는 역할을 한다. 2. 파일의 역할DNS 서버 주소 지정: 컴퓨터가 웹사이트나 다른 네트워크 리소스에 접속할 때, 도메인 이름(예: google.com)을 IP 주소(예: 172.217.160.142)로 변환해야 합니다. /etc/resolv.conf 파일에 등록된 DNS 서버를 통해 이 변환 과정을 수행한다.도메인 검색 순서 지정: 파일에 여러 개의 DNS 서버 주소를 등록하면, 컴퓨터는 나열된 순서대로 DNS 서버..

OS/Linux 2025.02.02

[Linux] tee

리눅스 tee 명령어는 표준 입력으로 받은 데이터를 표준 출력(일반적으로 화면)과 파일 두 곳에 동시에 전달한다. tee 명령어를 사용하는 이유 화면 출력과 파일 저장 동시 작업명령어 실행 결과를 화면으로 확인하면서 동시에 파일로 저장해야 할 때 유용. 예를들어 로그 파일을 생성하거나 명령어 실행 결과를 추적할 때 활용가능 파이프라인(Pipeline)과의 연계다른 명령어의 출력을 tee 명령어로 전달하여 화면에 표시하면서 동시에 파일로 저장가능. 파이프라인을 통해 복잡한 작업을 수행할 때 중간 결과를 저장하는 용도로 사용가능 데이터 백업중요한 데이터를 파일로 저장하면서 동시에 화면으로 확인하여 백업가능  기본 사용법command | tee [옵션] 파일명command: 실행할 명령어tee: 입력을 화면과..

OS/Linux 2025.02.02

[Linux] 커널 컴파일 과정

리눅스 커널 컴파일은 시스템에 최적화된 커널을 직접 빌드하는 과정으로, 불필요한 기능을 제거하고 성능과 안정성을 향상시킬 수 있는 강력한 방법이다. 커널 컴파일을 하는 이유시스템 최적화사용하지 않는 기능을 제거해 커널 크기를 줄이고, 메모리 사용량을 최소화.시스템에 꼭 필요한 기능만 포함시켜 성능을 극대화사용하지 않는 드라이버와 기능을 제거하여 부팅 속도와 전반적인 성능을 향상시킬 수 있음.CPU 아키텍처 및 하드웨어에 맞게 최적화된 컴파일 옵션을 적용 가능.새로운 기능 추가최신 커널 버전으로 업그레이드해 새로운 하드웨어 지원 및 기능 활용.최신 리눅스 커널을 직접 빌드하면 최신 드라이버, 보안 패치, 새로운 기능을 사용할 수 있음.특정 기능(예: 실시간 커널, 보안 모듈)을 활성화.최신 하드웨어 지원이..

카테고리 없음 2025.02.02

[Linux] 커널이란?

리눅스 커널은 운영체제의 핵심으로, 시스템의 모든 자원을 관리하고 하드웨어와 소프트웨어(사용자의 프로그램) 간의 중재자 역할을 한다.  커널이란 무엇인가? 리눅스 커널은 운영체제의 핵심 구성 요소로, 하드웨어와 소프트웨어 사이에서 중재자 역할을 한다. 시스템의 모든 자원(CPU, 메모리, 디스크, 네트워크 등)을 관리하며, 프로그램이 하드웨어를 안전하고 효율적으로 사용할 수 있도록 지원한다. 커널은 리눅스 시스템의 성능, 안정성, 보안을 결정짓는 가장 중요한 부분이다. 커널의 주요 기능프로세스 관리 : 프로세스 생성, 종료, 스케줄링을 통해 CPU 사용을 효율적으로 분배메모리 관리 : 물리적 메모리와 가상 메모리를 할당 및 관리하드웨어 관리 : CPU, 메모리, 디스크, 네트워크 등 모든 하드웨어 자원을..

OS/Linux 2025.02.02

[Linux] alias

리눅스에서 alias 기능은 자주 사용하는 명령어를 간단한 단어나 문자로 대체하여 사용할 수 있게 해주는 매우 유용한 기능이다.이 기능을 통해 반복적인 명령어 입력을 줄이고, 작업 효율성을 높일 수 있다.이번 포스팅에서는 리눅스 alias 기능에 대해 알아보고, 실제 사용 예시를 통해 어떻게 활용할 수 있는지 정리해보고자 한다. 1. alias란?alias는 사용자가 지정한 짧은 명령어로 긴 명령어를 대체할 수 있게 해주는 쉘 내장 명령어다. 주로 자주 사용하는 명령어를 단축옵션을 포함한 복잡한 명령어를 간단하게 사용할 때 유용3. alias 확인하기현재 설정된 alias 목록을 확인하려면 alias 명령어를 입력하면 된다.alias이 명령어를 실행하면 현재 쉘에서 사용 가능한 모든 alias 목록이 출..

OS/Linux 2025.02.02

[Linux] systemd란?

1. systemd란?systemd(System and Service Manager)는  리눅스 운영체제에서 부팅과 서비스 관리를 담당하는 핵심 시스템 관리 도구이다. 📌 컴퓨터가 켜지면 해야 할 일이 많다!       컴퓨터가 부팅되면 여러 프로그램들이 자동으로 실행되어야 한다.✅ 네트워크 연결(네트워크 서비스) → 인터넷 연결 설정✅ 웹 서버 실행(nginx, apache) → 홈페이지를 제공✅ 데이터베이스 실행(MySQL, PostgreSQL) → 데이터를 저장하고 관리✅ SSH 서버 실행(sshd) → 원격 접속할 수 있도록 허용 💡 이런 것들을 일일이 사람이 직접 실행하면 너무 불편하다.→ 따라서 systemd 서비스가 자동으로 실행하고 관리해 준다.  systemd는 PID 1을 가지는 프..

OS/Linux 2025.02.01

[Linux] 리다이렉션(Redirection)

리다이렉션(Redirection)은 데이터의 흐름을 제어하는 핵심 기능이다.리다이렉션을 통해 명령어의 입력과 출력을 파일로 저장하거나, 다른 명령어로 전달할 수 있다.이 기능은 스크립트 작성, 로그 관리, 데이터 처리 등 다양한 작업에서 유용하게 활용된다. 출력 리다이렉션 (>) 명령어의 결과를 파일로 저장합니다. 파일이 이미 존재하면 덮어쓰고, 없으면 새로 생성한다.예시)ls > file.txtls 명령어의 결과를 file.txt에 저장한다. 출력 추가 리다이렉션 (>>) 명령어의 결과를 파일에 추가합니다. 파일이 없으면 새로 생성한다. 예시)echo "Hello" >> file.txt file.txt파일 끝에 "Hello"를 추가한다. 입력 리다이렉션 ( 파일의 내용을 명령어의 입력으로 사용한다. 예..

OS/Linux 2025.02.01

[Linux] 파이프(pipe)란

리눅스 명령어를 사용하다 보면, 여러 명령어를 조합하여 복잡한 작업을 수행해야 할 때가 많다.이때 유용하게 사용할 수 있는 기능이 바로 파이프(pipe)이다.이 글에서는 파이프의 개념부터 실제 사용법까지 알아보고자 한다. 파이프(pipe)는 프로세스 간 통신을 가능하게 하는 중요한 기술 중 하나이다. 1.  파이프(pipe)란 무엇인가?파이프는 두 개의 프로세스가 서로 통신할 수 있도록 해주는 리눅스 기능이다.한 프로세스의 표준 출력(stdout)을 다른 프로세스의 표준 입력(stdin)으로 연결해준다.파이프는 | 기호로 표현되며, 명령어를 조합하여 복잡한 작업을 간단하게 처리할 수 있다.2.  프로세스 간 통신이란?프로세스(Process): 컴퓨터에서 실행 중인 프로그램을 프로세스라고 한다. 터미널에..

OS/Linux 2025.02.01