전체 글 41

[스프링] 스프링 핵심 원리 기본편 정리: 6. 컴포넌트 스캔

컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 현재까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 하지만, 등록해야 할 스프링 빈이 수백 개가 되면 일일이 등록하기 귀찮을 뿐만 아니라, 설정정보가 커지고, 누락하는 문제가 발생한다. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔과 의존관계를 자동으로 주입하는 @Autowired라는 기능을 제공한다. 이에 대해 코드를 통해 살펴보도록 하자. AutoAppConfig.java package hello.core; import org.springframework.context.annotation.ComponentScan; import org.sp..

Spring 2023.09.01

[스프링] 스프링 핵심 원리 기본편 정리: 5. 싱글톤 컨테이너

싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생한 기술이다. 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론, 웹이 아닌 애플리케이션 개발도 얼마든지 가능하다. 웹 애플리케이션에서는 보통 수많은 고객이 동시에 요청을 한다. 그림은 클라이언트 A, B, C 세 명이 스프링 컨테이너인 DI 컨테이너에 있는 memberService를 동시에 요청하는 모습이다. 이 경우, 요청을 할 때마다 새로운 memberService 객체가 반환되게 된다. 지금은 클라이언트가 세 명밖에 없지만, 실제 웹 애플리케이션의 경우 수많은 고객이 동시에 요청을 하기 때문에 문제가 발생하게 된다. 실제 코드를 통해 해당 상황이 일어나는 경우에 대해 살펴보자. 스프링 없..

Spring 2023.08.30

[스프링] 스프링 핵심 원리 기본편 정리: 4. 스프링 컨테이너와 스프링 빈

스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정을 알아보기 전에 먼저 기본적인 개념을 알고 넘어가도록 하자. 스프링 컨테이너를 생성하는 코드는 다음과 같다. // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수도 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수도 있다. 이전에 AppConfig를 사용했던 방식이 애노테이션 기반의 자..

Spring 2023.08.27

[파이썬] 데이터 분석 - 연봉 예측 분석 (회귀 분석)

연봉 예측 분석 회귀 분석 연봉 예측 분석을 시작하기 전에 회귀 분석이 무엇인지에 대해 알아보자. 아래의 그래프에서 빨간 점들은 실제 데이터를 나타낸다. 실제 데이터와 거리가 최소가 되는 방정식인 Y = wX + b를 찾아내는 과정을 회귀 분석이라고 한다. 즉, 회귀분석은 방적식의 계수인 w와 b를 잘 찾아내는 것이다. 그럼 이를 데이터 분석에 어떻게 적용할 수 있을까? 이 표를 보면 나이와 몸무게를 방정식의 X1, X2로 나타낼 수 있고, 키를 방정식의 Y로 정의할 수 있다. 즉, Y = w1X1 + w2X2 + b로 나타낼 수 있다. 회귀 분석은 해당 방정식에서 1, 2, 3번 데이터로 w1, w2, b라는 세 개의 계수를 추정하고, 마지막 4번 데이터를 가지고 계수가 잘 추정이 됐는지 테스트한다. ..

Programming/Python 2023.08.23

[스프링] 스프링 핵심 원리 기본편 정리: 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용

스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 새로운 할인 정책 개발 새로운 할인 정책의 확장 어떤 악덕 기획자가 등장하여 기존 할인 정책인 정액 할인 정책을 정률 할인 정책으로 변경하고 싶다고 이야기하여 정률 할인 정책에 대한 개발을 시작해야 된다. 악덕 기획자 : 서비스 오픈 직전에 할인 정책을 정액 할인 정책이 아닌 정률 할인 정책으로 변경하고 싶어요. 예를 들어, 기존 정책은 VIP가 얼마를 주문하든 간에 1000원을 할인해 주었지만, 정률 할인 정책은 10%로 지정해 주면 고객이 10000원을 주문 시 1000원을 할인해 주고, 20000원 주문 시에 2000원을 할인해 주는 거예요! 순진 개발자 : (유연한 설계가 가능하도록 객체 지향 원칙을 준수했기 때문에 개발에 문제는 없을 거야) 새..

