Programming/Back-end Language

    [JAVA] 쓰레드 풀(Thread Pool)란?

    [JAVA] 쓰레드 풀(Thread Pool)란?

    서론 프로세스 중 병렬 작업처리가 많아지면 스레드 개수가 증가되고 CPU가 바빠져 사용량이 늘어난다. 갑작스럽게 고객의 요청이 많아지면 CPU , 메모리 임계점 넘어 서버가 죽을 수 있다. 따라서 스레드 풀을 사용해야 한다. 쓰레드란 ? 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다. 애플리케이션 코드를 하나하나 순차적으로 실행하는 것 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 단일 쓰레드 사용 다중 요청에 쓰레드를 한개를 사용했을 때 지연이 생기면 요청1과 요청2에 대한 응답을 못하게 된다. 요청마다 쓰레..

    [Spring] Test 코드를 작성해야 하는 이유/방법

    [Spring] Test 코드를 작성해야 하는 이유/방법

    Test Code를 왜 작성해야 할까? 잘 작동하는, 깔끔한 코드를 얻기 위해서 작성을 해야한다. 테스트 코드 작성 전 테스트 과정 1. 코드를 수정한다. 2. 서버를 동작시킨다. 3. 테스트에 필요한 데이터를 DB에 입력 4. 메소드를 동작시킨다. 5. 테스트를 마치고 DB를 확인한다. 6. 반복 적은 내용은 상관없지만, 규모가 커지고 이방법으로 테스트를 하게되면 매우 귀찮다. 테스트 코드 작성 후 테스트 과정 1. 코드를 수정 2. 테스트 코드 실행 3. 결과 확인 장점 서버를 실행하는 등 시간절약 필요한 데이터를 미리 기입하고, 테스트가 끝나고 정리하는 등의 행동을 하지 않아도 된다. 문서로서의 역할이 가능 -> 테스트 코드는, 개발자가 작성한 메소드가 어떻게 동작했으면, 어떤 결과를 반환 했으면,..

    [Spring] DI 의존성 주입이란 ?

    [Spring] DI 의존성 주입이란 ?

    의존성을 주입하는 방법 우선 등록된 빈을 사용하기 위한 스프링 프레임워크 DI 방법은 3가지다. 1.생성자 주입(Constructor Injection), 2.필드주입(Filed Injection) , 3.수정자 주입(Setter Injection) 1.생성자 주입(Constructor Injection) @Controller public class MemberController { //final로 선언 할 수 있다. private final MemberService memberService; @Autowired public MemberController(MemberService memberService){ this.memberService = memberService; } } 클래스의 생성자가 하나이고..

    [JAVA] AOP란 무엇일까?

    [JAVA] AOP란 무엇일까?

    AOP : Aspect Oriented Programming 의 약자로 공통 관심 사항과 핵심 관심 사항을 분리 시킨 것 AOP가 없으면 ? 모든 클래스의 시간을 측정을 한다고 생각하면, 각각의 클래스 마다 시간 측정 로직을 입력을 해야하며 클래스가 많으면 많은 시간과 노동이 필요하다. 하지만 AOP를 적용하여 원하는 곳에 공통 관심 사항을 적용하면 편리하다. 모든 클래스의 시간을 측정하는 AOP를 만들어보자. 패키지에 aop폴더를 만들고 TimeTraceAOP class를 만들고 혹시 @Aspect 어노테이션에 오류가 뜨면 아래 dependency를 build.gradle에 추가를 한다. implementation 'org.springframework.boot:spring-boot-starter-aop..

    [Spring] @ResponseBody은  무엇일까?

    [Spring] @ResponseBody은 무엇일까?

    컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 viewResolver가 화면을 찾아서 처리를 한다. //testController @Controller public class HelloworldController { @RequestMapping(value = "/", method = RequestMethod.GET) public String hello(Model model) { model.addAttribute("hello", "서버에서 보내준 값입니다"); return "/hello"; } //hello.html hello.html입니다 viewResolver가 hello.html을 찾아서 반환 controller에서 /매핑을 받아 return값으로 /hello 문자를 반환을 하면 viewResolver..

    [Spring]Failed to load resource: the server responded with a status of 404 () 오류 해결 방법

    [Spring]Failed to load resource: the server responded with a status of 404 () 오류 해결 방법

    Failed to load resource: the server responded with a status of 404 () 에러 오류 해결 방법에 대해 보자 기본적으로 프론트와 백엔드가 서로 연동이 안되어 있을 때 에러가 발생한다. 대부분 저 에러와 아래 사진처럼 cors에러가 함께 뜬다. Access to XMLHttpRequest at ~~ from origin ~Access-control-Allow-Origin~ 이 게시글은 React와 springBoot를 같이 사용하면서 오류가 뜰 때 초점을 맞추고 작성을 했다. 해결방법 1. react의 package.json에 proxy 설정을 했는지 확인을 한다. 2. axios를 사용할 때 주소를 proxy에서 입력한 주소와 동일한 주소인지 확인을 한다..

    [개발환경] Spring boot+React   연동하기

    [개발환경] Spring boot+React 연동하기

    SpringBoot 와 React의 역할 Back-end : Spring boot Front-End : React.js 1.Spring에서 gradle 프로젝트 생성 2. Webapp에 react 폴더 생성 3. vs코드에서 오른쪽 버튼 클릭 -> 작업 영역에 폴더 추가 -> react 추가 4. 터미널에서 react 폴더로 이동하여 npm install 5. App.js 수정 import React, { useState, useEffect } from 'react'; import axios from 'axios' import './App.css'; function App() { const [ testStr, setTestStr ] = useState(''); const [ test2Str, setTes..

    [Spring] The import org.springframework.boot.test cannot be resolved 해결 방법

    [Spring] The import org.springframework.boot.test cannot be resolved 해결 방법

    팀 프로젝트를 위해 git을 연동하여 프로젝트를 import하니 The import org.springframework.boot.test cannot be resolved 오류가 떴다. 문제해결방법 : gradle이 안 가져와서 뜨는 문제이고 해당 프로젝트 우클릭 -> configure -> add gradle nature 누르고 기다리고 재 실행하면 문제없이 실행이 된다.