[AWS] Amazon Q Developer + MCP 환경 구성 방법
·
DevOps
Amazon Q Developer는 개발자를 위한 AI 대화형 비서로 AWS 리소스 관리, 문서 검색, 코드 생성, 인프라 구성까지 VS Code 안에서 대화형으로 수행할 수 있습니다.🧩 1. VS Code 설치Amazon Q Developer는 VS Code 확장(Extension) 형태로 동작합니다.Visual Studio Code 다운로드운영체제(Windows, macOS, Linux)에 맞게 설치설치 후 실행하면 Amazon Q Extension 을 추가할 수 있습니다.(Extensions → Amazon Q 검색)⚙️ 2. uvx 설치 (Windows 환경)Amazon Q Developer의 MCP 서버를 설치하려면 Python 패키지 관리자 uvx가 필요합니다.🪟 PowerShell 실행 ..
[DevOps] Nginx 리버스 프록시란? 똑똑똑!
·
DevOps
웹 서비스를 배포하다 보면 nginx.conf에서 이런 구문을 한 번쯤 봤을 것이다.location / { proxy_pass http://localhost:8080; } 처음 보면 “이게 뭐지?” 싶지만, 사실 리버스 프록시(reverse proxy) 설정의 핵심이다.오늘은 이 리버스 프록시가 무엇을 하는 녀석인지, 왜 꼭 알아야 하는지 쉽게 정리해보겠습니다!프록시와 리버스 프록시의 차이먼저 용어부터 정리해볼게요.‘프록시(proxy)’는 대리인이라는 뜻을 가지고 있어요. 즉, 직접 통신하지 않고 누군가가 대신 요청하거나 응답하는 구조를 말합니다.구분일반 프록시 (Proxy)리버스 프록시 (Reverse Proxy) 위치클라이언트 앞단서버 앞단역할클라이언트 대신 외부 서버에 요청클라이언트의 요청을 대신 ..
[Java] this와 super 이해하기 – 멤버 변수와 지역 변수의 차이
·
Java
Java에서 상속을 다루다 보면, this와 super를 이용해 현재 객체와 부모 객체의 멤버 변수를 구분할 수 있습니다.아래 예제를 통해 정확히 이해해봅시다!코드 예제class Parent { int x = 10; String parentMethod() { return "parent"; }}class Child extends Parent { int x = 20; String childMethod() { return "child"; } void printChild(int x) { System.out.println("x : " + x); System.out.println("this.x : " + this.x); ..
[Java] 상속의 정의
·
Java
1. 상속(Inheritance)이란?상속은 객체지향 프로그래밍에서 핵심 개념 중 하나로, 부모 클래스(슈퍼클래스)의 멤버를 자식 클래스(서브클래스)가 그대로 가져다 쓰는 것을 의미합니다.자식 클래스는 부모 클래스의 필드와 메서드를 상속받기 때문에 중복 코드를 줄이고 재사용성을 높일 수 있습니다.1-1. 기본 예제class Parent { int a; int b;}class Child extends Parent { int c;}Parent 클래스 멤버: a, b → 총 2개Child 클래스 멤버: 상속받은 a, b + 자식 멤버 c → 총 3개즉, 자식 클래스는 부모보다 항상 같거나 더 많은 멤버를 갖게 됩니다.2. 멤버 개수(Member Count)란?멤버 개수는 클래스가 가지고 있는 ..
[Java] Java spring에서 안전한 객체 복사와 불변 설계 패턴
·
Java
자바의 정석에서 생성자를 이용한 인스턴스 복사에 관해 공부를 하다굳이 생성자를 이용해서 인스턴스 복사를 하는 이유가 뭐지에 대해서 생각해보게 됐다.그러던 중 spring에서 생성자를 이용해서 인스턴스를 복사하고, 불변 패턴을 설계하는 방법과 연관이 있다는 걸 알게되어 포스팅하게 됐다.1. 생성자를 이용한 인스턴스 복사(Copy Constructor)개념기존 객체를 기반으로 새로운 객체를 만들 때 사용원본과 독립적인 객체를 생성 가능 → 깊은 복사(Deep Copy) 가능얕은 복사(Shallow Copy)와 깊은 복사 비교가 핵심예제 코드class Address { private String city; public Address(String city) { this.city = city; } ..
[Java] this()(생성자에서의 this 호출), this(참조변수로 자기 자신을 가리키는 경우)
·
Java
1. this() — 생성자에서 다른 생성자 호출하기Java에서는 한 클래스 안에서 여러 생성자를 만들 수 있다.이때 중복 코드를 줄이기 위해 this()를 이용해 다른 생성자를 호출할 수 있다.예제 코드class Person { String name; int age; // 매개변수 2개짜리 생성자 Person(String name, int age) { this.name = name; this.age = age; System.out.println("매개변수 있는 생성자 호출됨"); } // 기본 생성자 Person() { this("이름 없음", 0); // 다른 생성자 호출 System.out.print..
[JAVA] 객체지향개념Ⅱ
·
Java
3. 제어자3.1 static'클래스의', '공통적인' 의미를 가지고 있으면 JVM 메소드 영역에 저장되며 인스턴스를 생성하지 않아도 사용할 수 있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수 (static 멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다.3.2 final변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메소드에 사용되면 오버라이딩 불가, 클래스에 사용되면 상속이 불가능하다.abstrack추상 메소드 : 선언부만 작성하고 구현부는 작성하지 않는 메소드추상 클래스 : 클래스 내에 추상 메소드가 선언되어 있음을 의미추상 클래스는 아직 완성되지 않은 메소드가 존재하기 때문에 인스턴스를 생성할 수 없다.3.4 접근 제어자접근 제어자는 멤버 또는..
[Java] 문자열 처리 성능비교 - String vs StringBuilder vs StringBuffer
·
Java
무슨 차이가 있을지 궁금해서 정리해봄Java에서 문자열(String) 처리할 때 성능 차이가 중요한 이유작은 코드 차이가 대규모 프로젝트에서 성능 문제로 이어질 수 있음이번 글에서는 메모리 구조, 동시성, 성능 측정 예제를 중심으로 비교String, StringBuilder, StringBuffer 차이구분 특징 동기화 사용 추천 상황String불변(immutable)-자주 변경되지 않는 문자열, 안전성 필요할 때StringBuilder가변(mutable)X단일 스레드에서 문자열 반복 변경 시StringBuffer가변(mutable)O (synchronized)멀티스레드 환경에서 안전하게 문자열 처리핵심: String은 불변 → 매번 새로운 객체 생성, StringBuilder/Buffer는 내부 버퍼에..
[Java] 자바의 추상 클래스 vs 인터페이스 완전 정복
·
Java
들어가며자바를 공부하다 보면 “추상 클래스”와 “인터페이스”가 헷갈릴 때가 많습니다.둘 다 추상화(Abstraction) 개념을 구현하는 방법이지만,그 목적과 쓰임새는 분명히 다릅니다.이번 글에서는 아래와 같은 차이와 예제를 완벽하게 정리해보겠습니다!“둘은 어떤 차이가 있을까?”“언제 추상 클래스를 쓰고, 언제 인터페이스를 써야 할까?”를 예제와 함께 완벽하게 정리해보겠습니다.추상화란?추상화(Abstraction)는 복잡한 현실 세계를 단순화하는 과정입니다.즉, 필요한 정보만 남기고 불필요한 세부사항은 숨기는 것이죠.자바에서 추상화는 크게 두 가지 형태로 나타납니다:데이터 추상화 (Data Abstraction) → 데이터 구조를 숨김제어 추상화 (Control Abstraction) → 동작(로직)의 ..
[JAVA] 데이터 추상화 vs 제어 추상화
·
Java
“추상화”라는 단어는 어렵게 들리지만, 사실 우리가 매일 쓰는 객체지향의 핵심 개념 중 하나입니다.자바에서 추상화는 복잡한 세부사항을 숨기고 필요한 정보만 노출하는 것을 의미합니다.이번 글에서는 데이터 추상화와 제어 추상화의 차이, 그리고 자바에서 이들이 어떻게 구현되는지를 살펴보겠습니다. 추상화란 무엇인가?복잡한 현실 세계를 단순화해서 모델링하는 과정“무엇을 한다”와 “어떻게 한다”를 분리하는 것자바에서는 클래스, 인터페이스, 접근제어자를 통해 표현됨abstract class Animal { abstract void makeSound();}데이터 추상화 (Data Abstraction)데이터의 내부 구조를 숨기고, 필요한 정보만 외부에 노출하는 방식주로 캡슐화(encapsulation) 와 함께 ..