Spring 2023.08.17

[파이썬] 데이터 분석 - 2.1 pandas 기초 익히기

pandas 기초 익히기 pandas pandas는 수식으로 계산할 수 있고 시각화도 할 수 있는 데이터 분석도구이다. 행과 열로 된 데이터를 다룰 때 사용한다. 엑셀로도 데이터를 분석할 수 있는데 pandas를 사용하는 이유가 무엇일까? 엑셀로는 힘든 대용량의 데이터를 pandas가 분석할 수 있기 때문이다. pandas와 관련된 문서로 여러 문서들이 있는데, 그중 '10 minutes to pandas' 문서를 참고하여 실습을 진행하면 pandas의 전반적인 것을 익힐 수 있다고 하니 제대로 실습해 보길 추천한다. https://pandas.pydata.org/pandas-docs/version/1.0.0/getting_started/10min.html 10 minutes to pandas — pan..

Programming/Python 2023.08.16

[파이썬] 데이터 분석 - 1. 아나콘다(Anaconda) 설치와 주피터 노트북(Juptyer Notebook) 실행

데이터 분석을 위한 아나콘다 설치와 주피터 노트북 실행하기 아나콘다(Anaconda) 설치 아나콘다란? 아나콘다는 파이썬, R 프로그래밍과 관련된 다양한 패키지들을 관리하는 오픈 소스 배포판을 말한다. 아나콘다는 파이썬과 관련된 다양한 생태계를 포함하고 있다. 아나콘다 설치 아래의 사이트에 들어가면 아나콘다를 무료로 다운받을 수 있다. https://www.anaconda.com/download Free Download | Anaconda Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com 사이트..

Programming/Python 2023.08.16

[알고리즘] 다이나믹 프로그래밍

이 글은 유튜버 '동빈나'의 "이것이 취업을 위한 코딩 테스트다 with 파이썬" 강의를 보고 작성한 글이며, 강의 링크는 아래를 참고하면 된다. https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC 다이나믹 프로그래밍 다이나믹 프로그래밍은 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법이다. 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 다이나믹 프로그래밍의 구현은 일반적으로 두 가지 방식(탑다운과 보텀업)으로 구성된다. 탑다운 위에서부터 아래로 내려간다고 하여 하향식 방식이라 부른다. 보텀업 아래에서부터 위로 올라간다 하여 상향식 방식이라..

Algorithm 2023.08.11

[스프링] 스프링 핵심 원리 기본편 정리: 2. 스프링 핵심 원리 이해1 - 예제 만들기

스프링 핵심 원리 이해 1 - 예제 만들기 프로젝트 생성 사전 준비물 프로젝트를 생성하기 전 다음과 같은 사전 준비물이 필요하다. Java 11 설치 IDE: IntelliJ 또는 Eclipse 설치 본 강의에서는 Java 11 버전을 기반으로 강의가 진행되기 때문에 다른 버전을 설치하여 사용할 경우, 각종 오류가 발생할 가능성이 높다. 따라서 꼭 오라클의 Java 11 버전을 설치하여 사용하길 바란다. Java 11 버전 설치 및 환경변수 설정과 관련된 내용은 해당 링크를 참조하면 된다. https://mimah.tistory.com/entry/Java-JDK-11-%EB%B2%84%EC%A0%84-%EC%84%A4%EC%B9%98-%EB%B0%8F-%ED%99%98%EA%B2%BD-%EB%B3%80%..

Spring 2023.08.07

[스프링] 스프링 핵심 원리 기본편 정리: 1. 객체 지향 설계와 스프링

해당 강의는 인프런에서 '김영한' 님의 "스프링 핵심 원리 기본편" 강의를 보고 정리한 내용이다. 무료 강의인 "스프링 입문" 강의를 듣고 스프링에 대해 자세히 공부하고 싶다는 마음이 생겨 로드맵을 따라 강의를 듣고 공부 내용을 정리하고자 한다. [참고 링크] https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 ..

Spring 2023.08.04