Back-end/Java

해당 글은 제가 인턴 업무 중 이메일 서비스를 구현할 때 만났던 문제와 구현했던 방식에 대해서 기술하려고합니다. 많은 문제들을 해결해 나가며 결국 이메일이 전송되었을 때에 그 쾌감은 잊지 못합니다..ㅠ 많은 블로그에서 이메일 서비스 구현에 대한 블로깅을 해놓았지만, 제가 원하는 기능은 찾아보기가 어려워 애를 많이 먹었습니다. 이 글에서는 정말 Class 하나하나 곱씹어 가며 정리한 글이기 때문에 만약에 코드만 필요하시다면 맨 밑 으로 가시면 제가 구현한 Code 만 올려드리겠습니다. (보시면 더 좋고...😅) Gmail 설정 우선 Gmail 에 설정을 해놓아야 이메일 전송이 가능합니다. 여기서는 이메일 전송에 대한 부분을 집중적으로 작성하려고 하기 때문에 설정 관련 부분은 제가 참고한 블로그를 올려드리겠..
Generic의 사전적인 의미는 "포괄적인, 총칭의, 회사 이름이 붙지 않은, 일반 명칭으로 판매되는" 즉, 딱 하나를 정하지 않고 범용적이고 포괄적이라는 의미입니다. Java 에서 Generic은? Data type을 특정한 type 하나로 정하지 않고 사용할 때마다 변경 할 수 있게 범용적이고 포괄적으로 지정한다는 의미입니다. "그렇다면 왜 사용해야 할까?" 제일 큰 이유는 Object 클래스의 한계 때문입니다. List list = new ArrayList(); list.add("hello"); String str = list.get(0); System.out.println(list); 위의 코드는 정상으로 작동 할까요? 아닙니다, 3번째 줄에서 오류가 발생합니다. list의 데이터 타입은 Obje..
Spring은 공통적으로 여러 작업을 처리함으로써 중복된 코드를 제거할 수 있도록 많은 기능을 지원하고 있습니다. 그 중에서 필터(Filter) 와 인터셉터(interceptor)의 차이에 대해 알아보려고 합니다. 필터(Filter) 필터란 J2EE 표순 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공합니다. ❓여기서 J2EE란? 자바 기술로 기업환경의 애플리케이션을 만드는데 필요한 스펙 집합입니다. ❓여기서 디스패처 서블릿(Dispatcher Servlet)이란? HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아서 적합한 컨트롤러에게 위임해주는 프론트 컨트롤러입니다. 장점 w..
서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 입니다. 쉽게 말해서 자바를 사용하여 웹을 만들기 위해 필요한 기술 입니다. 클라이언트가 필요한 요청을 했을때, 그 요청에 대하여 응답을 하는것을 자바로 응답하는 것입니다. Servlet의 장단점은 무엇이 있을까요? 장점 복잡한 프로그램 로직 구현에 적합합니다. Java Thread 지원이 됩니다. 안정적인 웹 서비스 구축이 가능해집니다. 단점 HTML 문서 디자인이 바뀔 때마다 .class 파일을 수정/컴파일/설치를 해야합니다. 웹 서버를 재 가동하는 일이 되풀이 됩니다. 따라서 속도가 느려집니다. Servlet Container(서블릿 컨테이너) 서블릿이 Servlet 클래스..
❓개념 자바 가상머신 -> JVM(Java Virtual Machine)은 자바 프로그램의 실행환경을 만들어주는 소프트웨어입니다 ❓왜 사용하는지 자바가상머신을 사용하는 가장 큰 이유는 하나의 바이트코드 즉 (.class)파일로 모든 플랫폼에서 작동이 가능해서 사용합니다 아래의 경우는 c언어의 경우입니다. 컴파일 플랫폼과 타겟플랫폼이 다르면 프로그램 실행이 불가능하다는 단점이 있습니다. 하지만, 자바의 경우 독립적인 자바 컴파일러를 사용하여 타겟플랫폼이 원하는 컴파일 플랫폼으로 가상머신을 생성해줍니다. 덧붙이자면, “ Java는 플랫폼에 종속적이지 않지만, Jvm은 플랫폼에 종속적” 라고 표현이 가능 할 것 같습니다. ❓자바 프로그램의 실행과정 우리가 자바로 .java 코드를 작성하고 터미널에 있는 자바 ..
Java에서 문자열을 다루는 대표적인 클래스로는 String, StringBuffer, Stringbuilder가 있습니다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 확률은 거의 없습니다만, 연산횟수가 많아지거나 수정/삭제가 많아지고 멀티쓰레드, Race condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고 사용해야 합니다. String String과 나머지의 가장 큰 차이점은 String은 불변(immutable)의 속성을 갖고 있다는 점입니다. 예를들어 String str = "hello"; == hello str = str + " world"; == hello world 이런 코드가 있다면 그냥 보기에는 hello 라는 문자열에 world가 ..
기본 자료형은 크게 기본 타입(primitive type)과 참조타입(reference type)으로 나누어집니다. 대표적으로 자주사용하는 기본타입은 int, char float 등이 있고 참조타입은 class, interface 등이 있습니다. 그런데 프로그래밍을 하다보면 기본타입의 데이터인를 객체로 표현해야 하는 경우가 많습니다. 이럴 때에 기본 자료타입을 다루기 위해서 사용하는 클래스가 래퍼 클래스입니다. 자바는 모든 기본타입 값을 갖는 객체를 생성할 수 있습니다. 자주 사용하는 래퍼클래스는 Integer와 Long이 있습니다. 제가 겪은 문제들은 API를 설계할 시에 기본 자료형으로 데이터를 주고 받으려고 하니까 계속 오류가 생겼습니다. 바로 객체로 데이터를 받아야 했기 때문입니다. 결국 int의..
자바 컬렉션 프레임워크란 Java에서 데이터를 저장하는 자료구조들을 한 곳에 모아 편리하게 관리하고 사용하기 위해 제공하는 것입니다. (ex_ List, Set, Map) List 인터페이스와 Set 인터페이스를 설명하기 이전에 알고 넘어가야 할 점은, 컬렉션은 기본 데이터형이 아닌, 참조 데이터 형만 저장이 가능하다는 것입니다. 따라서 Collection에서의 데이터는 Object 타입의 객체로서 저장이 되는 것인데, 그렇다면 여기서 기본 데이터형은 어떻게 저장하고 관리할 수 있을까? 기본 데이터 형은 Wrapper 클래스를 이용하여 Boxing 시켜주거나, (Integer num = new Integer(5); 와 같은 코드로 구현 가능합니다. 📌List 동일한 데이터의 중복을 허용한다 데이터 저장 ..
recordYoo
'Back-end/Java' 카테고리의 글 목록