전체 글

CS,PS, Algorithm
· Dev/Spring
빈스코프란? 빈이 존재하는 범위를 의미한다. 디폴트 스코프 일 때(싱글톤 스코프) 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다 스프링이 지원하는 다양한 스코프 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프이다. application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 싱글톤 스코프 싱글톤 스코프의 빈..
· Dev/Spring
개요 : AppConfig 에 등록된 Bean 호출을 확인해보자 @Configuration public class AppConfig { // 생성자 주입 ! -> 이걸 통해서 DIP 를 지킬 수 있음 구현객체를 이놈이 생성하는거지 @Bean public MemberService memberService(){ System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new Memo..
· Dev/JAVA
클래스가 필요한 이유 자바 세상은 클래스와 객체로 이루어져 있다. 그만큼 클래스와 객체라는 개념은 중요하다. 그런데 클래스와 객체는 너무 많은 내용을 포함하고 있어서 한번에 이해하기 쉽지 않다. 여기서는 클래스와 객체라는 개념이 왜 필요한지 부터 시작해서, 클래스가 어떤 방식으로 발전하면서 만들어졌는지 점진적으로 알아보겠다. 먼저 클래스가 왜 필요한지 이해하기 위해 다음 문제를 풀어보자. 문제: 학생 정보 출력 프로그램 만들기 두 명의 학생 정보를 출력하는 프로그램을 작성해야 한다. 각 학생은 이름, 나이, 성적을 가지고 있다. 요구 사항: 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다. 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다. 각 학생의 정보를 다음과 ..
· Dev/JAVA
배열이 왜 필요할까? int student1 = 90; int student2 = 92; int student3 = 93; int student4 = 89; int student5 = 82; System.out.println("student1의 점수 : " + student1); System.out.println("student2의 점수 : " + student2); System.out.println("student3의 점수 : " + student3); System.out.println("student4의 점수 : " + student4); System.out.println("student5의 점수 : " + student5); 학생을 몇 명 더 추가한다면 변수를 더 추가해야하고 코드가 상당히 많이 늘..
· Dev/JAVA
패키지(package) 자바 파일을 구분하기 위한 폴더 라고 생각하자 패키지에 속하는 자바 파일인 경우 자바 소스 코드 첫 줄에 내 패키지가 뭔지 꼭 적어줘야해! ex) package 패키지명; 변수의 선언 변수를 선언하면 컴퓨터의 메모리 공간을 확보 확보된 공간에 데이터 저장 변수의 이름을 통해서 그 공간에 접근 변수의 초기화 변수를 선언만 해두고 읽으려고 하면 컴파일 에러가 발생한다. 이유는 다음과 같다 . 선언하게되면 변수를 위한 메모리 공간을 확보한다고 하였는데, 이때 이 공간은 다른 놈이 사용중일 수 도 있는 곳이다.그래서 초기화 하지 않고 사용하게되면 이상한 값이 출력될 수 있다.따라서 자바에서는 변수를 초기화 하도록 강제하고 있다. 변수 타입 정수 // 정수 byte b = 127; // -..
· Dev/JAVA
자바란? 자바는 표준스펙 , 구현 으로 나눠져있다. 자바 표준 스펙(=문서) 이란 자바는 이렇게 만들어야한다 라는 설계도 (문서) 이다. 표준 스펙하나를 가지고 여러회사에서 자바를 만든다. 각 구현에는 장단점이 있다. Amazon Corretto 같은 경우 AWS 에 최적화되어있다. 여러 구현들 모두 표준스펙을 따르기 때문에 다른 구현 버전으로 바꾸더라도 대부분 문제없이 잘 작동한다. 컴파일과 실행 자바 프로그램은 컴파일 단계 와 실행 단계를 거친다. [컴파일 단계] .java 소스코드를 작성한다. 자바가 제공하는 javac 라는 프로그램이 .java 파일을 컴파일한다. (javac == 컴파일러) 컴파일과정을 거치면 .java 파일→ .class 파일 생성된다. 그럼 왜 .class 파일을 굳이 만들까..
· Dev/JAVA
psvm : public static void* main(String[] args) {} sout : System.***out***.println(); iter : for (int element : array) { } 코드 실행: ctrl + r 현재 문장 완성시키기: ⌘ + Shift + Enter 동일한 인스턴스 선택: ctrl + g 라인 이동: ⌘ + Shift + ↑,↓(위,아래 화살표) 현재 이전 파일 열기: ⌘ + E + Enter 파일 찾아 열기: ⌘ + o 변수 이름 한번에 다 바꾸기: Shift + F6 생성자 생성: ⌘ + N 현재 단어 묶음 선택:: ⌥ + ↑ static import 적용:: ⌥ + Enter
Flyweight Pattern (Structural Design Pattern) 플라이웨이트 패턴이란 ? 플라이웨이트 패턴은 객체를 공유하여 메모리를 절약하는 패턴이다. Why? 객체를 생성할 때마다 메모리를 할당하는 것은 비효율적이다. 따라서, 객체를 공유하여 메모리를 절약하는 패턴이다. Flyweight Pattern 구성요소 Flyweight : 공유 객체 ConcreteFlyweight : 공유 객체의 구현체 구현방법 클래스 ClassAttribute를 사용하여 객체를 공유한다. class Dog: # ClassAttribute DNA = "ATACTGADAACC....." def __init__(self, name): self.name = name self.age = 0 class DogBre..
Bridge Pattern (Structural Design Pattern) 브릿지 패턴이란? 기능과 구현을 분리하여 각각의 클래스로 만들어 구현하는 패턴이다. 기능 : Abstraction => RefineAbstraction1 => RefineAbstraction2 구현 : Implementor => ConcreteImplementor1 => ConcreteImplementor2 Abstraction(기능)은 Implementor(구현)을 소유(사용)한다. 하지만, Abstraction(기능)은 Implementor(구현)에 대해 알지 못한다. (독립되어 있음.) 브릿지 패턴의 구성요소 Abstraction : 기능을 정의하는 인터페이스 RefinedAbstraction : 기능을 정의하는 클래스 I..
Decorator Pattern ( Structural Design Pattern ) 데코레이터 패턴이란? 원하는 기능을 감싸는 데코레이터를 만들어 기능을 추가하는 패턴이다. 기능을 추가하는 데코레이터는 기능을 추가하는 인터페이스로 구현한다. 데코레이터 패턴의 구성요소 Component : 기능이 추가되는 대상이 되는 인터페이스 ConcreteComponent : 기능이 추가되는 대상이 되는 클래스 Decorator : 기능을 추가할 때 사용하는 데코레이터 클래스 ConcreteDecorator : 기능을 추가할 때 사용하는 데코레이터 클래스 Client : 데코레이터 패턴을 사용하는 클래스 데코레이터 패턴의 구조 케이크 (Component) 생크림케이크 (ConcreteComponent) 치즈케이크 (..
Facade Pattern(Structural Design Pattern) 퍼사드 패턴이란 (StageManager) 퍼사드 패턴은 서브시스템을 감싸는 인터페이스를 제공하여 서브시스템을 사용하기 쉽게 만드는 패턴이다. Why? 프로그램이 복잡해지고, 해당 과정들이 엉키는 경우가 있을 수 있다, 이때 이 프로세스 과정을 관리하기위해 실행되는 과정을 인터페이스로 제공하는 패턴이다. 진짜 쉽게 말하면, 실제 프로세스를 단순히 관리하기 위한 패턴이다. 따라서, 퍼사드 패턴을 적용하기 위해서는 프로세스의 과정을 명확 하게 알고 있어야한다. Facade Pattern 구성요소 Facade : 클라이언트가 접근할 수 있는 인터페이스 SubSystem : 실제 서버에 접근하는 클래스 Client : Facade를 통해..
황빵
황빵's World